跳到主要内容

DisplayPort MSP 扩展

Betaflight 支持有时被称为“画布模式”的模式,其中 OSD 可以发送任意字符串以在给定的屏幕坐标处显示。

DisplayPort MSP 命令

MSP_SET_OSD_CANVAS

MSP_SET_OSD_CANVAS 命令由 VTX(或显示设备)发送到 FC,以指示在 HD 模式下可用于 DisplayPort 渲染的画布大小。 HD 模式,如 vcd_video_system = HD 所示,在接收到该命令时自动设置。

命令消息 ID方向笔记
MSP_SET_OSD_CANVASMSP_SET_OSD_CANVAS188188前往FC
数据类型笔记
画布_列uint8列数
画布行uint8行数

MSP_OSD_CANVAS

MSP_OSD_CANVAS 命令由地面站发送到 FC,以确定在 HD 模式下可用于 DisplayPort 渲染的画布大小。然后在编辑 OSD 元素位置时,在 OSD 选项卡上使用它来显示正确的行/列数。

命令消息 ID方向笔记
MSP_OSD_CANVASMSP_OSD_CANVAS189189前往FC

响应是两个字节。

数据类型笔记
画布_列uint8列数
画布行uint8行数

MSP_DISPLAYPORT

MSP_DISPLAYPORT 命令由 FC 发送到显示设备/VTX 以执行 DisplayPort 操作。

命令消息 ID方向笔记
MSP_DISPLAYPORT182182来自FCDisplayPort 特定命令如下

随后将出现以下子命令之一。

DisplayPort 子命令

MSP_DP_HEARTBEAT

命令消息 ID笔记
MSP_DP_HEARTBEATMSP_DP_HEARTBEAT 0防止 OSD 从板显示“断开连接”状态

MSP_DP_RELEASE

命令消息 ID笔记
MSP_DP_RELEASEMSP_DP_RELEASE1

MSP_DP_CLEAR_SCREEN

命令消息 ID笔记
MSP_DP_CLEAR_SCREENMSP_DP_CLEAR_SCREEN2

MSP_DP_WRITE_STRING

命令消息 ID笔记
MSP_DP_WRITE_STRINGMSP_DP_WRITE_STRING3
数据类型笔记
uint8放置字符串第一个字符的行
专栏uint8放置字符串第一个字符的列
属性uint8指示要使用的字体以及文本是否应该闪烁的字节
字符串uint8 x n长度最多为 30 个字符的 NULL 终止字符串

attribute参数因此被编码。

领域比特评论
版本7必须为 0
DISPLAYPORT_MSP_ATTR_BLINK6设置让显示设备自动闪烁字符串
字体编号0 - 10 - 1选择四种字体之一,每种字体 256 个 8 位字符

MSP_DP_DRAW_SCREEN

命令消息 ID笔记
MSP_DP_DRAW_SCREENMSP_DP_DRAW_SCREEN4

MSP_DP_OPTIONS

命令消息 ID笔记
MSP_DP_OPTIONSMSP_DP_OPTIONS5

MSP_DP_SYS

命令消息 ID笔记
MSP_DP_SYS6在给定坐标处显示系统元素displayportSystemElement_e
数据类型笔记
uint8放置字符串第一个字符的行
专栏uint8放置字符串第一个字符的列
系统元素uint8由 VTX/护目镜/显示设备渲染的系统元素

system_element 将是 displayPortSystemElement_e 定义的以下之一。一旦 VTX/护目镜/显示设备接收到一个 MSP_DP_SYS 子命令,则默认系统元素不应再显示在其默认位置,而只能按照该命令的指示明确显示。通过这种方式,默认行为与以前一样,但是一旦显式定位任何系统元素,这些 OSD 元素的行为就像任何其他元素一样,并且可以通过任何给定的 OSD 配置文件在特定位置进行调用。

// System elements rendered by VTX or Goggles
typedef enum {
DISPLAYPORT_SYS_GOGGLE_VOLTAGE = 0,
DISPLAYPORT_SYS_VTX_VOLTAGE = 1,
DISPLAYPORT_SYS_BITRATE = 2,
DISPLAYPORT_SYS_DELAY = 3,
DISPLAYPORT_SYS_DISTANCE = 4,
DISPLAYPORT_SYS_LQ = 5,
DISPLAYPORT_SYS_GOGGLE_DVR = 6,
DISPLAYPORT_SYS_VTX_DVR = 7,
DISPLAYPORT_SYS_WARNINGS = 8,
DISPLAYPORT_SYS_VTX_TEMP = 9,
DISPLAYPORT_SYS_FAN_SPEED = 10,
DISPLAYPORT_SYS_COUNT,
} displayPortSystemElement_e;