hci.c (308eeaffaa1b7bc3f35655c74d782ef314fd65cd) | hci.c (6fad2c376995e272e1924e97046a38cb37cd48b1) |
---|---|
1/* 2 * Copyright (C) 2014 BlueKitchen GmbH 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 39 unchanged lines hidden (view full) --- 48 49 50#ifdef ENABLE_CLASSIC 51#ifdef HAVE_EMBEDDED_TICK 52#include "btstack_run_loop_embedded.h" 53#endif 54#endif 55 | 1/* 2 * Copyright (C) 2014 BlueKitchen GmbH 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 39 unchanged lines hidden (view full) --- 48 49 50#ifdef ENABLE_CLASSIC 51#ifdef HAVE_EMBEDDED_TICK 52#include "btstack_run_loop_embedded.h" 53#endif 54#endif 55 |
56#ifdef HAVE_PLATFORM_IPHONE_OS 57#include "../port/ios/src/btstack_control_iphone.h" 58#endif 59 | |
60#ifdef ENABLE_BLE 61#include "gap.h" 62#include "ble/le_device_db.h" 63#endif 64 65#include <stdarg.h> 66#include <string.h> 67#include <inttypes.h> --- 1246 unchanged lines hidden (view full) --- 1314 (void)memcpy(&packet[6], hci_stack->local_name, bytes_to_copy); 1315 // expand '00:00:00:00:00:00' in name with bd_addr 1316 btstack_replace_bd_addr_placeholder(&packet[offset], bytes_to_copy, hci_stack->local_bd_addr); 1317 } 1318 hci_send_cmd_packet(packet, HCI_CMD_HEADER_SIZE + 1 + EXTENDED_INQUIRY_RESPONSE_DATA_LEN); 1319} 1320#endif 1321 | 56#ifdef ENABLE_BLE 57#include "gap.h" 58#include "ble/le_device_db.h" 59#endif 60 61#include <stdarg.h> 62#include <string.h> 63#include <inttypes.h> --- 1246 unchanged lines hidden (view full) --- 1310 (void)memcpy(&packet[6], hci_stack->local_name, bytes_to_copy); 1311 // expand '00:00:00:00:00:00' in name with bd_addr 1312 btstack_replace_bd_addr_placeholder(&packet[offset], bytes_to_copy, hci_stack->local_bd_addr); 1313 } 1314 hci_send_cmd_packet(packet, HCI_CMD_HEADER_SIZE + 1 + EXTENDED_INQUIRY_RESPONSE_DATA_LEN); 1315} 1316#endif 1317 |
1322#if !defined(HAVE_PLATFORM_IPHONE_OS) && !defined (HAVE_HOST_CONTROLLER_API) | 1318#ifndef HAVE_HOST_CONTROLLER_API |
1323 1324static uint32_t hci_transport_uart_get_main_baud_rate(void){ 1325 if (!hci_stack->config) return 0; 1326 uint32_t baud_rate = ((hci_transport_config_uart_t *)hci_stack->config)->baudrate_main; 1327 // Limit baud rate for Broadcom chipsets to 3 mbps 1328 if ((hci_stack->manufacturer == BLUETOOTH_COMPANY_ID_BROADCOM_CORPORATION) && (baud_rate > 3000000)){ 1329 baud_rate = 3000000; 1330 } --- 57 unchanged lines hidden (view full) --- 1388 1389// assumption: hci_can_send_command_packet_now() == true 1390static void hci_initializing_run(void){ 1391 log_debug("hci_initializing_run: substate %u, can send %u", hci_stack->substate, hci_can_send_command_packet_now()); 1392 switch (hci_stack->substate){ 1393 case HCI_INIT_SEND_RESET: 1394 hci_state_reset(); 1395 | 1319 1320static uint32_t hci_transport_uart_get_main_baud_rate(void){ 1321 if (!hci_stack->config) return 0; 1322 uint32_t baud_rate = ((hci_transport_config_uart_t *)hci_stack->config)->baudrate_main; 1323 // Limit baud rate for Broadcom chipsets to 3 mbps 1324 if ((hci_stack->manufacturer == BLUETOOTH_COMPANY_ID_BROADCOM_CORPORATION) && (baud_rate > 3000000)){ 1325 baud_rate = 3000000; 1326 } --- 57 unchanged lines hidden (view full) --- 1384 1385// assumption: hci_can_send_command_packet_now() == true 1386static void hci_initializing_run(void){ 1387 log_debug("hci_initializing_run: substate %u, can send %u", hci_stack->substate, hci_can_send_command_packet_now()); 1388 switch (hci_stack->substate){ 1389 case HCI_INIT_SEND_RESET: 1390 hci_state_reset(); 1391 |
1396#if !defined(HAVE_PLATFORM_IPHONE_OS) && !defined (HAVE_HOST_CONTROLLER_API) | 1392#ifndef HAVE_HOST_CONTROLLER_API |
1397 // prepare reset if command complete not received in 100ms 1398 btstack_run_loop_set_timer(&hci_stack->timeout, HCI_RESET_RESEND_TIMEOUT_MS); 1399 btstack_run_loop_set_timer_handler(&hci_stack->timeout, hci_initialization_timeout_handler); 1400 btstack_run_loop_add_timer(&hci_stack->timeout); 1401#endif 1402 // send command 1403 hci_stack->substate = HCI_INIT_W4_SEND_RESET; 1404 hci_send_cmd(&hci_reset); 1405 break; 1406 case HCI_INIT_SEND_READ_LOCAL_VERSION_INFORMATION: 1407 hci_send_cmd(&hci_read_local_version_information); 1408 hci_stack->substate = HCI_INIT_W4_SEND_READ_LOCAL_VERSION_INFORMATION; 1409 break; 1410 case HCI_INIT_SEND_READ_LOCAL_NAME: 1411 hci_send_cmd(&hci_read_local_name); 1412 hci_stack->substate = HCI_INIT_W4_SEND_READ_LOCAL_NAME; 1413 break; 1414 | 1393 // prepare reset if command complete not received in 100ms 1394 btstack_run_loop_set_timer(&hci_stack->timeout, HCI_RESET_RESEND_TIMEOUT_MS); 1395 btstack_run_loop_set_timer_handler(&hci_stack->timeout, hci_initialization_timeout_handler); 1396 btstack_run_loop_add_timer(&hci_stack->timeout); 1397#endif 1398 // send command 1399 hci_stack->substate = HCI_INIT_W4_SEND_RESET; 1400 hci_send_cmd(&hci_reset); 1401 break; 1402 case HCI_INIT_SEND_READ_LOCAL_VERSION_INFORMATION: 1403 hci_send_cmd(&hci_read_local_version_information); 1404 hci_stack->substate = HCI_INIT_W4_SEND_READ_LOCAL_VERSION_INFORMATION; 1405 break; 1406 case HCI_INIT_SEND_READ_LOCAL_NAME: 1407 hci_send_cmd(&hci_read_local_name); 1408 hci_stack->substate = HCI_INIT_W4_SEND_READ_LOCAL_NAME; 1409 break; 1410 |
1415#if !defined(HAVE_PLATFORM_IPHONE_OS) && !defined (HAVE_HOST_CONTROLLER_API) | 1411#ifndef HAVE_HOST_CONTROLLER_API |
1416 case HCI_INIT_SEND_RESET_CSR_WARM_BOOT: 1417 hci_state_reset(); 1418 // prepare reset if command complete not received in 100ms 1419 btstack_run_loop_set_timer(&hci_stack->timeout, HCI_RESET_RESEND_TIMEOUT_MS); 1420 btstack_run_loop_set_timer_handler(&hci_stack->timeout, hci_initialization_timeout_handler); 1421 btstack_run_loop_add_timer(&hci_stack->timeout); 1422 // send command 1423 hci_stack->substate = HCI_INIT_W4_CUSTOM_INIT_CSR_WARM_BOOT; --- 284 unchanged lines hidden (view full) --- 1708 log_debug("Command status error 0x%02x for expected opcode %04x at substate %u", status, opcode, hci_stack->substate); 1709 } else { 1710 log_info("Command status OK for expected opcode %04x, waiting for command complete", opcode); 1711 } 1712 } else { 1713 log_debug("Command status for opcode %04x, expected %04x", opcode, hci_stack->last_cmd_opcode); 1714 } 1715 } | 1412 case HCI_INIT_SEND_RESET_CSR_WARM_BOOT: 1413 hci_state_reset(); 1414 // prepare reset if command complete not received in 100ms 1415 btstack_run_loop_set_timer(&hci_stack->timeout, HCI_RESET_RESEND_TIMEOUT_MS); 1416 btstack_run_loop_set_timer_handler(&hci_stack->timeout, hci_initialization_timeout_handler); 1417 btstack_run_loop_add_timer(&hci_stack->timeout); 1418 // send command 1419 hci_stack->substate = HCI_INIT_W4_CUSTOM_INIT_CSR_WARM_BOOT; --- 284 unchanged lines hidden (view full) --- 1704 log_debug("Command status error 0x%02x for expected opcode %04x at substate %u", status, opcode, hci_stack->substate); 1705 } else { 1706 log_info("Command status OK for expected opcode %04x, waiting for command complete", opcode); 1707 } 1708 } else { 1709 log_debug("Command status for opcode %04x, expected %04x", opcode, hci_stack->last_cmd_opcode); 1710 } 1711 } |
1716#if !defined(HAVE_PLATFORM_IPHONE_OS) && !defined (HAVE_HOST_CONTROLLER_API) | 1712#ifndef HAVE_HOST_CONTROLLER_API |
1717 // Vendor == CSR 1718 if ((hci_stack->substate == HCI_INIT_W4_CUSTOM_INIT) && (hci_event_packet_get_type(packet) == HCI_EVENT_VENDOR_SPECIFIC)){ 1719 // TODO: track actual command 1720 command_completed = true; 1721 } 1722 1723 // Vendor == Toshiba 1724 if ((hci_stack->substate == HCI_INIT_W4_SEND_BAUD_CHANGE) && (hci_event_packet_get_type(packet) == HCI_EVENT_VENDOR_SPECIFIC)){ --- 8 unchanged lines hidden (view full) --- 1733} 1734 1735static void hci_initializing_event_handler(const uint8_t * packet, uint16_t size){ 1736 1737 UNUSED(size); // ok: less than 6 bytes are read from our buffer 1738 1739 bool command_completed = hci_initializing_event_handler_command_completed(packet); 1740 | 1713 // Vendor == CSR 1714 if ((hci_stack->substate == HCI_INIT_W4_CUSTOM_INIT) && (hci_event_packet_get_type(packet) == HCI_EVENT_VENDOR_SPECIFIC)){ 1715 // TODO: track actual command 1716 command_completed = true; 1717 } 1718 1719 // Vendor == Toshiba 1720 if ((hci_stack->substate == HCI_INIT_W4_SEND_BAUD_CHANGE) && (hci_event_packet_get_type(packet) == HCI_EVENT_VENDOR_SPECIFIC)){ --- 8 unchanged lines hidden (view full) --- 1729} 1730 1731static void hci_initializing_event_handler(const uint8_t * packet, uint16_t size){ 1732 1733 UNUSED(size); // ok: less than 6 bytes are read from our buffer 1734 1735 bool command_completed = hci_initializing_event_handler_command_completed(packet); 1736 |
1741#if !defined(HAVE_PLATFORM_IPHONE_OS) && !defined (HAVE_HOST_CONTROLLER_API) | 1737#ifndef HAVE_HOST_CONTROLLER_API |
1742 1743 // Late response (> 100 ms) for HCI Reset e.g. on Toshiba TC35661: 1744 // Command complete for HCI Reset arrives after we've resent the HCI Reset command 1745 // 1746 // HCI Reset 1747 // Timeout 100 ms 1748 // HCI Reset 1749 // Command Complete Reset --- 43 unchanged lines hidden (view full) --- 1793 1794#endif 1795 1796 if (!command_completed) return; 1797 1798 bool need_baud_change = false; 1799 bool need_addr_change = false; 1800 | 1738 1739 // Late response (> 100 ms) for HCI Reset e.g. on Toshiba TC35661: 1740 // Command complete for HCI Reset arrives after we've resent the HCI Reset command 1741 // 1742 // HCI Reset 1743 // Timeout 100 ms 1744 // HCI Reset 1745 // Command Complete Reset --- 43 unchanged lines hidden (view full) --- 1789 1790#endif 1791 1792 if (!command_completed) return; 1793 1794 bool need_baud_change = false; 1795 bool need_addr_change = false; 1796 |
1801#if !defined(HAVE_PLATFORM_IPHONE_OS) && !defined (HAVE_HOST_CONTROLLER_API) | 1797#ifndef HAVE_HOST_CONTROLLER_API |
1802 need_baud_change = hci_stack->config 1803 && hci_stack->chipset 1804 && hci_stack->chipset->set_baudrate_command 1805 && hci_stack->hci_transport->set_baudrate 1806 && ((hci_transport_config_uart_t *)hci_stack->config)->baudrate_main; 1807 1808 need_addr_change = hci_stack->custom_bd_addr_set 1809 && hci_stack->chipset 1810 && hci_stack->chipset->set_bd_addr_command; 1811#endif 1812 1813 switch(hci_stack->substate){ 1814 | 1798 need_baud_change = hci_stack->config 1799 && hci_stack->chipset 1800 && hci_stack->chipset->set_baudrate_command 1801 && hci_stack->hci_transport->set_baudrate 1802 && ((hci_transport_config_uart_t *)hci_stack->config)->baudrate_main; 1803 1804 need_addr_change = hci_stack->custom_bd_addr_set 1805 && hci_stack->chipset 1806 && hci_stack->chipset->set_bd_addr_command; 1807#endif 1808 1809 switch(hci_stack->substate){ 1810 |
1815#if !defined(HAVE_PLATFORM_IPHONE_OS) && !defined (HAVE_HOST_CONTROLLER_API) | 1811#ifndef HAVE_HOST_CONTROLLER_API |
1816 case HCI_INIT_SEND_RESET: 1817 // on CSR with BCSP/H5, resend triggers resend of HCI Reset and leads to substate == HCI_INIT_SEND_RESET 1818 // fix: just correct substate and behave as command below 1819 hci_stack->substate = HCI_INIT_W4_SEND_RESET; 1820 btstack_run_loop_remove_timer(&hci_stack->timeout); 1821 break; 1822 case HCI_INIT_W4_SEND_RESET: 1823 btstack_run_loop_remove_timer(&hci_stack->timeout); --- 39 unchanged lines hidden (view full) --- 1863 return; 1864 } 1865 if (need_addr_change){ 1866 hci_stack->substate = HCI_INIT_SET_BD_ADDR; 1867 return; 1868 } 1869 hci_stack->substate = HCI_INIT_READ_BD_ADDR; 1870 return; | 1812 case HCI_INIT_SEND_RESET: 1813 // on CSR with BCSP/H5, resend triggers resend of HCI Reset and leads to substate == HCI_INIT_SEND_RESET 1814 // fix: just correct substate and behave as command below 1815 hci_stack->substate = HCI_INIT_W4_SEND_RESET; 1816 btstack_run_loop_remove_timer(&hci_stack->timeout); 1817 break; 1818 case HCI_INIT_W4_SEND_RESET: 1819 btstack_run_loop_remove_timer(&hci_stack->timeout); --- 39 unchanged lines hidden (view full) --- 1859 return; 1860 } 1861 if (need_addr_change){ 1862 hci_stack->substate = HCI_INIT_SET_BD_ADDR; 1863 return; 1864 } 1865 hci_stack->substate = HCI_INIT_READ_BD_ADDR; 1866 return; |
1871#if !defined(HAVE_PLATFORM_IPHONE_OS) && !defined (HAVE_HOST_CONTROLLER_API) | 1867#ifndef HAVE_HOST_CONTROLLER_API |
1872 case HCI_INIT_W4_SEND_BAUD_CHANGE_BCM: 1873 if (need_baud_change){ 1874 uint32_t baud_rate = hci_transport_uart_get_main_baud_rate(); 1875 log_info("Local baud rate change to %" PRIu32 "(w4_send_baud_change_bcm))", baud_rate); 1876 hci_stack->hci_transport->set_baudrate(baud_rate); 1877 } 1878 if (need_addr_change){ 1879 hci_stack->substate = HCI_INIT_SET_BD_ADDR; --- 1847 unchanged lines hidden (view full) --- 3727 hci_stack->link_supervision_timeout = link_supervision_timeout; 3728} 3729 3730void hci_disable_l2cap_timeout_check(void){ 3731 disable_l2cap_timeouts = 1; 3732} 3733#endif 3734 | 1868 case HCI_INIT_W4_SEND_BAUD_CHANGE_BCM: 1869 if (need_baud_change){ 1870 uint32_t baud_rate = hci_transport_uart_get_main_baud_rate(); 1871 log_info("Local baud rate change to %" PRIu32 "(w4_send_baud_change_bcm))", baud_rate); 1872 hci_stack->hci_transport->set_baudrate(baud_rate); 1873 } 1874 if (need_addr_change){ 1875 hci_stack->substate = HCI_INIT_SET_BD_ADDR; --- 1847 unchanged lines hidden (view full) --- 3723 hci_stack->link_supervision_timeout = link_supervision_timeout; 3724} 3725 3726void hci_disable_l2cap_timeout_check(void){ 3727 disable_l2cap_timeouts = 1; 3728} 3729#endif 3730 |
3735#if !defined(HAVE_PLATFORM_IPHONE_OS) && !defined (HAVE_HOST_CONTROLLER_API) | 3731#ifndef HAVE_HOST_CONTROLLER_API |
3736// Set Public BD ADDR - passed on to Bluetooth chipset if supported in bt_control_h 3737void hci_set_bd_addr(bd_addr_t addr){ 3738 (void)memcpy(hci_stack->custom_bd_addr, addr, 6); 3739 hci_stack->custom_bd_addr_set = 1; 3740} 3741#endif 3742 3743// State-Module-Driver overview --- 197 unchanged lines hidden (view full) --- 3941 break; 3942 } 3943 return ERROR_CODE_SUCCESS; 3944} 3945 3946static int hci_power_control_state_falling_asleep(HCI_POWER_MODE power_mode) { 3947 switch (power_mode){ 3948 case HCI_POWER_ON: | 3732// Set Public BD ADDR - passed on to Bluetooth chipset if supported in bt_control_h 3733void hci_set_bd_addr(bd_addr_t addr){ 3734 (void)memcpy(hci_stack->custom_bd_addr, addr, 6); 3735 hci_stack->custom_bd_addr_set = 1; 3736} 3737#endif 3738 3739// State-Module-Driver overview --- 197 unchanged lines hidden (view full) --- 3937 break; 3938 } 3939 return ERROR_CODE_SUCCESS; 3940} 3941 3942static int hci_power_control_state_falling_asleep(HCI_POWER_MODE power_mode) { 3943 switch (power_mode){ 3944 case HCI_POWER_ON: |
3949 3950#ifdef HAVE_PLATFORM_IPHONE_OS 3951 // nothing to do, if H4 supports power management 3952 if (btstack_control_iphone_power_management_enabled()){ 3953 hci_stack->state = HCI_STATE_INITIALIZING; 3954 hci_stack->substate = HCI_INIT_WRITE_SCAN_ENABLE; // init after sleep 3955 break; 3956 } 3957#endif | |
3958 hci_power_transition_to_initializing(); 3959 break; 3960 case HCI_POWER_OFF: 3961 // see hci_run 3962 hci_stack->state = HCI_STATE_HALTING; 3963 hci_stack->substate = HCI_HALTING_DISCONNECT_ALL_NO_TIMER; 3964 break; 3965 case HCI_POWER_SLEEP: --- 5 unchanged lines hidden (view full) --- 3971 } 3972 return ERROR_CODE_SUCCESS; 3973} 3974 3975static int hci_power_control_state_sleeping(HCI_POWER_MODE power_mode) { 3976 int err; 3977 switch (power_mode){ 3978 case HCI_POWER_ON: | 3945 hci_power_transition_to_initializing(); 3946 break; 3947 case HCI_POWER_OFF: 3948 // see hci_run 3949 hci_stack->state = HCI_STATE_HALTING; 3950 hci_stack->substate = HCI_HALTING_DISCONNECT_ALL_NO_TIMER; 3951 break; 3952 case HCI_POWER_SLEEP: --- 5 unchanged lines hidden (view full) --- 3958 } 3959 return ERROR_CODE_SUCCESS; 3960} 3961 3962static int hci_power_control_state_sleeping(HCI_POWER_MODE power_mode) { 3963 int err; 3964 switch (power_mode){ 3965 case HCI_POWER_ON: |
3979#ifdef HAVE_PLATFORM_IPHONE_OS 3980 // nothing to do, if H4 supports power management 3981 if (btstack_control_iphone_power_management_enabled()){ 3982 hci_stack->state = HCI_STATE_INITIALIZING; 3983 hci_stack->substate = HCI_INIT_AFTER_SLEEP; 3984 hci_update_scan_enable(); 3985 break; 3986 } 3987#endif | |
3988 err = hci_power_control_wake(); 3989 if (err) return err; 3990 hci_power_transition_to_initializing(); 3991 break; 3992 case HCI_POWER_OFF: 3993 hci_stack->state = HCI_STATE_HALTING; 3994 hci_stack->substate = HCI_HALTING_DISCONNECT_ALL_NO_TIMER; 3995 break; --- 1103 unchanged lines hidden (view full) --- 5099 break; 5100 5101 case HCI_STATE_FALLING_ASLEEP: 5102 switch(hci_stack->substate) { 5103 case HCI_FALLING_ASLEEP_DISCONNECT: 5104 log_info("HCI_STATE_FALLING_ASLEEP"); 5105 // close all open connections 5106 connection = (hci_connection_t *) hci_stack->connections; | 3966 err = hci_power_control_wake(); 3967 if (err) return err; 3968 hci_power_transition_to_initializing(); 3969 break; 3970 case HCI_POWER_OFF: 3971 hci_stack->state = HCI_STATE_HALTING; 3972 hci_stack->substate = HCI_HALTING_DISCONNECT_ALL_NO_TIMER; 3973 break; --- 1103 unchanged lines hidden (view full) --- 5077 break; 5078 5079 case HCI_STATE_FALLING_ASLEEP: 5080 switch(hci_stack->substate) { 5081 case HCI_FALLING_ASLEEP_DISCONNECT: 5082 log_info("HCI_STATE_FALLING_ASLEEP"); 5083 // close all open connections 5084 connection = (hci_connection_t *) hci_stack->connections; |
5107 5108#ifdef HAVE_PLATFORM_IPHONE_OS 5109 // don't close connections, if H4 supports power management 5110 if (btstack_control_iphone_power_management_enabled()){ 5111 connection = NULL; 5112 } 5113#endif | |
5114 if (connection){ 5115 5116 // send disconnect 5117 if (!hci_can_send_command_packet_now()) return; 5118 5119 log_info("HCI_STATE_FALLING_ASLEEP, connection %p, handle %u", connection, (uint16_t)connection->con_handle); 5120 hci_send_cmd(&hci_disconnect, connection->con_handle, ERROR_CODE_REMOTE_USER_TERMINATED_CONNECTION); 5121 --- 13 unchanged lines hidden (view full) --- 5135 hci_stack->substate = HCI_FALLING_ASLEEP_W4_WRITE_SCAN_ENABLE; 5136 break; 5137 } 5138 5139 /* fall through */ 5140 5141 case HCI_FALLING_ASLEEP_COMPLETE: 5142 log_info("HCI_STATE_HALTING, calling sleep"); | 5085 if (connection){ 5086 5087 // send disconnect 5088 if (!hci_can_send_command_packet_now()) return; 5089 5090 log_info("HCI_STATE_FALLING_ASLEEP, connection %p, handle %u", connection, (uint16_t)connection->con_handle); 5091 hci_send_cmd(&hci_disconnect, connection->con_handle, ERROR_CODE_REMOTE_USER_TERMINATED_CONNECTION); 5092 --- 13 unchanged lines hidden (view full) --- 5106 hci_stack->substate = HCI_FALLING_ASLEEP_W4_WRITE_SCAN_ENABLE; 5107 break; 5108 } 5109 5110 /* fall through */ 5111 5112 case HCI_FALLING_ASLEEP_COMPLETE: 5113 log_info("HCI_STATE_HALTING, calling sleep"); |
5143#ifdef HAVE_PLATFORM_IPHONE_OS 5144 // don't actually go to sleep, if H4 supports power management 5145 if (btstack_control_iphone_power_management_enabled()){ 5146 // SLEEP MODE reached 5147 hci_stack->state = HCI_STATE_SLEEPING; 5148 hci_emit_state(); 5149 break; 5150 } 5151#endif | |
5152 // switch mode 5153 hci_power_control_sleep(); // changes hci_stack->state to SLEEP 5154 hci_emit_state(); 5155 break; 5156 5157 default: 5158 break; 5159 } --- 1835 unchanged lines hidden --- | 5114 // switch mode 5115 hci_power_control_sleep(); // changes hci_stack->state to SLEEP 5116 hci_emit_state(); 5117 break; 5118 5119 default: 5120 break; 5121 } --- 1835 unchanged lines hidden --- |