《鸿蒙智能互联设备开发(微课版)》 课件 6.4.2 HCS配置语法_第1页
《鸿蒙智能互联设备开发(微课版)》 课件 6.4.2 HCS配置语法_第2页
《鸿蒙智能互联设备开发(微课版)》 课件 6.4.2 HCS配置语法_第3页
《鸿蒙智能互联设备开发(微课版)》 课件 6.4.2 HCS配置语法_第4页
《鸿蒙智能互联设备开发(微课版)》 课件 6.4.2 HCS配置语法_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.4.2HCS配置语法通过本节学习,您可以:了解HCS配置语法HCS配置语法1.关键字HCS配置语法的部分关键字,如表所示。关键字用途说明root配置根节点-include引用其他HCS配置文件-delete删除节点或属性只能用于操作include导入的配置树template定义模板节点-match_attr用于标记节点的匹配查找属性解析配置时可以使用该属性的值查找到对应节点HCS配置语法2.基本组成结构HCS配置文件主要由属性(Attribute)和节点(Node)两部分组成。(1)属性属性是最小的配置单元,是一个独立的配置项。语法如下:attribute_name=value;attribute_name是字母、数字、下划线的组合且必须以字母或下划线开头,字母区分大小写。value的可用格式如下:数字常量,支持二进制、八进制、十进制、十六进制数。字符串,内容使用双引号(“”)引用。节点引用。attribute必须以分号(;)结束且必须属于一个node。HCS配置语法(2)节点节点是一组属性的集合,语法如下:

node_name{

module="test";

...}node_name是字母、数字、下划线的组合且必须以字母或下划线开头,字母区分大小写。大括号后无需添加结束符分号“;”。root为保留关键字,用于声明配置表的根节点。每个配置表必须以root节点开始。root节点中必须包含module属性,其值应该为一个字符串,用于表征该配置所属模块。节点中可以增加match_attr属性,其值为一个全局唯一的字符串。当驱动程序在解析配置时可以以该属性的值为参数调用查找接口查找到包含该属性的节点。HCS配置语法3.数据类型在属性定义中使用自动数据类型,不显式指定类型,属性支持的数据类型有整型、字符串、数组、布尔类型。整型:整型长度自动推断,根据实际数据长度给与最小空间占用的类型。二进制,0b前缀,示例:0b1010。八进制,0前缀,示例:0664。十进制,无前缀,且支持有符号与无符号,示例:1024,+1024均合法。驱动程序在读取负值时注意使用有符号数读取接口。十六进制,0x前缀,示例:0xff00、0xFF。HCS配置语法字符串:字符串使用双引号(“”)表示。布尔类型:布尔类型中true表示真,false表示假。数组:数组元素支持整型、字符串,不支持混合类型。整型数组中uint32_t、uint64_t混用会向上转型为uint64_t数组。整型数组与字符串数组示例如下:

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

attr_bar=["hello","world"];4.预处理include用于导入其他HCS文件。语法示例如下:其中,文件名必须使用双引号(“”),不在同一目录下需要使用相对路径引用。被include文件也必须是合法的HCS文件。若是多个include,如果存在相同的节点,后者覆盖前者,其余的节点依次展开。#include"foo.hcs"

#include"../bar.hcs"HCS配置语法5.注释注释支持两种风格:单行注释和多行注释。

//comment单行注释

/*

comment多行注释

*/6.引用修改引用修改可以实现修改另外任意一个节点的内容,语法为:node:&source_nodeHCS配置语法上述语句表示node中的内容是对source_node节点内容的修改。示例如下:

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";

}}最终生成配置树为:可以看到foo.foo_节点通过引用将bar.attr属性的值修改为了"foo",foo.foo1节点通过引用将foo.foo2.attr属性的值修改为了0x2。foo.foo_以及foo.foo1节点表示对目标节点内容的修改,其自身并不会存在最终生成的配置树中。HCS配置语法7.节点复制节点复制可以实现在节点定义时从另一个节点先复制内容,用于定义内容相似的节点。语法为:在上述示例中,编译后bar节点即包含attr_0属性也包含attr_1属性,在bar中对attr_0的修改不会影响到foo。在foo和bar在同级node中可不指定foo的路径,否则需要使用绝对路径引用。上述代码的最终生成配置树为:上述语句表示在定义"node"节点时将另一个节点"source_node"的属性复制过来。示例如下: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配置语法8.删除要对include导入的base配置树中不需要的节点或属性进行删除,可以使用delete关键字。下面的示例中test1.hcs通过include导入了test2.hcs中的配置内容,并使用delete删除了test2.hcs中的attribute2属性和foo_2节点,示例如下:上述代码在生成过程中将会删除root.foo_2节点与attr_2,最终生成配置树为:

//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配置语法9.属性引用为了在解析配置时快速定位到关联的节点,可以把节点作为属性的右值,通过读取属性查找到对应节点。语法为:示例2如下:上述语句表示attribute的值是一个节点node的引用,在解析时可以用这个attribute快速定位到node,便于关联和查询其他node。attribute=&node;

node1{

attributes;

}

node2{

attr_1=&root.node1;}

node2{

node1{

attributes;

}

attr_1=&node1;}示例1如下:HCS配置语法10.模板模板的用途在于生成严格一致的node结构,以便对同类型node进行遍历和管理。使用template关键字定义模板node,子node通过双冒号“::”声明继承关系。子节点可以改写或新增但不能删除template中的属性,子节点中没有定义的属性将使用template中的定义作为默认值。

root{

module="test";

templatefoo{

attr_1=0x1;

attr_2=0x2;

}

bar::foo{

}

bar_1::foo{

attr_1=0x2;

}}

root{

module="test";

bar{

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论