前言:
這也是我的一篇很老的技術積累了。裏面的6085平臺是比較老的高通平臺。到現在代碼肯定有改動,但是搜索腳本的框架還是沒有變,仍然可以作爲參考。
如何抓取搜網流程SD的LOG
本文使用的嵌入端軟件是6085平臺的33701基線.不同基線的腳本內容會有差異.
2 從SD的LOG看終端使用了那些腳本
這個比較簡單,通過關鍵字“SCR=”MACTH LOG。
比如如下的抓圖是MATCH的開機LOG,並且終端處在無信號的環境下。
這些打印語句基本在)函數中打印。
以第一行爲例,打印的信息爲“User scr=1,line=1,cons=56”
“User”指出腳本所在的組,“SCR=1”指出是所在組的第幾個腳本,“line=1”指出當前執行腳本的第幾行,“cons=56”指出這一行的CONSRTUCTURE是多少。
總共有多少個組,從如下的枚舉確定:
每個組對應的腳本集合在如下的函數中可以確定:
再回頭看一下“User scr=1,line=1,cons=56”。
“User”代表,對應的腳本組爲。如下圖:
“SCR=1”指出是上述組的第一個腳本,即。
“line=1”指出目前在執行腳本的那一行。行數從0開始算起。目前執行:
“cons=56”指出目前行的行爲,CONSTRUCT是多少。其值爲定義。
當前執行的第一行擴展開如下:
。即當前的CONS爲,其枚舉值即爲56。
3 簡單描述一下ACT_SCR宏的含義
會調用
組即的一個腳本.
仍然以開機LOG爲例:
按照ACT_SCR宏,實際上擴展爲:
值爲1,實際上是調用的第一個腳本,即.
通過下面的打印語句也可以證明:即執行的第一行後,轉而執行的第0行.
4. 簡單描述一下PRE_SCR宏的含義
仍然以開機LOG爲例:
即執行的第一行後,轉而執行的第0行.
當執行到第四行遇到PREV_SCR,則會返回原來的腳本,繼續執行.原來執行到第一行,則現在執行第2行.
如下圖的LOG抓圖:
5. 簡單描述一下PROC_EVT宏的含義
ACT_SCR用於調用CALLED組,即的腳本.
其他還有多個組,如下圖:
通過PROC_EVT,可以調用除CALLED組以外,其他組的腳本. 的入參是類型。枚舉值被分成若干組,每一組對應上面的一組腳本。這些組如下:
下面的函數確定一個EVENT對應哪個組
最終確定執行哪個腳本在函數中。中有一個循環,從事件對應的腳本組中從第0個腳本開始判斷,遇到的一個符合條件的腳本則被執行。
仍然以開機LOG爲例. 最後調用了另一個腳本.
代碼和LOG如下:
調用了CALLED 組的第三個腳本,即.
拋出了一個事件。屬於組。事件組對應腳本組。
則會遍歷腳本組。其第0個腳本爲:
前面三個判斷條件,第二個條件就不符合要求,CDMA下只有自動模式。所以不會最調用。最終遍歷到腳本,符合條件,然後被執行。見如下LOG:
從上面的描述可以看到,在腳本組裏同一個事件在不同條件可以觸發不同的腳本,若兩個腳本均符合條件,則在前面的腳本被執行。可見腳本的順序也是比較關鍵的。
5. 添加一個腳本的示例
此例子用於向組添加一個腳本。
首先定義一個腳本,如下:
然後將其添加到最後:
然後在最後添加一個枚舉值:
最後若在一個腳本里調用這個新腳本則添加如下這句話: