版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、TOC o 1-3 h z u HYPERLINK l _Toc320970848 1AT命令模塊框架設(shè)計(jì) PAGEREF _Toc320970848 h 1 HYPERLINK l _Toc320970849 1.1ATCOP 功能劃分 PAGEREF _Toc320970849 h 1 HYPERLINK l _Toc320970850 1.2AT 命令處理流流程詳解 PAGEREF _Toc320970850 h 3 HYPERLINK l _Toc320970851 1.3AT 命令表結(jié)構(gòu)構(gòu) PAGEREF _Toc320970851 h 7 HYPERLINK l _Toc32097
2、0852 1.4命令表表項(xiàng)解釋 PAGEREF _Toc320970852 h 11 HYPERLINK l _Toc320970853 1.5增加一一條 AT 命令 PAGEREF _Toc320970853 h 15 HYPERLINK l _Toc320970854 1.5.1基基本流程 PAGEREF _Toc320970854 h 15 HYPERLINK l _Toc320970855 1.5.2增增加一條同步步AT命令范例例 PAGEREF _Toc320970855 h 18 HYPERLINK l _Toc320970856 1.5.3增增加一條異步步AT命令范例例 PAGE
3、REF _Toc320970856 h 20 HYPERLINK l _Toc320970857 1.5.4主主動(dòng)上報(bào)的AAT事件如何何實(shí)現(xiàn)實(shí)現(xiàn)方方法 PAGEREF _Toc320970857 h 27 HYPERLINK l _Toc320970858 2高通AT命命令模塊主要要文件功能 PAGEREF _Toc320970858 h 33 HYPERLINK l _Toc320970859 3AT 命令令 的流程 PAGEREF _Toc320970859 h 34 HYPERLINK l _Toc320970860 3.1同步 AT 命令令 的流程 PAGEREF _Toc320970
4、860 h 34 HYPERLINK l _Toc320970861 3.2異步 AT 命令令 的流程 PAGEREF _Toc320970861 h 34 HYPERLINK l _Toc320970862 3.3主動(dòng)上上報(bào) AT 命令 的流程 PAGEREF _Toc320970862 h 34 QCT60885 AT命命令模塊設(shè)計(jì)計(jì)與實(shí)現(xiàn)AT命令模塊框框架設(shè)計(jì)本節(jié)對(duì) AT 命令模塊的的總體設(shè)計(jì)與與實(shí)現(xiàn)進(jìn)行了了詳細(xì)描述,并并對(duì) AT 命令表結(jié)構(gòu)構(gòu)內(nèi)容做了說說明,最后解解釋了如何添添加一條 AAT 命令。ATCOP 功功能劃分高通的 AT 模塊,也就就是 AT 命令處理器器(ATCOOP)完
5、成了了多種 ATT 命令的解解析、處理以以及產(chǎn)生和發(fā)發(fā)送命令響應(yīng)應(yīng)消息,同時(shí)時(shí)也處理在 AT 命令令執(zhí)行過程中中的各種ATT 相關(guān)的事事件。在高通通的軟件平臺(tái)臺(tái)中,ATCCOP 作為為數(shù)據(jù)服務(wù)模模塊(DS data serviices)的的一個(gè)子任務(wù)務(wù)來實(shí)現(xiàn)。在在 ds_ttask 中中完成對(duì) ddsat_ttask 的的初始化和調(diào)調(diào)用功能,所所有的AT 命令通過 TTE 和 TA 之間間的串行接口口發(fā)送。收到到的 AT 命令緩存在在 DS 的消消息隊(duì)列 ddsi_cmmd_q 中中,并由 dds 的消息息分發(fā)機(jī)制統(tǒng)統(tǒng)一分發(fā)給各各個(gè)子任務(wù)。ATCOP 的處理流程包括 SIO 數(shù)據(jù)預(yù)處理模塊、A
6、T 命令解析器、AT 命令處理器、AT 命令響應(yīng)產(chǎn)生器、AT 命令表及命令處理功能模塊。1通過串口設(shè)設(shè)備(SIOO)接收的ATT命令數(shù)據(jù),首首先由SIOO數(shù)據(jù)預(yù)處理理,產(chǎn)生一個(gè)個(gè)null-termiinatedd命令行并由由DS分發(fā)給AT命令解析析器。2產(chǎn)生的nuull-teerminaated命令令行由AT命令解析析器解析,解解析器為每個(gè)個(gè)要解析的命命令產(chǎn)生一個(gè)個(gè)tokenn結(jié)構(gòu),并送送到處理隊(duì)列列由AT命令處理理器處理。在在AT命令處理理器被調(diào)用前前,解析器將將每個(gè)命令的的tokenn結(jié)構(gòu)放入隊(duì)隊(duì)列中。3AT命令處處理器完成對(duì)對(duì)每個(gè)tokken結(jié)構(gòu)進(jìn)進(jìn)行表查找,同同時(shí)將該tooken結(jié)構(gòu)構(gòu)
7、從隊(duì)列中移移除。如果查查找到,對(duì)應(yīng)應(yīng)的處理函數(shù)數(shù)被調(diào)用處理理該命令;AAT命令在命命令表中定義義,每個(gè)命令令表入口包含含對(duì)應(yīng)命令執(zhí)執(zhí)行函數(shù)的指指針。4AT命令響響應(yīng)產(chǎn)生器將將命令響應(yīng)數(shù)數(shù)據(jù)格式化,產(chǎn)產(chǎn)生結(jié)果編碼碼,并將響應(yīng)應(yīng)數(shù)據(jù)發(fā)送給給DTE。5ATCOPP每次處理一一條AT命令行命命令,如果任任何命令行的的命令產(chǎn)生一一個(gè)錯(cuò)誤,在在錯(cuò)誤前就會(huì)會(huì)產(chǎn)生命令處處理的響應(yīng),同同時(shí)產(chǎn)生一個(gè)個(gè)錯(cuò)誤代碼,不不再對(duì)該命令令進(jìn)行后續(xù)處處理。AT 命令處理理流程詳解 圖 1 AT 命令處理流流程圖詳細(xì)描述了 AAT 命令模模塊在處理各各類 AT 命令的具體體具體流程。DS_Taskk的建立,SIO 喚醒醒 rx收
8、到數(shù)據(jù),將將sio喚醒2初始化解析析函數(shù)dsat_proceess_siio_commmand去去掉命令行中中的AT前綴,然后后把以NULLL結(jié)尾的命命令行傳給函函數(shù)dsatt_proccess_ccmd_liine來進(jìn)行行后續(xù)的分析析和處理。ddsatpaar_parrse_cmmd_linne函數(shù)完成成對(duì)命令行的的解析,檢查查每個(gè)AT命令的首首字符然后根根據(jù)AT命令的類類型調(diào)用相應(yīng)應(yīng)的解析函數(shù)數(shù)。每個(gè)ATT命令名(包包括首符號(hào),如如,$QCDMG) 以及相關(guān)的的命令參數(shù)都都被從命令行行中解析出來來,然后放到到一個(gè)tokkendatta strructurre中。命令令行中的每個(gè)個(gè)命令都產(chǎn)生
9、生一個(gè)tokken sttructuure,放到到tokenn排隊(duì)上等待待后續(xù)處理,此此時(shí)一個(gè)命令令行解析完成成。一般添加加或修改ATT命令時(shí)不改改動(dòng)這部分代代碼。3命令解析根據(jù)命令的不同同首字符,不不同的解析函函數(shù)解析ATT命令后,把把解析的信息息填充到上一一步產(chǎn)生的ttokenddata sstructture中,然然后返回結(jié)果果。如果結(jié)果果是OK (意味味著參數(shù)、參參數(shù)個(gè)數(shù)以及及特殊處理碼碼speciialproocessiing coode等等都都已經(jīng)存好),此此時(shí)tokeen data struccture已已放在隊(duì)列中中等待AT命令處理理器(AT commaand prrocess
10、sor)后續(xù)續(xù)處理。命令令行中的每個(gè)個(gè)命令都在隊(duì)隊(duì)列中放一個(gè)個(gè)tokennstruccture。例例如,exttendedd or ppropriietaryy AT 命命令調(diào)用的分分析函數(shù)是 parsee_exteended_cmd。4命令執(zhí)行每個(gè)命令產(chǎn)生的的tokennstruccture被被函數(shù)dsaatcmdpp_queuue_tokken放入隊(duì)隊(duì)列中。命令令解析完成后后,調(diào)用函數(shù)數(shù) proccess_aat_cmdd_linee處理隊(duì)列中中的每個(gè)tookensttructuure。從隊(duì)隊(duì)列中取出并并刪除一個(gè)命命令tokeenstruucturee后,在命令令表中搜索該該命令。頂層命令
11、表(ttop leevel ccommannd tabble)在文文件dsattetsittgt.c中中。頂層命令令表又指向文文件dsattctab.c 和 dsattetsicctab.cc中的多個(gè)命命令表,這些些表定義了所所支持的ATT命令集。在表中查找到該該命令后,調(diào)調(diào)用表中對(duì)應(yīng)應(yīng)的處理函數(shù)數(shù)執(zhí)行該命令令。命令執(zhí)行行后如果有返回?cái)?shù)據(jù)據(jù)時(shí),返回的的響應(yīng)數(shù)據(jù)在在函數(shù)dsaat_fmtt_respponse中中格式化。每每個(gè)tokeen結(jié)構(gòu)都進(jìn)進(jìn)行這樣的處處理。最后調(diào)調(diào)用函數(shù)dssatrspp_sendd_respponse把把命令響應(yīng)送送到DTE。對(duì)于于異步 ATT 命令處理理流程與正常常
12、AT 命令令略有不同,在在命令預(yù)處理理、命令解析析過程都是一一樣的,在命命令處理過程程中(proocess_at_cmmd_linne),如果果命令處理函函數(shù)返回 DDSAT_OOK,說明命命令處理完成成調(diào)用 dssat_fmmt_ressponsee 函數(shù)格式式化響應(yīng)數(shù)據(jù)據(jù)并發(fā)送,正正常的命令處處理流程;如如果命令處理理函數(shù)返回 DSAT_ASYNCC_CMD 說明 當(dāng) 前 命 令 是 異 步 命 令 , 此 時(shí) 函 數(shù) proccess_aat_cmdd_linee 設(shè) 置 變 量dsatccmdp_pprocesssing_asyncc_cmd = TRUUE,表示當(dāng)當(dāng)前正在處理理異步命
13、令,然然后返回,不不再進(jìn)行后續(xù)續(xù)處理,直到到該命令處理理完成,函數(shù)數(shù)返回 DSSAT_OKK(未必一定定是DSATT_OK,當(dāng)當(dāng)返回不是 DSAT_ASYNCC_CMD 和 DSATT_ASYNNC_EVEENT 時(shí),說說明異步命令令/事件處理完完成)。當(dāng) DS 收到到異步事件經(jīng)經(jīng)任務(wù)分發(fā)器器,再次調(diào)用用 dsatt_proccess_aasync_cmd 函函數(shù),在該函數(shù)中通過過查找異步事事件表 assync_eevent_tablee,調(diào)用相應(yīng)應(yīng)的事件處理理函數(shù)繼續(xù)處處理,如果事事件處理函數(shù)數(shù)返回值不是是 DSATT_ASYNNC_CMDD 或 DSATT_ASYNNC_EVEENT,說明
14、明異步事件處處理完成,調(diào)調(diào)用 proocess_at_cmmd_linne 繼續(xù)處處理命令行的的命令。AT 命令表結(jié)結(jié)構(gòu)AT 命令的處處理是由命令令表驅(qū)動(dòng)的,ATCOP 實(shí)現(xiàn)的命令表是一個(gè)分級(jí)的表結(jié)構(gòu),主要分為:主表(master table)、子表(sub table)、命令表(command table),如圖 4.2 所示。其中主表是一個(gè)二維的數(shù)組,數(shù)組的行表示 AT 命令的分類,分為:基本 AT命令(basic_table)、寄存器 AT 命令(sreg_table)、擴(kuò)展 AT 命令(extended_table)、廠商 AT 命令(vendor_table)四大類;數(shù)組的列表示是
15、ETSI 模式還是其它模式的AT 命令。圖 2 ATT 命令表結(jié)結(jié)構(gòu)圖主表定義在 ddsati.h文件中:typedeff struuct dssati_ccmd_sttructbyte naame200;uint32 attriib;byte sppeciall;byte coompounnd;const vvoid *val_pptr;const vvoid *def_llim_pttr;dsat_reesult_enum_type (*procc_funcc)( dsaat_modde_enuum_typpe,const sstructt dsatti_cmdd_struuct*,con
16、st ttokenss_struuct_tyype*,dsm_iteem_typpe* );booleann (*aborrt_funnc)( connst sttruct dsatii_cmd_strucct* ); dsatii_cmd_type;typedeff struuctconst ddsati_cmd_ttype *tablee_ptr;const uunsignned innt *taable_ssize; dsatii_at_ccmd_taable_eentry_type;typedeff dsatti_at_cmd_ttable_entryy_typee*dsati_aat
17、_cmdd_tablle_typpeNUMM_AT_CCMD_CAATEGORRIESNUM_OOPER_CMD_MODDES;分類表定義在文文件 dsaatetsiitgt.cc 中:const ddsati_at_cmmd_tabble_tyype att_cmd_tablee = basicc_tablle_enttries, NULLL , sreg_tablee_entrries, NULL , extennded_ttable_entriies, NNULL , vendoor_tabble_enntriess, NULLL ;1基本命令表表基本命令的格式式為:其中或或者是單個(gè)字字
18、母(A-ZZ),或者是是“&”字符接單單個(gè)字母。是一個(gè)十十進(jìn)制數(shù),可可以是一位,也也可以是多位位。最最前面的 00 會(huì)被忽略略。默認(rèn)為 0。如果一一個(gè)不帶的基本命命令帶了,則返回回 TOO MANYPPARAMEETERS。2寄存器命令令表所有以字母“SS”開頭的命命令統(tǒng)稱為 S 寄存器器命令,格式式如下:S? SS=S 寄存器命令令名由字母“S”接上一個(gè)十進(jìn)制數(shù)構(gòu)成,這個(gè)十進(jìn)制數(shù)稱為寄存器序號(hào)(parameter number)。如果寄存器序號(hào)不被識(shí)別,說明不存在該命令,返回COMMAND NOT SUPPORT。每個(gè) S 寄存存器保存一個(gè)個(gè)字符。命令令名后面如果果接“?”表示是 RREAD
19、 命命令,返回此此 S 寄存器器當(dāng)前保存的的字符的 AASCII 碼值,以 33 位十進(jìn)制制數(shù)表示,位位數(shù)不足的前前面補(bǔ) 0;如果接接“=”表示是 SSET 命令令,將值值對(duì)應(yīng)的字符符替換此 SS 寄存器保保存的字符。3擴(kuò)展命令表表和廠商提供供的命令表擴(kuò)展命令均由“+”開頭,廠商定義的命令也是由一個(gè)特殊符號(hào)開頭,例如“$”,“%”等。本文文中所實(shí)現(xiàn)的的命令均為擴(kuò)擴(kuò)展命令。所所有的擴(kuò)展命命令和廠商定定義命令又可可以分為兩類:AActionncommaand 和 Paraameterr commmand。1)actioon commmandaction commaand 指完完成某個(gè)具體體的動(dòng)作,
20、而而不僅僅是與與 MS 本地地的參數(shù)打交交道的命令,例例如 AT+CMGS 等。actiion coommandd 可以帶參參數(shù)也可以不不帶。Actionn commaand 包含含 EXECCUTIONN 命令和 TEEST 命令令。(1)EXECCUTIONN 命令EXECUTIION 命令令格式如下:不帶參數(shù):帶 1 個(gè)參數(shù)數(shù):=帶多個(gè)參數(shù):=表表示多個(gè)參數(shù)數(shù),中間以“,”分隔。對(duì)于有默認(rèn)值的參數(shù),可以在命令中省略,此時(shí)以默認(rèn)值代替。如果所有的參數(shù)數(shù)都省略,則則后面的“=”也一并略略去。如果不被識(shí)別,則則表示此命令令不存在,返返回 COMMMAND NOT SSUPPORRT??勺R(shí)別的的
21、前提下,如如果不能帶參參數(shù)的命令帶帶了參數(shù),或或者參數(shù)個(gè)數(shù)數(shù)超出定義,則則返回 TOOOMANYY PARAAMETERRS。(2)TESTT 命令TEST 命令令格式:=?如果 MS 不不能識(shí)別,返返回 COMMMAND NOT SSUPPORRT。如果 MSS 可以識(shí)別別,且命令令是不帶參數(shù)數(shù)的,則返回回 OK。如果果命令帶參數(shù)數(shù),則先返回回各個(gè)參數(shù)的的可取值范圍圍,最后再加加上 OK。2)parammeter commaandparametter coommandd 包括與 MSS 本地的參參數(shù)打交道的的命令,這些些參數(shù)有些會(huì)會(huì)影響到 aatcionncommaand 的執(zhí)執(zhí)行。parr
22、ameteer commmand 又分為 SEET 命令、REAAD 命令和和TEST 命令。(1)SET 命令命令格式為:帶帶 1 個(gè)參數(shù)數(shù):=帶多個(gè)參數(shù):=SET 命令用用于設(shè)置參數(shù)數(shù)。表示多多個(gè)參數(shù),中中間以“,”分隔。對(duì)對(duì)于有默認(rèn)值值的參數(shù),可可以在命令中中省略,此時(shí)時(shí)以默認(rèn)值代代替。如果所所有的參數(shù)都都省略,則后面的“=”也一并略略去。如果不被識(shí)別,則則表示此命令令不存在,返返回 COMMMAND NOT SSUPPORRT??勺R(shí)別的的前提下,如如果不能帶參參數(shù)的 命令 帶了 參數(shù) ,或者 參數(shù) 個(gè)數(shù) 超出 定義, 則返 回 TOO MANY PARAMMETERSS。(2)READ
23、D 命令命令格式:?READ 命令令用于讀取參參數(shù)當(dāng)前值。(3)TESTT 命令命令格式:=?如果 MS 不不能識(shí)別,返返回 COMMMAND NOT SSUPPORRT。如果 MSS 可以識(shí)別別,且命令令是不帶參數(shù)數(shù)的,則返回回 OK。如果果命令帶參數(shù)數(shù),則先返回回各個(gè)參數(shù)的的可取值范圍圍,最后再加加上 OK。命令表項(xiàng)解釋 下面依次介紹各各個(gè)表項(xiàng)的含含義:1nameAT命令名,包包括需要處理理的+,$,&和終止的NUULL。如+IPRR,$QCDMMG,S6,&C,ZZ。2attittude32位的掩碼,用用來指定單個(gè)個(gè)或多個(gè)命令令屬性。表44.1列出了了AT命令的所所有屬性,后后面給出了具
24、具有該屬性的的命令。3speciial如果有需要,就就指定處理編編碼,否則就就是SPECCIAL_NNONE,指指定處理編碼碼定義在dssati.hh。只是用在在與外部軟件件的兼容性時(shí)時(shí)。表1 AT命命令屬性列表表4compoound數(shù)字命令的參數(shù)數(shù)個(gè)數(shù)或是字字符串命令的的最大長(zhǎng)度(不不包括NULLL)。例如:S0,帶帶有一個(gè)數(shù)字字參數(shù),coompounnd=1;對(duì)對(duì)于一個(gè)命令令的字符串參參數(shù)定義大小小為30,compoound=229。5valuee_ptr指針變量,存儲(chǔ)儲(chǔ)參數(shù)值。如如果變量是一一個(gè)數(shù)組(具具有多個(gè)參數(shù)數(shù)的命令),該該指針指向數(shù)數(shù)組的第一個(gè)個(gè)元素。具有有LIST屬性性的命令,
25、存存儲(chǔ)在*vaal_ptrr中的值不是是真正的參數(shù)數(shù)值,而是數(shù)數(shù)組listt_v指向的的地址。對(duì)于于帶有MIXXED_PAARAM屬性性的命令,指指針指向dssat_miixed_pparam_val_ttype,這這是一個(gè)字符符串或是數(shù)字字值的聯(lián)合體體unionn類型。數(shù)組組的成員是字字符串還是數(shù)數(shù)值依賴于對(duì)對(duì)應(yīng)數(shù)組成員員的屬性deef_limm_ptr。該該指針指向的的變量可以是是下面的類型型之一:1)dsat_num_iitem_ttype帶有有數(shù)字參數(shù)或或是LISTT屬性的命令令;2)dsat_strinng_iteem_typpe帶有字符符串參數(shù)的命命令;3)dsat_mixedd_
26、paraam_vall_typee帶有混合類類型參數(shù)的命命令,參數(shù)可可以是規(guī)定值值的字符串,某某一范圍的數(shù)數(shù)字,或是限限定長(zhǎng)度的字字符串;4)NULL表示示命令沒有參參數(shù)。6defauult liimit pptr定義默認(rèn)值和允允許范圍的參參數(shù)該指針的變量可可以是下面類類型中的一個(gè)個(gè):1)dflm_type帶帶有CONFFIG屬性的的命令;2)def_llist_ttype帶有有LIST屬性性的命令;3)mixedd_def_s_typpe帶有MIXEED_PARRAM屬性的的參數(shù);4)NULL帶帶有STRIING屬性的的命令或是沒沒有參數(shù)的命命令。7proceess fuunctioon p
27、trr函數(shù)指針被調(diào)用用用于執(zhí)行在在命令表入口口定義的命令令。函數(shù)指針參數(shù)是是:1)dsat_mode_enum_type定定義當(dāng)前ATT命令模式,表表4.2列出模模式和對(duì)應(yīng)的的含義。表 2 ATT命令模式表表2)dsatii_cmd_strucct*是dsatii_cmd_strucct結(jié)構(gòu)入口口指針,對(duì)于于包含這個(gè)命命令表入口指指定命令。3)tokenn_struuct_tyype*是一一個(gè)定義好的的tokenn struucturee解析器指針針,這個(gè)tooken結(jié)構(gòu)構(gòu)包含處理該該命令所要求求的信息。4)dsm_iitem_ttype*是是DSM bbufferr的指針,存存儲(chǔ)命令響應(yīng)應(yīng)。
28、如果命令令響應(yīng)超出了了一個(gè)DSMM bufffer的容量量,可以將多多個(gè)DSM buffeer可以鏈接接到一起。函函數(shù)返回類型型應(yīng)該是表 .33 列出值中的的一個(gè)。表4.3 函數(shù)數(shù)返回類型表表8abortt funcction ptr函數(shù)指針通過命命令表入口調(diào)調(diào)用定義的aabort命命令,函數(shù)指指針值不是NNULL表示示命令表入口口定義的命令令是可以abbort的。函函數(shù)指針參數(shù)數(shù)是:dsaati_cmmd_strruct*是是dsatii_cmd_strucct結(jié)構(gòu)入口口指針,用于于指示包含該該命令表入口口的指定命令令。函數(shù)返回回類型是一個(gè)個(gè)Booleen表示:如如果值是TRRUE,表示示數(shù)
29、據(jù)調(diào)用可可以通過Dssmgr AAbort,否否則不需要任任何動(dòng)作。9 dflmm_typee定義AT命令中中數(shù)字參數(shù)的的最大值和最最小值參數(shù),這這里的數(shù)字參參數(shù)一定是連連續(xù)的取值類類型。如果參參數(shù)取值為0,1,2255這種種參數(shù)應(yīng)該設(shè)設(shè)置為lisst類型。Deffault_v為默認(rèn)值值,loweer和upperr為最小和最最大取值。10 deff_listt_typee用于定義LISST類型的參參數(shù)取值范圍圍,其中:Defaultt_v代表參參數(shù)的默認(rèn)值值,它是指向向list_v數(shù)組的指指針。List_v是是一個(gè)8-bbyte字符符串的數(shù)組指指針,代表該該參數(shù)允許的的所有值,數(shù)數(shù)組的最后一一
30、項(xiàng)必須是NNULL來終終止參數(shù)列表表。AT命令處理理器完成該數(shù)數(shù)組的字符串串匹配,以決決定參數(shù)值是是否在有效的的范圍內(nèi)。List_t是是一個(gè)字符串串指針,逐字字返回測(cè)試命命令的響應(yīng)。AT命令如果含含有多個(gè)參數(shù)數(shù),每個(gè)參數(shù)數(shù)都關(guān)聯(lián)于ddef_liist_tyype結(jié)構(gòu)。11 mixxed_deef_s_ttype和dsat_mixedd_paraam_vall_typeeMixed_ddef_s_type用用于存儲(chǔ)ATT命令中混合合參數(shù)的默認(rèn)認(rèn)值和可能值值,混合參數(shù)數(shù)類型表示AAT命令的參參數(shù)可以是不不同類型的,其其允許值范圍圍也是個(gè)集合合,如果是數(shù)數(shù)值類型需要要指定在某一一范圍內(nèi),如如果是字符
31、串串類型則限定定長(zhǎng)度。如果果命令有N個(gè)不同類型型參數(shù),默認(rèn)認(rèn)的可能值范范圍包含一個(gè)個(gè)長(zhǎng)度為N的mixedd_def_s_typpe數(shù)組,類類型參數(shù)i是數(shù)組下標(biāo)標(biāo),如mixxed_arrgus定義為mixxed_arrgusii.atttrib。如如果AT命令有N種不同類型型參數(shù),參數(shù)數(shù)的當(dāng)前值包包含在長(zhǎng)度為為N的dsat_mixedd_paraam_vall_typee數(shù)組中。該該數(shù)組用于聯(lián)聯(lián)系mixeed_deff_s_tyype數(shù)組Dsatt_mixeed_parram_vaal_typpe數(shù)組下標(biāo)標(biāo)為i的元素,在在mixedd_def_s_typpe數(shù)組對(duì)應(yīng)應(yīng)i分量為該ATT命令的默認(rèn)認(rèn)
32、和可能的范范圍值。增加一條 ATT 命令基本流程AT命令處理器器方便擴(kuò)展以以支持新的AAT命令,圖圖4.3所示示的是添加一一條新的ATT命令的具體體流程。1. Seleect a uniquue namme forr the commaand. TThe coommandd namee can be upp to 110 chaaracteers inn lengtth, inncludiing thhe leaading +, $, or &.首先選擇一個(gè)唯唯一的命令名名稱,命令名名長(zhǎng)度最大110個(gè)字符,包包括開始的+,$,&。本本文中所用AAT命令均為為擴(kuò)展命令,所所以用的都是是+。2.
33、Deteerminee the commaand atttribuutes. The vvariouus commmand attriibutess and theirr meannings are Are 14 lissted iin Tabble 4-3決定命令屬性不同命令屬性和和含義在表1 AT命令屬屬性列表中列列出。3. Creaate a variaable tto stoore thhe arggumentt valuue(s). If tthe coommandd has one oor morre arggumentts, declaare a variaable oof th
34、ee apprropriaate tyype inn dsattctab.c or dsateetsicttab.c to sttore tthe arrgumennt valuees. Coommandd tablles muust bee expoorted interrnal tto thee ATCooP uniit in dsatcctab.hh or dsateetsicttab.h. If tthe arrgumennt vallues aare reeferennced bby moddules exterrnal tto ATCCoP, ddeclarre ,thiss va
35、riiable as ann exteern inn dsatt.h.產(chǎn)生一個(gè)變量存存儲(chǔ)參數(shù)值,如如果命令包含含一個(gè)或多個(gè)個(gè)參數(shù),在ddsatcttab.c中中定義一個(gè)對(duì)對(duì)應(yīng)類型的變變量來存儲(chǔ)參參數(shù)值,命令令表應(yīng)該定義義在dsattctab.c或dsaatctabb.h中。如如果參數(shù)值用用于ATCOPP模塊外部,將將該變量聲明明在dsatt.h中。4. Defiine thhe deffault valuee and the aalloweed rannge foor thee commmand aargumeents. For ccommannds with simplle nummeric
36、 argumments, use the ddflm_ttype. Initiializee the defauult vaalue aand thhe lowwerand uppper boounds. For commaands oof typpe LISST, usse thee def_list_type. Creaate thhe lisst_v aand list_t datta strructurres, aand innitiallize tthe deefaultt valuue. Foor commmandss of ttype mmixed parammeter, cre
37、atee and initiializee the approopriatte dfllm_typpe andd def_list_type for eeach pparameeter oof thiistype. FFor sttring argumments, thiss is nnot appplicaable. All oof theese vaariablles shhould be deeclareed in dsatcctab.cc or ddsatettsictaab.c. For AAT commmandss whosse deffaultss and/or liimits
38、need to bee initiializeed at run-ttime, this initiializaation may bbe perrformeed in the ffunctiion dssatctaab_datta_iniit.定義命令參數(shù)的的默認(rèn)值和允允許范圍對(duì)于簡(jiǎn)單數(shù)字型型參數(shù)的命令令,使用dfflm_tyype,初始始化默認(rèn)值和和最小最大界界限。對(duì)于LLIST類型型命令,使用用def_llist_ttype,產(chǎn)產(chǎn)生listt_v和liist_t數(shù)數(shù)據(jù)結(jié)構(gòu),并并初始化默認(rèn)認(rèn)值。對(duì)于混混合參數(shù)類型型命令,為每每個(gè)類型參數(shù)數(shù)產(chǎn)生并初始始化相應(yīng)dfflm_tyype和deef_
39、lisst_typpe,對(duì)于sstringg參數(shù)類型,不不需要這些。所所有這些變量量應(yīng)該聲明在在dsatcctab.cc或是dsaatctabb.h中,對(duì)對(duì)應(yīng)AT命令令默認(rèn)的限制制需要在ruun-timme初始化,初初始化功能由由dsatcctab_ddata_iinit實(shí)現(xiàn)現(xiàn)。 5. Addd the Commaand Exxecutiion fuunctioon, iff any. If tthe coommandd requuires speciial prrocesssing code outsiide thhe genneric parammeter proceessingg fun
40、cctionss defiined iin dsaatparmm.c, aadd a new Commaand Exxecutiion fuunctioon to the aapproppriatee commmand-pprocesssing file (dsattparm.c,dsaatact.c, dssatvennd.c, dsateetsicaall.c, dsattetsippkt.c, dsattetsimme.c, dsateetsismmsc.c, dsattgsmfaax.c).Take advanntage of anny AT commaand prrocesssing
41、 uutilitties eexportted byy dsatti.h oor parrameteer proceessingg expoorted by dssatparrm.h. 添加命令執(zhí)行行函數(shù)(如果果需要)如果命令需要指指定額外處理理函數(shù),而不不是在dsaatparmm.c中定義義的通用函數(shù)數(shù),添加一個(gè)個(gè)新的命令執(zhí)執(zhí)行函數(shù)到對(duì)對(duì)應(yīng)的命令處處理文件(ddsatpaarm.c dsataact.c dsatvvend.cc dsattetsiccall.cc, dsaatetsiipkt.cc, dsaatetsiime.c, dsattetsissmsc.cc)。可以使使用任何ATT
42、命令處理單單元在dsaati.h中中或是dsaatparmm.h中exxporteed的。還有有可能修改命命令解析部分分的代碼,在在文件dsaatpar.c中,比如如增加的以開始的的命令,需要要增加相應(yīng)的的解析代碼。6Add tthe Abbort CCommannd funnctionn, if any. If thhe commmand is abbortabble, aan Aboort Coommandd functtion mmust bbe deffined in thhe apppropriiate ccommannd proocessiing fiile. TThe coomm
43、andd proceessingg filees aree the same as thhose iidentiified in sttep 5.添加abortt命令函數(shù)(如如果需要)如果命令是可終終止的,一個(gè)個(gè)終止命令函函數(shù)定義在對(duì)對(duì)應(yīng)命令處理理文件中。7. Add the ccommannd to the aapproppriatee commmand ttable. Firsst, deetermiine whhich ccommannd tabble the AAT commmand belonngs too, bassed onn the commaand syyntax and c
44、commannd typpe. Thhen, aadd the dsatii_cmd_type entryy to tthe seelecteed commmand tablee. Iniitialiize thhe dsaati_cmmd_typpe commaand taable eentry. Inittializze thee dsatti_cmdd_typee commmand ttable entryy to ppoint to thhis neewCommandd Execcutionn funcction. If nno neww speccial pprocesssing c
45、ode is reequireed, innitiallize tthe commaand taable eentry to pooint tto thee apprropriaate Paarametter Prrocesssing ffunctiion orr NULLL,depeendingg on tthe coommandd respponse desirred. IInitiaalize the AAbort Commaand fuunctioon poiintertto NULLL if the ccommannd is not aabortaable, otherrwise i
46、nitiializee it tto poiint too the AborttCommandd funcction 添添加 命令表表單 首先,決定定命令屬于 AT 命令令表中那個(gè)表表,基于命令令的語法和命命令類型。然然后添加 ddsati_cmd_ttype 入入口到選定的的命令表。初初始化 dssati_ccmd_tyype 命令令表入口,初初始化 dssati_ccmd_tyype 命令令表入口指向向這個(gè)新的命命令執(zhí)行函數(shù)數(shù)。如果不需需要指定新的的處理代碼,初初始化命令表表入口指向相相應(yīng)處理函數(shù)數(shù)或是 NUULL,依賴賴于命令響應(yīng)應(yīng)要求。如果果命令不能 abortt,初始化 abortt
47、 函數(shù)指針針到 NULLL,否則將將其初始化到到 aborrt 命令函函數(shù)。圖 3 添加一一條AT命令的流流程圖增加一條同步AAT命令范例例Supposee thatt you want to addd a nnew ATT commmand, AT$MYYCMD, whichh has two nnumeriicThe firstt arguument takess valuues frrom 0 to 7, withh a deefaultt valuue of 0, annd thee secoondarggumentt takees vallues ffrom 00 to 33, wi
48、tth a ddefaullt vallue off 2. TThe coommandd is nnot abbortabble 1. Namme (首先選擇擇一個(gè)唯一的的命令名稱) The commmand name is $MMYCMD.2. Attrributees (決定命令令屬性)This coommandd has the ffollowwing aattribbutes: CONFIGG Thhe commmand has ttwo arrgumenntsEXTENDEED TThe coommandd usess exteended syntaax (beegins with
49、$) 3. Arggumentt storrage(產(chǎn)生一個(gè)變變量存儲(chǔ)參數(shù)數(shù)值)In dsattctab.c:dsat_nuum_iteem_typpe dsaat_myccmd_vaal2;For refferencce extternall to AATCoP, in ddsat.hh, othherwisse in dsatcctab.hh:extern dsat_num_iitem_ttype ddsat_mmycmd_val;4. Defaaults and llimitss In dsaatctabb.c:LOCAL cconst dflm_type dsat_mycmdd_dfl
50、mm = 0, 0, 7 , /* aargumeent 1: defaault = 0, rrange = 0 7 */ 2, 00, 3 /* aargumeent 2: defaault = 2, rrange = 0 3 */ ;5. Speccial pprocesssing(添加命令執(zhí)執(zhí)行函數(shù))Supposee thatt a sppeciall funcction, mycmmd_acttion(), musst be invokked eaach tiime ATT$MYCMMD is isssued, afteer thee paraameterr valuues haave
51、 beeen sttored. Accoordinggly, aa Commmand EExecuttion functtion mmust bbe deffined in dssatvennd.c. This functtion mmust ccall tthe appproprriate Parammeter Proceessingg funcction exporrted bby dsaatparmm.h annd calll myccmd_acction(), thhen reeturn theapproprriate resullt codde. Ann exammple oof t
52、hiis commmand execuution functtion iis:dsat_reesult_enum_type dsatvvend_eexec_mmycmd_cmd(dsat_moode_ennum_tyype moode, /* AT commaand moode */const ddsati_cmd_ttype *cmd_ttable, /* PPtr too cmd in coommandd tablle */const ttokenss_struuct_tyype *ttok_pttr, /* Commmand ttokenss fromm parsser */dsm_it
53、eem_typpe *rees_bufff_ptrr /* PPlace to puut ressponsee */)dsat_reesult_enum_type resullt;/*Performm commmand pparameeter pprocesssing :*/result = dsaatparmm_execc_paraam_cmdd( modde,cmd_tabble,tok_ptrr,res_bufff_ptrr );/*Performm speccial pprocesssing :*/result = myccmd_acction( );return resullt; /
54、* dssatvennd_exeec_myccmd_cmmd */6. Aborrt commmand proceessingg (添加abbort命令令函數(shù)) Since tthe coommandd is nnot abbortabble, nno Aboort Coommandd funcction needss to bbe deffined.7. Commmand ttable entryy (添加 命令表單)Since tthe coommandd usess venddor-sppecifiic (exxtendeed) syyntax, it sshouldd be aadde
55、d to thhedsat_veendor_tablee inn dsattctab.c. Thhe commmand tablee entrry loooks liike thhis: $MYCCMD, EXTENNDED | CONFFIG,SPECIALL_NONEE, 2, &dsatt_mycmmd_vall0, &dsatt_mycmmd_dfllm0, dsatveend_exxec_myycmd_ccmd, NNULL ,8. Comppile aand teestThe AT commaand iss now instaalled in thhe commmand table
56、e. Reccompille thee filees thaat werre moddifiedd and eexecutte.在超級(jí)終端輸入入: AT$MYCMDD ;觀察察輸出9參考/ CC SSPECelementt * CHHECKEDDOUTelementt qctt_60855. ./QQSC60885_E2_v1.0.5_PRAAtSyCoomand/LATESSTelementt qctt_60855. QSC60085_e22_v1.00.5 -mmkbrannch QSSC60855_E2_vv1.0.55_PRAttSyCommandelementt qctt_60855
57、. /maiin/0 -mkbraanch QQSC60885_E2_v1.0.5_PRAAtSyCoomandload qqct_60085/ CC SSPEC EEND增加一條異步AAT命令范例例To add an assynchrronouss commmand, the ssteps definned inn the previious ssectioon musst be folloowed with the ffollowwing ddifferrencess:1. Commmand EExecuttion funcction must returrn DSAAT_ASYYNC_C
58、MMD. Thhis vaalue mmust bberetuurned by thhe Commmand Execuution functtion tto nottify tthe ATT commmand pprocesssor tthat tthisiss an aasynchhronouus commmand. The Commaand Exxecutiion fuunctioon typpicallly iniitiatees theecommaand prrocesssing bby callling on thhe serrvicess of aanotheer tassk. T
59、hhe othher taask thhen reesponddsby geneeratinng an asyncchronoous evvent.命令處理涵數(shù)必必須返回 DDSAT_AASYNC_CMD 值值。 返回值值告知 ATT 命令處理理器這是異步命令。命令處理涵數(shù)指派其他任務(wù)服務(wù)發(fā)起命令處理, 其他任務(wù)產(chǎn)生一異步事件來響應(yīng)。 2. Addd an aasynchhronouus Eveent Haandlerr funcction. An EEvent Handller fuunctioon musst be definned too handlle thee evennt. Add
60、d thee new Eventt Handdler ffunctiion too the approopriatte commmand proceessingg filee (dsaatparmm.c, ddsatacct.c, dsatvvend.cc, dsaatetsiicall.c, dssatetssipkt.c, dssatetssime.cc, dsatettsismssa.c). The eventt handdler mmust rreturnn a vaalue oother than DSAT_ASYNCC_CMD or DSAT_ASYNCC_EVENNT to in
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建省足球運(yùn)動(dòng)管理中心招聘1人備考題庫(kù)及完整答案詳解
- 2026重慶雙福農(nóng)產(chǎn)品批發(fā)市場(chǎng)有限公司招聘3人備考題庫(kù)及參考答案詳解1套
- 2026年中級(jí)會(huì)計(jì)職稱經(jīng)濟(jì)法考試試題及答案
- 分戶驗(yàn)收技術(shù)交底
- 銀行對(duì)客戶業(yè)務(wù)培訓(xùn)課件
- 神經(jīng)調(diào)節(jié)和體液調(diào)節(jié)的關(guān)系
- 護(hù)理感染控制實(shí)踐要點(diǎn)
- 2026年邯鄲市住房公積金管理中心縣(市區(qū))管理部招考24人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2026年遵義師范學(xué)院招考研究生易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2026年遼寧省大連大學(xué)高層次人才選聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 黑龍江省哈爾濱市五區(qū)2025-2026學(xué)年八年級(jí)(五四學(xué)制)上學(xué)期期中語文試題(含答案)
- 2026年寧夏賀蘭工業(yè)園區(qū)管委會(huì)工作人員社會(huì)化公開招聘?jìng)淇碱}庫(kù)及參考答案詳解1套
- 黃芪中藥課件
- 赤峰市敖漢旗2025年網(wǎng)格員考試題庫(kù)及答案
- 船舶除銹涂裝課件
- 天貓店主體變更申請(qǐng)書
- 亞馬遜運(yùn)營(yíng)年終總結(jié)
- 幼兒園老師面試高分技巧
- 航空運(yùn)輸延誤預(yù)警系統(tǒng)
- DLT 5142-2012 火力發(fā)電廠除灰設(shè)計(jì)技術(shù)規(guī)程
- 文化藝術(shù)中心管理運(yùn)營(yíng)方案
評(píng)論
0/150
提交評(píng)論