自定义控件

2021-02-02

PSDK 自定义控件相关功能的头文件为psdk_widget.h,本文档描述了psdk_widget.h 文件中结构体和函数原型的关键信息和使用方法。

目录

  • DJI Pilot 或基于MSDK 开发的移动端App 浮动窗口可显示的信息最长为255
#define PSDK_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN         255

枚举

typedef enum E_PsdkWidgetType

控件类型

typedef enum {
PSDK_WIDGET_TYPE_BUTTON = 1, 按钮类型
PSDK_WIDGET_TYPE_SWITCH = 2, 开关类型
PSDK_WIDGET_TYPE_SCALE = 3, 范围条类型
PSDK_WIDGET_TYPE_LIST = 4, 列表类型
PSDK_WIDGET_TYPE_INT_INPUT_BOX = 5, 整型值输入框
} E_PsdkWidgetType;

typedef enum E_PsdkWidgetButtonState

按钮控件的状态

typedef enum {
PSDK_WIDGET_BUTTON_STATE_PRESS_DOWN = 1, 按下按钮
PSDK_WIDGET_BUTTON_STATE_RELEASE_UP = 0, 释放按钮
} E_PsdkWidgetButtonState;

typedef enum E_PsdkWidgetSwitchState

开关控件的状态

typedef enum {
PSDK_WIDGET_SWITCH_STATE_OFF = 0, 关闭开关
PSDK_WIDGET_SWITCH_STATE_ON = 1 打开开关
} E_PsdkWidgetSwitchState;

结构体

typedef struct T_PsdkWidgetFileBinaryArray

二进制数组控件文件

typedef struct {
char *fileName; 从控件文件的名称
uint32_t fileSize; 控件文件的大小,单位:字节
const uint8_t *fileBinaryArray; 控件文件的二进制数组(C 语言)
} T_PsdkWidgetFileBinaryArray;

typedef struct T_PsdkWidgetBinaryArrayConfig

自定义控件二进制配置文件

typedef struct {
uint16_t binaryArrayCount; 二进制数组控件文件数量
T_PsdkWidgetFileBinaryArray *fileBinaryArrayList; 二进制数组控件文件列表
} T_PsdkWidgetBinaryArrayConfig;

typedef struct T_PsdkWidgetHandlerListItem

控件项处理函数

typedef struct {
自定义控件项的索引,该索引从0开始编号且不可重复
uint32_t widgetIndex;

自定义控件的类型,详情请参见:E_PsdkWidgetType
E_PsdkWidgetType widgetType;

@brief 用于设置自定义控件的值的回调函数,当用户触发控件时将调用该函数
@param widgetType: 自定义控件的类型,详情请参见:E_PsdkWidgetType.
@param index: 自定义控件的索引
@param value: 开发者所设置的自定义控件的值。按钮类型控件值的取值范围,请参
见:E_PsdkWidgetButtonState;开关类型控件值的取值范围,请参
见:E_PsdkWidgetSwitchState;范围条类型控件值的取值范围,请参
见:PSDK_WIDGET_TYPE_SCALE,范围为0100;列表类型控件值的取值范围为0~N-1
输入框类型控件的值为整型
@param userData: 用户数据指针
@return 执行结果
T_PsdkReturnCode (*SetWidgetValue)(E_PsdkWidgetType widgetType, uint32_t index, int32_t value, void *userData);

@brief 获取自定义控件值的回调函数
@param widgetType: 自定义控件的类型,详情请参见:E_PsdkWidgetType.
@param 自定义控件的索引
@param value: 开发者所设置的自定义控件的值。按钮类型控件值的取值范围,请参
见:E_PsdkWidgetButtonState;开关类型控件值的取值范围,请参
见:E_PsdkWidgetSwitchState;范围条类型控件值的取值范围,请参
见:PSDK_WIDGET_TYPE_SCALE,范围为0100;列表类型控件值的取值范围为0~N-1
输入框类型控件的值为整型
@param userData: 用户数据指针
@return 执行结果
T_PsdkReturnCode (*GetWidgetValue)(E_PsdkWidgetType widgetType, uint32_t index, int32_t *value, void *userData);

用户需要在SetWidgetValue 和GetWidgetValue 中使用的用户数据指针;
} T_PsdkWidgetHandlerListItem;

函数原型

function PsdkWidget_Init

功能:初始化自定义控件模块 product:all

使用自定义控件功能时,请先初始化自定义控件模块。

T_PsdkReturnCode PsdkWidget_Init(void);

返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkWidget_RegDefaultUiConfigByDirPath

功能:注册配置文件默认的路径 product:all

注册自定义控件配置文件默认的路径。

说明

  • 仅基于linux 开发的负载设备支持使用本接口;
  • 在Linux 操作系统中可使用PsdkWidget_RegDefaultConfigByDirPath()和 PsdkWidget_RegUiConfigByDirPath() 函数设置自定义控件配置文件的路径;
  • 当不需要自定义控件配置支持多语言和适配不同大小的屏幕时,只需使用接口PsdkWidget_RegDefaultUiConfigByDIrPath()注册控件的配置文件;
  • 当需要支持多语言和适配不同大小屏幕时,需使用接口PsdkWidget_RegUiConfigByDIrPath()指定特定语言和屏幕大小下的控件配置;若APP语言和屏幕大小没有对应的控件配置,则使用PsdkWidget_RegDefaultUiConfigByDirPath()注册控件的配置文件。
T_PsdkReturnCode PsdkWidget_RegDefaultUiConfigByDirPath(const char *widgetConfigDirPath);

参数
widgetConfigDirPath:自定义控件配置文件的路径
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkWidget_RegUiConfigByDirPath

功能:注册配置文件的路径 product:all

注册自定义控件配置文件的路径。

说明

  • 仅基于linux 开发的负载设备支持使用本接口;
  • 不同语言和屏幕尺寸下的控件配置需要有相同的控件类型,索引和数量。
T_PsdkReturnCode PsdkWidget_RegUiConfigByDirPath(E_PsdkAircraftInfoMobileAppLanguage appLanguage,
E_PsdkAircraftInfoMobileAppScreenType appScreenType,
const char *widgetConfigDirPath);

参数
appLanguage:基于MSDK 开发的移动端App 的语言类型
appScreenType:终端设备的屏幕类型
widgetConfigDirPath:自定义控件配置文件的地址
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkWidget_RegDefaultUiConfigByBinaryArray

功能:注册二进制配置文件默认的路径 product:all

通过二进制数组控件文件注册默认控件配置。

说明

  • 在无文件管理系统的操作系统中(如RTOS),请调用该接口和PsdkWidget_RegDefaultUiConfigBinaryArray 接口设置设置控件配置参数;
  • 若没有使用PsdkWidget_RegUiConfigByBinaryArray()注册与系统语言和屏幕大小对应的控件配置信息时,将使用此函数中的配置信息。
T_PsdkReturnCode PsdkWidget_RegDefaultUiConfigByBinaryArray(const T_PsdkWidgetBinaryArrayConfig *binaryArrayConfig);

参数
binaryArrayConfig:二进制数组控件配置文件
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkWidget_RegUiConfigByBinaryArray

功能:注册控件配置信息 product:all

通过二进制数组控件文件注册控件配置信息。

说明: 不同语言和屏幕尺寸下的控件配置需要有相同的控件类型,索引和数量。

T_PsdkReturnCode PsdkWidget_RegUiConfigByBinaryArray(E_PsdkAircraftInfoMobileAPPLanguage APPLanguage,
E_PsdkAircraftInfoMobileAPPScreenType screenType,
const T_PsdkWidgetBinaryArrayConfig *binaryArrayConfig);

参数
appLanguage:基于MSDK 开发的移动端App 的语言类型
screenType:终端设备的屏幕类型
binaryArrayConfig:二进制数组控件配置文件
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkWidget_RegHandlerList

功能:注册处理函数列表 product:all

注册自定义控件处理函数列表。

T_PsdkReturnCode PsdkWidget_RegHandlerList(const T_PsdkWidgetHandlerListItem *widgetHandlerList, uint32_t itemCount);

参数
widgetHandlerList:自定义控件处理函数列表
itemCount:列表项数量
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkWidgetFloatingWindow_ShowMessage

功能:向移动端App 的浮窗发送消息。 product:all

向DJI Pilot 或基于MSDK 开发的移动端App 的浮窗发送消息。

说明

  • 消息长度不可超过PSDK_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN 中设置的值。
  • 向DJI Pilot 或基于MSDK 开发的移动端App 上的浮窗发送消息的最大带宽为 2KB/s。
T_PsdkReturnCode PsdkWidgetFloatingWindow_ShowMessage(const char *str);

参数
str:指向所需向DJI Pilot 或基于MSDK 开发的移动端App 的浮窗发送的消息
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkWidgetFloatingWindow_GetChannelState

功能:获取信息发送通道的状态 product:all

获取向DJI Pilot 或基于MSDK 开发的移动端App 上的浮窗发送信息的通道的状态。

T_PsdkReturnCode PsdkWidgetFloatingWindow_GetChannelState(T_PsdkDataChannelState *state);

参数
state:指向DJI Pilot 或基于MSDK 开发的移动端App 上的浮窗发送信息的通道的状态
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode