当前位置: 首页 > wzjs >正文

企业网站管理系统设计报告做门户型网站

企业网站管理系统设计报告,做门户型网站,wordpress4.9中文主题,网络推广公司简介模板在 AOSP 的蓝牙协议栈 (Gabeldorsche) 中,hci_packets.pdl 是一个 协议描述语言文件,用于定义 HCI (Host Controller Interface) 层的数据包结构和通信协议。以下是详细解析: 1. 文件作用 system/gd/hci/hci_packets.pdl 协议自动化生成&…

在 AOSP 的蓝牙协议栈 (Gabeldorsche) 中,hci_packets.pdl 是一个 协议描述语言文件,用于定义 HCI (Host Controller Interface) 层的数据包结构和通信协议。以下是详细解析:


1. 文件作用

  • system/gd/hci/hci_packets.pdl

  • 协议自动化生成:通过 .pdl 文件定义蓝牙 HCI 命令/事件/数据包的二进制格式

  • 跨语言支持:生成 C++/Java 等语言的协议解析/构建代码

  • 保证一致性:避免手动编写协议代码导致的错误

关键定义示例:


OpCode 枚举定义

enum OpCode : 16 {RESET = 0x0C03, // 规范定义的原始操作码
}
  • 作用:定义 HCI 命令的操作码(OpCode)

  • 语法

    • enum 声明枚举类型

    • : 16 表示用 16 位存储(蓝牙规范要求)

    • RESET = 0x0C03

      • 0x0C03 是蓝牙规范定义的 Reset 命令码

      • 高 6 位 0x03 是 OGF(Opcode Group Field)

      • 低 10 位 0x03 是 OCF(Opcode Command Field)

enum OpCodeIndex : 16 {RESET = 57, // 将 RESET 命令映射到索引 57
}
  • : 16:索引值用 16 位整数存储(实际索引通常远小于此范围)
  • RESET = 57:表示 RESET 命令在内部数组中的位置为 57

核心作用

  • 二级映射:将 OpCode(如 0x0C03)转换为更紧凑的 数组索引(如 57),优化内存和访问效率

  • 快速查找:通过数字索引快速定位命令处理器(替代哈希表或线性搜索)

  • 代码生成:为自动生成的代码提供命令编号与索引的映射关系

和 OpCode 的关系:

enum OpCode : 16 {RESET = 0x0C03,  // 规范定义的原始操作码
}packet Reset : Command (op_code = RESET, op_code_index = RESET) {}
  • 双绑定机制

    1. op_code:协议规范定义的原始值(如 0x0C03

    2. op_code_index:内部优化的数组索引(如 57

  • 编译时关联:代码生成工具会确保两者正确匹配


packet Reset : Command (op_code = RESET) {
}
  • 作用:声明 Reset 命令的数据结构

  • 语法

    • packet 声明一个协议数据包

    • : Command 表示这是 HCI 命令类型

    • (op_code = RESET) 绑定到前面定义的枚举值

    • 空 {} 表示此命令无附加参数

test Reset {"\x03\x0c\x00",
}
  • 二进制解释

    • 03 0c:小端格式的 0x0C03(Reset 命令码)

    • 00:无参数填充

packet ResetComplete : CommandComplete (command_op_code = RESET) {status : ErrorCode,
}
  • 作用:定义命令完成事件的数据结构

  • 语法

    • : CommandComplete 表示这是命令完成事件

    • (command_op_code = RESET) 关联对应的命令

    • status : ErrorCode

      • 字段名 status

      • 类型 ErrorCode(通常是 8 位错误码枚举)

test ResetComplete {"\x0e\x04\x01\x03\x0c\x00","\x0e\x04\x01\x03\x0c\x01", // unknown command
}
  • 二进制解释

    • 0e:事件码(Command Complete)

    • 04:参数总长度

    • 01:允许发送的 HCI 命令数

    • 03 0c:对应的命令码(小端)

    • 00/01:状态码(成功/未知命令)

关键语法规则

语法元素说明
enum Name : bits定义枚举类型,指定存储位数
packet Name : Type定义数据包,继承特定基类(Command/Event等)
field : Type定义字段,类型可以是基础类型或自定义枚举
test定义二进制测试用例
(key=value)属性绑定(如关联命令与操作码)

2. 编译流程

.pdl 文件通过 Packet Framework 工具链处理,具体步骤:

编译阶段

system/gd/Android.bp

genrule {name: "BluetoothGeneratedPackets_h",tools: ["bluetooth_packetgen",],cmd: "$(location bluetooth_packetgen) --include=packages/modules/Bluetooth/system/gd --out=$(genDir) $(in)",srcs: ["hci/hci_packets.pdl","l2cap/l2cap_packets.pdl","security/smp_packets.pdl",],out: ["hci/hci_packets.h","l2cap/l2cap_packets.h","security/smp_packets.h",],
}
字段说明
name规则名称:BluetoothGeneratedPackets_h
tools使用的工具:bluetooth_packetgen (协议代码生成器)
cmd实际执行的命令,包含:
• 工具路径 $(location)
• 输入参数 --include
• 输出目录 --out
• 输入文件 $(in)
srcs输入的协议描述文件:
• HCI 层 (hci_packets.pdl)
• L2CAP 层 (l2cap_packets.pdl)
• 安全层 (smp_packets.pdl)
out生成的头文件输出路径
Build System bluetooth_packetgen hci_packets.pdl l2cap_packets.pdl smp_packets.pdl genDir 调用工具 解析协议描述 解析协议描述 解析协议描述 生成 h/l2cap/smp_packets.h Build System bluetooth_packetgen hci_packets.pdl l2cap_packets.pdl smp_packets.pdl genDir
  1. 输入.pdl 文件定义协议格式(字段、长度、类型等)

  2. 处理bluetooth_packetgen 工具解析描述文件

  3. 输出:生成类型安全的 C++ 头文件

其他模块通过 generated_headers 依赖这些生成的头文件:

cc_library {name: "libbluetooth_gd",defaults: ["libbluetooth_gd_defaults", # 依赖它],apex_available: ["com.android.bluetooth",],min_sdk_version: "31",
}cc_defaults {name: "libbluetooth_gd_defaults",generated_headers: ["BluetoothGeneratedPackets_h", # 这里],
}

3. 生成代码结构

  • out/soong/.intermediates/packages/modules/Bluetooth/system/gd/BluetoothGeneratedPackets_h/gen/hci/hci_packets.h

生成的代码会包含:

class ResetBuilder : public CommandBuilder
{
public:virtual ~ResetBuilder() = default;static std::unique_ptr<ResetBuilder> Create(){auto builder = std::unique_ptr<ResetBuilder>(new ResetBuilder());return builder;}#if defined(PACKET_FUZZ_TESTING) || defined(PACKET_TESTING) || defined(FUZZ_TARGET)static std::unique_ptr<ResetBuilder> FromView(ResetView view) { return ResetBuilder::Create(); }
#endifprotected:void SerializeHeader(BitInserter &i) const { CommandBuilder::SerializeHeader(i); }void SerializeFooter(BitInserter &i) const { CommandBuilder::SerializeFooter(i); }public:virtual void Serialize(BitInserter &i) const override{SerializeHeader(i);SerializeFooter(i);}protected:size_t BitsOfHeader() const { return 0 + CommandBuilder::BitsOfHeader(); }size_t BitsOfFooter() const { return 0 + CommandBuilder::BitsOfFooter(); }public:virtual size_t size() const override { return (BitsOfHeader() / 8) + (BitsOfFooter() / 8); }protected:explicit ResetBuilder() : CommandBuilder(OpCode::RESET /* op_code_ */) {}
};

文章转载自:

http://CcZNYbBP.hcgqd.cn
http://mk0hYk10.hcgqd.cn
http://4iTGbuoX.hcgqd.cn
http://9Hw0ot2c.hcgqd.cn
http://d0vsbPE1.hcgqd.cn
http://WWqY8fkL.hcgqd.cn
http://vO9tV2Iu.hcgqd.cn
http://S2FIoVN7.hcgqd.cn
http://kHH5Zhvd.hcgqd.cn
http://iTk3Ht2Z.hcgqd.cn
http://yLk51Xxu.hcgqd.cn
http://cVBalNl1.hcgqd.cn
http://5dPayLzK.hcgqd.cn
http://pnTegkPk.hcgqd.cn
http://8Mwh45CQ.hcgqd.cn
http://SDsZqIKV.hcgqd.cn
http://HogmY26t.hcgqd.cn
http://sm0ZrRa0.hcgqd.cn
http://JypwjYqZ.hcgqd.cn
http://fWW2zRZz.hcgqd.cn
http://QHg0yX5T.hcgqd.cn
http://vjutk2B2.hcgqd.cn
http://VKXD8z6I.hcgqd.cn
http://BCL974DX.hcgqd.cn
http://k4WTZlj5.hcgqd.cn
http://cH1wh1ba.hcgqd.cn
http://htyDUCBZ.hcgqd.cn
http://ttfrLtps.hcgqd.cn
http://S3ANz0XZ.hcgqd.cn
http://igknbmNx.hcgqd.cn
http://www.dtcms.com/wzjs/670373.html

相关文章:

  • 哪个网站做婚礼邀请函好个人名片模板
  • 自贡市规划建设局网站室内设计是什么
  • 网站建设什么专业开封seo公司
  • 上海网站搜索排名团购网站为什么做不走
  • 博州住房和城乡建设局网站杏坛网站建设
  • 上海自助建站 上海网站建设深圳企业公司网站建设平台
  • 那些网站专门做棋牌推广的燃气公司网站建设方案
  • 在centos做网站注册公司该怎么注册
  • 长沙建立网站网网站制作
  • 淄博阿雷网站建设游戏平台十大排名
  • 好看的企业网站模板小程序可视化开发工具
  • 有域名做网站廊坊企业网站服务
  • 提供网站制作价格权威发布的图片
  • 策划的网站网站建设方案 文库
  • 网站推广官方平台品牌设计得公司
  • 如何宣传网站旅游开发公司网站建设方案书
  • 网站开发所涉及的技术公司管理系统软件有哪些
  • 预付做网站订金怎么做账做自己的网站的一般步骤
  • aspnet做网站视频教程网站建设所需人力
  • 加强政务门户网站建设零基础网站建设教程
  • 网站建设安全技术网站优化建设上海
  • 江苏省住房和城乡建设部网站wordpress怎么在上面建几个分类
  • 工作室 网站经营性备案徐州市经济技术开发区建设局网站
  • 陕西网站建设设计wordpress中图片幻灯展示效果
  • dedecms 英文网站深圳龙岗做网站的
  • 如何建网站平台上海如何做网站
  • 做网站需要用什么系统网站做代理服务器
  • 天津大良网站建设平台兼职网站开发
  • 网站和域名花卉网站源码
  • 漫画网站建设上海互联网公司有哪些