請(qǐng)問(wèn)廣播在哪里調(diào)用啊

我們要做類似于mesh組網(wǎng)的功能,接收到控制命令后通過(guò)廣播中轉(zhuǎn),但是不知道廣播在哪里發(fā)送的,廣播了中轉(zhuǎn)數(shù)據(jù)就得一直發(fā)。我想在中轉(zhuǎn)數(shù)據(jù)發(fā)送完畢就把廣播的內(nèi)容修改為類似于心跳的東西。

廣播開關(guān)/重啟


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//獲取當(dāng)前廣播狀態(tài)
//0為非廣播,非0為廣播
uint8_t adv_status;
GAPRole_GetParameter(GAPROLE_ADVERT_ENABLED, &adv_status );
?
//開啟廣播
uint8_t advertising_enable = true;
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8_t ), &advertising_enable );
//關(guān)閉廣播
advertising_enable = false;
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8_t ), &advertising_enable );
//? 對(duì)應(yīng)的狀態(tài)上報(bào):
// :GAPROLE_WAITING
// :pEvent->gap.opcode == GAP_END_DISCOVERABLE_DONE_EVENT
?
//重啟廣播
//要先關(guān)閉廣播,然后在停止廣播的事件產(chǎn)生后才能再去使能廣播,不能剛執(zhí)行完關(guān)閉廣播,就去開啟廣播
//因?yàn)檫@里只是設(shè)置協(xié)議棧狀態(tài)機(jī)標(biāo)識(shí)位,實(shí)際上廣播并沒(méi)有立刻停止,要等協(xié)議棧輪詢處理后,才會(huì)真正關(guān)閉,如果現(xiàn)在去啟動(dòng)廣播,協(xié)議棧會(huì)認(rèn)為當(dāng)前已經(jīng)在廣播狀態(tài)


廣播間隔


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//獲取當(dāng)前的廣播間隔
uint16_t advInt;
advInt = GAP_GetParamValue( TGAP_DISC_ADV_INT_MIN );
PRINT("min adv %d\r\n",advInt);
advInt = GAP_GetParamValue( TGAP_DISC_ADV_INT_MAX );
PRINT("max adv %d\r\n",advInt);
?
//修改廣播間隔
?
/*注意,廣播的參數(shù)修改,需要重啟廣播,才能生效
?*可以修改后,然后在廣播 GAPROLE_WAITING(廣播停止)狀態(tài)產(chǎn)生后,然后立刻開啟廣播. 不能關(guān)閉廣播后立刻開啟廣播.
?*/
uint16 advInt = 160;
GAP_SetParamValue( TGAP_DISC_ADV_INT_MIN, advInt );
GAP_SetParamValue( TGAP_DISC_ADV_INT_MAX, advInt );


廣播超時(shí)


1
2
3
4
5
6
7
8
9
uint16_t adv_timeout;
//獲取當(dāng)前的廣播超時(shí)時(shí)間,以0.625ms為單位,0表示永不超時(shí)
adv_timeout = GAP_GetParamValue( TGAP_GEN_DISC_ADV_MIN );
PRINT("adv_timeout =%d\r\n",adv_timeout);
//設(shè)置廣播間隔,需要重啟廣播后才能生效?
GAP_SetParamValue( TGAP_GEN_DISC_ADV_MIN, 16000 );
//超時(shí)產(chǎn)生后,會(huì)產(chǎn)生藍(lán)牙狀態(tài)更新事件上報(bào),對(duì)應(yīng)的事件為"GAPROLE_WAITING"
?
//也可以通過(guò)應(yīng)用層的去手動(dòng)控制廣播的關(guān)閉與開啟


設(shè)置/修改廣播內(nèi)容

廣播內(nèi)容的修改不用停止廣播,直接在協(xié)議棧初始化后修改即可

1
2
3
4
5
6
//設(shè)置/修改掃描回復(fù)以及廣播數(shù)據(jù),這種修改需要重啟廣播
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
?
//或者 通過(guò)下面方式進(jìn)行修改,實(shí)時(shí)生效
bStatus_t GAP_UpdateAdvertisingData( u8 taskID,u8 adType,u8 dataLen,u8 *pAdvertData );


設(shè)置廣播類型


1
2
3
4
5
6
7
//設(shè)置廣播類型為 不可連接的,不支持掃描回復(fù)包
uint8 initial_adv_event_type = GAP_ADTYPE_ADV_NONCONN_IND;
GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &initial_adv_event_type );
?
//設(shè)置廣播類型為 可連接的,支持掃描回復(fù)包
initial_adv_event_type = GAP_ADTYPE_ADV_IND;
GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &initial_adv_event_type );


廣播信道MAP


1
2
3
4
5
6
7
8
9
10
11
12
13
14
//獲取廣播信道映射
// GAP_ADVCHAN_DEFINES GAP Advertisement Channel Map
#define GAP_ADVCHAN_37? 0x01? //!< Advertisement Channel 37
#define GAP_ADVCHAN_38? 0x02? //!< Advertisement Channel 38
#define GAP_ADVCHAN_39? 0x04? //!< Advertisement Channel 39
#define GAP_ADVCHAN_ALL (GAP_ADVCHAN_37 | GAP_ADVCHAN_38 | GAP_ADVCHAN_39) //!< All Advertisement Channels Enabled
?
uint8_t adv_channel_map;
GAPRole_GetParameter(GAPROLE_ADV_CHANNEL_MAP, &adv_channel_map);
?
//設(shè)置廣播信道映射
//可以在任何時(shí)候設(shè)置
adv_channel_map = GAP_ADVCHAN_37? | GAP_ADVCHAN_38 ;
GAPRole_SetParameter( GAPROLE_ADV_CHANNEL_MAP, sizeof( uint8 ), &adv_channel_map);



只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频