小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

BLE協(xié)議?!录c消息

 堆泄露棧溢出 2016-10-10
BLE協(xié)議棧中事件與消息的概念很容易讓人混淆,總體上來說可以這樣理解事件與消息的概念:

1)OS依靠事件來決定執(zhí)行哪個任務
OS具有一個任務事件表依次存儲各個任務的事件標志events,每個任務的events對應該事件表中的一項,為16位,OS通過查詢事件列表來執(zhí)行不同的任務。事件列表內(nèi)存分配:
tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt)
每個任務的事件標志events在事件列表中的順序與任務號一致,例如taskID為1的任務的events對應事件表中第一項,taskID為2的任務的events對應事件表中第二項。當任務事件標志events中的某位置位時,表示發(fā)生了特定事件,在函數(shù)osal_run_system()中會執(zhí)行發(fā)生事件的任務。

2)任務在特定事件處理中一般需要獲取并處理消息
每個任務除了具有一個16位的events外,還有自己的消息。消息存放在消息池中,消息池頭指針:osal_msg_q_t osal_qHead。消息由消息頭和消息體組成,消息頭結(jié)構(gòu):
typedef struct
{
  void   *next; //指向下一條消息
  uint16 len; //消息體長度
  uint8  dest_id; //任務ID
} osal_msg_hdr_t;
消息體結(jié)構(gòu)(以按鍵消息為例):
typedef struct
{
  osal_event_hdr_t hdr;
  uint8             state; // shift
  uint8             keys;  // keys
} keyChange_t;
其中osal_event_hdr_t  hdr為事件頭結(jié)構(gòu):
typedef struct
{
  uint8  event;
  uint8  status;
} osal_event_hdr_t;

當一個任務有對應的事件發(fā)生時,OS會執(zhí)行該任務,任務判斷事件類型并從消息池中提取自己的消息加以處理。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多