diff --git a/psdk_lib/include/dji_version.h b/psdk_lib/include/dji_version.h index 458beca..51993ff 100644 --- a/psdk_lib/include/dji_version.h +++ b/psdk_lib/include/dji_version.h @@ -39,7 +39,7 @@ extern "C" { #define DJI_VERSION_MINOR 0 /*!< DJI SDK minor version num, when add functionality in a backwards compatible manner changes. Range from 0 to 99. */ #define DJI_VERSION_MODIFY 0 /*!< DJI SDK modify version num, when have backwards compatible bug fixes changes. Range from 0 to 99. */ #define DJI_VERSION_BETA 0 /*!< DJI SDK version beta info, release version will be 0, when beta version release changes. Range from 0 to 255. */ -#define DJI_VERSION_BUILD 1459 /*!< DJI SDK version build info, when jenkins trigger build changes. Range from 0 to 65535. */ +#define DJI_VERSION_BUILD 1461 /*!< DJI SDK version build info, when jenkins trigger build changes. Range from 0 to 65535. */ /* Exported types ------------------------------------------------------------*/ diff --git a/psdk_lib/lib/aarch64-himix100-linux-gcc/libpayloadsdk.a b/psdk_lib/lib/aarch64-himix100-linux-gcc/libpayloadsdk.a index 160bbb3..3e74c72 100644 Binary files a/psdk_lib/lib/aarch64-himix100-linux-gcc/libpayloadsdk.a and b/psdk_lib/lib/aarch64-himix100-linux-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/aarch64-linux-android-gcc/libpayloadsdk.a b/psdk_lib/lib/aarch64-linux-android-gcc/libpayloadsdk.a index 8c0726b..a00c6bd 100644 Binary files a/psdk_lib/lib/aarch64-linux-android-gcc/libpayloadsdk.a and b/psdk_lib/lib/aarch64-linux-android-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/aarch64-linux-gnu-gcc/libpayloadsdk.a b/psdk_lib/lib/aarch64-linux-gnu-gcc/libpayloadsdk.a index 2bc3047..18470f3 100644 Binary files a/psdk_lib/lib/aarch64-linux-gnu-gcc/libpayloadsdk.a and b/psdk_lib/lib/aarch64-linux-gnu-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-himix100-linux-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-himix100-linux-gcc/libpayloadsdk.a index 62eeb46..de2f0c1 100644 Binary files a/psdk_lib/lib/arm-himix100-linux-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-himix100-linux-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-himix200-linux-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-himix200-linux-gcc/libpayloadsdk.a index 50028b2..29de866 100644 Binary files a/psdk_lib/lib/arm-himix200-linux-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-himix200-linux-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-hisiv300-linux-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-hisiv300-linux-gcc/libpayloadsdk.a index d3a2d89..de3c763 100644 Binary files a/psdk_lib/lib/arm-hisiv300-linux-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-hisiv300-linux-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-hisiv400-linux-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-hisiv400-linux-gcc/libpayloadsdk.a index c5f3922..88a7513 100644 Binary files a/psdk_lib/lib/arm-hisiv400-linux-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-hisiv400-linux-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-hisiv500-linux-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-hisiv500-linux-gcc/libpayloadsdk.a index 1530f29..b026cb3 100644 Binary files a/psdk_lib/lib/arm-hisiv500-linux-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-hisiv500-linux-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-hisiv600-linux-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-hisiv600-linux-gcc/libpayloadsdk.a index 7be50a7..1b7b5b1 100644 Binary files a/psdk_lib/lib/arm-hisiv600-linux-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-hisiv600-linux-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-linux-androideabi-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-linux-androideabi-gcc/libpayloadsdk.a index a9e4687..fdb1103 100644 Binary files a/psdk_lib/lib/arm-linux-androideabi-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-linux-androideabi-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-linux-gnueabi-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-linux-gnueabi-gcc/libpayloadsdk.a index 8262633..d53a1f9 100644 Binary files a/psdk_lib/lib/arm-linux-gnueabi-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-linux-gnueabi-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-linux-gnueabihf-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-linux-gnueabihf-gcc/libpayloadsdk.a index 34a4301..14aba7c 100644 Binary files a/psdk_lib/lib/arm-linux-gnueabihf-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-linux-gnueabihf-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/arm-none-eabi-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-none-eabi-gcc/libpayloadsdk.a index 3cc0958..dce98c4 100644 Binary files a/psdk_lib/lib/arm-none-eabi-gcc/libpayloadsdk.a and b/psdk_lib/lib/arm-none-eabi-gcc/libpayloadsdk.a differ diff --git a/psdk_lib/lib/armcc_cortex-m4/libpayload.lib b/psdk_lib/lib/armcc_cortex-m4/libpayload.lib index f8bb7f9..9784296 100644 Binary files a/psdk_lib/lib/armcc_cortex-m4/libpayload.lib and b/psdk_lib/lib/armcc_cortex-m4/libpayload.lib differ diff --git a/psdk_lib/lib/x86_64-linux-gnu-gcc/libpayloadsdk.a b/psdk_lib/lib/x86_64-linux-gnu-gcc/libpayloadsdk.a index 0bae5c9..60ceaa7 100644 Binary files a/psdk_lib/lib/x86_64-linux-gnu-gcc/libpayloadsdk.a and b/psdk_lib/lib/x86_64-linux-gnu-gcc/libpayloadsdk.a differ diff --git a/samples/sample_c++/platform/linux/manifold2/application/application.cpp b/samples/sample_c++/platform/linux/manifold2/application/application.cpp index 22e228d..e32a3f0 100644 --- a/samples/sample_c++/platform/linux/manifold2/application/application.cpp +++ b/samples/sample_c++/platform/linux/manifold2/application/application.cpp @@ -41,7 +41,7 @@ #define DJI_LOG_FOLDER_NAME "Logs" #define DJI_LOG_PATH_MAX_SIZE (128) #define DJI_LOG_FOLDER_NAME_MAX_SIZE (32) -#define DJI_LOG_SYSTEM_CMD_MAX_SIZE (64) +#define DJI_SYSTEM_CMD_STR_MAX_SIZE (64) #define DJI_LOG_MAX_COUNT (10) #define USER_UTIL_UNUSED(x) ((x) = (x)) @@ -272,7 +272,7 @@ T_DjiReturnCode Application::DjiUser_LocalWriteFsInit(const char *path) { T_DjiReturnCode djiReturnCode = DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; char filePath[DJI_LOG_PATH_MAX_SIZE]; - char systemCmd[DJI_LOG_SYSTEM_CMD_MAX_SIZE]; + char systemCmd[DJI_SYSTEM_CMD_STR_MAX_SIZE]; char folderName[DJI_LOG_FOLDER_NAME_MAX_SIZE]; time_t currentTime = time(nullptr); struct tm *localTime = localtime(¤tTime); diff --git a/samples/sample_c++/platform/linux/manifold2/hal/hal_uart.c b/samples/sample_c++/platform/linux/manifold2/hal/hal_uart.c index 59f6691..b558c5e 100644 --- a/samples/sample_c++/platform/linux/manifold2/hal/hal_uart.c +++ b/samples/sample_c++/platform/linux/manifold2/hal/hal_uart.c @@ -28,7 +28,7 @@ /* Private constants ---------------------------------------------------------*/ #define UART_DEV_NAME_STR_SIZE (128) -#define DJI_SYSTEM_CMD_MAX_SIZE (64) +#define DJI_SYSTEM_CMD_STR_MAX_SIZE (64) #define DJI_SYSTEM_RESULT_STR_MAX_SIZE (128) /* Private types -------------------------------------------------------------*/ @@ -48,7 +48,7 @@ T_DjiReturnCode HalUart_Init(E_DjiHalUartNum uartNum, uint32_t baudRate, T_DjiUa struct flock lock; T_DjiReturnCode returnCode = DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; char uartName[UART_DEV_NAME_STR_SIZE]; - char systemCmd[DJI_SYSTEM_CMD_MAX_SIZE]; + char systemCmd[DJI_SYSTEM_CMD_STR_MAX_SIZE]; char *ret = NULL; char lineBuf[DJI_SYSTEM_RESULT_STR_MAX_SIZE] = {0}; FILE *fp; diff --git a/samples/sample_c/module_sample/data_transmission/test_data_transmission.c b/samples/sample_c/module_sample/data_transmission/test_data_transmission.c index 8f4461a..5d888e8 100644 --- a/samples/sample_c/module_sample/data_transmission/test_data_transmission.c +++ b/samples/sample_c/module_sample/data_transmission/test_data_transmission.c @@ -48,9 +48,10 @@ static T_DjiReturnCode ReceiveDataFromPayload(const uint8_t *data, uint16_t len) /* Private variables ---------------------------------------------------------*/ static T_DjiTaskHandle s_userDataTransmissionThread; static T_DjiAircraftInfoBaseInfo s_aircraftInfoBaseInfo; +static DjiTestDataTransmissionConfig s_dataTransmissionConfig = {0}; /* Exported functions definition ---------------------------------------------*/ -T_DjiReturnCode DjiTest_DataTransmissionStartService(void) +T_DjiReturnCode DjiTest_DataTransmissionStartService(DjiTestDataTransmissionConfig config) { T_DjiReturnCode djiStat; T_DjiOsalHandler *osalHandler = DjiPlatform_GetOsalHandler(); @@ -60,6 +61,8 @@ T_DjiReturnCode DjiTest_DataTransmissionStartService(void) char ipAddr[DJI_IP_ADDR_STR_SIZE_MAX]; uint16_t port; + memcpy(&s_dataTransmissionConfig, &config, sizeof(DjiTestDataTransmissionConfig)); + djiStat = DjiLowSpeedDataChannel_Init(); if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { USER_LOG_ERROR("init data transmission module error."); @@ -176,20 +179,20 @@ static void *UserDataTransmission_Task(void *arg) USER_LOG_ERROR("get send to onboard computer channel state error."); } -#ifdef SYSTEM_ARCH_LINUX - djiStat = DjiHighSpeedDataChannel_SendDataStreamData(dataToBeSent, sizeof(dataToBeSent)); - if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) - USER_LOG_ERROR("send data to data stream error."); + if (s_dataTransmissionConfig.isEnableHighSpeedDataChannel == true) { + djiStat = DjiHighSpeedDataChannel_SendDataStreamData(dataToBeSent, sizeof(dataToBeSent)); + if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) + USER_LOG_ERROR("send data to data stream error."); - djiStat = DjiHighSpeedDataChannel_GetDataStreamState(&state); - if (djiStat == DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { - USER_LOG_DEBUG( - "data stream state: realtimeBandwidthLimit: %d, realtimeBandwidthBeforeFlowController: %d, busyState: %d.", - state.realtimeBandwidthLimit, state.realtimeBandwidthBeforeFlowController, state.busyState); - } else { - USER_LOG_ERROR("get data stream state error."); + djiStat = DjiHighSpeedDataChannel_GetDataStreamState(&state); + if (djiStat == DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { + USER_LOG_DEBUG( + "data stream state: realtimeBandwidthLimit: %d, realtimeBandwidthBeforeFlowController: %d, busyState: %d.", + state.realtimeBandwidthLimit, state.realtimeBandwidthBeforeFlowController, state.busyState); + } else { + USER_LOG_ERROR("get data stream state error."); + } } -#endif } else if (s_aircraftInfoBaseInfo.mountPosition == DJI_MOUNT_POSITION_EXTENSION_PORT) { channelAddress = DJI_CHANNEL_ADDRESS_PAYLOAD_PORT_NO1; djiStat = DjiLowSpeedDataChannel_SendData(channelAddress, dataToBeSent, sizeof(dataToBeSent)); diff --git a/samples/sample_c/module_sample/data_transmission/test_data_transmission.h b/samples/sample_c/module_sample/data_transmission/test_data_transmission.h index 169dc62..6c0e639 100644 --- a/samples/sample_c/module_sample/data_transmission/test_data_transmission.h +++ b/samples/sample_c/module_sample/data_transmission/test_data_transmission.h @@ -38,10 +38,13 @@ extern "C" { /* Exported types ------------------------------------------------------------*/ - +typedef struct { + bool isEnableLowSpeedDataChannel; + bool isEnableHighSpeedDataChannel; +} DjiTestDataTransmissionConfig; /* Exported functions --------------------------------------------------------*/ -T_DjiReturnCode DjiTest_DataTransmissionStartService(void); +T_DjiReturnCode DjiTest_DataTransmissionStartService(DjiTestDataTransmissionConfig config); #ifdef __cplusplus } diff --git a/samples/sample_c/module_sample/utils/util_misc.h b/samples/sample_c/module_sample/utils/util_misc.h index 321ea00..3566750 100644 --- a/samples/sample_c/module_sample/utils/util_misc.h +++ b/samples/sample_c/module_sample/utils/util_misc.h @@ -47,6 +47,7 @@ extern "C" { /* Exported functions --------------------------------------------------------*/ T_DjiReturnCode DjiUserUtil_GetCurrentFileDirPath(const char *filePath, uint32_t pathBufferSize, char *dirPath); void DjiUserUtil_PrintProgressBar(uint16_t currentProgress, uint16_t totalProgress, char *userData); +T_DjiReturnCode DjiUserUtil_RunSystemCmd(const char *systemCmdStr); #ifdef __cplusplus } diff --git a/samples/sample_c/platform/linux/common/osal/osal_socket.c b/samples/sample_c/platform/linux/common/osal/osal_socket.c index d2bac7e..d6c99eb 100644 --- a/samples/sample_c/platform/linux/common/osal/osal_socket.c +++ b/samples/sample_c/platform/linux/common/osal/osal_socket.c @@ -124,7 +124,7 @@ T_DjiReturnCode Osal_UdpSendData(T_DjiSocketHandle socketHandle, const char *ipA addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(ipAddr); - ret = sendto(socketHandleStruct->socketFd, buf, len, 0, (struct sockaddr *) &addr, sizeof(struct sockaddr_in)); + ret = sendto(socketHandleStruct->socketFd, buf, len, MSG_DONTWAIT, (struct sockaddr *) &addr, sizeof(struct sockaddr_in)); if (ret >= 0) { *realLen = ret; } else { diff --git a/samples/sample_c/platform/linux/manifold2/application/main.c b/samples/sample_c/platform/linux/manifold2/application/main.c index cfc87e8..5237e07 100644 --- a/samples/sample_c/platform/linux/manifold2/application/main.c +++ b/samples/sample_c/platform/linux/manifold2/application/main.c @@ -59,8 +59,9 @@ #define DJI_LOG_FOLDER_NAME "Logs" #define DJI_LOG_PATH_MAX_SIZE (128) #define DJI_LOG_FOLDER_NAME_MAX_SIZE (32) -#define DJI_LOG_SYSTEM_CMD_MAX_SIZE (64) #define DJI_LOG_MAX_COUNT (10) +#define DJI_SYSTEM_CMD_STR_MAX_SIZE (64) +#define DJI_SYSTEM_RESULT_STR_MAX_SIZE (128) #define DJI_USE_WIDGET_INTERACTION 0 @@ -84,6 +85,7 @@ static T_DjiReturnCode DjiUser_LocalWriteFsInit(const char *path); static void *DjiUser_MonitorTask(void *argument); static T_DjiReturnCode DjiTest_HighPowerApplyPinInit(); static T_DjiReturnCode DjiTest_WriteHighPowerApplyPin(E_DjiPowerManagementPinState pinState); +static bool DjiUser_CheckNetCableConnectStatus(void); /* Exported functions definition ---------------------------------------------*/ int main(int argc, char **argv) @@ -91,6 +93,7 @@ int main(int argc, char **argv) T_DjiReturnCode returnCode; T_DjiUserInfo userInfo; T_DjiAircraftInfoBaseInfo aircraftInfoBaseInfo; + DjiTestDataTransmissionConfig dataTransmissionConfig; T_DjiOsalHandler osalHandler = { .TaskCreate = Osal_TaskCreate, .TaskDestroy = Osal_TaskDestroy, @@ -250,7 +253,10 @@ int main(int argc, char **argv) } if (aircraftInfoBaseInfo.mountPosition == DJI_MOUNT_POSITION_EXTENSION_PORT) { - returnCode = DjiTest_DataTransmissionStartService(); + dataTransmissionConfig.isEnableLowSpeedDataChannel = true; + dataTransmissionConfig.isEnableHighSpeedDataChannel = false; + + returnCode = DjiTest_DataTransmissionStartService(dataTransmissionConfig); if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { USER_LOG_ERROR("data transmission init error"); } @@ -285,9 +291,11 @@ int main(int argc, char **argv) #endif #ifdef CONFIG_MODULE_SAMPLE_CAMERA_MEDIA_ON - returnCode = DjiTest_CameraEmuMediaStartService(); - if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { - USER_LOG_ERROR("camera emu media init error"); + if (DjiUser_CheckNetCableConnectStatus() == true) { + returnCode = DjiTest_CameraEmuMediaStartService(); + if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { + USER_LOG_ERROR("camera emu media init error"); + } } #endif @@ -330,7 +338,9 @@ int main(int argc, char **argv) #endif #ifdef CONFIG_MODULE_SAMPLE_DATA_TRANSMISSION_ON - returnCode = DjiTest_DataTransmissionStartService(); + dataTransmissionConfig.isEnableLowSpeedDataChannel = true; + dataTransmissionConfig.isEnableHighSpeedDataChannel = DjiUser_CheckNetCableConnectStatus(); + returnCode = DjiTest_DataTransmissionStartService(dataTransmissionConfig); if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { USER_LOG_ERROR("widget sample init error"); } @@ -465,7 +475,7 @@ static T_DjiReturnCode DjiUser_LocalWriteFsInit(const char *path) { T_DjiReturnCode djiReturnCode = DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; char filePath[DJI_LOG_PATH_MAX_SIZE]; - char systemCmd[DJI_LOG_SYSTEM_CMD_MAX_SIZE]; + char systemCmd[DJI_SYSTEM_CMD_STR_MAX_SIZE]; char folderName[DJI_LOG_FOLDER_NAME_MAX_SIZE]; time_t currentTime = time(NULL); struct tm *localTime = localtime(¤tTime); @@ -611,4 +621,25 @@ static T_DjiReturnCode DjiTest_WriteHighPowerApplyPin(E_DjiPowerManagementPinSta #pragma GCC diagnostic pop +static bool DjiUser_CheckNetCableConnectStatus(void) +{ + FILE *fp; + char *ret = NULL; + char systemCmd[DJI_SYSTEM_CMD_STR_MAX_SIZE] = {0}; + char lineBuf[DJI_SYSTEM_RESULT_STR_MAX_SIZE] = {0}; + + sprintf(systemCmd, "ifconfig %s | grep RUNNING", LINUX_NETWORK_DEV); + fp = popen(systemCmd, "r"); + if (fp == NULL) { + return false; + } + + ret = fgets(lineBuf, sizeof(lineBuf), fp); + if (ret == NULL) { + return false; + } + + return true; +} + /****************** (C) COPYRIGHT DJI Innovations *****END OF FILE****/ \ No newline at end of file diff --git a/samples/sample_c/platform/linux/manifold2/hal/hal_uart.c b/samples/sample_c/platform/linux/manifold2/hal/hal_uart.c index 59f6691..b558c5e 100644 --- a/samples/sample_c/platform/linux/manifold2/hal/hal_uart.c +++ b/samples/sample_c/platform/linux/manifold2/hal/hal_uart.c @@ -28,7 +28,7 @@ /* Private constants ---------------------------------------------------------*/ #define UART_DEV_NAME_STR_SIZE (128) -#define DJI_SYSTEM_CMD_MAX_SIZE (64) +#define DJI_SYSTEM_CMD_STR_MAX_SIZE (64) #define DJI_SYSTEM_RESULT_STR_MAX_SIZE (128) /* Private types -------------------------------------------------------------*/ @@ -48,7 +48,7 @@ T_DjiReturnCode HalUart_Init(E_DjiHalUartNum uartNum, uint32_t baudRate, T_DjiUa struct flock lock; T_DjiReturnCode returnCode = DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; char uartName[UART_DEV_NAME_STR_SIZE]; - char systemCmd[DJI_SYSTEM_CMD_MAX_SIZE]; + char systemCmd[DJI_SYSTEM_CMD_STR_MAX_SIZE]; char *ret = NULL; char lineBuf[DJI_SYSTEM_RESULT_STR_MAX_SIZE] = {0}; FILE *fp; diff --git a/samples/sample_c/platform/rtos_freertos/stm32f4_discovery/application/application.c b/samples/sample_c/platform/rtos_freertos/stm32f4_discovery/application/application.c index d9e4111..6988f55 100644 --- a/samples/sample_c/platform/rtos_freertos/stm32f4_discovery/application/application.c +++ b/samples/sample_c/platform/rtos_freertos/stm32f4_discovery/application/application.c @@ -78,6 +78,10 @@ void DjiUser_StartTask(void const *argument) T_DjiReturnCode returnCode; T_DjiUserInfo userInfo; T_DjiAircraftInfoBaseInfo aircraftInfoBaseInfo; + DjiTestDataTransmissionConfig dataTransmissionConfig = { + .isEnableHighSpeedDataChannel = false, + .isEnableLowSpeedDataChannel = true, + }; T_DjiOsalHandler osalHandler = { .TaskCreate = Osal_TaskCreate, .TaskDestroy = Osal_TaskDestroy, @@ -214,7 +218,7 @@ void DjiUser_StartTask(void const *argument) #endif #ifdef CONFIG_MODULE_SAMPLE_DATA_TRANSMISSION_ON - returnCode = DjiTest_DataTransmissionStartService(); + returnCode = DjiTest_DataTransmissionStartService(dataTransmissionConfig); if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { USER_LOG_ERROR("widget sample init error"); }