Vision RDM、Vision DMX 与 Vision DFU

重要:Vision 不使用另一套 RDM protocol。灯具应答的 RDM commands 应与有线 RDM 相同。当 Vision Control Behavior 为 0(DMX Control)时,Vision 也使用普通 DMX behavior。只有 Vision Control Behavior 255,也就是 App Control,会对当前 Vision DMX frame 使用固定的 app-specific defaults。

处理 RDM

如果使用 prepared Vision SPI library 和 example project,大部分底层 register handling 已经实现。灯具 firmware 仍然必须应答所需的 RDM commands,并应用被请求的 fixture behavior。

RDM 的接收和发送通过 READ_RDMWRITE_RDM 完成。即使 Vision 不是当前选择的 input source,灯具也必须始终响应 RDM commands。

使用 RX_RDM_IRQ flag 检测新的 RDM frames。

RDM handling

处理 DMX

如果使用提供的 SPI Library 和 example,这里的大部分底层 handling 已经由 library 处理。

DMX 的接收和发送通过 READ_DMXWRITE_DMX 完成。只要选择 Vision 作为 input source,就必须读取 DMX frames 并对其作出响应。

使用 RX_DMX_IRQ flag 检测新的 DMX frames。Maximum refresh rate 为 20 ms。

READ_DMX

该 function 必须用于读取 Vision 作为 selected input source 时的输入值。Data stream 定义如下:

data[0]data[1]data[2]data[3]...data[512]
Vision Control Behaviordmx[1]dmx[2]dmx[3]...dmx[512]

第一个 value 称为 Vision Control Behavior。它告诉灯具当前 Vision DMX frame 应按 DMX Control 处理,还是按 App Control 处理。注意:不要因此修改灯具内部保存的 settings,例如 display、RDM 或其他 protocols 使用的 DMX personality。

Vision Control Behavior == 0: DMX Control

当该 value 为 0 时,灯具的行为与普通 DMX stream 控制一致。使用灯具当前已选择的 DMX settings,例如 DMX start address、DMX personality 以及其他用户选择的 fixture settings。

Vision Control Behavior == 255: App Control

使用 DMX 章节中定义的 App Control behavior。此时使用固定 default settings,包括 DMX start address 1 和必需的 App Control DMX personality。例如使用固定的 color-mixing behavior(如 RGB),而不是根据用户 settings 在 RGB、RGBW、RGBL 或类似 modes 之间切换。同一类型的灯具在 App Control 中必须表现一致。不要改变 display 或其他 protocols 中保存的 settings。RDM 仍然必须报告灯具保存的 user settings。这些 defaults 只应用于当前 Vision DMX frame。

该 function 的目的,是让 app 可以在定义明确的状态下控制灯具,而不修改灯具本身保存的 settings。

Vision Control Behavior > 0 && Vision Control Behavior < 255: Legacy DMX Control for Vision DMX Adapter only

Values 1-254 是仅用于 Vision DMX Adapter 的 legacy behavior。它们仍然属于 DMX Control,但只对当前 Vision DMX frame 临时使用相同编号的 DMX Personality。不要修改灯具保存的 DMX personality。普通 app integration 应重点关注 0 = DMX Control 和 255 = App Control。

Vision Control BehaviorControl behavior
0DMX Control,使用灯具保存的 DMX settings
1Legacy / Vision DMX Adapter only:仅当前 frame 使用 DMX Personality 1 的 DMX Control
2Legacy / Vision DMX Adapter only:仅当前 frame 使用 DMX Personality 2 的 DMX Control
......
255App Control,使用固定 App Control settings
DMX handling

WRITE_DMX

即使 Vision 不是当前选择的 interface,也应使用该 function。将灯具的 DMX input 写入该 register。这可用于诊断 DMX input,或通过 Vision 传输 DMX frame。请根据 use case 和 controller load 选择合理 refresh rate,最大 refresh rate 为 20 ms。

处理 DFU

如果使用提供的 SPI Library 和 example,这里的大部分底层 handling 已经由 library 处理。

Device firmware update 仅通过 SPI transmission 定义。因此传输的数据本身没有进一步 specification,它是 raw byte stream。建议在文件或传输内容中实现 error checks。

Software update handling 通过 READ_DFUWRITE_DFU functions 完成。必须使用以下 interrupt lines 推导状态:

  • DFU_START_IRQ
  • DFU_PACKET_IRQ
  • DFU_STOP_IRQ

当触发 software update 时,DFU_START_IRQ 会变为 high。灯具必须准备接收 firmware,并返回以下 response 之一:

  • 0x0: DFU_ACCEPT
  • 0x1 - 0xFF: DFU_ABORT

灯具通过 WRITE_DFU function 发送 response。Response timeout 为 20 seconds。写入 response 后会 clear DFU_START_IRQ flag。接受 DFU 后,Vision Controller 开始发送 firmware packets。每个 packet 都有唯一 id,并向上计数。长度可变,最大 200 Byte,default length 为 128 Byte。packetNr 使用 Big Endian,不是 Little Endian。

data[0]data[1]data[2]data[3]...data[202]
packetNrpacketNrdata[0]dmx[1]...dmx[200]

读取 packet 后,下一个 packet 会自动传输,不需要额外 response。如果发生 error,可以通过写入大于 0 的 response(0x1 - 0xFF)提前 abort DFU。如果 30 seconds 内没有读取 packet,DFU 会 abort。收到最后一个 packet 后,DFU_STOP_IRQ flag 会变为 high,用于表示所有 packets 已传输完成,DFU transmission 已结束。此时灯具必须发送最后一个 response,response 应为以下之一:

  • 0x0: DFU_SUCCESS
  • 0x1: DFU_ERROR_FLASH_ERASE
  • 0x2: DFU_ERROR_NOT_IN_PROGRESS
  • 0x3: DFU_ERROR_CORRUPTED_HEADER
  • 0x4: DFU_ERROR_CORRUPTED_IMAGE
  • 0x5: DFU_ERROR_INVALID_IMAGE_VERSION
  • 0x6: DFU_ERROR_NO_PREAMBLE
  • 0x7: DFU_ERROR_INVALID_FIXTURE_ID
  • 0x8: DFU_ERROR_UNKNOWN
  • 0x9: DFU_ERROR_SIGNATURE_NECESSARY_NOT_FOUND
  • 0x0A: DFU_ERROR_PACKET_TIMEOUT
  • 0x0B - 0xFF: Reserved
DFU handling
© KKT Künzler Technologies GbR.
Developed by KKT - Künzler Technologies GbR