static void shutdown_device(void) { bt_hci_flush(hci_dev); free(firmware_data); if (use_manufacturer_mode) { struct cmd_manufacturer_mode cmd; cmd.mode_switch = 0x00; cmd.reset = manufacturer_mode_reset; bt_hci_send(hci_dev, CMD_MANUFACTURER_MODE, &cmd, sizeof(cmd), leave_manufacturer_mode_complete, NULL, NULL); return; } if (reset_on_exit) { bt_hci_send(hci_dev, BT_HCI_CMD_RESET, NULL, 0, reset_complete, NULL, NULL); return; } mainloop_quit(); }
static void shutdown_device(void) { unsigned int id; bt_hci_flush(hci_dev); if (reset_on_shutdown) { id = timeout_add(5000, shutdown_timeout, NULL, NULL); bt_hci_send(hci_dev, BT_HCI_CMD_RESET, NULL, 0, shutdown_complete, UINT_TO_PTR(id), NULL); } else mainloop_quit(); }
static void shutdown_device(void) { uint8_t enable = 0x00; unsigned int id; bt_hci_flush(hci_dev); id = timeout_add(5000, shutdown_timeout, NULL, NULL); bt_hci_send(hci_dev, BT_HCI_CMD_LE_SET_ADV_ENABLE, &enable, 1, NULL, NULL, NULL); bt_hci_send(hci_dev, BT_HCI_CMD_RESET, NULL, 0, shutdown_complete, UINT_TO_PTR(id), NULL); }