1. 訪問是按照分層的,Object_ID/實例ID/資源ID,對應每一層ID的數據類型,目前是分為3層,一個實例下面可以有多個實例id,對下面的數據結構來說,如果是資源ID的話,類型只能是asBuffer,asBoolean,asInteger,asFloat,如果是實例ID的話,則是asChildren的類型,這個asChildren是個數據,包含實例ID下面所有的資源ID。
struct st_cis_data { uint16_t id; cis_datatype_t type; struct { uint32_t length; uint8_t* buffer; }asBuffer; union { bool asBoolean; int64_t asInteger; double asFloat; struct { uint32_t count; struct st_cis_data* array; }asChildren; struct { cis_oid_t objectId; cis_iid_t instId; }asObjLink; } value; } ;
2. 結構體,其中flag代表,后面的3個數據那個是有的,比如flag = 0x110,就是有object ID和實例ID,在大部分情況下,假如某個為0的話(假如實例ID為0),就是指該object ID下面所有的實例ID。
struct st_uri { uint8_t flag; // indicates which segments are set cis_oid_t objectId; cis_iid_t instanceId; cis_rid_t resourceId; };
3. 按照上面的,我的代碼並沒有實現嗎,該指令是一個讀取請求消息,如果資源ID,resourceid =‘-1’,則該指令會攜帶count,代表需要讀取該instance下的所有資源,假設是工作服務器的讀操作,那么AT+MIPLREADRSP指令里面的值要怎么填寫,對AT來說就是字符串,那么指令需要去解析,但是目前根據文檔,就是說如果服務下發的是讀取實例下面的所有資源,那么這個指令將無法去上傳,只能一次一個資源。算了,先按照3級全部在的情況搞吧。
< valuetype >:發送的數據類型 發送的數據類型要求如下: string =1,//字符串型 opaque=2,//不透明類型 integer=3,//整型 float=4,//浮點型 bool=5,//布爾型 <len>:讀取的數據長度 <value>:發送的數據值
4. 在此厘清楚object ID,實例ID,資源ID這三個的關系,object ID是分類,比如溫度傳感器,電池電量,就是兩個不同的object ID,然后有2個溫度傳感器,那么溫度傳感器A和溫度傳感器B就是2個實例,資源就是傳感器的數據和狀態等。object ID,實例ID這兩者有點像JAVA語言里面的類和對象。如下是國際組織定義好的object ID。
5. 如下是國際組織定義好的資源 ID。實例ID這個就是第幾個設備的編號,按數量就行,不需要定義的。