#include "ble_modem.h" #include "app_common.h" #include "host/ble_hs.h" #include "wm_bt_def.h" #include "wm_bt_app.h" #include "wm_bt_util.h" //Is needed for the BT off workaround #include "wm_wifi.h" bool ble_modem_on(void) { int status = BLE_HS_ENOERR; uint8_t uart_no = 0xFF; tls_appl_trace_level = TLS_BT_LOG_VERBOSE; //Should be set with a config define if(bt_adapter_state == WM_BT_STATE_ON) { TLS_BT_APPL_TRACE_VERBOSE("ble modem already on"NEW_LINE); return true; } TLS_BT_APPL_TRACE_DEBUG("ble modem running, uart_no=%d, log_level=%d"NEW_LINE, uart_no, tls_appl_trace_level); status = tls_bt_init(uart_no); if((status != BLE_HS_ENOERR) && (status != BLE_HS_EALREADY)) { TLS_BT_APPL_TRACE_ERROR("%s, tls_bt_init ret:%s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status)); } return status == BLE_HS_ENOERR || status == BLE_HS_EALREADY ? true : false; } bool ble_modem_off(void) { int status = BLE_HS_ENOERR; TLS_BT_APPL_TRACE_DEBUG("ble modem off"NEW_LINE); if(bt_adapter_state == WM_BT_STATE_OFF) { TLS_BT_APPL_TRACE_VERBOSE("ble modem already off"NEW_LINE); return TLS_BT_STATUS_SUCCESS; } status = tls_bt_deinit(); if((status != BLE_HS_ENOERR) && (status != BLE_HS_EALREADY)) { TLS_BT_APPL_TRACE_ERROR("%s, tls_bt_deinit ret:%s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status)); } if(status != BLE_HS_EALREADY) { //Starting a wifi scan really stops the BT modem ?? Why ? I don't know tls_wifi_scan(); } return status == BLE_HS_ENOERR || status == BLE_HS_EALREADY ? true : false; } bool is_ble_modem_on(void) { if(bt_adapter_state == WM_BT_STATE_OFF || bt_system_action != WM_BT_SYSTEM_ACTION_IDLE) return false; return true; }