数据传输

2021-02-02

PSDK 数据传输相关功能的头文件为psdk_data_transmission.h,本文档描述了psdk_data_transmission.h 文件中结构体和函数原型的关键信息和使用方法。

目录

定义函数类型

typedef function ReceiveDataFromMobileCallback

功能:接收数据(从DJI Pilot 或 MSDK) product:all

用于接收来自移动端数据的回调函数。

说明: 为防止阻塞PSDK 主线程,导致负载设备响应缓慢、断连或死循环等问题,请在回调函数中以阻塞式的方式使用此函数。

typedef T_PsdkReturnCode (*ReceiveDataFromMobileCallback)(const uint8_t *data, uint16_t len);

参数
data:指向数据的指针
len:数据长度
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

typedef function ReceiveDataFromOsdkCallback

功能:接收数据(从OSDK) product:all

构造接收数据(从基于OSDK 开发的应用程序发送到PSDK 负载设备)的函数原型。

说明: 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数。

typedef T_PsdkReturnCode (*ReceiveDataFromOsdkCallback)(const uint8_t *data, uint16_t len);

参数
data:存储数据的内存空间
len:数据长度
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

函数原型

function PsdkDataTransmission_Init

功能:数据传输功能初始化 product:all

数据传输功能初始化。

说明

  • 在使用数据传输功能前,请先使用本接口以阻塞的方式初始化数据传输功能;
  • 本接口执行时间可能会超过 500ms。
T_PsdkReturnCode PsdkDataTransmission_Init(void);

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

function PsdkDataTransmission_DeInit

功能:释放数据传输功能 product:all

在长时间未使用数据传输功能或退出程序时,开发者可调用本接口释放数据传输模块,释放数据传输模块所占用的系统资源,并恢复内部变量状态。

T_PsdkReturnCode PsdkDataTransmission_DeInit(void);

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

function PsdkDataTransmission_RegReceiveDataFromMobileCallback

功能:接收数据 (从DJI Pilot 或MSDK) product:all

注册回调函数,用于接收从DJI Pilot 或基于MSDK 开发的移动端App 发送的数据。

T_PsdkReturnCode PsdkDataTransmission_RegReceiveDataFromMobileCallback(ReceiveDataFromMobileCallback callback);

参数
callback:注册回调函数,用于存储或处理从DJI Pilot 或基于MSDK 开发的移动端App 发送的数据
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkDataTransmission_RegReceiveDataFromOsdkCallback

功能:接收数据 (从OSDK) product:all

注册回调函数,用于接收从基于OSDK 开发的应用程序发送的数据的回调函数。

T_PsdkReturnCode PsdkDataTransmission_RegReceiveDataFromOsdkCallback(ReceiveDataFromOsdkCallback callback);

参数
callback:注册回调函数,用于存储或处理从基于OSDK 开发的应用程序发送的数据
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkDataTransmission_SendDataToMobile

功能:发送数据(向DJI Pilot 或MSDK) product:all

通过控制命令传输通道向基于MSDK 开发的移动端App 发送数据。

说明

  • 若所传输的数据量低于带宽限制,所需传输的数据将直接发送给DJI Pilot 或基于MSDK 开发的移动端App;
  • 若所传输的数据量高于带宽限制,受流控模块的影响,所需发送的数据将会被存储在缓冲区中并在一个周期内(周期间隔为1s,受实际带宽和缓冲区限制,该时间可能会有差异 ),重新发送给DJI Pilot 或基于MSDK 开发的移动端App;缓冲区已存满数据时(512 bytes),该数据将会被丢弃;
  • 根据数据通道和所传输数据的类型,请确保信道实际的带宽小于所规定的带宽限制,详情请参见教程文档;
  • 开发者使用PsdkDataTransmission_GetSendToMobileState() 接口,能够获得PSDK 负载设备向DJI Pilot 或基于MSDK 开发的移动端App 发送数据的状态。当实际传输的数据量超出带宽限制或控制命令传输通道的状态为繁忙时,请暂停使用传输数据功能或减少数据传输量;
  • 用户可向DJI Pilot 或基于MSDK 开发的移动端App 发送的数据包最大为128 个字节,当数据包的大小超过该长度时,该数据包将会被拆分成多个数据包再发送给DJI Pilot 或基于MSDK 开发的移动端App。
T_PsdkReturnCode PsdkDataTransmission_SendDataToMobile(const uint8_t *data, uint8_t len);

参数
data:指定所需传输的数据
len:指定所需传输的数据的长度,单位:byte

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

function PsdkDataTransmission_SendDataToOsdk

发送数据(向OSDK) product:all

通过控制命令传输通道向基于OSDK 开发的应用程序发送数据。

说明

  • 若所传输的数据量低于带宽限制,所需传输的数据将直接发送给基于OSDK 开发的应用程序;
  • 若所传输的数据量高于带宽限制,受流控模块的影响,所需发送的数据将会被存储在缓冲区中并在一个周期内(周期间隔为1s,受实际带宽和缓冲区限制,该时间可能会有差异 ),重新发送给基于OSDK 开发的应用程序缓冲区已存满数据时(512 bytes),该数据将会被丢弃;
  • 根据数据通道和所传输数据的类型,请确保信道实际的带宽小于所规定的带宽限制,详情请参见教程文档;
  • 开发者使用PsdkDataTransmission_GetSendToOsdkState() 接口,能够获得PSDK 负载设备向基于OSDK 开发的应用程序发送数据的状态。当实际传输的数据量超出带宽限制或控制命令传输通道的状态为繁忙时,请暂停使用传输数据功能或减少数据传输量;
  • 用户可向基于OSDK 开发的应用程序发送的数据包最大为255 个字节,当数据包的大小超过该长度时,该数据包将会被拆分成多个数据包再发送给基于OSDK 开发的应用程序。
T_PsdkReturnCode PsdkDataTransmission_SendDataToOsdk(const uint8_t *data, uint8_t len);

参数
data:指定所需传输的数据
len:指定所需传输的数据的长度,单位:byte
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkDataTransmission_GetSendToMobileState

功能:获取数据传输状态(向DJI Pilot 或MSDK) product:all

获取在控制命令传输通道上,向DJI Pilot 或基于MSDK 开发的移动端App 发送数据的状态。

T_PsdkReturnCode PsdkDataTransmission_GetSendToMobileState(T_PsdkDataChannelState *state);

参数
state:指向用于存储控制命令传输通道状态的内存空间
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkDataTransmission_GetSendToOsdkState

功能:获取数据传输状态(向OSDK) product:all

获取在控制命令传输通道上,向基于OSDK 开发的应用程序发送数据的状态。

T_PsdkReturnCode PsdkDataTransmission_GetSendToOsdkState(T_PsdkDataChannelState *state);

参数
state:指向用于存储控制命令传输通道状态的内存空间
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkDataTransmission_GetDataStreamRemoteAddress

功能:获取通过数据流通道发送自定义数据的目标地址 product:all

说明

  • 用户可以获取自定义数据传输的目标地址,在异构系统中通过其他子系统独立发送自定义数据。
T_PsdkReturnCode PsdkDataTransmission_GetDataStreamRemoteAddress(char *ipAddr, uint16_t *port);

参数
ipAddr:指向自定义数据传输的目标地址
port:指向自定义数据传输的目标端口
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkDataTransmission_SendDataStream

功能:通过高速数据传输通道发送数据 product:all

通过高速数据传输通道向DJI Pilot 或基于MSDK 开发的移动端App 发送数据。

说明

  • 仅Linux 平台支持使用该接口;
  • 根据数据通道和所传输数据的类型,请确保信道实际的带宽小于所规定的带宽限制,详情请参见教程文档;
  • 开发者使用PsdkDataTransmission_GetDataStreamState() 接口,能够获得高速数据传输通道的状态;
  • 当实际传输的数据量超出带宽限制或高速数据传输通道的状态为繁忙时,请暂停使用传输数据功能或减少数据传输量,否则数据可能会被丢弃。
T_PsdkReturnCode PsdkDataTransmission_SendDataStream(const uint8_t *data, uint16_t len);

参数
data:指定所需传输的数据
len:指定所需传输的数据的长度,最大支持65000字节
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode

function PsdkDataTransmission_GetDataStreamState

功能:获取高速数据传输通道的状态 product:all

获取在高速数据传输通道上传输数据的状态。

说明: 仅Linux 平台支持使用该接口。

T_PsdkReturnCode PsdkDataTransmission_GetDataStreamState(T_PsdkDataChannelState *state);

参数
state:指向用于存储高速数据传输通道状态的内存空间
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode