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. > @@ -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? 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