Hi Johan, On 12 March 2014 12:39, Johan Hedberg <johan.hedberg@xxxxxxxxx> wrote: > Hi Lukasz, > > On Mon, Mar 10, 2014, Lukasz Rymanowski wrote: >> With this patch, scheduled inquiry session in btdev can be canceled >> >> Conflicts: >> emulator/btdev.c > > Seems like you forgot to clean up the commit message here. Rather for sure :) > >> @@ -70,6 +70,7 @@ struct btdev { >> void *send_data; >> >> int inquiry_id; >> + bool inquiry_cancel; >> >> struct hook *hook_list[MAX_HOOK_ENTRIES]; >> >> @@ -784,10 +785,20 @@ static bool inquiry_callback(void *user_data) >> static void inquiry_destroy(void *user_data) >> { >> struct inquiry_data *data = user_data; >> + struct btdev *btdev = data->btdev; >> + uint8_t status = BT_HCI_ERR_SUCCESS; >> + >> + if (!btdev) >> + goto finish; >> >> - if (data->btdev) >> - data->btdev->inquiry_id = 0; >> + if (btdev->inquiry_cancel) >> + cmd_complete(btdev, BT_HCI_CMD_INQUIRY_CANCEL, &status, >> + sizeof(status)); >> >> + btdev->inquiry_cancel = false; >> + btdev->inquiry_id = 0; >> + >> +finish: >> free(data); >> } >> >> @@ -820,6 +831,20 @@ error: >> send_event(btdev, BT_HCI_EVT_INQUIRY_COMPLETE, &ic, sizeof(ic)); >> } >> >> +static void inquiry_cancel(struct btdev *btdev) >> +{ >> + uint8_t status = BT_HCI_ERR_COMMAND_DISALLOWED; >> + >> + if (!btdev->inquiry_id) { >> + cmd_complete(btdev, BT_HCI_CMD_INQUIRY_CANCEL, &status, >> + sizeof(status)); >> + return; >> + } >> + >> + btdev->inquiry_cancel = true; >> + timeout_remove(btdev->inquiry_id); > > This whole btdev->inquiry_cancel variable seems pointless to me. Why > don't you simply send the cmd_complete for it after calling > timeout_remove here in the inquiry_cancel function? Well you are actually right here. I will get destroy in the same mainloop iteration anywa. Will fix it. > > Johan Lukasz -- 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