Слияние кода завершено, страница обновится автоматически
В публичной версии отключены ошибки в функции отключения广播包功能,按以下方式修改
void ble_gatt_server_module_enable(u8 en)
{
log_info("mode_en:%d\n", en);
if (en) {
__this->adv_ctrl_en = 1;
__gatt_server_check_auto_adv();
} else {
ble_gatt_server_adv_enable(0);
+ __this->adv_ctrl_en = 0; // Должна следовать за этой строкой
ble_gatt_server_disconnect_all();
+ __gatt_server_set_work_state(INVAIL_CONN_HANDLE, BLE_ST_IDLE, 0); // Устанавливает состояние BLE в режиме ожидания
}
}
static u8 adv_cnt = 0;
static int trans_make_set_adv_data(void)
{
...
// Нужно динамически изменяемое поле广播包,например:
offset += make_eir_packet_val(&buf[offset], offset, HCI_EIR_DATATYPE_MANUFACTURER_SPECIFIC_DATA, adv_cnt, 1);
if (offset > ADV_RSP_PACKET_MAX) {
puts("***trans_adv_data overflow!!!!!!\n");
return -1;
}
...
}
void adv_data_flash_loop(void *priv)
{
putchar('L');
put_u8hex(adv_cnt);
ble_module_enable(0);
adv_cnt++; // Используется эта переменная для заполнения данных广播包 в trans_make_set_adv_data()
trans_make_set_adv_data();
/* trans_make_set_rsp_data(); // По необходимости можно также изменить ответный пакет */
ble_module_enable(1);
}
Вход Перед тем как оставить комментарий