一、基礎知識
使用訊息迴圈機制之前,我們先來認識幾個資料結構
typedef struct ilm_struct
ilm_struct;
其中各引數的含義如下:
src_mod_id ---- 請求服務的mod_id
dest_mod_id ---- 接收服務的mod_id
sap_id ---- 服務請求標示,沒有可以填0
msg_id ---- 訊息的id號
local_para_struct ---- 請求需要提供的附加資訊,如果有引數需要隨msg一起傳入,
則讓這個指標指向相應的資料結構即可
peer_buff_struct ---- 請求需要提供的附加資訊,如果有引數需要隨msg一起傳入,
則讓這個指標指向相應的資料結構即可
系統執行中,會首先呼叫recive_msg_exq_q從外部訊息佇列中獲取訊息,如果訊息佇列中
有訊息,則立即返回待處理的訊息,否則recive_msg_ext_q函式將阻塞task,直到有訊息
進入訊息佇列。所以其訊息迴圈機制也就是任務獲取其外部佇列的訊息,然後根據不同的消
息id呼叫不同的處理函式。
二、訊息通訊的例項
任務1接收從鍵盤輸入的字元,然後將輸入的字元通過訊息佇列的形式傳送到另外乙個任務中。
函式1:傳遞訊息的函式,此函式對訊息結構體進行裝填
view plain
void
sendnoticemessage( module_type srcmod, module_type destmod, kal_uint16 msgid )
函式2:訊息傳送方所屬的程序為fd_shell,接收方所處的程序為fd_test1
view plain
intsh_input(
intargc,
char
*argv)
函式3:訊息接收方的處理
view plain
static
void
fd_test1_fun(task_entry_struct * task_entry_ptr)
view plain
free_ilm(¤t_ilm);
//釋放儲存訊息的結構體變數
view plain
}
view plain
}
view plain
以上就是mtk訊息通訊以及訊息的處理過程,上面的例程雖然簡單,但是包含了訊息的處理思想,其他的複雜的模組如mmi的訊息處理過程跟上面的原理是一樣的。
android 通訊相關,MTK平台
imsi共有15位,其結構如下 mcc mnc msin mnc msin nmsi mcc mobile country code,移動國家碼,mcc的資源由國際電聯 itu 統一分配和管理,唯一識別移動使用者所屬的國家,共3位,中國為460 mnc mobile network code,流動網...
模組間通訊 訊息機制
作者昨天遇到乙個問題,就是其中乙個對話方塊裡的樹節點雙擊時,需要通知另乙個對話方塊中去通過sdk獲取資料庫中的資訊 不同的對話方塊獲取不同的資料資訊 並且該對話方塊中有乙個map表存有多個對話方塊的基類指標。這時怎麼通過基類的指標實現呼叫另乙個或多個對話方塊的不同實現呢?這時我們可以借助訊息機制來解...
MTK平台學習 TASK的建立
分類 mtk平台 mtk平台是非常優秀的乙個平台,曾經的山寨機之父,下面我將介紹下在mtk平台下如何去建立自己的任務。一 基礎知識 在學習如何建立任務之前,我們需要了解一些基本概念,以及一些和任務相關的資料結構,了解了這些之後,我們就能更好的理解如何去建立任務了。mtk中關於任務的概念有兩個,乙個是...