




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、NB-IOT協(xié)議接入說明文檔Version: 1.0版本時(shí)間修訂人描述1.0.02017/10/30物聯(lián)網(wǎng)公司、研究院A-創(chuàng)建文檔,整理接入方案1.0.0資源模型介紹協(xié)議介紹OneNET提供了采用LWM2M+CoAP協(xié)議接入設(shè)備的說明文檔,用戶可以下載學(xué)習(xí)相關(guān)的具體內(nèi)容,其中包括:LWM2M 協(xié)議的介紹LWM2M 是OMA組織制定的輕量化的 M2M協(xié)議。LwM2M定義了三個(gè)邏輯實(shí)體:LWM2M Server服務(wù)器;LWM2M Client客戶端,負(fù)責(zé)執(zhí)行服務(wù)器的命令和上報(bào)執(zhí)行結(jié)果;LWM2M 引導(dǎo)服務(wù)器 Bootstrap Server ,負(fù)責(zé)配置LWM2M 客戶端。在這三個(gè)邏輯實(shí)體之間有4個(gè)
2、邏輯接口 :Device Discovery and Registration :客戶端注冊(cè)到服務(wù)器并通知服務(wù)器客戶端所 支持的能力;Bootstrap : Bootstrap Server 配置 Client ;Device Management and Service Enablement :指令發(fā)送和接收;Information Reporting :上報(bào)其資源信息。LWM2M ObjectsLWM2M PmLICoAPDTLSUDP圖1-1 LWM2M 協(xié)議棧LWM2M 規(guī)范定義LWM2M Objects :每個(gè)對(duì)象對(duì)應(yīng)客戶端的某個(gè)特定功能實(shí)體。了以下標(biāo)準(zhǔn)Objects ,比如o ur
3、n:oma:lwm2m:oma:2; (LWM2M Server Object);o urn:oma:lwm2m:oma:3; (LWM2M Access Control Object);o 每個(gè) object 下可以有很多 resource ,比如 Firmware object 可以有 Firmware 版本號(hào),size 等 resource ;o Vendor可以自己定義 object 。LWM2M Protocol:定義了一些邏輯操作, 比如 Read, Write, Execute, Discover orObserve 等。LWM2M協(xié)議的具體內(nèi)容和消息格式可以參考OMA的網(wǎng)站ht
4、tps:/wiki/OMA LWM2MCoAP協(xié)議的說明CoAP( Constrained Application Protocol)協(xié)議是 IETF 提出的一種面向網(wǎng)絡(luò)的協(xié)議,采用了與 HTTP類似的特征,核心內(nèi)容為資源抽象、REST式交互以及可擴(kuò)展的頭選項(xiàng)等。CoAP協(xié)議基于REST構(gòu)架,REST是指表述性狀態(tài)轉(zhuǎn)換架構(gòu),是互聯(lián)網(wǎng)資源訪問協(xié) 議的一般性設(shè)計(jì)風(fēng)格。為了克服HTTP對(duì)于受限環(huán)境的劣勢(shì),CoAP既考慮到數(shù)據(jù)報(bào)長度的最優(yōu)化,又考慮到提供可靠通信。 一方面,CoAP提供URI, REST式的方法如 GET、POST、 PUT和DELETE,以及可以獨(dú)立定義的頭選項(xiàng)提供的可擴(kuò)展性。另一方
5、面,CoAP基于輕量級(jí)的UDP協(xié)議,并且允許IP多播。為了彌補(bǔ) UDP傳輸?shù)牟豢煽啃?,CoAP定義了帶有重 傳機(jī)制的事務(wù)處理機(jī)制。并且提供資源發(fā)現(xiàn)機(jī)制,并帶有資源描述。Request Rnpnn*cLWCoAP協(xié)議棧示意圖CoAP由UDP作為承載,遵循 UDP基本的協(xié)議報(bào)文格式,UDP數(shù)據(jù)內(nèi)容部分按照CoAP協(xié)議報(bào)文格式進(jìn)行寫入傳輸。CoAP協(xié)議格式說明如下:Ver版本編號(hào),指示 CoAP協(xié)議的版本號(hào)。類似于 HTTP 1.0 HTTP 1.1。版本編號(hào)占2位,取值為01B。T報(bào)文類型,CoAP協(xié)議定義了 4種不同形式的報(bào)文:CON報(bào)文,NON報(bào)文,ACK報(bào)文和RST報(bào)文。TKL CoAP標(biāo)識(shí)
6、符長度。CoAP協(xié)議中具有兩種功能相似的標(biāo)識(shí)符,一種為Message ID (報(bào)文編號(hào)),一種為Token (標(biāo)識(shí)符)。其中每個(gè)報(bào)文均包含消息編號(hào),但是標(biāo)識(shí)符對(duì)于報(bào)文來說是非必須的。Code 功能碼/響應(yīng)碼。Code在CoAP請(qǐng)求報(bào)文和響應(yīng)報(bào)文中具有不同的表現(xiàn)形式,Code占一個(gè)字節(jié),它被分成了兩部分,前3位一部分,后5位一部分,為了方便描述它被寫成了c.dd結(jié)構(gòu)。其中0.XX表示CoAP請(qǐng)求的某種方法,而2.XX、4.XX或5.XX則表示CoAP響應(yīng)的某種具體表現(xiàn)?!綧essage ID 報(bào)文編號(hào)。Token 標(biāo)識(shí)符具體內(nèi)容,通過 TKL指定Token長度。Option 報(bào)文選項(xiàng),通過報(bào)文選
7、項(xiàng)可設(shè)定CoAP主機(jī)、CoAP URI、CoAP請(qǐng)求參數(shù)和負(fù)載媒體類型等等。【1111 1111B CoAP報(bào)文和具體負(fù)載之間的分隔符。CoAP支持多個(gè)Option , CoAP的Option 的表示方法比較特殊,采用增量的方式描述。一股情況下 Option 部分包含 Option Delta 、Option Length 和 Option Val 三部分:Option Delta 表示Option的增量,當(dāng)前的Option的具體編號(hào)等于之前所有Option Delta的總和。Option Length 表示Option Val 終端設(shè)備的具體長度。Option Val終端設(shè)備】表示Optio
8、n具體內(nèi)容。321 bytes0-2 bytes0-2 bytes0 or more bytesCoA啜 據(jù)包328816協(xié)議報(bào)文示意圖CoAP協(xié)議報(bào)文中具體數(shù)值的意義參考CoAP協(xié)議:IETF RFC7252 。ObjectObjectInstanceResource權(quán)限值數(shù)據(jù)類型攝像頭(100)0最大像素(0)R12,000,000Integer像素(1)RW12,000,000Integer最大光圈(2)R2.2Float最小光圈(3)R32Float光圈(4)RW5.6Float快門(5)E當(dāng)前圖像(6)R二進(jìn)制圖像Opaque (二進(jìn)制)1最大像素(0)R8,000,000Integ
9、er像素(1)RW8,000,000Integer光線傳感器(101)0GPS(102)0陀螺儀(103)0資源模型LWM2M 協(xié)議定義了三層資源模型:Object, Object Instance, Resource,每一層都用數(shù)字ID來標(biāo)識(shí)。其中,Object是傳感器類別,Object Instance是傳感器具體實(shí)例,Resource是傳感器的屬性和讀數(shù)等,每個(gè) Resource具有不同的權(quán)限和數(shù)據(jù)類型,包括可讀(R) /可寫(W /可執(zhí)行(E)。一個(gè)終端設(shè)備上可能存在多個(gè)Object, 每個(gè)Object 可能存在多個(gè)Object Instance 。例如,把手機(jī)看作一個(gè)終端設(shè)備,則手機(jī)
10、上有攝像頭,光線傳感器,GPS,陀螺儀等多種傳感器,每種傳感器便是一個(gè)Object。假定攝像頭的Object ID 為100 ,手機(jī)上有前后兩個(gè)攝像頭,即兩個(gè) Object Instance, ID 分別為0, 1 。每一個(gè)攝像頭包括了像素,鏡頭焦 距,光圈,快門值,快門等多種Resource 。手機(jī)上的部分資源如下:(Object ID, Resource ID 為示例)可以使用類似于路徑的方式來表示某個(gè)資源,例如/100表示Object 100 (即攝像頭),/100/0 表示 Object 100, Object Instance 0 (即攝像頭 0), /100/0/0 表示 Obje
11、ct 100,Object Instance 0, Resource 0 (即攝像頭 0的的最大像素)。IPSO的 文 檔, 中定義了一些常用傳感器的 Object ID 和Resource ID ,終端設(shè)備應(yīng)按照IPSO文檔聲明終端上的相關(guān)資源。LWM2M 的資源模型與OneNET的數(shù)據(jù)模型對(duì)應(yīng)如下:LWM2MOneNET備注終端設(shè)備設(shè)備Device平臺(tái)為每個(gè)設(shè)備分配唯一IDObject,ObjectInstance, Resource數(shù)據(jù)流數(shù)據(jù)流的名稱按照規(guī)則ObjectID_ObjectInstanceID_ResourceID生成,例如手機(jī)攝像頭的例子中,資源/100/0/1 對(duì)應(yīng)的
12、數(shù)據(jù)流為100_0_1Resource Value數(shù)據(jù)點(diǎn)資源在某個(gè)時(shí)間點(diǎn)上傳的值,與時(shí)間戳一起,形成 數(shù)據(jù)點(diǎn),存儲(chǔ)在OneNET訂閱(Observe 機(jī)制)NB-IOT終端設(shè)備通過 LWM2M 協(xié)議的訂閱(Observe)/上報(bào)(Notify) 機(jī)制將數(shù)據(jù)上傳到 OneNET 平臺(tái)。訂閱可以在 Object 層,Object Instance 層,Resource 層,訂閱上層Object時(shí),其所屬的所有 Object Instance都可以上報(bào)數(shù)據(jù);訂閱 Object Instance 時(shí),其所屬的所有 Resource都可以上報(bào)數(shù)據(jù)。每層訂閱都是獨(dú)立的,由資源路徑唯一標(biāo)識(shí)。例如,同時(shí)訂閱了
13、/100/0 和/100/0/0 ,則/100/0/0的數(shù)據(jù)會(huì)上報(bào)兩次;只取消訂閱/100/0 或者/100/0/0中的某一個(gè),/100/0/0的數(shù)據(jù)還是會(huì)上傳。設(shè)備上線時(shí),平臺(tái)會(huì)主動(dòng)下發(fā)Observe 消息訂閱設(shè)備上的所有Object Instance (可以在創(chuàng)建設(shè)備時(shí)關(guān)閉自動(dòng)訂閱),也可以使用 API訂閱感興趣的資源。UE與平臺(tái)間的通信接口基于LWM2M 協(xié)議,在LWM2M 協(xié)議以下基于 CoAP協(xié)議,通信消息包括四部分:第一部分是發(fā)起B(yǎng)ootstrap , Bootstrap Write , Bootstrap 完成,第二部分是注冊(cè)、注銷、更新注冊(cè)消息;第三部分是觀測(cè)消息、取消觀測(cè)、消
14、息上報(bào);第四 部分是設(shè)備管理操作,包括 read/write/execute 操作。SDK使用說明根據(jù)應(yīng)用的使用方式,基于已經(jīng)集成SDK的模組,應(yīng)用可以采取兩種方式:第一種方式是APP集成在模組上,這種場(chǎng)景下應(yīng)用使用SDK提供的API接口實(shí)現(xiàn);第二種方式是APP工作在自己的 MCU上,同時(shí)使用集成了 SDK的模組來提供 OneNet及NBIOT接入 的相關(guān)功能,這種場(chǎng)景下應(yīng)用使用SDK的AT接口。應(yīng)用廠家使用集成完 SDK的芯片和模組分為兩種,第一種是使用SDK提供的API接口,這種方式所有的操作都是同步的,要求 APP和模組在同一個(gè)芯片核內(nèi)。第二種方式是 使用AT接口,這種方式所有操作都是異
15、步的,應(yīng)用可以在自己的MCU中完成自己的應(yīng)用的開發(fā)。后面分開介紹不同的接口應(yīng)用的編寫。API接口模式的應(yīng)用SDK的API接口包括對(duì)基礎(chǔ)通信套件進(jìn)行初始化、反初始化以及其他操作、相應(yīng)的配 置文件、回調(diào)函數(shù)以及結(jié)構(gòu)體,SDK提供的API接口如下:API接口模式的應(yīng)用cis_ret_t cis_init (void * context, void * config, uint32_t size);功能:根據(jù)輸入的config文件進(jìn)行SDK初始化參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *指向void *指針地址的指針變量, 基礎(chǔ)通信套件在初始化成功后會(huì)將 申請(qǐng)到的上卜文結(jié)構(gòu)
16、體地址寫入該 變量中config配置文件信息void *sizeconfig 的大小uint32_ttypedefunsigned_int16uint16_t;返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功cis_ret_t cis_deinit (void * context);功能:反初始化操作,釋放 SDK占用的資源參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址返回值返回值含義CIS_RET_ERROR失敗返回值返回值含義CIS_RET_OK成功cis_ret_t cis_register (void * context,
17、const cis_callback_t* cb);功能:SDK初始化完成后,該接口向平臺(tái)進(jìn)行注冊(cè)參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址cb設(shè)備回調(diào)constcis_callback_t*返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功cis_ret_t cis_unregister (void * context);功能:該接口用于向服務(wù)器發(fā)起注銷操作參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功cis_ret_t
18、 cis_addobject (void * context, cis_oid_t objectid, const cis_inst_bitmap_t* bitmap, const cis_res_config_t* resource);功能:SDK初始化完成后,使用該接口添加object參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址object idobject idcis_oid_t *bitmap實(shí)例位圖constcis_inst_bitmap_t*resource屬性數(shù)量及操作數(shù)量constcis_res_config_t*返回值返回值含義CIS
19、_RET_ERROR失敗CIS_RET_OK成功cis_ret_t cis_delobject (void * context, cis_oid_t objectid);功能:SDK使用該接口刪除object參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址object idobject idoid_t *返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功uint32_t cis_pump (void * context);功能:用戶在初始化完成后,調(diào)用該接口驅(qū)動(dòng)SDK運(yùn)行,SDK在該接口中調(diào)度多個(gè)任務(wù),包括根據(jù)網(wǎng)絡(luò)回復(fù)和狀態(tài)發(fā)起注冊(cè)消息
20、,根據(jù)設(shè)定的lifetime定期發(fā)起更新注冊(cè)消息, 根據(jù)observe參數(shù)的設(shè)置上報(bào) notify消息。參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址返回值返回值含義0有任務(wù)待完成,不能進(jìn)入休眠模式。OxFFFFFFFF可隨時(shí)進(jìn)入休眠,自定義休眠時(shí)間返回值返回值含義1 OxFFFFFFFF- 1可隨時(shí)進(jìn)入休眠,并限定最長休眠時(shí)間,單位mscis_ret_t cis_change (void * context, oid_t objectid, iid_t instid, rid_t rid);功能:SDK提供該接口,用戶使用該接口通知 SDK有數(shù)值變化。
21、SDK檢查當(dāng)前值是否被平臺(tái)observe ,如果是,檢查是否滿足observe條件,在條件滿足時(shí)向平臺(tái)上報(bào)該數(shù)據(jù)。參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址objectid對(duì)象IDcis_oid_tinstid實(shí)例IDcis_iid_trid資源IDcis_rid_t返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功uint32_t cis_update_reg (void * context, uint32_t lifetime, bool withObjects);功能:SDK提供該接口,用戶使用該接口通知SDK更新注冊(cè)的li
22、fetime 。如果withObjects 參數(shù)為true ,則同時(shí)更新 object 信息,如果 withObjects 參數(shù)為false ,則 只更新lifetime 。參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址lifetime生命周期uint32_twithObjects是否同時(shí)更新對(duì)象信息booltrue為更新對(duì)象信息,false為不更新對(duì)象信息。返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功cis_ret_t cis_notify (void* context, cis_ret_t result, cis_data_
23、t* data, uint16_t count, cis_mid_t msgid);功能:當(dāng)網(wǎng)絡(luò)側(cè)發(fā)來讀、寫、執(zhí)行、觀測(cè)、設(shè)置參數(shù)請(qǐng)求時(shí),SDK會(huì)調(diào)用相關(guān)回調(diào)函數(shù),并傳輸相應(yīng) msgid ,待真正操作完成時(shí),應(yīng)用程序使用cis_notify接口返回結(jié)果(對(duì)于讀,需要填寫result及data字段,其中result表示讀操作成功與否,如果成功,則 resul t設(shè)為CIS_CALLBACK_READ_SUCCESS ,則data字段填入實(shí)際讀結(jié)果,如果失敗,則 da ta為空;對(duì)于寫、執(zhí)行、觀測(cè)、設(shè)置參數(shù),只需分別將操作結(jié)果result設(shè)置為CIS_CALLBACK_WRITE_SUCCESS、
24、CIS_CALLBACK_EXECUTE_SUCCESS、CIS_CALLBACK_OBSER VE_SUCCESS、 CIS_CALLBACK_OBSERVE_PARAMS_SUCCESS 或相應(yīng)的錯(cuò)誤值,并將 d ata置空);或者,應(yīng)用程序應(yīng)根據(jù)網(wǎng)絡(luò)側(cè)所設(shè)置的數(shù)據(jù)上報(bào)策略自行調(diào)用相應(yīng)AT指令接口填入上報(bào)數(shù)據(jù),而該 AT指令最終會(huì)調(diào)用 cis_notify 接口進(jìn)行數(shù)據(jù)上報(bào),需要填寫data字段,即需要上報(bào)的數(shù)據(jù),result字段設(shè)為 CIS_CALLBACK_NOTIFY_SUCCESS參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址result操作
25、結(jié)果cis_ret_tdata上報(bào)的數(shù)據(jù)cis_data_t *countuint16_tmsgid消息IDcis_mid_t該 msgid 從 cis_on_observe 函數(shù)獲取返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功cis_ret_t cis_version (void * context, cis_version_t* ver);功能:獲取當(dāng)前SDK版本時(shí)調(diào)用本接口獲取當(dāng)前 SDK版本參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述context上卜義信息void *上卜文結(jié)構(gòu)體地址ver基礎(chǔ)通信套件版本cis_version_t*主版本號(hào)和副版本號(hào)為cis_vers
26、ion_t 結(jié) 構(gòu)體里 的兩個(gè)uint8_t型字段返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功cis ret tcis uri make(cis oid toid,cis iid tiid,cis rid trid,cis uri t* uri);功能:根據(jù)輸入的 ObjectID、Instance ID 及 ResourcelD 生成 URI參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述oidObject IDcis_oid_tiidIntance IDcis_iid_tridResource IDcis_rid_turi待生成的URIcis_uri_t*SDK將向該指針指向的
27、結(jié)構(gòu)體中填入相應(yīng)內(nèi)容返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功cis_ret_t cis_uri_update (cis_uri_t* uri);功能:根據(jù)應(yīng)用程序填入 cis_uri_t結(jié)構(gòu)體的 ObjectID、Instance ID M Resource ID更新結(jié)構(gòu)體flag參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述uri待更新的URIcis_uri_t*應(yīng)用程序在自行更改 cis_uri_t結(jié)構(gòu)體相關(guān)ID后可調(diào)用該API,基礎(chǔ)通信套件將更新flag字段返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功cis_ret_t cis_data_cop
28、y(cis_data_t* dst, const cis_data_t * src);功能:拷貝cis_data_t型源數(shù)據(jù)至目標(biāo)地址參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述dst目標(biāo)數(shù)據(jù)cis_data_t*src源數(shù)據(jù)constcis_data_t *返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功cis_ret_t cis_data_free(cis_data_t * data);功能:釋放cis_data_t型指針指向的內(nèi)存參數(shù)及返回值:參數(shù)名稱參數(shù)含義描述data待釋放數(shù)據(jù)cis_data_t*返回值返回值含義CIS_RET_ERROR失敗CIS_RET_OK成功數(shù)據(jù)
29、結(jié)構(gòu)和回調(diào)函數(shù)回調(diào)函數(shù)接口回調(diào)函數(shù)含義描述讀資源值回調(diào)cis_read_callback_ttypedef cis_ret_t (*cis_read_callback_t) (const void * context, cis_uri_t* uri, cis_data_tdata_t* value, cis_mid_t msgid);寫資源值回調(diào)cis_write_callback_ttypedef cis_ret_t (*cis_write_callback_t) (const void * context, cis_uri_t* uri, const cis_data_t* value,
30、cis_mid_t msgid);執(zhí)行回調(diào)cis_exec_callback_ttypedef cis_ret_t (*cis_exec_callback_t) (const void * context, cis_uri_t* uri, const uint8_t* value, uint32_t length, cis_mid_t msgid);回調(diào)函數(shù)含義描述觀測(cè)回調(diào)cis_observe_callback_ttypedef cis_ret_t (*cis_observe_callback_t) (const void * context, cis_uri_t* uri, bool fl
31、ag, cis_mid_t msgid);設(shè)置上報(bào)策略回調(diào)cis_set_param_callback_ttypedef cis_ret_t (*cis_set_param_callback_t) (const void * context, cis_uri_t* uri,const cis_observe_attr_t * attr, cis_mid_t msgid);發(fā)現(xiàn)操作回調(diào)cis_discover_ callback_ttypedef cis_ret_t (*cis_discover_callback_t) (const void * context, cis_uri_t* uri,
32、 const cis_data_t * value, cis_mid_t msgid);事件回調(diào)cis_event_callback_ttypedef void (*cis_event_callback_t) (const void * context, cis_event_t id);基礎(chǔ)通信套件在收到平臺(tái)側(cè)讀數(shù)據(jù)請(qǐng)求時(shí),分為三種情況:1、請(qǐng)求的是 read 一個(gè)object基礎(chǔ)通信套件需要遍歷該object下的所有instance ,然后對(duì)不同的instance調(diào)用cis_read_callback_t 回調(diào)。2、請(qǐng)求的是 read 一個(gè) object 的一個(gè) instance基礎(chǔ)通信套件
33、針對(duì)該instance下的所有resource調(diào)用cis_read_callback_t回調(diào)。請(qǐng)求的是 read 個(gè) object的個(gè) instance 的個(gè) resource基礎(chǔ)通信套件針對(duì)該resource調(diào)用cis_read_callback_t回調(diào)。參數(shù)名稱參數(shù)含義描述context設(shè)備上卜文const void *uri設(shè)備URIcis_uri_t*表/、Object Instance、 Resource ID 的 URI。若 URI 的 flag 其中 resource ID 位 無效,則讀該instance下的所有 resource;若 URI 的 flag 其中 instanc
34、e ID 位無效,則讀該object下的所有instancevalue設(shè)備屬性cis_data_t data_t*msgid消息IDcis_mid_t基礎(chǔ)通信套件提供一個(gè)唯一的消息標(biāo) 識(shí),用來標(biāo)識(shí)從網(wǎng)絡(luò)側(cè)狀取的一條請(qǐng)參數(shù)名稱參數(shù)含義描述求。msgid = 0時(shí),該函數(shù)同步返回讀數(shù) 據(jù)結(jié)果;msgid w0的情形適用丁 AT指 令實(shí)現(xiàn)方式,該函數(shù)立即返回,讀操作 真正完成后cis_notify接口攜帶該標(biāo)識(shí) 異步返回結(jié)果。返回值返回值含義CIS_CALLBACK_READ_SUCCESS成功CIS_CALLBACK_BAD_REQUEST請(qǐng)求無效CIS_CALLBACK_UNAUTHORIZED
35、未授權(quán)CIS_CALLBACK_NOT_FOUND目標(biāo)未找到CIS_CALLBACK_METHOD_NOT_ALLOWED方法不允許CIS_CALLBACK_SERVICE_UNAVAILABLE服務(wù)不存在基礎(chǔ)通信套件在收到平臺(tái)側(cè)寫數(shù)據(jù)請(qǐng)求時(shí),基礎(chǔ)通信套件調(diào)用cis_write_callback_t回調(diào)。參數(shù)名稱參數(shù)含義描述context設(shè)備上卜文const void *uri設(shè)備URIcis_uri_t*表小 Object、Instance 的 URI ,其中 flag中關(guān)于 Resource ID的位會(huì)被置 空,如果涉及到 Resource ID ,會(huì)在 value字段中傳入value設(shè)備
36、屬性const cis_data_t*如果只與個(gè)屬性值,則value的id 設(shè)置為目標(biāo)的 Resource ID, value的 type為該Resource的具體類型(子符 型、不透明型、整型、浮點(diǎn)型、布 爾型);如要寫某instance的所后屬 性值,則需將 value的type設(shè)為 cis_data_type_instance 類型,并將 asChildren 的 count字段設(shè)為該 instance所有的屬性數(shù)重,再將每個(gè) 屬性值填入asChildren的array數(shù)組。msgid消息IDcis_mid_t基礎(chǔ)通信套件提供一個(gè)唯一的消息 標(biāo)識(shí),用來標(biāo)識(shí)從網(wǎng)絡(luò)側(cè)狀取的一條請(qǐng)求。msgi
37、d = 0時(shí),該函數(shù)同步 返回寫數(shù)據(jù)結(jié)果;msgid w0的情形 適用于AT指令實(shí)現(xiàn)方式,該函數(shù)立 即返回,寫操作真正完成后通過cis notify接口攜帶該標(biāo)識(shí)異步返回參數(shù)名稱參數(shù)含義描述結(jié)果。返回值返回值含義CIS_CALLBACK_WRITE_SUCCESS成功CIS_CALLBACK_BAD_REQUEST請(qǐng)求無效CIS_CALLBACK_UNAUTHORIZED未授權(quán)CIS_CALLBACK_NOT_FOUND目標(biāo)未找到CIS_CALLBACK_METHOD_NOT_ALLOWED方法不允許CIS_CALLBACK_SERVICE_UNAVAILABLE服務(wù)不存在基礎(chǔ)通信套件在收到平
38、臺(tái)側(cè)執(zhí)行請(qǐng)求時(shí),基礎(chǔ)通信套件調(diào)用cis_exec_callback_t回調(diào)。參數(shù)名稱參數(shù)含義描述context設(shè)備上卜文const void *uri設(shè)備URIcis_uri_t*表7K Object Instance Resource ID的 URIvalue表征執(zhí)行參數(shù)的bufferconst uint8_t*參數(shù)解析參見OMA LwM2M協(xié)議lengthvalue的長度uint32_tmsgid消息IDcis_mid_t基礎(chǔ)通信套件提供一個(gè)唯一 的消息標(biāo)識(shí),用來標(biāo)識(shí)從網(wǎng)絡(luò) 側(cè)獲取的一條請(qǐng)求。msgid = 0 時(shí),該函數(shù)同步返回執(zhí)行結(jié) 果;msgid w0的情形適用丁 AT指令實(shí)現(xiàn)方式,
39、該函數(shù)立 即返回,執(zhí)行操作真正完成后 通過cis_notify接口攜帶該標(biāo) 識(shí)異步返回結(jié)果。返回值返回值含義CIS_CALLBACK_EXECUTE_SUCCESS成功CIS_CALLBACK_BAD_REQUEST請(qǐng)求無效CIS_CALLBACK_UNAUTHORIZED未授權(quán)CIS_CALLBACK_NOT_FOUND目標(biāo)未找到CIS_CALLBACK_METHOD_NOT_ALLOWED方法不允許CIS_CALLBACK_SERVICE_UNAVAILABLE服務(wù)不存在基礎(chǔ)通信套件在收到平臺(tái)側(cè)觀測(cè)請(qǐng)求時(shí),基礎(chǔ)通信套件調(diào)用cis_observe_callback_t回調(diào)。基礎(chǔ)通信套件在收到
40、平臺(tái)側(cè)觀測(cè)請(qǐng)求時(shí),分為三種情況:1、請(qǐng)求的是觀測(cè)一個(gè)object基礎(chǔ)通信套件需要觀測(cè)該object下的所有instance,然后根據(jù)上報(bào)策略來上報(bào)變化給平臺(tái)側(cè)。2、請(qǐng)求的是觀測(cè)一個(gè)object的一個(gè)instance基礎(chǔ)通信套件需要觀測(cè)該instance下的所有屬性,然后根據(jù)上報(bào)策略來上報(bào)變化給平臺(tái)側(cè)。3、請(qǐng)求的是觀測(cè)一個(gè)object的一個(gè)instance的一個(gè)resource基礎(chǔ)通信套件需要觀測(cè)該指定的resource,然后根據(jù)上報(bào)策略來上報(bào)變化給平臺(tái)側(cè)。參數(shù)名稱參數(shù)含義描述context設(shè)備上卜文const void *uri設(shè)備URIcis_uri_t*表小 Object Instance
41、、Resource ID 的 URI。若 URI 的 flag 其中 resource ID位無效,則觀測(cè)該instance下的 所有resource;若URI的flag其中 instance ID位無效,則觀測(cè)該obect 下的所有 instanceflag設(shè)置取消標(biāo)志位bool如果flag為true ,則開啟針對(duì)指teURI的觀測(cè)如果flag為flase,則停止針對(duì)指定URI的觀測(cè)msgid消息IDcis_mid_t基礎(chǔ)通信套件提供一個(gè)唯一的消 息標(biāo)識(shí),用來標(biāo)識(shí)從網(wǎng)絡(luò)側(cè)狀取的 一條請(qǐng)求。msgid =。時(shí),該函數(shù)同 步返回觀測(cè)結(jié)果;msgid w0的情形 適用于AT指令實(shí)現(xiàn)方式,該函數(shù) 立
42、即返回,觀測(cè)操作真正完成后通 過cis_notify接口攜帶該標(biāo)識(shí)異步 返回結(jié)果。返回值返回值含義CIS_CALLBACK_OBSERVE_SUCCESS成功CIS_CALLBACK_BAD_REQUEST請(qǐng)求無效CIS_CALLBACK_UNAUTHORIZED未授權(quán)CIS_CALLBACK_NOT_FOUND目標(biāo)未找到CIS_CALLBACK_METHOD_NOT_ALLOWED方法不允許CIS_CALLBACK_SERVICE_UNAVAILABLE服務(wù)不存在基礎(chǔ)通信套件在收到平臺(tái)側(cè)上報(bào)策略請(qǐng)求時(shí),調(diào)用cis_set_param_callback_t回調(diào)?;A(chǔ)通信套件在收到平臺(tái)側(cè)設(shè)置上報(bào)
43、策略請(qǐng)求時(shí),分為三種情況:1、請(qǐng)求的是對(duì)一個(gè)object設(shè)置上報(bào)策略基礎(chǔ)通信套件需要對(duì)該object下的所有instance設(shè)置上報(bào)策略,在上報(bào)時(shí)檢查數(shù)據(jù)是否滿足上報(bào)策略。2、請(qǐng)求的是對(duì)一個(gè)object的一個(gè)instance設(shè)置上報(bào)策略基礎(chǔ)通信套件需要對(duì)該instance下的所有屬性設(shè)置上報(bào)策略,在上報(bào)時(shí)檢查數(shù)據(jù)是否滿 足上報(bào)策略。3、請(qǐng)求的是對(duì)一個(gè)object的一個(gè)instance的一個(gè)resource設(shè)置上報(bào)策略基礎(chǔ)通信套件需要對(duì)該指定的resource設(shè)置上報(bào)策略,在上報(bào)時(shí)檢查數(shù)據(jù)是否滿足策略。參數(shù)名稱參數(shù)含義描述context設(shè)備上卜文const void *上下文結(jié)構(gòu)體地址uri設(shè)備
44、URIcis_uri_t*W/K Object Instance Resource ID 的 URI。若 URI 的 flag 其中 resource ID位無效,則為該instance下的 所有resource設(shè)置參數(shù);右 URI 的flag其中instance ID位無效, 則為該obect下的所有instance 設(shè)置參數(shù)attr上報(bào)策略參數(shù)const cis_observe_attr_t*上報(bào)策略參數(shù)結(jié)構(gòu)體msgid消息IDcis_mid_t基礎(chǔ)通信套件提供一個(gè)唯一的消 息標(biāo)識(shí),用來標(biāo)識(shí)從網(wǎng)絡(luò)側(cè)狀取 的一條請(qǐng)求。 msgid = 0時(shí),該函 數(shù)同步返回設(shè)置上報(bào)策略結(jié)果; msgid w
45、0的情形適用丁 AT指令 實(shí)現(xiàn)方式,該函數(shù)立即返回,設(shè) 置上報(bào)策略操作真正完成后通過 cis_notify接口攜帶該標(biāo)識(shí)異步返 回結(jié)果。返回值返回值含義CIS_CALLBACK_OBSERVE_PARAMS_SUCCESS成功CIS_CALLBACK_BAD_REQUEST請(qǐng)求無效CIS_CALLBACK_UNAUTHORIZED未授權(quán)CIS_CALLBACK_NOT_FOUND目標(biāo)未找到CIS_CALLBACK_METHOD_NOT_ALLOWED方法不允許CIS_CALLBACK_SERVICE_UNAVAILABLE服務(wù)不存在基礎(chǔ)通信套件在收到平臺(tái)側(cè)Discover請(qǐng)求時(shí),基礎(chǔ)通信套件調(diào)
46、用cis_discover_callback_t回調(diào)。參數(shù)名稱參數(shù)含義描述參數(shù)名稱參數(shù)含義描述context設(shè)備上卜文const void *uri設(shè)備URIcis_uri_t*表示 Object Instance 的 URI ,其中 flag中關(guān)于 Resource ID的位會(huì)被置 空value設(shè)備屬性const cis_data_t*value的id設(shè)置為目標(biāo)的 Resource ID , value的type不需要填寫。msgid消息IDcis_mid_t基礎(chǔ)通信套件提供一個(gè)唯一的消息 標(biāo)識(shí),用來標(biāo)識(shí)從網(wǎng)絡(luò)側(cè)狀取的一 條請(qǐng)求。msgid = 0時(shí),該函數(shù)同步 返回寫數(shù)據(jù)結(jié)果;msgid
47、wo的情形 適用于AT指令實(shí)現(xiàn)方式,該函數(shù)立 即返回,寫操作真正完成后通過 cis_notify接口攜帶該標(biāo)識(shí)異步返回 結(jié)誕返回值返回值含義CIS_CALLBACK_WRITE_SUCCESS成功CIS_CALLBACK_BAD_REQUEST請(qǐng)求無效CIS_CALLBACK_UNAUTHORIZED未授權(quán)CIS_CALLBACK_NOT_FOUND目標(biāo)未找到CIS_CALLBACK_METHOD_NOT_ALLOWED方法不允許CIS_CALLBACK_SERVICE_UNAVAILABLE服務(wù)不存在基礎(chǔ)通信套件會(huì)將注冊(cè)、bootstrap等過程的結(jié)果通過cis_event_callback
48、_t回調(diào)通知應(yīng)用。參數(shù)名稱參數(shù)含義描述context設(shè)備上卜文const void *上下文結(jié)構(gòu)體地址id狀態(tài)IDcis_evt_t事件類型id:1:注冊(cè)成功2:注冊(cè)失敗3: lifetime 超時(shí)4: update 成功-1:狀態(tài)錯(cuò)誤結(jié)構(gòu)體枚舉類型cis_datatype_t用來設(shè)備屬性類型,具體含義如下:typedef enum(cis_data_type_undefine = 0,未定義類型cis_data_type_string,字符串類型cis_data_type_opaque,/不透明類型cis_data_type_integer,整型cis_data_type_float,/浮點(diǎn)
49、型cis_data_type_bool,布爾型cis_data_type_object,/Object 類型cis_data_type_instance,/Instance 類型cis_datatype_t;typedef struct st_cis_datauint16_tid;cis_datatype_ttype;struct uint32_t length; uint8_t* buffer;asBuffer; union boolasBoolean;int64_tasInteger;doubleasFloat;struct uint32_t count; cis_data_t * arr
50、ay;asChildren; struct cis_oid_t objectId; cis_iid_t instId;asObjLink; value; cis_data_t;名字描述iduint16_t相關(guān) Object、 Instance Resource的IDtypecis_datatype_t屬,歸現(xiàn)valueunion對(duì)象數(shù)據(jù)共用體asBooleanbool布爾型屬性值asIntegerint64_t整型屬性值asFloatdouble浮點(diǎn)屬性值asBufferasBuffer結(jié)構(gòu)體buffer類型屬性值asChildrenasChildren 結(jié)構(gòu)體涉及到多個(gè) Instance 或
51、Resource時(shí)使用 該結(jié)構(gòu)體參數(shù)名稱參數(shù)含義描述id資源IDcis_rid_ttype數(shù)據(jù)類型cis_data_type_ttypedef enum em_cisattr_data_type cis_data_type_undefine =0,類型未定義cis_data_type_string, 字符串型cis_data_type_opaque, 不透明類型cis_data_type_integer, 整型cis_data_type_float, 浮點(diǎn)型cis_data_type_bool, 布爾型cis_data_type_object, 對(duì)象類型cis_data_type_instan
52、ce, Instance 類型 cis_data_type_t;結(jié)構(gòu)體asBufferlengthuint_32無符號(hào)32位整形bufferuint8_t*無符號(hào)8位整形指針union對(duì)象數(shù)據(jù)共用體valueasBooleanbool布爾型asIntegerint64_ttypedef signed _int64 int64_t;整型asFloatdouble雙精度浮點(diǎn)型結(jié)構(gòu)體asChildrencountuint32_t無符號(hào)32位整形arraystruct cis_data_t*結(jié)構(gòu)體asObjLinkobjectIdoid_tobject標(biāo)識(shí)instIdiid_tinstance 標(biāo)識(shí)使
53、用該object示例如下:cis_data_t:string:data-id = id;data-type = cis_data_type_string;data-value.asBuffer.length = strlen(valuestring);data-value.asBuffer.buffer = (uint8_t*)strdup(valuestring); cis_data_t:floatdata-id = id;data-type = cis_data_type_float;data-value.asFloat= valuedouble;cis_data_t:integerdat
54、a-id = id;data-type = cis_data_type_integer;data-value.asInteger= valueint;cis_data_t:booldata-id =id;data-type = cis_data_type_bool;data-value.asInteger= valueint;typedef struct st_cis_observe_attruint8_ttoSet;uint8_ttoClear;uint32_tminPeriod;uint32_tmaxPeriod;floatgreaterThan;floatlessThan;floatst
55、ep; cis_observe_data_t;名字回描述toSetuint8_t設(shè)置標(biāo)志位,為1toClearuint8_t清除標(biāo)志位minPerioduint_32最小時(shí)間間隔,單位為秒maxPerioduint_32最大時(shí)間間隔greaterThanfloat觀測(cè)數(shù)據(jù)大于lessThanfloat觀測(cè)數(shù)據(jù)小于stepfloat觀測(cè)的數(shù)據(jù)變化最小區(qū)間typedef struct st_cis_version uint8_tmajor;uint8_tminor; cis_version_t;名字描述majoruint8_t主版本號(hào)minoruint8_t副版本號(hào)typedef struct s
56、t_cis_inst_bitmap uint8_t instanceCount;uint8_t instanceBytes; const uint8_t*instanceBitmap; cis_inst_bitmap_t;名字描述instanceCountuint8_t實(shí)例總數(shù)instanceBytesuint8_t實(shí)例位圖實(shí)際占用字 節(jié)數(shù)名字描述instanceBitmapconst uint8_t *表征各實(shí)例的位圖, 若某個(gè)實(shí)例有效,則 對(duì)應(yīng)bit為1,否則為 0。實(shí)例位圖可視升- 個(gè)數(shù)組,數(shù)組第0個(gè) 字節(jié)的最局位對(duì)應(yīng)于 第0個(gè)實(shí)例,以此類 推typedef struct st_cis_
57、res_config 名字描述attributeCountcis_rid_t屬性總數(shù)actionCountcis_rid_t操作總數(shù)cis_rid_t attributeCount;cis_rid_t actionCount; cis_res_config_t;typedef structst_uri uint8_tflag;cis_oid_tobjectId;cis_iid_tinstanceId;cis_rid_tresourceId;cis_uri_t;名字描述flaguint8_tFlag 用TWE Instance Resource是否被設(shè)置,若設(shè)置 則表小功效。第0位代表 reso
58、urce,第 1 位表小 instance。objectIdcis_oid_tinstanceIdcis_iid_tresourceIdcis_rid_ttypedef struct st_cis_cfg_sys uint8_t debug_mode;uint8_t log_extend_mode;uint8_t log_output_mode;uint8_t log_output_level;uint16_t log_buffer_size; cis_cfgdata_t ex_data;cis_cfg_sys_t;名字描述debug_modeuint8_t調(diào)試信息開關(guān)log_extend_m
59、odeuint8_t擴(kuò)展信息開關(guān)output_modeuint8_t日志輸出模式output_leveluint8_t;日志調(diào)試級(jí)別log_buffer_sizeuint16_t日志緩沖區(qū)長度ex_datacis_cfgdata_t配置信息typedef struc st_cis_cfg_vdatauint16_t len;uint8_t* data;名字描述lenuint16_tr配置信息長度datauint8_t *配置信息內(nèi)容2.1.3應(yīng)用程序編寫使用SDK編寫設(shè)備側(cè)的應(yīng)用包括如下步驟 :1、準(zhǔn)備SDK需要的配置文件,生成相應(yīng)的二進(jìn)制數(shù)據(jù)。應(yīng)用廠家編寫 XML格式的配SDK需要的配置文件
60、的具體參數(shù)包括如下面所示的要求。置文件后使用cmiot_configtool工具來生成對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)文件。cmiot_configtool是用于生成基礎(chǔ)通信套件配置信息的工具,它將讀取XML文件的內(nèi)容,按固定格式保存為二進(jìn)制文件,最終將此二進(jìn)制文件讀取到內(nèi)存中提供給基礎(chǔ)通信套件使用。cmiot_configtool的使用方法示例如下:cmiot_configtool.exe sample.xml outputfile.bincmiot_configtool是用于生成基礎(chǔ)通信套件配置信息的工具,它將讀取XML文件的內(nèi)容,按固定格式保存為二進(jìn)制文件。cmiot_configtool的使用方法示例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年住宅購買約束合同
- 【正版授權(quán)】 ISO/IEC 19794-14:2022/Amd 1:2025 EN Information technology - Biometric data interchange formats - Part 14: DNA data - Amendment 1: Conformance requirements
- 2025年房地產(chǎn)住宅項(xiàng)目攝影服務(wù)合同
- 2025年度北京平面設(shè)計(jì)師勞動(dòng)合同
- 旅游業(yè)務(wù)居間服務(wù)合同范本
- 森林防火基礎(chǔ)常識(shí)考核試卷
- 提升企業(yè)績效企業(yè)教育培訓(xùn)方案考核試卷
- 樹脂合成中的安全控制考核試卷
- 動(dòng)感課堂2016年春九年級(jí)化學(xué)下冊(cè) 第八單元 金屬和金屬材料 課題2 金屬的化學(xué)性質(zhì)教學(xué)實(shí)錄 (新版)新人教版
- 新材料與數(shù)字經(jīng)濟(jì)在金融服務(wù)中的融合應(yīng)用考核試卷
- 復(fù)數(shù)算符在圖像處理中的應(yīng)用
- 四川省瀘州市2025屆高三歷史二診考試試題含解析
- 百融云創(chuàng)風(fēng)險(xiǎn)決策引擎V5產(chǎn)品操作手冊(cè)
- DL∕T 1281-2013 燃煤電廠固體廢物貯存處置場(chǎng)污染控制技術(shù)規(guī)范
- GB 15979-2024一次性使用衛(wèi)生用品衛(wèi)生要求
- 《中國心力衰竭診斷和治療指南2024》解讀(總)
- CJJT8-2011 城市測(cè)量規(guī)范
- 《當(dāng)代中國政治制度》期末考試必過(整理版)
- DZ∕T 0033-2020 固體礦產(chǎn)地質(zhì)勘查報(bào)告編寫規(guī)范(正式版)
- 學(xué)校增量績效考核方案
- ISO27001:2022信息安全管理手冊(cè)+全套程序文件+表單
評(píng)論
0/150
提交評(píng)論