Page 1 of 1

【求助】BTU mesh灯如何支持beacon遥控中继功能

Posted: 2023年 Aug 7日 11:50
by Robertz

使用BTU tuya os开发mesh灯, 现在加入一个beacon遥控器转发功能,即收到beacon遥控信息,再通过beacon转播出去, 就相当于实现一个beacon遥控器的中继功能, 请问有没有相关例程或者支持?


Re: 【求助】BTU mesh灯如何支持beacon遥控中继功能

Posted: 2023年 Aug 7日 13:54
by kangxi

可以使用 void tuya_ble_advertise_send_cb_init(app_ble_adv_send_cb_t cb) 设置发送回调函数, INT32_T app_ble_data_adv_send(rf_packet_adv_t *par) 返回 1 为发送,返回 0 为结束发送。以下代码供参考。

Code: Select all

OPERATE_RET tuya_init_last(VOID_T)
{
...

    tuya_ble_advertise_send_cb_init(app_ble_data_adv_send);
...

    return OPRT_OK;
}


INT32_T app_ble_data_adv_send(rf_packet_adv_t *par){
    if(__adv_data_send_start == 1){

         for(UINT8_T i=0;i<6;i++){
              par->advA[i] = adv_mac[5-i];
        }
        memcpy(par->data, __adv_data, __adv_data_len);
        par->header.type = 2;//LL_TYPE_ADV_NONCONN_IND;
        par->rf_len = __adv_data_len + 6;
        par->dma_len = par->rf_len + 2;
        
       __adv_data_send_start = 0;
        return 1;
    }else{
        return 0;
    }
} 

Re: 【求助】BTU mesh灯如何支持beacon遥控中继功能

Posted: 2023年 Aug 7日 14:41
by zpleo888

__adv_data_send_start 此标志位何时,在哪里置1


Re: 【求助】BTU mesh灯如何支持beacon遥控中继功能

Posted: 2023年 Aug 7日 17:39
by kangxi
zpleo888 2023年 Aug 7日 14:41

__adv_data_send_start 此标志位何时,在哪里置1

在接收到遥控器指令(保证遥控器指令已过滤,相同遥控器数据包不需要重复转发),将原始遥控器数据复制到缓存,__adv_data_send_start 发送标志位置1,在 app_ble_data_adv_send 里将缓存数据复制到发送缓存中,底层就可自行发送了。


Re: 【求助】BTU mesh灯如何支持beacon遥控中继功能

Posted: 2023年 Aug 16日 11:36
by zpleo888

按上述处理,会发现转播丢包错包多帧等情况。


Re: 【求助】BTU mesh灯如何支持beacon遥控中继功能

Posted: 2023年 Aug 22日 17:11
by zpleo888

有无实现的具体实例


Re: 【求助】BTU mesh灯如何支持beacon遥控中继功能

Posted: 2023年 Aug 25日 14:21
by kangxi

目前没有具体实现,请问丢包错包是什么个现象?