《鴻蒙智能互聯(lián)設(shè)備開(kāi)發(fā)(微課版)》 課件 6.4.2 HCS配置語(yǔ)法_第1頁(yè)
《鴻蒙智能互聯(lián)設(shè)備開(kāi)發(fā)(微課版)》 課件 6.4.2 HCS配置語(yǔ)法_第2頁(yè)
《鴻蒙智能互聯(lián)設(shè)備開(kāi)發(fā)(微課版)》 課件 6.4.2 HCS配置語(yǔ)法_第3頁(yè)
《鴻蒙智能互聯(lián)設(shè)備開(kāi)發(fā)(微課版)》 課件 6.4.2 HCS配置語(yǔ)法_第4頁(yè)
《鴻蒙智能互聯(lián)設(shè)備開(kāi)發(fā)(微課版)》 課件 6.4.2 HCS配置語(yǔ)法_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

6.4.2HCS配置語(yǔ)法通過(guò)本節(jié)學(xué)習(xí),您可以:了解HCS配置語(yǔ)法HCS配置語(yǔ)法1.關(guān)鍵字HCS配置語(yǔ)法的部分關(guān)鍵字,如表所示。關(guān)鍵字用途說(shuō)明root配置根節(jié)點(diǎn)-include引用其他HCS配置文件-delete刪除節(jié)點(diǎn)或?qū)傩灾荒苡糜诓僮鱥nclude導(dǎo)入的配置樹(shù)template定義模板節(jié)點(diǎn)-match_attr用于標(biāo)記節(jié)點(diǎn)的匹配查找屬性解析配置時(shí)可以使用該屬性的值查找到對(duì)應(yīng)節(jié)點(diǎn)HCS配置語(yǔ)法2.基本組成結(jié)構(gòu)HCS配置文件主要由屬性(Attribute)和節(jié)點(diǎn)(Node)兩部分組成。(1)屬性屬性是最小的配置單元,是一個(gè)獨(dú)立的配置項(xiàng)。語(yǔ)法如下:attribute_name=value;attribute_name是字母、數(shù)字、下劃線(xiàn)的組合且必須以字母或下劃線(xiàn)開(kāi)頭,字母區(qū)分大小寫(xiě)。value的可用格式如下:數(shù)字常量,支持二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù)。字符串,內(nèi)容使用雙引號(hào)(“”)引用。節(jié)點(diǎn)引用。attribute必須以分號(hào)(;)結(jié)束且必須屬于一個(gè)node。HCS配置語(yǔ)法(2)節(jié)點(diǎn)節(jié)點(diǎn)是一組屬性的集合,語(yǔ)法如下:

node_name{

module="test";

...}node_name是字母、數(shù)字、下劃線(xiàn)的組合且必須以字母或下劃線(xiàn)開(kāi)頭,字母區(qū)分大小寫(xiě)。大括號(hào)后無(wú)需添加結(jié)束符分號(hào)“;”。root為保留關(guān)鍵字,用于聲明配置表的根節(jié)點(diǎn)。每個(gè)配置表必須以root節(jié)點(diǎn)開(kāi)始。root節(jié)點(diǎn)中必須包含module屬性,其值應(yīng)該為一個(gè)字符串,用于表征該配置所屬模塊。節(jié)點(diǎn)中可以增加match_attr屬性,其值為一個(gè)全局唯一的字符串。當(dāng)驅(qū)動(dòng)程序在解析配置時(shí)可以以該屬性的值為參數(shù)調(diào)用查找接口查找到包含該屬性的節(jié)點(diǎn)。HCS配置語(yǔ)法3.數(shù)據(jù)類(lèi)型在屬性定義中使用自動(dòng)數(shù)據(jù)類(lèi)型,不顯式指定類(lèi)型,屬性支持的數(shù)據(jù)類(lèi)型有整型、字符串、數(shù)組、布爾類(lèi)型。整型:整型長(zhǎng)度自動(dòng)推斷,根據(jù)實(shí)際數(shù)據(jù)長(zhǎng)度給與最小空間占用的類(lèi)型。二進(jìn)制,0b前綴,示例:0b1010。八進(jìn)制,0前綴,示例:0664。十進(jìn)制,無(wú)前綴,且支持有符號(hào)與無(wú)符號(hào),示例:1024,+1024均合法。驅(qū)動(dòng)程序在讀取負(fù)值時(shí)注意使用有符號(hào)數(shù)讀取接口。十六進(jìn)制,0x前綴,示例:0xff00、0xFF。HCS配置語(yǔ)法字符串:字符串使用雙引號(hào)(“”)表示。布爾類(lèi)型:布爾類(lèi)型中true表示真,false表示假。數(shù)組:數(shù)組元素支持整型、字符串,不支持混合類(lèi)型。整型數(shù)組中uint32_t、uint64_t混用會(huì)向上轉(zhuǎn)型為uint64_t數(shù)組。整型數(shù)組與字符串?dāng)?shù)組示例如下:

attr_foo=[0x01,0x02,0x03,0x04];

attr_bar=["hello","world"];4.預(yù)處理include用于導(dǎo)入其他HCS文件。語(yǔ)法示例如下:其中,文件名必須使用雙引號(hào)(“”),不在同一目錄下需要使用相對(duì)路徑引用。被include文件也必須是合法的HCS文件。若是多個(gè)include,如果存在相同的節(jié)點(diǎn),后者覆蓋前者,其余的節(jié)點(diǎn)依次展開(kāi)。#include"foo.hcs"

#include"../bar.hcs"HCS配置語(yǔ)法5.注釋注釋支持兩種風(fēng)格:?jiǎn)涡凶⑨尯投嘈凶⑨尅?/p>

//comment單行注釋

/*

comment多行注釋

*/6.引用修改引用修改可以實(shí)現(xiàn)修改另外任意一個(gè)節(jié)點(diǎn)的內(nèi)容,語(yǔ)法為:node:&source_nodeHCS配置語(yǔ)法上述語(yǔ)句表示node中的內(nèi)容是對(duì)source_node節(jié)點(diǎn)內(nèi)容的修改。示例如下:

root{

module="test";

foo{

foo_:&root.bar{

attr="foo";

}

foo1:&foo2{

attr=0x2;

}

foo2{

attr=0x1;

}

}

bar{

attr="bar";

}}

root{

module="test";

foo{

foo2{

attr=0x2;

}

}

bar{

attr="foo";

}}最終生成配置樹(shù)為:可以看到foo.foo_節(jié)點(diǎn)通過(guò)引用將bar.attr屬性的值修改為了"foo",foo.foo1節(jié)點(diǎn)通過(guò)引用將foo.foo2.attr屬性的值修改為了0x2。foo.foo_以及foo.foo1節(jié)點(diǎn)表示對(duì)目標(biāo)節(jié)點(diǎn)內(nèi)容的修改,其自身并不會(huì)存在最終生成的配置樹(shù)中。HCS配置語(yǔ)法7.節(jié)點(diǎn)復(fù)制節(jié)點(diǎn)復(fù)制可以實(shí)現(xiàn)在節(jié)點(diǎn)定義時(shí)從另一個(gè)節(jié)點(diǎn)先復(fù)制內(nèi)容,用于定義內(nèi)容相似的節(jié)點(diǎn)。語(yǔ)法為:在上述示例中,編譯后bar節(jié)點(diǎn)即包含attr_0屬性也包含attr_1屬性,在bar中對(duì)attr_0的修改不會(huì)影響到foo。在foo和bar在同級(jí)node中可不指定foo的路徑,否則需要使用絕對(duì)路徑引用。上述代碼的最終生成配置樹(shù)為:上述語(yǔ)句表示在定義"node"節(jié)點(diǎn)時(shí)將另一個(gè)節(jié)點(diǎn)"source_node"的屬性復(fù)制過(guò)來(lái)。示例如下:node:source_node

root{

module="test";

foo{

attr_0=0x0;

}

bar:foo{

attr_1=0x1;

}}

root{

module="test";

foo{

attr_0=0x0;

}

bar{

attr_1=0x1;

attr_0=0x0;

}}HCS配置語(yǔ)法8.刪除要對(duì)include導(dǎo)入的base配置樹(shù)中不需要的節(jié)點(diǎn)或?qū)傩赃M(jìn)行刪除,可以使用delete關(guān)鍵字。下面的示例中test1.hcs通過(guò)include導(dǎo)入了test2.hcs中的配置內(nèi)容,并使用delete刪除了test2.hcs中的attribute2屬性和foo_2節(jié)點(diǎn),示例如下:上述代碼在生成過(guò)程中將會(huì)刪除root.foo_2節(jié)點(diǎn)與attr_2,最終生成配置樹(shù)為:

//test2.hcs

root{

attr_1=0x1;

attr_2=0x2;

foo_2{

t=0x1;

}

}

//test1.hcs

#include"test2.hcs"

root{

attr_2=delete;

foo_2:delete{

}}

root{

attr_1=0x1;}HCS配置語(yǔ)法9.屬性引用為了在解析配置時(shí)快速定位到關(guān)聯(lián)的節(jié)點(diǎn),可以把節(jié)點(diǎn)作為屬性的右值,通過(guò)讀取屬性查找到對(duì)應(yīng)節(jié)點(diǎn)。語(yǔ)法為:示例2如下:上述語(yǔ)句表示attribute的值是一個(gè)節(jié)點(diǎn)node的引用,在解析時(shí)可以用這個(gè)attribute快速定位到node,便于關(guān)聯(lián)和查詢(xún)其他node。attribute=&node;

node1{

attributes;

}

node2{

attr_1=&root.node1;}

node2{

node1{

attributes;

}

attr_1=&node1;}示例1如下:HCS配置語(yǔ)法10.模板模板的用途在于生成嚴(yán)格一致的node結(jié)構(gòu),以便對(duì)同類(lèi)型node進(jìn)行遍歷和管理。使用template關(guān)鍵字定義模板node,子node通過(guò)雙冒號(hào)“::”聲明繼承關(guān)系。子節(jié)點(diǎn)可以改寫(xiě)或新增但不能刪除template中的屬性,子節(jié)點(diǎn)中沒(méi)有定義的屬性將使用template中的定義作為默認(rèn)值。

root{

module="test";

templatefoo{

attr_1=0x1;

attr_2=0x2;

}

bar::foo{

}

bar_1::foo{

attr_1=0x2;

}}

root{

module="test";

bar{

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論