Hi Marcin, On Tue, Dec 17, 2013, Marcin wrote: > +void bthost_l2cap_set_data_handler(struct bthost *bthost, > + bthost_l2cap_data_cb handler, > + uint16_t psm) > +{ > + bthost->read_data_psm = psm; > + bthost->l2cap_data_cb = handler; > +} The function is called just "data handler" but it applies to a more specific read_data_psm. Should this perhaps be simply called data_psm? > +typedef void (*bthost_l2cap_data_cb) (const void *data, uint16_t len); > + > +void bthost_l2cap_set_data_handler(struct bthost *bthost, > + bthost_l2cap_data_cb handler, > + uint16_t psm); > + The problem with your approach is that it will not be usable for protocols that have multiple channels to the same PSM such as AVDTP. To cover this I'd suggest you to consider having something like the following: typedef void (*bthost_l2cap_connect_cb) (uint16_t handle, uint16_t cid); void bthost_add_l2cap_server(struct bthost *bthost, uint16_t psm, bthost_l2cap_connect_cb func); /* the above could replace the existing bthost_set_server_psm */ void bthost_connect_l2cap(struct bthost *bthost, uint16_t handle, uint16_t psm, bthost_l2cap_connect_cb func); For sending and receiving data you wouldn't then need any new functions but you could use the already existing bthost_add_cid_hook (for receiving data) and bthost_send_cid (for sending data). Thoughts? Johan -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html