如何通過LOG確定終端調用了哪些SD腳本和 添加一個腳本的示例

前言:

這也是我的一篇很老的技術積累了。裏面的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. 添加一個腳本的示例

 

   此例子用於向組添加一個腳本。

首先定義一個腳本,如下:

然後將其添加到最後:

然後在最後添加一個枚舉值:

最後若在一個腳本里調用這個新腳本則添加如下這句話:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章