diff --git a/psdk_lib/include/dji_fc_subscription.h b/psdk_lib/include/dji_fc_subscription.h index ede92da..cca15cb 100644 --- a/psdk_lib/include/dji_fc_subscription.h +++ b/psdk_lib/include/dji_fc_subscription.h @@ -1153,18 +1153,16 @@ typedef struct HomeLocationData { } T_DjiFcSubscriptionHomePointInfo; // pack(1) typedef struct GimbalSingleData { - dji_f32_t pitch; dji_f32_t roll; + dji_f32_t pitch; dji_f32_t yaw; - uint32_t status; - uint8_t mode; -} GimbalSingleData; +} GimbalAnglesData; /** * @brief Struct for the topic DJI_FC_SUBSCRIPTION_TOPIC_THREE_GIMBAL_DATA. Used in M300 */ typedef struct GimbalThreeData { - GimbalSingleData gbData[3]; + GimbalAnglesData anglesData[3]; } T_DjiFcSubscriptionThreeGimbalData; #pragma pack() diff --git a/psdk_lib/include/dji_version.h b/psdk_lib/include/dji_version.h index b68f932..db1a75d 100644 --- a/psdk_lib/include/dji_version.h +++ b/psdk_lib/include/dji_version.h @@ -37,7 +37,7 @@ extern "C" { #define DJI_VERSION_MINOR 3 /*!< 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 1695 /*!< DJI SDK version build info, when jenkins trigger build changes. Range from 0 to 65535. */ +#define DJI_VERSION_BUILD 1697 /*!< 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 7083a30..df22be5 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-gnu-gcc/libpayloadsdk.a b/psdk_lib/lib/aarch64-linux-gnu-gcc/libpayloadsdk.a index d93440f..0500dd0 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 0a571a3..69f5513 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 227082e..73ccb04 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 928d0fc..3467400 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 62e8585..66ee2e9 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 4a94d70..80e14f0 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 a69f0cf..9b88a50 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-gnueabi-gcc/libpayloadsdk.a b/psdk_lib/lib/arm-linux-gnueabi-gcc/libpayloadsdk.a index 36a17f3..8079883 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 7c61e89..43709a1 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 416ba60..edc73c5 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 253dc9c..2c611d7 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 df8189c..04c5789 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/psdk_lib/lib/xtensa-esp32-elf-gcc/libpayloadsdk.a b/psdk_lib/lib/xtensa-esp32-elf-gcc/libpayloadsdk.a index a1231ac..ee064b0 100644 Binary files a/psdk_lib/lib/xtensa-esp32-elf-gcc/libpayloadsdk.a and b/psdk_lib/lib/xtensa-esp32-elf-gcc/libpayloadsdk.a differ diff --git a/samples/sample_c/module_sample/flight_control/test_flight_control.c b/samples/sample_c/module_sample/flight_control/test_flight_control.c index 5b58bb3..9c038b3 100644 --- a/samples/sample_c/module_sample/flight_control/test_flight_control.c +++ b/samples/sample_c/module_sample/flight_control/test_flight_control.c @@ -68,7 +68,7 @@ static const T_DjiTestFlightControlDisplayModeStr s_flightControlDisplayModeStr[ static uint8_t DjiTest_FlightControlGetDisplayModeIndex(E_DjiFcSubscriptionDisplayMode displayMode); static T_DjiFcSubscriptionFlightStatus DjiTest_FlightControlGetValueOfFlightStatus(void); static T_DjiFcSubscriptionDisplaymode DjiTest_FlightControlGetValueOfDisplayMode(void); -static T_DjiFcSubscriptionAvoidData DjiTest_FlightControlGetValueOfAvoidData(void); +static T_DjiFcSubscriptionHeightFusion DjiTest_FlightControlGetValueOfHeightFusion(void); static T_DjiFcSubscriptionQuaternion DjiTest_FlightControlGetValueOfQuaternion(void); static T_DjiFcSubscriptionPositionFused DjiTest_FlightControlGetValueOfPositionFused(void); static dji_f32_t DjiTest_FlightControlGetValueOfRelativeHeight(void); @@ -92,13 +92,12 @@ static void DjiTest_FlightControlHorizCommandLimit(dji_f32_t speedFactor, dji_f3 static dji_f32_t DjiTest_FlightControlVectorNorm(T_DjiTestFlightControlVector3f v); static T_DjiReturnCode DjiTest_FlightControlJoystickCtrlAuthSwitchEventCallback(T_DjiFlightControllerJoystickCtrlAuthorityEventInfo eventData); -static bool -DjiTest_FlightControlMoveByPositionOffset(T_DjiTestFlightControlVector3f offsetDesired, float yawDesiredInDeg, - float posThresholdInM, - float yawThresholdInDeg); -static void -DjiTest_FlightControlVelocityAndYawRateCtrl(T_DjiTestFlightControlVector3f offsetDesired, float yawRate, - uint32_t timeMs); +static bool DjiTest_FlightControlMoveByPositionOffset(T_DjiTestFlightControlVector3f offsetDesired, + float yawDesiredInDeg, + float posThresholdInM, + float yawThresholdInDeg); +static void DjiTest_FlightControlVelocityAndYawRateCtrl(T_DjiTestFlightControlVector3f offsetDesired, float yawRate, + uint32_t timeMs); static T_DjiReturnCode DjiTest_FlightControlInit(void); static T_DjiReturnCode DjiTest_FlightControlDeInit(void); static void DjiTest_FlightControlTakeOffLandingSample(void); @@ -174,7 +173,7 @@ T_DjiReturnCode DjiTest_FlightControlInit(void) return returnCode; } - returnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_AVOID_DATA, + returnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_HEIGHT_FUSION, DJI_DATA_SUBSCRIPTION_TOPIC_10_HZ, NULL); @@ -965,26 +964,25 @@ T_DjiFcSubscriptionDisplaymode DjiTest_FlightControlGetValueOfDisplayMode(void) return displayMode; } -T_DjiFcSubscriptionAvoidData DjiTest_FlightControlGetValueOfAvoidData(void) +T_DjiFcSubscriptionHeightFusion DjiTest_FlightControlGetValueOfHeightFusion(void) { T_DjiReturnCode djiStat; - T_DjiFcSubscriptionAvoidData avoidData = {0}; - T_DjiDataTimestamp avoidDataTimestamp = {0}; + T_DjiFcSubscriptionHeightFusion heightFusion = {0}; + T_DjiDataTimestamp timestamp = {0}; - djiStat = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_AVOID_DATA, - (uint8_t *) &avoidData, - sizeof(T_DjiFcSubscriptionAvoidData), - &avoidDataTimestamp); + djiStat = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_HEIGHT_FUSION, + (uint8_t *) &heightFusion, + sizeof(T_DjiFcSubscriptionHeightFusion), + ×tamp); if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { - USER_LOG_ERROR("Get value of topic avoid data error, error code: 0x%08X", djiStat); + USER_LOG_ERROR("Get value of topic height fusion error, error code: 0x%08X", djiStat); } else { - USER_LOG_DEBUG("Timestamp: millisecond %u microsecond %u.", avoidDataTimestamp.millisecond, - avoidDataTimestamp.microsecond); - USER_LOG_DEBUG("Avoid downwards distance is %f m", avoidData.down); + USER_LOG_DEBUG("Timestamp: millisecond %u microsecond %u.", timestamp.millisecond, timestamp.microsecond); + USER_LOG_DEBUG("Relative height fusion is %f m", heightFusion); } - return avoidData; + return heightFusion; } T_DjiFcSubscriptionQuaternion DjiTest_FlightControlGetValueOfQuaternion(void) @@ -1211,6 +1209,12 @@ bool DjiTest_FlightControlMonitoredLanding(void) bool DjiTest_FlightControlGoHomeAndConfirmLanding(void) { T_DjiReturnCode djiStat; + T_DjiAircraftInfoBaseInfo aircraftInfoBaseInfo; + + djiStat = DjiAircraftInfo_GetBaseInfo(&aircraftInfoBaseInfo); + if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { + USER_LOG_ERROR("get aircraft base info error"); + } /*! Step 1: Start go home */ USER_LOG_INFO("Start go home action"); @@ -1237,11 +1241,17 @@ bool DjiTest_FlightControlGoHomeAndConfirmLanding(void) } else { while (DjiTest_FlightControlGetValueOfDisplayMode() == DJI_FC_SUBSCRIPTION_DISPLAY_MODE_AUTO_LANDING && DjiTest_FlightControlGetValueOfFlightStatus() == DJI_FC_SUBSCRIPTION_FLIGHT_STATUS_IN_AIR) { - T_DjiFcSubscriptionAvoidData avoidData = DjiTest_FlightControlGetValueOfAvoidData(); + T_DjiFcSubscriptionHeightFusion heightFusion = DjiTest_FlightControlGetValueOfHeightFusion(); s_osalHandler->TaskSleepMs(1000); - if (((dji_f64_t) 0.65 < avoidData.down && avoidData.down < (dji_f64_t) 0.75) && - avoidData.downHealth == 1) { - break; + if (aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3E || + aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3T) { + if ((dji_f64_t) 0.45 < heightFusion && heightFusion < (dji_f64_t) 0.55) { + break; + } + } else { + if ((dji_f64_t) 0.65 < heightFusion && heightFusion < (dji_f64_t) 0.75) { + break; + } } } } @@ -1309,9 +1319,8 @@ DjiTest_FlightControlLocalOffsetFromGpsAndFusedHeightOffset(const T_DjiFcSubscri return deltaNed; } -T_DjiTestFlightControlVector3f -DjiTest_FlightControlVector3FSub(const T_DjiTestFlightControlVector3f vectorA, - const T_DjiTestFlightControlVector3f vectorB) +T_DjiTestFlightControlVector3f DjiTest_FlightControlVector3FSub(const T_DjiTestFlightControlVector3f vectorA, + const T_DjiTestFlightControlVector3f vectorB) { T_DjiTestFlightControlVector3f result; result.x = vectorA.x - vectorB.x; diff --git a/samples/sample_c/module_sample/gimbal_emu/test_payload_gimbal_emu.c b/samples/sample_c/module_sample/gimbal_emu/test_payload_gimbal_emu.c index d4e7b49..aa46e41 100644 --- a/samples/sample_c/module_sample/gimbal_emu/test_payload_gimbal_emu.c +++ b/samples/sample_c/module_sample/gimbal_emu/test_payload_gimbal_emu.c @@ -389,10 +389,10 @@ static void *UserGimbal_Task(void *arg) djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION, DJI_DATA_SUBSCRIPTION_TOPIC_10_HZ, NULL); - if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { - USER_LOG_ERROR("Subscribe topic quaternion error."); + if (djiStat == DJI_ERROR_SUBSCRIPTION_MODULE_CODE_TOPIC_DUPLICATE) { + USER_LOG_DEBUG("Subscribe topic quaternion duplicate."); } else { - USER_LOG_DEBUG("Subscribe topic quaternion success."); + USER_LOG_ERROR("Subscribe topic quaternion error."); } while (1) { diff --git a/samples/sample_c/module_sample/widget/test_widget_speaker.c b/samples/sample_c/module_sample/widget/test_widget_speaker.c index 3709dd6..331cb0d 100644 --- a/samples/sample_c/module_sample/widget/test_widget_speaker.c +++ b/samples/sample_c/module_sample/widget/test_widget_speaker.c @@ -565,7 +565,7 @@ static T_DjiReturnCode SetVolume(uint8_t volume) USER_LOG_ERROR("Set widget speaker volume error: %d", ret); } } else { - USER_LOG_WARN("No audio device found, please add audio device and init speaker volume here!!!"); + USER_LOG_WARN("No audio device found, please add audio device and init speaker volume here."); } #else USER_LOG_WARN("No audio device found, please add audio device and init speaker volume here!!!"); diff --git a/samples/sample_c/platform/linux/manifold2/application/dji_sdk_config.h b/samples/sample_c/platform/linux/manifold2/application/dji_sdk_config.h index c05566c..739c757 100644 --- a/samples/sample_c/platform/linux/manifold2/application/dji_sdk_config.h +++ b/samples/sample_c/platform/linux/manifold2/application/dji_sdk_config.h @@ -62,6 +62,8 @@ extern "C" { #define CONFIG_MODULE_SAMPLE_UPGRADE_ON +#define CONFIG_MODULE_SAMPLE_FC_SUBSCRIPTION_ON + /*!< Attention: This function needs to be used together with mobile sdk mop sample. * */ //#define CONFIG_MODULE_SAMPLE_MOP_CHANNEL_ON