Hi Chao Jie, >>> +bool bt_gatt_client_set_local_csrk(struct bt_gatt_client *client, >>> + bool valid_local_csrk, >>> + uint8_t key[16]); >> >> why do we have the parameter valid_local_csrk. I find that highly confusing. If you >> do not have a valid CSRK, then do not call this function. It should be that simple. >> > > My initial purpose to set this parameter valid_local_csrk here, user can call one API > to set flag valid_local_csrk ture/false and CSRK key in one time. > According to your proposal, I think it really result in confusion for user. > > So for more clear to call API , I think we should split two API for upper layer: > 1. When we need to set CSRK , check the CSRK is valid , then call bt_gatt_client_set_local_csrk > Just to pass one parameter key to function and in the function to set flag valid_local_csrk is true. > > 2 When two device dispair each other, we should give user possibility to unset flag and CSRK. > So in this condition , we have to create bt_gatt_client_unset_local_csrk(struct bt_gatt_client *client) > to clear CSRK and set flag valid_local_csrk to false. > > Do you think this thought would be ok for you? I am not really worried about these details anyway. If you remove the bond between two devices, then the connection will be terminated. Which means that next time around you get a new bt_att object. If you do not have any CSRK the next time, you just not set them in the first place. Regards Marcel -- 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