2009年6月28日 星期日

Source Code 分析筆記

這次我們研究ZigBee內部程式碼
由於每個廠商的Source Code都長得不太一樣,也因此對於程式的指令碼的用法小組採用多方嘗試,猜測並測試來試著了解每個指令代表的意義

今日筆記:
分析coordinator、Router、End Device code當中,前頭有 Type Definitions

例如:



這些程式很像是一層包著一層例如 teState 底下就包含 E_STATE_READY_TO_READ_SENSORS,
E_STATE_READING_S1,
E_STATE_READING_S2
以此類推

而下指令的方式有如之前寫過的C#,先下最外圍的指令加入"."後接下一層的指令,根據在coordinator中的這行指令

vSendData(sDemoData.sNode.asNodeData[sDemoData.sGui.u8CurrentNode].u16ShortAdr, (u8KeyMap == E_KEY_2) ? 0 : 1);


這行指令是寫在coordinator的SW0~SW3之中,由於coordinator的顯示幕上可切換連接中的Node所有的感測資訊,而按下指定的SW,相對應的Node板上的Led將會做亮滅的動作,藉此可實際判定當時coordinator顯示的數據是由作LED亮滅動作的Node所發送。



指令的組成大部分都可在 Type Definitions(如上圖)找到,而指令的意義據我們小組理解的解釋它是個傳送資料指令(vSendData) 而傳送類型的是包含在 sDemoData 中的 asNodeData,而sDemoData.sGui.u8CurrentNode 這行指令推測指的是連接當時 coordinator 的感測數據畫面正在連接的 Node,u16ShortAdr 指的可能是發送的資料位元大小,而0、1所代表的意義則是指LED的亮滅(1代表亮、0代表滅)

沒有留言:

張貼留言