在一些UI场景中需要引用到tws主从数据同步的情况,防止TWS对耳中两边的数据不一致
demo
//TWS主从数据同步
#define USER_TWS_SYNC_DEMO
#ifdef USER_TWS_SYNC_DEMO
enum {
USER_TWS_DATA_SYNC_ID_1 = 1,
//...code
};
//ID名称可以任意修改
#define TWS_FUNC_ID_USER_SYNC TWS_FUNC_ID('U', 'T', 'W', 'S')
static void bt_tws_user_tws_sync(void *_data, u16 len, bool rx)
{
if (rx) {
u8 *data = (u8 *)_data;
//在这里获取到由对耳发送过来数据,存储在data
switch (data[0])
{
case USER_TWS_DATA_SYNC_ID_1:
printf("USER TWS SYNC data %d\n",data[1]);
//tws接收到数据可以在这里打印出来,在这里取用处理
break;
// case ..
default:
break;
}
}
}
REGISTER_TWS_FUNC_STUB(app_user_tws_sync_stub) = {
.func_id = TWS_FUNC_ID_USER_SYNC,
.func = bt_tws_user_tws_sync,
};
/**
* @brief 自定义tws主从数据同步demo
*
* @param [in] sync_id 自定义区分的ID号
* @param [in] my_data 需要同步的数据
* @param [in] len 数据长度(这里只写了个两位的数组)
*
* @return VOID
*/
void bt_tws_sync_user_deal(u8 sync_id,u8 my_data,u8 len)
{
u8 data[2];
data[0] = sync_id;
data[1] = my_data;
//调用这个接口将需要同步的数据发送到对耳
tws_api_send_data_to_sibling(data, len, TWS_FUNC_ID_USER_SYNC);
}
#else
void bt_tws_sync_user_deal(u8 sync_id,u8 my_data,u8 len)
{
printf("Not TWS DATA SYNC DEMO !!!\n");
}
#endif
用例: