Peripheral_TaskID使用問題

就是這個Peripheral_TaskID我看不明白如下


image.png

在這個函數(shù)中,我的理解是給你自己定義的任務分配一個id,用來表示優(yōu)先級把,前邊的老大哥都排好順序了,現(xiàn)在開始給你自己的任務編個號,但是我不知道這個號具體有啥用,


然后

image.png


在這個函數(shù)中有好多這個id,但是這個id也不是函數(shù)傳進來的id,很明顯這是個全局變量,然后我想要找這個TaskID是在哪里改變他的值的,就是在死循環(huán)里邊那個地方改變他的值,從而分別出來要執(zhí)行哪個事件,后來我發(fā)現(xiàn)死循環(huán)函數(shù)TMOS_SystemProcess()打不開,然后我就想起來我之前用的Zigbee協(xié)議棧,感覺跟這個藍牙協(xié)議棧一樣相似,然后就去看了Zigbee協(xié)議棧



image.png

相對應的大概就是這個函數(shù)了,他是跟距任務id從零開始依次遞加,然后判斷這個任務有沒有被置1,置1的話說明這個事件被觸發(fā)了,需要處理這個事件了,


image.png


我們不妨直接移動到這個觸發(fā)的事件里


image.png

發(fā)現(xiàn)他確實是根據(jù)id找的任務,而這個圖中的SampleApp_ProcessEvent這個函數(shù)對應的也是藍牙協(xié)議中的Peripheral_ProcessEvent函數(shù),但是這個時候我就有個疑問,如果在Peripheral_ProcessEvent函數(shù)里邊我們自己定義不止一個事件,每個事件都分配一個id,那么這個id的值肯定比上邊這個圖里邊的taskArr數(shù)組里邊定義的這些個數(shù)大,也就是說超出了這個數(shù)組的范圍,


越說越亂了,反正我就是不懂Peripheral_TaskID

image.png

這個函數(shù)里邊明明每個事件ID不同,他還要寫ID,還有就是既然有每個事件定義的下邊這個東西,為啥還要id,直接按順序?qū)懩莻€初始化的函數(shù)不就行了,俺不理解

image.png


求大佬指點




您好,taskID可以用來將一組事件歸類。比如說您舉例的Peripheral_TaskID,可以將BLE從機相關的邏輯都放到這個taskID下,由自定的事件宏來標識;這個taskID一般是static修飾的,作用域只在其定義的源文件中,這樣條理更清晰。Peripheral_TaskID與初始化中注冊的事件處理函數(shù)Peripheral_ProcessEvent綁定,安排事件后會進相應的事件處理函數(shù),根據(jù)事件宏SBP_XXXX_EVT進if分支來執(zhí)行邏輯。


那我能不能一個Peripheral_TaskID綁定好幾個事件比如這樣

image.png



可以的。用tmos_start_task()函數(shù)安排TMOS事件,其中第一個參數(shù),是選擇安排哪個taskID,例子中的Peripheral_TaskID綁定了Peripheral_ProcessEvent()函數(shù),這樣協(xié)議棧會自動安排跳轉(zhuǎn)到這個函數(shù)中;其中第二個參數(shù),比如說例子中的事件宏SBP_XXXX_EVT,就是用來給查詢執(zhí)行到Peripheral_ProcessEvent()中,具體應該執(zhí)行哪些邏輯的,Peripheral_ProcessEventif判斷語句寫在越前面,優(yōu)先級越高。

每個taskID下最多自定義15個事件,協(xié)議棧保留最高位事件編號即0x8000用來在不同taskID間傳遞數(shù)據(jù)。


嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚,我終于看懂了,原來

image.png

這句話是綁定到這個函數(shù)里邊呀,三克油,這好像就說的通了


我的問題又來了

image.png

就是這里邊這個函數(shù)名是不是還可以改成我自己自定義的函數(shù),然后我自己寫一個函數(shù),在里邊也寫一點if判斷事件的東西,他這個在死循環(huán)里邊也可以進入到我自定義的函數(shù)里邊嗎?



然后還有就是

image.png

這些判斷語句的對應事件,好像都沒有明確表明他們綁定到Peripheral_ProcessEvent這個函數(shù)里邊去了

并不像


image.pngimage.png

這個函數(shù)那么明顯


與taskID綁定的函數(shù)是可以自定義的,改個其他名字都行。添加事務處理代碼的操作可以參考下篇博客

在TMOS系統(tǒng)的main.c中添加事務處理代碼 - JayWell - 博客園 (cnblogs.com)

規(guī)定事件的宏可以理解成一個序號,按if分支編寫的前后順序查詢進了事件處理函數(shù)后具體執(zhí)行哪些邏輯,沒有一對多的綁定關系,其他taskID也可以在對應的事件處理函數(shù)中使用。


哦哦原來如此,三克油



只有登錄才能回復,可以選擇微信賬號登錄

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