乐鑫技术交流
直播中

萧蔼晨

8年用户 1016经验值
私信 关注
[问答]

请问esp32c3,ble mesh怎么向订阅的分组发布消息?

我创建了一个供应商模型

static esp_ble_mesh_model_t vnd_models[] = {

    ESP_BLE_MESH_VENDOR_MODEL(CID_ESP, ESP_BLE_MESH_VND_MODEL_ID_SERVER,

    vnd_op, NULL, &vendor_client),

};

发布消息的代码如下
Code: Select all
void example_ble_mesh_send_vendor_message(bool resend)
{
    esp_ble_mesh_msg_ctx_t ctx = {0};
    uint32_t opcode;
    esp_err_t err;

    ctx.net_idx = prov_key.net_idx;
    ctx.app_idx = prov_key.app_idx;
    ctx.addr = 0xc004;//store.server_addr;
    ctx.send_ttl = MSG_SEND_TTL;
    ctx.send_rel = MSG_SEND_REL;
    opcode = ESP_BLE_MESH_VND_MODEL_OP_SEND;

    if (resend == false) {
        store.vnd_tid++;
    }

    err = esp_ble_mesh_client_model_send_msg(vendor_client.model, &ctx, opcode,
            sizeof(store.vnd_tid), (uint8_t *)&store.vnd_tid, MSG_TIMEOUT, true, ROLE_NODE);
    if (err != ESP_OK) {
        ESP_LOGE(TAG, "Failed to send %06x %06x %06x %06x %06x", err,ctx.addr,opcode,ctx.net_idx,ctx.app_idx);
        return;
    }

    // mesh_example_info_store(); /* Store proper mesh example info */
}

我固定订阅分组地址为0xc004,但是esp_ble_mesh_client_model_send_msg函数返回失败,

调用这个api的第一个参数esp_ble_mesh_model_t *model,这个参数因该怎么填?(对于vnd_models模型而言)

我尝试过通用开关模型,传入onoff_server_0.model,就可以成功向订阅的分组发布消息,为什么vnd_models模型不可以.

有没有更加简单的api,直接传订阅分组地址就可以发布消息的?

更多回帖

发帖
×
20
完善资料,
赚取积分