Discuz! Board

标题: 蓝牙广播超时后 会导致51822开发板重启 [打印本页]

作者: coghost    时间: 2017-3-28 13:22
标题: 蓝牙广播超时后 会导致51822开发板重启
#define APP_ADV_INTERVAL                 60                                        /**< The advertising interval (in units of 0.625 ms. This value corresponds to 25 ms). */
#define APP_ADV_TIMEOUT_IN_SECONDS       180                                        /**< The advertising timeout in units of seconds. */



static void on_ble_evt(ble_evt_t * p_ble_evt)
{
    uint32_t err_code;

    switch (p_ble_evt->header.evt_id)
            {
        case BLE_GAP_EVT_CONNECTED:
            err_code = bsp_indication_set(BSP_INDICATE_CONNECTED);
            APP_ERROR_CHECK(err_code);
            m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
            break;

        case BLE_GAP_EVT_DISCONNECTED:
            err_code = bsp_indication_set(BSP_INDICATE_IDLE);
            APP_ERROR_CHECK(err_code);
            m_conn_handle = BLE_CONN_HANDLE_INVALID;
            break;
        case BLE_GAP_EVT_TIMEOUT:
            err_code = ble_advertising_start(BLE_ADV_MODE_FAST);
            APP_ERROR_CHECK(err_code);

        default:
            // No implementation needed.
            break;
    }
}



在原有基础上, 在 on_ble_evt 的 BLE_GAP_EVT_TIMEOUT 增加了

        case BLE_GAP_EVT_TIMEOUT:
            err_code = ble_advertising_start(BLE_ADV_MODE_FAST);
            APP_ERROR_CHECK(err_code);



现在是每到 APP_ADV_TIMEOUT_IN_SECONDS 超时后, 程序都会重启, 然后再广播, 这个是怎么回事呢??? 是标准流程就是这样? 还是说程序有问题呢?









作者: z7zking    时间: 2017-5-10 18:30
可以试一下在前面加这个试试
if(m_nus.is_notification_enabled)
m_nus.is_notification_enabled = false;




欢迎光临 Discuz! Board (http://qfv8.com/) Powered by Discuz! X3