要求
开始开发之前,必须理解项目要求。这些规格说明了软件或系统需要满足哪些条件才能正确运行。请查看下面关于 serial number、RDM (Remote Device Management)、DMX (Digital Multiplex) 和 DFU (Device Firmware Update) 的要求。
Serial number (S/N)
灯具必须具有唯一的 serial number,并且该 serial number 应在灯具上可见。App 使用该 serial number 来识别灯具。serial number 可以是任何小于 72057594040000000 的数字。理想情况下,serial number 由两部分组成。固定的前半部分用于表示灯具类型和硬件版本,递增的后半部分则让用户可以将其理解为数字编号。
Example serial number:
1000100100
Front Part: 用于推导灯具类型和硬件版本。
Back Part: 递增编号,因此用户可以识别这是第 100 台灯具。
Firmware Versioning
我们要求使用 semantic versioning 方案。
[Major,Minor,Patch,Release] (Semantic Versioning)。每个部分为 8 bit。我们额外加入 Release 部分,用于表示该固件是否为发布版本。Release 必须为 255,固件才可以通过服务器公开使用。否则服务器会拒绝该软件,因为它只被视为 developer version。
Major: 不兼容变更。该变更会改变灯具行为。
Minor: 固件中新增功能。
Patch: 固件中的 bug fix。
Release: 0-254: 用于测试的内部固件;255: 可公开发布的固件。
RDM (Remote Device Management)
完整实现需要一个可正常工作的 RDM 接口。以下链接说明了 RDM 的工作方式,请先阅读:
- RDM Manufacturer ID
由 ESTA 分配给每个制造商的 16-bit (2-byte) 值。
它确保每个制造商都可以创建全球唯一的标识符。
可以把它理解为 Ethernet MAC 地址中的 "Organizationally Unique Identifier" (OUI)。示例:
VCS Vision Control Solutions GmbH : 0x0969 - RDM UID 每个支持 RDM 的设备都有一个 48-bit (6-byte) 唯一标识符。
格式:[16-bit ManufacturerID] + [32-bit DeviceID]
DeviceID 由制造商分配,每个设备必须唯一。它可以是顺序编号、随机数,也可以基于 serial number。示例:
Manufacturer ID = 0x6574 (ETC)
DeviceID = 0x12345678
RDM UID = 0x6574:12345678。因此该 UID 在全球范围内唯一标识一个物理 RDM 设备。 - RDM DeviceModelID 是 16-bit 值,用于在制造商范围内标识设备型号。
该值由制造商分配,不由 ESTA 分配。
同一制造商可以有多个型号,每个型号都有自己的 DeviceModelID。示例:
Vision External Module: DeviceModelID = 0x0001
Vision Core Module: DeviceModelID = 0x0002。二者仍属于 ManufacturerID 0x0969,但通过 DeviceModelID 区分。
- 应支持 DeviceInfo 等标准 RDM Commands。Software 文档中提供了详细列表。
- Custom RDM Commands。我们需要您支持一些简单的 custom PIDs,用于 get/set 所有必需信息。
DMX (Digital Multiplex)
为了正确控制您的灯具,我们有一些具体要求。通过我们协议传输时,刷新周期固定为 20ms。可实现的组件也有一些要求:
- LED Color Control
- 最多支持 6 种颜色
- 最多支持 100 个像素独立控制
- 8 bit 或 16 bit linear
- 响应速度应为即时响应 (Snap)。如需 dimming 平滑处理,请使用我们的代码模板。
- LED White Control
- 最多支持 100 个像素独立控制
- 8 bit 或 16 bit linear
- 响应速度应为即时响应 (Snap)。如需 dimming 平滑处理,请使用我们的代码模板。
DFU (Device Firmware Update)
为了进行软件更新,您的控制器上必须有 bootloader。示例中提供了一个简单 bootloader。我们支持 dual bank 和 single bank bootloader。