高通modem側新增AT命令
modem側新增AT命令
下面列舉出與ATCoP相關的一些主要的資源目錄:
filename |
Description |
|
Dsat.h |
ATCoP外部模組使用的定義,函式和資料結構 |
|
Dsat.h |
ATCoP外部模組使用的定義,函式和資料結構 |
|
Dsati.h |
ATCoP內部使用的定義,函式和資料結構 |
|
Dsatprep.c |
接收自串列埠裝置的資料的預處理 |
|
Dsatpar.c |
AT命令解析器,將命令列的AT命令解析到token結構中 |
|
Dsatcmdp.c |
AT命令處理器,查詢token結構中的包含的命令並從命令列表中呼叫相應的命令處理函式處理命令 | |
Dsatrsp.c |
產生AT命令響應和格式化 |
|
Dsatutil.c |
產生AT命令處理器 |
|
Dsatparm.c |
通用AT引數型別命令過程 |
|
Dsatarm.h |
ATCoP內部使用的通用AT引數型別命令處理定義,函式和資料結構 |
|
Dsatact.c |
通用ATactive type命令處理函式 |
|
Dsatact.h |
通用AT動作型別命令處理的定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatvend.c |
通用AT指定提供商型別命令處理 |
|
Dsatvend.h |
通用AT指定提供商型別命令處理的定義、函式和資料結構,供ATCoP內部模組使用 | |
Dsatctab.c |
通用AT命令表 |
|
Dsatctab.h |
通用AT命令表定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatcmif.c |
通用呼叫管理介面 |
|
Dsatcmif.h |
通用呼叫管理介面定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatvoice.c |
通用語音呼叫處理控制 |
|
Dsatvoice.h |
通用語音呼叫處理控制的定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatetsicall.c |
ETSI呼叫控制命令處理 |
|
Dsatetsicall.h |
ETSI呼叫控制命令處理的定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatetsicmif.c |
ETSI命令呼叫管理介面 |
|
Dsatetsicmif.h |
ETSI命令呼叫管理介面的定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatetsipkt.c |
ETSI包資料命令處理 |
|
Dsatetsipkt.h |
ETSI包資料命令處理的定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatetsime.c |
ETSI移動裝置命令處理 |
|
Dsatetsime.h |
ETSI移動裝置命令處理的定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatetsismsc.c |
ETSI短訊息服務命令處理 |
|
Dsatetsismsa.c |
ETSI短訊息服務非同步事件處理 |
|
Dsatetsismsu.c |
ETSI短訊息服務命令處理實體 |
|
Dsatetsisms.h |
ETSI短訊息服務命令處理的定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatetsismsi.h |
ETSI短訊息服務命令處理的定義、函式和資料結構,供ATCoP內部模組的短訊息服務單元使用 |
|
Dsatetsictab.c |
ETSIAT命令表 |
|
Dsatetsictab.h |
ETSIAT命令表的定義、函式和資料結構,供ATCoP內部模組使用 |
|
Dsatetsitgt.c |
頂層AT命令表,命令表指標陣列,ETSI指定目標的命令表,同步事件處理表。定義ETSI目標支援的AT命令集 |
|
Dsatgsmfax.c |
GSMfax命令處理 |
|
Dsatgsmfax.h |
GSMfax命令處理的定義、函式和資料結構,供ATCoP內部模組使用 |
|
資料服務任務原始檔列表: |
||
filename |
Description |
|
Dstask.h |
資料服務任務的外部或內部模組使用的定義,函式和資料結構 |
|
Dsatsk.c |
資料服務任務和頂層分發 |
具體新增的過程:
以新增“+AGMR”為例。
1、 定義指標變數:
在dsati.h下的dsat_ext_index_enum_type列舉陣列中新增一個指標變數如下:
DSAT_EXT_AGMR_IDX = 12039,
2、 建立AT命令和處理函式的對映:
在dsatctab.c下的dsat_basic_table_ex[] 資料下新增對映:
{ DSAT_EXT_AGMR_IDX, dsatact_exec_agmr_cmd },
3、 定義AT命令
下面我們增加的是一個最簡單的命令,name是”+AGMR”,屬性是無引數。
在dsatctab_ex.c下的dsat_ext_table[]陣列中新增:
{ "+AGMR", READ_ONLY| RESTRICTED,
SPECIAL_NONE, 0, DSAT_EXT_AGMR_IDX, NULL },
4、 宣告處理函式
上面完成以後就能定義其實際的處理函數了,在定義之前,我們先要宣告一下,在dsatact.h下新增:
dsat_result_enum_type dsatact_exec_agmr_cmd
(
dsat_mode_enum_type mode, /* AT command mode: */
const dsati_cmd_type *parse_table, /* Ptr to cmd in parse table */
const tokens_struct_type *tok_ptr, /* Command tokens fromparser */
dsm_item_type *res_buff_ptr /* Place to put response */
);
5、 定義處理函式, 在dsatact.c下新增:
/*test-add yangxiangbin*/
dsat_result_enum_typedsatact_exec_agmr_cmd(
dsat_mode_enum_type mode, /* AT command mode: */
const dsati_cmd_type *parse_table, /* Ptr to cmd in parse table */
const tokens_struct_type *tok_ptr, /* Command tokens fromparser */
dsm_item_type *res_buff_ptr /* Place to put response */
)
{
dsat_result_enum_type result= DSAT_OK;
static char info[32] = "at_commands_test";
if((tok_ptr->op == (NA|EQ|AR)) ||
(tok_ptr->op == (NA|EQ|QU)) ||
(tok_ptr->op == (NA|QU)) ||
(tok_ptr->op == (NA)))
{
res_buff_ptr->used =(word) strlcpy((char*)res_buff_ptr->data_ptr,
(const char*)info,
res_buff_ptr->size);
}
/*command does not make sense */
else
{
result = DSAT_ERROR;
}
return result;
} /* dsatetsime_exec_agmr_cmd() */
超級終端輸入at+agmr
at+agmr
OK