From d17bfc3fbe1bacbe3fb8741f4f40ac75b9813753 Mon Sep 17 00:00:00 2001 From: Kush Makkapati Date: Fri, 28 Nov 2025 21:49:34 +0000 Subject: [PATCH 1/2] Add tests for exporting params to file --- .../tests/param_test_files/inject_params.parm | 1384 +++++++++++++++++ radio/tests/test_params.py | 149 ++ 2 files changed, 1533 insertions(+) create mode 100644 radio/tests/param_test_files/inject_params.parm diff --git a/radio/tests/param_test_files/inject_params.parm b/radio/tests/param_test_files/inject_params.parm new file mode 100644 index 000000000..0a0a985d8 --- /dev/null +++ b/radio/tests/param_test_files/inject_params.parm @@ -0,0 +1,1384 @@ +ACRO_BAL_PITCH,1.0 +ACRO_BAL_ROLL,2.0 +ACRO_OPTIONS,0.0 +ACRO_RP_EXPO,0.30000001192092896 +ACRO_RP_RATE,360.0 +ACRO_RP_RATE_TC,0.0 +ACRO_THR_MID,0.0 +ACRO_TRAINER,2.0 +ACRO_Y_EXPO,0.0 +ACRO_Y_RATE,202.5 +ACRO_Y_RATE_TC,0.0 +ADSB_TYPE,0.0 +AHRS_COMP_BETA,0.10000000149011612 +AHRS_EKF_TYPE,3.0 +AHRS_GPS_GAIN,1.0 +# This is a completely different value than the original params +AHRS_GPS_MINSATS,12.0 +AHRS_GPS_USE,1.0 +AHRS_OPTIONS,0.0 +AHRS_ORIENTATION,0.0 +AHRS_RP_P,0.20000000298023224 +AHRS_TRIM_X,0.0 +AHRS_TRIM_Y,0.0 +AHRS_TRIM_Z,0.0 +AHRS_WIND_MAX,0.0 +AHRS_YAW_P,0.20000000298023224 +ANGLE_MAX,3000.0 +ARMING_ACCTHRESH,0.75 +ARMING_CHECK,1.0 +ARMING_MAGTHRESH,100.0 +ARMING_MIS_ITEMS,0.0 +ARMING_OPTIONS,0.0 +ARMING_RUDDER,2.0 +ARSPD_ENABLE,0.0 +ATC_ACCEL_P_MAX,110000.0 +ATC_ACCEL_R_MAX,110000.0 +ATC_ACCEL_Y_MAX,27000.0 +ATC_ANGLE_BOOST,1.0 +ATC_ANG_LIM_TC,1.0 +ATC_ANG_PIT_P,4.5 +ATC_ANG_RLL_P,4.5 +ATC_ANG_YAW_P,4.5 +ATC_INPUT_TC,0.15000000596046448 +ATC_LAND_P_MULT,1.0 +ATC_LAND_R_MULT,1.0 +ATC_LAND_Y_MULT,1.0 +ATC_RATE_FF_ENAB,1.0 +ATC_RATE_P_MAX,0.0 +ATC_RATE_R_MAX,0.0 +ATC_RATE_Y_MAX,0.0 +ATC_RAT_PIT_D,0.003599999938160181 +ATC_RAT_PIT_D_FF,0.0 +ATC_RAT_PIT_FF,0.0 +ATC_RAT_PIT_FLTD,20.0 +ATC_RAT_PIT_FLTE,0.0 +ATC_RAT_PIT_FLTT,20.0 +ATC_RAT_PIT_I,0.13500000536441803 +ATC_RAT_PIT_IMAX,0.5 +ATC_RAT_PIT_NEF,0.0 +ATC_RAT_PIT_NTF,0.0 +ATC_RAT_PIT_P,0.13500000536441803 +ATC_RAT_PIT_PDMX,0.0 +ATC_RAT_PIT_SMAX,0.0 +ATC_RAT_RLL_D,0.003599999938160181 +ATC_RAT_RLL_D_FF,0.0 +ATC_RAT_RLL_FF,0.0 +ATC_RAT_RLL_FLTD,20.0 +ATC_RAT_RLL_FLTE,0.0 +ATC_RAT_RLL_FLTT,20.0 +ATC_RAT_RLL_I,0.13500000536441803 +ATC_RAT_RLL_IMAX,0.5 +ATC_RAT_RLL_NEF,0.0 +ATC_RAT_RLL_NTF,0.0 +ATC_RAT_RLL_P,0.13500000536441803 +ATC_RAT_RLL_PDMX,0.0 +ATC_RAT_RLL_SMAX,0.0 +ATC_RAT_YAW_D,0.0 +ATC_RAT_YAW_D_FF,0.0 +ATC_RAT_YAW_FF,0.0 +ATC_RAT_YAW_FLTD,20.0 +ATC_RAT_YAW_FLTE,2.5 +ATC_RAT_YAW_FLTT,20.0 +ATC_RAT_YAW_I,0.019999999552965164 +ATC_RAT_YAW_IMAX,0.5 +ATC_RAT_YAW_NEF,0.0 +ATC_RAT_YAW_NTF,0.0 +ATC_RAT_YAW_P,0.30000001192092896 +ATC_RAT_YAW_PDMX,0.0 +ATC_RAT_YAW_SMAX,0.0 +ATC_SLEW_YAW,6000.0 +ATC_THR_G_BOOST,0.0 +ATC_THR_MIX_MAN,0.10000000149011612 +ATC_THR_MIX_MAX,0.5 +ATC_THR_MIX_MIN,0.10000000149011612 +AUTOTUNE_AGGR,0.07500000298023224 +AUTOTUNE_AXES,7.0 +AUTOTUNE_MIN_D,0.0005000000237487257 +AUTO_OPTIONS,0.0 +AVD_ENABLE,0.0 +AVOID_ACCEL_MAX,3.0 +AVOID_ALT_MIN,0.0 +AVOID_ANGLE_MAX,1000.0 +AVOID_BACKUP_DZ,0.10000000149011612 +AVOID_BACKUP_SPD,0.75 +AVOID_BACKZ_SPD,0.75 +AVOID_BEHAVE,0.0 +AVOID_DIST_MAX,5.0 +AVOID_ENABLE,3.0 +AVOID_MARGIN,2.0 +BARO1_DEVID,65540.0 +BARO1_GND_PRESS,101324.984375 +BARO1_WCF_ENABLE,0.0 +BARO2_DEVID,65796.0 +BARO2_GND_PRESS,101324.4609375 +BARO2_WCF_ENABLE,0.0 +BARO3_DEVID,0.0 +BARO3_GND_PRESS,0.0 +BARO3_WCF_ENABLE,0.0 +BARO_ALTERR_MAX,2000.0 +BARO_ALT_OFFSET,0.0 +BARO_EXT_BUS,-1.0 +BARO_FIELD_ELV,0.0 +BARO_FLTR_RNG,0.0 +BARO_GND_TEMP,0.0 +BARO_OPTIONS,0.0 +BARO_PRIMARY,0.0 +BARO_PROBE_EXT,0.0 +BATT2_MONITOR,0.0 +BATT3_MONITOR,0.0 +BATT4_MONITOR,0.0 +BATT5_MONITOR,0.0 +BATT6_MONITOR,0.0 +BATT7_MONITOR,0.0 +BATT8_MONITOR,0.0 +BATT9_MONITOR,0.0 +BATT_AMP_OFFSET,0.0 +BATT_AMP_PERVLT,17.0 +BATT_ARM_MAH,0.0 +BATT_ARM_VOLT,0.0 +BATT_CAPACITY,3300.0 +BATT_CRT_MAH,0.0 +BATT_CRT_VOLT,0.0 +BATT_CURR_PIN,12.0 +BATT_FS_CRT_ACT,0.0 +BATT_FS_LOW_ACT,0.0 +BATT_FS_VOLTSRC,0.0 +BATT_LOW_MAH,0.0 +BATT_LOW_TIMER,10.0 +BATT_LOW_VOLT,10.5 +BATT_MONITOR,4.0 +BATT_OPTIONS,0.0 +BATT_SERIAL_NUM,-1.0 +BATT_VLT_OFFSET,0.0 +BATT_VOLT_MULT,10.100000381469727 +BATT_VOLT_PIN,13.0 +BCN_TYPE,0.0 +BRD_BOOT_DELAY,0.0 +BRD_OPTIONS,0.0 +BRD_RTC_TYPES,1.0 +BRD_RTC_TZ_MIN,0.0 +BRD_SAFETYOPTION,3.0 +BRD_SAFETY_DEFLT,0.0 +BRD_SAFETY_MASK,16368.0 +BRD_SD_FENCE,0.0 +BRD_SD_MISSION,0.0 +BRD_SERIAL_NUM,0.0 +BRD_VBUS_MIN,4.300000190734863 +BRD_VSERVO_MIN,0.0 +BTN_ENABLE,0.0 +CAM1_TYPE,0.0 +CAM2_TYPE,0.0 +CAM_AUTO_ONLY,0.0 +CAM_MAX_ROLL,0.0 +CAN_D1_PROTOCOL,1.0 +CAN_D1_PROTOCOL2,0.0 +CAN_D2_PROTOCOL,1.0 +CAN_D2_PROTOCOL2,0.0 +CAN_LOGLEVEL,0.0 +CAN_P1_DRIVER,0.0 +CAN_P2_DRIVER,0.0 +CC_TYPE,0.0 +CHUTE_ENABLED,0.0 +CIRCLE_OPTIONS,1.0 +CIRCLE_RADIUS,1000.0 +CIRCLE_RATE,20.0 +COMPASS_AUTODEC,1.0 +COMPASS_AUTO_ROT,2.0 +COMPASS_CAL_FIT,16.0 +COMPASS_DEC,0.004436454735696316 +COMPASS_DEV_ID,97539.0 +COMPASS_DEV_ID2,131874.0 +COMPASS_DEV_ID3,263178.0 +COMPASS_DEV_ID4,97283.0 +COMPASS_DEV_ID5,97795.0 +COMPASS_DEV_ID6,98051.0 +COMPASS_DEV_ID7,0.0 +COMPASS_DEV_ID8,0.0 +COMPASS_DIA2_X,1.0 +COMPASS_DIA2_Y,1.0 +COMPASS_DIA2_Z,1.0 +COMPASS_DIA3_X,1.0 +COMPASS_DIA3_Y,1.0 +COMPASS_DIA3_Z,1.0 +COMPASS_DIA_X,1.0 +COMPASS_DIA_Y,1.0 +COMPASS_DIA_Z,1.0 +COMPASS_DISBLMSK,0.0 +COMPASS_ENABLE,1.0 +COMPASS_EXTERN2,0.0 +COMPASS_EXTERN3,0.0 +COMPASS_EXTERNAL,1.0 +COMPASS_FLTR_RNG,0.0 +COMPASS_LEARN,0.0 +COMPASS_MOT2_X,0.0 +COMPASS_MOT2_Y,0.0 +COMPASS_MOT2_Z,0.0 +COMPASS_MOT3_X,0.0 +COMPASS_MOT3_Y,0.0 +COMPASS_MOT3_Z,0.0 +COMPASS_MOTCT,0.0 +COMPASS_MOT_X,0.0 +COMPASS_MOT_Y,0.0 +COMPASS_MOT_Z,0.0 +COMPASS_ODI2_X,0.0 +COMPASS_ODI2_Y,0.0 +COMPASS_ODI2_Z,0.0 +COMPASS_ODI3_X,0.0 +COMPASS_ODI3_Y,0.0 +COMPASS_ODI3_Z,0.0 +COMPASS_ODI_X,0.0 +COMPASS_ODI_Y,0.0 +COMPASS_ODI_Z,0.0 +COMPASS_OFFS_MAX,1800.0 +COMPASS_OFS2_X,5.0 +COMPASS_OFS2_Y,13.0 +COMPASS_OFS2_Z,-18.0 +COMPASS_OFS3_X,5.0 +COMPASS_OFS3_Y,13.0 +COMPASS_OFS3_Z,-18.0 +COMPASS_OFS_X,5.0 +COMPASS_OFS_Y,13.0 +COMPASS_OFS_Z,-18.0 +COMPASS_OPTIONS,0.0 +COMPASS_ORIENT,0.0 +COMPASS_ORIENT2,0.0 +COMPASS_ORIENT3,0.0 +COMPASS_PMOT_EN,0.0 +COMPASS_PRIO1_ID,97539.0 +COMPASS_PRIO2_ID,131874.0 +COMPASS_PRIO3_ID,263178.0 +COMPASS_SCALE,1.0 +COMPASS_SCALE2,1.0 +COMPASS_SCALE3,1.0 +COMPASS_USE,1.0 +COMPASS_USE2,1.0 +COMPASS_USE3,1.0 +CUST_ROT_ENABLE,0.0 +DEV_OPTIONS,0.0 +DID_ENABLE,0.0 +DISARM_DELAY,10.0 +EAHRS_TYPE,0.0 +EFI_TYPE,0.0 +EK2_ENABLE,0.0 +EK3_ABIAS_P_NSE,0.019999999552965164 +EK3_ACC_BIAS_LIM,1.0 +EK3_ACC_P_NSE,0.3499999940395355 +EK3_AFFINITY,0.0 +EK3_ALT_M_NSE,2.0 +EK3_BCN_DELAY,50.0 +EK3_BCN_I_GTE,500.0 +EK3_BCN_M_NSE,1.0 +EK3_BETA_MASK,0.0 +EK3_CHECK_SCALE,100.0 +EK3_DRAG_BCOEF_X,0.0 +EK3_DRAG_BCOEF_Y,0.0 +EK3_DRAG_MCOEF,0.0 +EK3_DRAG_M_NSE,0.5 +EK3_EAS_I_GATE,400.0 +EK3_EAS_M_NSE,1.399999976158142 +EK3_ENABLE,1.0 +EK3_ERR_THRESH,0.20000000298023224 +EK3_FLOW_DELAY,10.0 +EK3_FLOW_I_GATE,300.0 +EK3_FLOW_M_NSE,0.25 +EK3_FLOW_USE,1.0 +EK3_GBIAS_P_NSE,0.0010000000474974513 +EK3_GLITCH_RAD,25.0 +EK3_GND_EFF_DZ,4.0 +EK3_GPS_CHECK,31.0 +EK3_GPS_VACC_MAX,0.0 +EK3_GSF_RST_MAX,2.0 +EK3_GSF_RUN_MASK,3.0 +EK3_GSF_USE_MASK,3.0 +EK3_GYRO_P_NSE,0.014999999664723873 +EK3_HGT_DELAY,60.0 +EK3_HGT_I_GATE,500.0 +EK3_HRT_FILT,2.0 +EK3_IMU_MASK,3.0 +EK3_LOG_LEVEL,0.0 +EK3_MAGB_P_NSE,9.999999747378752e-05 +EK3_MAGE_P_NSE,0.0010000000474974513 +EK3_MAG_CAL,3.0 +EK3_MAG_EF_LIM,50.0 +EK3_MAG_I_GATE,300.0 +EK3_MAG_MASK,0.0 +EK3_MAG_M_NSE,0.05000000074505806 +EK3_MAX_FLOW,2.5 +EK3_NOAID_M_NSE,10.0 +EK3_OGNM_TEST_SF,2.0 +EK3_OGN_HGT_MASK,0.0 +EK3_OPTIONS,0.0 +EK3_POSNE_M_NSE,0.5 +EK3_POS_I_GATE,500.0 +EK3_PRIMARY,0.0 +EK3_RNG_I_GATE,500.0 +EK3_RNG_M_NSE,0.5 +EK3_RNG_USE_HGT,-1.0 +EK3_RNG_USE_SPD,2.0 +EK3_SRC1_POSXY,3.0 +EK3_SRC1_POSZ,1.0 +EK3_SRC1_VELXY,3.0 +EK3_SRC1_VELZ,3.0 +EK3_SRC1_YAW,1.0 +EK3_SRC2_POSXY,0.0 +EK3_SRC2_POSZ,1.0 +EK3_SRC2_VELXY,0.0 +EK3_SRC2_VELZ,0.0 +EK3_SRC2_YAW,0.0 +EK3_SRC3_POSXY,0.0 +EK3_SRC3_POSZ,1.0 +EK3_SRC3_VELXY,0.0 +EK3_SRC3_VELZ,0.0 +EK3_SRC3_YAW,0.0 +EK3_SRC_OPTIONS,1.0 +EK3_TAU_OUTPUT,25.0 +EK3_TERR_GRAD,0.10000000149011612 +EK3_VELD_M_NSE,0.5 +EK3_VELNE_M_NSE,0.30000001192092896 +EK3_VEL_I_GATE,500.0 +EK3_VIS_VERR_MAX,0.8999999761581421 +EK3_VIS_VERR_MIN,0.10000000149011612 +EK3_WENC_VERR,0.10000000149011612 +EK3_WIND_PSCALE,1.0 +EK3_WIND_P_NSE,0.20000000298023224 +EK3_YAW_I_GATE,300.0 +EK3_YAW_M_NSE,0.5 +ESC_CALIBRATION,0.0 +ESC_TLM_MAV_OFS,0.0 +FENCE_ACTION,1.0 +FENCE_ALT_MAX,100.0 +FENCE_ALT_MIN,-10.0 +FENCE_AUTOENABLE,0.0 +FENCE_ENABLE,0.0 +FENCE_MARGIN,2.0 +FENCE_OPTIONS,0.0 +FENCE_RADIUS,150.0 +FENCE_TOTAL,0.0 +FENCE_TYPE,7.0 +FFT_ENABLE,0.0 +FHLD_BRAKE_RATE,8.0 +FHLD_FILT_HZ,5.0 +FHLD_FLOW_MAX,0.6000000238418579 +FHLD_QUAL_MIN,10.0 +FHLD_XY_FILT_HZ,5.0 +FHLD_XY_I,0.30000001192092896 +FHLD_XY_IMAX,3000.0 +FHLD_XY_P,0.20000000298023224 +FILT1_TYPE,0.0 +FILT2_TYPE,0.0 +FILT3_TYPE,0.0 +FILT4_TYPE,0.0 +FILT5_TYPE,0.0 +FILT6_TYPE,0.0 +FILT7_TYPE,0.0 +FILT8_TYPE,0.0 +FLIGHT_OPTIONS,0.0 +FLOW_TYPE,0.0 +FLTMODE1,7.0 +FLTMODE2,9.0 +FLTMODE3,6.0 +FLTMODE4,3.0 +FLTMODE5,5.0 +FLTMODE6,0.0 +FLTMODE_CH,5.0 +FLTMODE_GCSBLOCK,0.0 +FOLL_ENABLE,0.0 +FORMAT_VERSION,120.0 +FRAME_CLASS,1.0 +FRAME_TYPE,0.0 +FRSKY_DNLINK1_ID,20.0 +FRSKY_DNLINK2_ID,7.0 +FRSKY_DNLINK_ID,27.0 +FRSKY_OPTIONS,0.0 +FRSKY_UPLINK_ID,13.0 +FSTRATE_DIV,1.0 +FSTRATE_ENABLE,0.0 +FS_CRASH_CHECK,1.0 +FS_DR_ENABLE,2.0 +FS_DR_TIMEOUT,30.0 +FS_EKF_ACTION,1.0 +FS_EKF_FILT,5.0 +FS_EKF_THRESH,0.800000011920929 +FS_GCS_ENABLE,0.0 +FS_GCS_TIMEOUT,5.0 +FS_OPTIONS,16.0 +FS_THR_ENABLE,1.0 +FS_THR_VALUE,975.0 +FS_VIBE_ENABLE,1.0 +GCS_PID_MASK,0.0 +GEN_TYPE,0.0 +GND_EFFECT_COMP,1.0 +GPS1_CAN_NODEID,0.0 +GPS1_CAN_OVRIDE,0.0 +GPS1_COM_PORT,1.0 +GPS1_DELAY_MS,0.0 +GPS1_GNSS_MODE,0.0 +GPS1_MB_TYPE,0.0 +GPS1_POS_X,0.0 +GPS1_POS_Y,0.0 +GPS1_POS_Z,0.0 +GPS1_RATE_MS,200.0 +GPS1_TYPE,1.0 +GPS2_TYPE,0.0 +GPS_AUTO_CONFIG,1.0 +GPS_AUTO_SWITCH,1.0 +GPS_BLEND_MASK,5.0 +GPS_DRV_OPTIONS,0.0 +GPS_HDOP_GOOD,140.0 +GPS_INJECT_TO,127.0 +GPS_MIN_ELEV,-100.0 +GPS_NAVFILTER,8.0 +GPS_PRIMARY,0.0 +GPS_RAW_DATA,0.0 +GPS_SAVE_CFG,2.0 +GPS_SBAS_MODE,2.0 +GPS_SBP_LOGMASK,-256.0 +GRIP_AUTOCLOSE,0.0 +GRIP_CAN_ID,0.0 +GRIP_ENABLE,1.0 +GRIP_GRAB,1900.0 +GRIP_NEUTRAL,1500.0 +GRIP_REGRAB,0.0 +GRIP_RELEASE,1100.0 +GRIP_TYPE,1.0 +GUID_OPTIONS,0.0 +GUID_TIMEOUT,3.0 +INITIAL_MODE,0.0 +INS_ACC1_CALTEMP,-300.0 +INS_ACC2OFFS_X,0.0010000000474974513 +INS_ACC2OFFS_Y,0.0010000000474974513 +INS_ACC2OFFS_Z,0.0010000000474974513 +INS_ACC2SCAL_X,1.0010000467300415 +INS_ACC2SCAL_Y,1.0010000467300415 +INS_ACC2SCAL_Z,1.0010000467300415 +INS_ACC2_CALTEMP,-300.0 +INS_ACC2_ID,2753036.0 +INS_ACC3OFFS_X,0.0 +INS_ACC3OFFS_Y,0.0 +INS_ACC3OFFS_Z,0.0 +INS_ACC3SCAL_X,1.0 +INS_ACC3SCAL_Y,1.0 +INS_ACC3SCAL_Z,1.0 +INS_ACC3_CALTEMP,-300.0 +INS_ACC3_ID,0.0 +INS_ACCEL_FILTER,20.0 +INS_ACCOFFS_X,0.0010000000474974513 +INS_ACCOFFS_Y,0.0010000000474974513 +INS_ACCOFFS_Z,0.0010000000474974513 +INS_ACCSCAL_X,1.0010000467300415 +INS_ACCSCAL_Y,1.0010000467300415 +INS_ACCSCAL_Z,1.0010000467300415 +INS_ACC_BODYFIX,2.0 +INS_ACC_ID,2753028.0 +INS_ENABLE_MASK,127.0 +INS_FAST_SAMPLE,1.0 +INS_GYR1_CALTEMP,25.018352508544922 +INS_GYR2OFFS_X,-7.097929483279586e-06 +INS_GYR2OFFS_Y,4.897954931948334e-05 +INS_GYR2OFFS_Z,2.5458299205638468e-05 +INS_GYR2_CALTEMP,25.018352508544922 +INS_GYR2_ID,2752780.0 +INS_GYR3OFFS_X,0.0 +INS_GYR3OFFS_Y,0.0 +INS_GYR3OFFS_Z,0.0 +INS_GYR3_CALTEMP,-300.0 +INS_GYR3_ID,0.0 +INS_GYROFFS_X,2.155931360903196e-05 +INS_GYROFFS_Y,2.021121690631844e-05 +INS_GYROFFS_Z,2.463334567437414e-05 +INS_GYRO_FILTER,20.0 +INS_GYRO_RATE,0.0 +INS_GYR_CAL,1.0 +INS_GYR_ID,2752772.0 +INS_HNTC2_ENABLE,0.0 +INS_HNTCH_ENABLE,0.0 +INS_LOG_BAT_CNT,1024.0 +INS_LOG_BAT_LGCT,32.0 +INS_LOG_BAT_LGIN,20.0 +INS_LOG_BAT_MASK,0.0 +INS_LOG_BAT_OPT,0.0 +INS_POS1_X,0.0 +INS_POS1_Y,0.0 +INS_POS1_Z,0.0 +INS_POS2_X,0.0 +INS_POS2_Y,0.0 +INS_POS2_Z,0.0 +INS_POS3_X,0.0 +INS_POS3_Y,0.0 +INS_POS3_Z,0.0 +INS_RAW_LOG_OPT,0.0 +INS_STILL_THRESH,2.5 +INS_TCAL1_ENABLE,0.0 +INS_TCAL2_ENABLE,0.0 +INS_TCAL3_ENABLE,0.0 +INS_TCAL_OPTIONS,0.0 +INS_TRIM_OPTION,1.0 +INS_USE,1.0 +INS_USE2,1.0 +INS_USE3,1.0 +KDE_NPOLE,14.0 +LAND_ALT_LOW,1000.0 +LAND_REPOSITION,1.0 +LAND_SPEED,50.0 +LAND_SPEED_HIGH,0.0 +LGR_ENABLE,0.0 +LOG_BACKEND_TYPE,1.0 +LOG_BITMASK,176126.0 +LOG_BLK_RATEMAX,0.0 +LOG_DARM_RATEMAX,0.0 +LOG_DISARMED,0.0 +LOG_FILE_BUFSIZE,200.0 +LOG_FILE_DSRMROT,0.0 +LOG_FILE_MB_FREE,500.0 +LOG_FILE_RATEMAX,0.0 +LOG_FILE_TIMEOUT,5.0 +LOG_MAV_BUFSIZE,8.0 +LOG_MAV_RATEMAX,0.0 +LOG_MAX_FILES,500.0 +LOG_REPLAY,0.0 +LOIT_ACC_MAX,500.0 +LOIT_ANG_MAX,0.0 +LOIT_BRK_ACCEL,250.0 +LOIT_BRK_DELAY,1.0 +LOIT_BRK_JERK,500.0 +LOIT_SPEED,1250.0 +MIS_OPTIONS,0.0 +MIS_RESTART,0.0 +MIS_TOTAL,8.0 +MNT1_TYPE,0.0 +MNT2_TYPE,0.0 +MOT_BAT_CURR_MAX,0.0 +MOT_BAT_CURR_TC,5.0 +MOT_BAT_IDX,0.0 +MOT_BAT_VOLT_MAX,12.800000190734863 +MOT_BAT_VOLT_MIN,9.600000381469727 +MOT_BOOST_SCALE,0.0 +MOT_HOVER_LEARN,2.0 +MOT_OPTIONS,0.0 +MOT_PWM_MAX,2000.0 +MOT_PWM_MIN,1000.0 +MOT_PWM_TYPE,0.0 +MOT_SAFE_DISARM,0.0 +MOT_SAFE_TIME,1.0 +MOT_SLEW_DN_TIME,0.0 +MOT_SLEW_UP_TIME,0.0 +MOT_SPIN_ARM,0.10000000149011612 +MOT_SPIN_MAX,0.949999988079071 +MOT_SPIN_MIN,0.15000000596046448 +MOT_SPOOL_TIME,0.5 +MOT_SPOOL_TIM_DN,0.0 +MOT_THST_EXPO,0.6499999761581421 +MOT_THST_HOVER,0.38999998569488525 +MOT_YAW_HEADROOM,200.0 +MSP_OPTIONS,0.0 +MSP_OSD_NCELLS,0.0 +NET_ENABLE,0.0 +NET_P1_TYPE,0.0 +NET_P2_TYPE,0.0 +NET_P3_TYPE,0.0 +NET_P4_TYPE,0.0 +NMEA_MSG_EN,3.0 +NMEA_RATE_MS,100.0 +NTF_BUZZ_ON_LVL,1.0 +NTF_BUZZ_PIN,-1.0 +NTF_BUZZ_TYPES,5.0 +NTF_BUZZ_VOLUME,100.0 +NTF_DISPLAY_TYPE,0.0 +NTF_LED_BRIGHT,3.0 +NTF_LED_LEN,1.0 +NTF_LED_OVERRIDE,0.0 +NTF_LED_TYPES,123079.0 +OA_TYPE,0.0 +OSD_TYPE,0.0 +PHLD_BRAKE_ANGLE,3000.0 +PHLD_BRAKE_RATE,8.0 +PILOT_ACCEL_Z,250.0 +PILOT_SPEED_DN,0.0 +PILOT_SPEED_UP,250.0 +PILOT_THR_BHV,0.0 +PILOT_THR_FILT,0.0 +PILOT_TKOFF_ALT,0.0 +PILOT_Y_EXPO,0.0 +PILOT_Y_RATE,202.5 +PILOT_Y_RATE_TC,0.0 +PLDP_DELAY,0.0 +PLDP_RNG_MAX,0.0 +PLDP_SPEED_DN,0.0 +PLDP_THRESH,0.8999999761581421 +PLND_ENABLED,0.0 +PRX1_TYPE,0.0 +PRX2_TYPE,0.0 +PRX3_TYPE,0.0 +PRX_ALT_MIN,1.0 +PRX_FILT,0.25 +PRX_IGN_GND,0.0 +PRX_LOG_RAW,0.0 +PSC_ACCZ_D,0.0 +PSC_ACCZ_D_FF,0.0 +PSC_ACCZ_FF,0.0 +PSC_ACCZ_FLTD,0.0 +PSC_ACCZ_FLTE,20.0 +PSC_ACCZ_FLTT,0.0 +PSC_ACCZ_I,1.0 +PSC_ACCZ_IMAX,800.0 +PSC_ACCZ_NEF,0.0 +PSC_ACCZ_NTF,0.0 +PSC_ACCZ_P,0.5 +PSC_ACCZ_PDMX,0.0 +PSC_ACCZ_SMAX,0.0 +PSC_ANGLE_MAX,0.0 +PSC_JERK_XY,5.0 +PSC_JERK_Z,5.0 +PSC_POSXY_P,1.0 +PSC_POSZ_P,1.0 +PSC_VELXY_D,0.5 +PSC_VELXY_FF,0.0 +PSC_VELXY_FLTD,5.0 +PSC_VELXY_FLTE,5.0 +PSC_VELXY_I,1.0 +PSC_VELXY_IMAX,1000.0 +PSC_VELXY_P,2.0 +PSC_VELZ_D,0.0 +PSC_VELZ_FF,0.0 +PSC_VELZ_FLTD,5.0 +PSC_VELZ_FLTE,5.0 +PSC_VELZ_I,0.0 +PSC_VELZ_IMAX,1000.0 +PSC_VELZ_P,5.0 +RALLY_INCL_HOME,1.0 +RALLY_LIMIT_KM,0.30000001192092896 +RALLY_TOTAL,0.0 +RC10_DZ,0.0 +RC10_MAX,1900.0 +RC10_MIN,1100.0 +RC10_OPTION,0.0 +RC10_REVERSED,0.0 +RC10_TRIM,1500.0 +RC11_DZ,0.0 +RC11_MAX,1900.0 +RC11_MIN,1100.0 +RC11_OPTION,0.0 +RC11_REVERSED,0.0 +RC11_TRIM,1500.0 +RC12_DZ,0.0 +RC12_MAX,1900.0 +RC12_MIN,1100.0 +RC12_OPTION,0.0 +RC12_REVERSED,0.0 +RC12_TRIM,1500.0 +RC13_DZ,0.0 +RC13_MAX,1900.0 +RC13_MIN,1100.0 +RC13_OPTION,0.0 +RC13_REVERSED,0.0 +RC13_TRIM,1500.0 +RC14_DZ,0.0 +RC14_MAX,1900.0 +RC14_MIN,1100.0 +RC14_OPTION,0.0 +RC14_REVERSED,0.0 +RC14_TRIM,1500.0 +RC15_DZ,0.0 +RC15_MAX,1900.0 +RC15_MIN,1100.0 +RC15_OPTION,0.0 +RC15_REVERSED,0.0 +RC15_TRIM,1500.0 +RC16_DZ,0.0 +RC16_MAX,1900.0 +RC16_MIN,1100.0 +RC16_OPTION,0.0 +RC16_REVERSED,0.0 +RC16_TRIM,1500.0 +RC1_DZ,20.0 +RC1_MAX,2000.0 +RC1_MIN,1000.0 +RC1_OPTION,0.0 +RC1_REVERSED,0.0 +RC1_TRIM,1500.0 +RC2_DZ,20.0 +RC2_MAX,2000.0 +RC2_MIN,1000.0 +RC2_OPTION,0.0 +RC2_REVERSED,0.0 +RC2_TRIM,1500.0 +RC3_DZ,30.0 +RC3_MAX,2000.0 +RC3_MIN,1000.0 +RC3_OPTION,0.0 +RC3_REVERSED,0.0 +RC3_TRIM,1500.0 +RC4_DZ,20.0 +RC4_MAX,2000.0 +RC4_MIN,1000.0 +RC4_OPTION,0.0 +RC4_REVERSED,0.0 +RC4_TRIM,1500.0 +RC5_DZ,0.0 +RC5_MAX,2000.0 +RC5_MIN,1000.0 +RC5_OPTION,0.0 +RC5_REVERSED,0.0 +RC5_TRIM,1500.0 +RC6_DZ,0.0 +RC6_MAX,2000.0 +RC6_MIN,1000.0 +RC6_OPTION,0.0 +RC6_REVERSED,0.0 +RC6_TRIM,1500.0 +RC7_DZ,0.0 +RC7_MAX,2000.0 +RC7_MIN,1000.0 +RC7_OPTION,7.0 +RC7_REVERSED,0.0 +RC7_TRIM,1500.0 +RC8_DZ,0.0 +RC8_MAX,2000.0 +RC8_MIN,1000.0 +RC8_OPTION,0.0 +RC8_REVERSED,0.0 +RC8_TRIM,1500.0 +RC9_DZ,0.0 +RC9_MAX,1900.0 +RC9_MIN,1100.0 +RC9_OPTION,0.0 +RC9_REVERSED,0.0 +RC9_TRIM,1500.0 +RCMAP_PITCH,2.0 +RCMAP_ROLL,1.0 +RCMAP_THROTTLE,3.0 +RCMAP_YAW,4.0 +RC_FS_TIMEOUT,1.0 +RC_OPTIONS,32.0 +RC_OVERRIDE_TIME,3.0 +RC_PROTOCOLS,1.0 +RC_SPEED,490.0 +RELAY1_DEFAULT,0.0 +RELAY1_FUNCTION,1.0 +RELAY1_INVERTED,0.0 +RELAY1_PIN,13.0 +RELAY2_FUNCTION,0.0 +RELAY3_FUNCTION,0.0 +RELAY4_FUNCTION,0.0 +RELAY5_FUNCTION,0.0 +RELAY6_FUNCTION,0.0 +RNGFND1_TYPE,0.0 +RNGFND2_TYPE,0.0 +RNGFND3_TYPE,0.0 +RNGFND4_TYPE,0.0 +RNGFND5_TYPE,0.0 +RNGFND6_TYPE,0.0 +RNGFND7_TYPE,0.0 +RNGFND8_TYPE,0.0 +RNGFND9_TYPE,0.0 +RNGFNDA_TYPE,0.0 +RNGFND_FILT,0.5 +RPM1_TYPE,0.0 +RPM2_TYPE,0.0 +RSSI_TYPE,0.0 +RTL_ALT,1500.0 +RTL_ALT_FINAL,0.0 +RTL_ALT_TYPE,0.0 +RTL_CLIMB_MIN,0.0 +RTL_CONE_SLOPE,3.0 +RTL_LOIT_TIME,5000.0 +RTL_OPTIONS,0.0 +RTL_SPEED,0.0 +SCHED_DEBUG,0.0 +SCHED_LOOP_RATE,400.0 +SCHED_OPTIONS,0.0 +SCR_ENABLE,0.0 +SERIAL0_BAUD,115.0 +SERIAL0_PROTOCOL,2.0 +SERIAL1_BAUD,57.0 +SERIAL1_OPTIONS,0.0 +SERIAL1_PROTOCOL,2.0 +SERIAL2_BAUD,57.0 +SERIAL2_OPTIONS,0.0 +SERIAL2_PROTOCOL,2.0 +SERIAL3_BAUD,230.0 +SERIAL3_OPTIONS,0.0 +SERIAL3_PROTOCOL,5.0 +SERIAL4_BAUD,230.0 +SERIAL4_OPTIONS,0.0 +SERIAL4_PROTOCOL,5.0 +SERIAL5_BAUD,57.0 +SERIAL5_OPTIONS,0.0 +SERIAL5_PROTOCOL,-1.0 +SERIAL6_BAUD,57.0 +SERIAL6_OPTIONS,0.0 +SERIAL6_PROTOCOL,-1.0 +SERIAL7_BAUD,57.0 +SERIAL7_OPTIONS,0.0 +SERIAL7_PROTOCOL,-1.0 +SERIAL_PASS1,0.0 +SERIAL_PASS2,-1.0 +SERIAL_PASSTIMO,15.0 +SERVO10_FUNCTION,0.0 +SERVO10_MAX,1900.0 +SERVO10_MIN,1100.0 +SERVO10_REVERSED,0.0 +SERVO10_TRIM,1500.0 +SERVO11_FUNCTION,0.0 +SERVO11_MAX,1900.0 +SERVO11_MIN,1100.0 +SERVO11_REVERSED,0.0 +SERVO11_TRIM,1500.0 +SERVO12_FUNCTION,0.0 +SERVO12_MAX,1900.0 +SERVO12_MIN,1100.0 +SERVO12_REVERSED,0.0 +SERVO12_TRIM,1500.0 +SERVO13_FUNCTION,0.0 +SERVO13_MAX,1900.0 +SERVO13_MIN,1100.0 +SERVO13_REVERSED,0.0 +SERVO13_TRIM,1500.0 +SERVO14_FUNCTION,0.0 +SERVO14_MAX,1900.0 +SERVO14_MIN,1100.0 +SERVO14_REVERSED,0.0 +SERVO14_TRIM,1500.0 +SERVO15_FUNCTION,0.0 +SERVO15_MAX,1900.0 +SERVO15_MIN,1100.0 +SERVO15_REVERSED,0.0 +SERVO15_TRIM,1500.0 +SERVO16_FUNCTION,0.0 +SERVO16_MAX,1900.0 +SERVO16_MIN,1100.0 +SERVO16_REVERSED,0.0 +SERVO16_TRIM,1500.0 +SERVO1_FUNCTION,33.0 +SERVO1_MAX,1900.0 +SERVO1_MIN,1100.0 +SERVO1_REVERSED,0.0 +SERVO1_TRIM,1500.0 +SERVO2_FUNCTION,34.0 +SERVO2_MAX,1900.0 +SERVO2_MIN,1100.0 +SERVO2_REVERSED,0.0 +SERVO2_TRIM,1500.0 +SERVO3_FUNCTION,35.0 +SERVO3_MAX,1900.0 +SERVO3_MIN,1100.0 +SERVO3_REVERSED,0.0 +SERVO3_TRIM,1500.0 +SERVO4_FUNCTION,36.0 +SERVO4_MAX,1900.0 +SERVO4_MIN,1100.0 +SERVO4_REVERSED,0.0 +SERVO4_TRIM,1500.0 +SERVO5_FUNCTION,0.0 +SERVO5_MAX,1900.0 +SERVO5_MIN,1100.0 +SERVO5_REVERSED,0.0 +SERVO5_TRIM,1500.0 +SERVO6_FUNCTION,0.0 +SERVO6_MAX,1900.0 +SERVO6_MIN,1100.0 +SERVO6_REVERSED,0.0 +SERVO6_TRIM,1500.0 +SERVO7_FUNCTION,0.0 +SERVO7_MAX,1900.0 +SERVO7_MIN,1100.0 +SERVO7_REVERSED,0.0 +SERVO7_TRIM,1500.0 +SERVO8_FUNCTION,0.0 +SERVO8_MAX,1900.0 +SERVO8_MIN,1100.0 +SERVO8_REVERSED,0.0 +SERVO8_TRIM,1500.0 +SERVO9_FUNCTION,0.0 +SERVO9_MAX,1900.0 +SERVO9_MIN,1100.0 +SERVO9_REVERSED,0.0 +SERVO9_TRIM,1500.0 +SERVO_32_ENABLE,0.0 +SERVO_DSHOT_ESC,0.0 +SERVO_DSHOT_RATE,0.0 +SERVO_FTW_MASK,0.0 +SERVO_FTW_POLES,14.0 +SERVO_FTW_RVMASK,0.0 +SERVO_GPIO_MASK,0.0 +SERVO_RATE,50.0 +SERVO_RC_FS_MSK,0.0 +SERVO_ROB_POSMAX,4095.0 +SERVO_ROB_POSMIN,0.0 +SERVO_SBUS_RATE,50.0 +SERVO_VOLZ_MASK,0.0 +SERVO_VOLZ_RANGE,200.0 +SID_AXIS,0.0 +SIMPLE,0.0 +SIM_ACC1_BIAS_X,0.0 +SIM_ACC1_BIAS_Y,0.0 +SIM_ACC1_BIAS_Z,0.0 +SIM_ACC1_RND,0.0 +SIM_ACC1_SCAL_X,0.0 +SIM_ACC1_SCAL_Y,0.0 +SIM_ACC1_SCAL_Z,0.0 +SIM_ACC2_BIAS_X,0.0 +SIM_ACC2_BIAS_Y,0.0 +SIM_ACC2_BIAS_Z,0.0 +SIM_ACC2_RND,0.0 +SIM_ACC2_SCAL_X,0.0 +SIM_ACC2_SCAL_Y,0.0 +SIM_ACC2_SCAL_Z,0.0 +SIM_ACC3_BIAS_X,0.0 +SIM_ACC3_BIAS_Y,0.0 +SIM_ACC3_BIAS_Z,0.0 +SIM_ACC3_RND,0.0 +SIM_ACC3_SCAL_X,0.0 +SIM_ACC3_SCAL_Y,0.0 +SIM_ACC3_SCAL_Z,0.0 +SIM_ACCEL1_FAIL,0.0 +SIM_ACCEL2_FAIL,0.0 +SIM_ACCEL3_FAIL,0.0 +SIM_ACC_FAIL_MSK,0.0 +SIM_ACC_FILE_RW,0.0 +SIM_ACC_TRIM_X,0.0 +SIM_ACC_TRIM_Y,0.0 +SIM_ACC_TRIM_Z,0.0 +SIM_ADSB_ALT,1000.0 +SIM_ADSB_COUNT,-1.0 +SIM_ADSB_RADIUS,10000.0 +SIM_ADSB_TX,0.0 +SIM_ADSB_TYPES,1.0 +SIM_ARSPD2_FAIL,0.0 +SIM_ARSPD2_FAILP,0.0 +SIM_ARSPD2_OFS,2013.0 +SIM_ARSPD2_PITOT,0.0 +SIM_ARSPD2_RATIO,1.9900000095367432 +SIM_ARSPD2_RND,2.0 +SIM_ARSPD2_SIGN,0.0 +SIM_ARSPD_FAIL,0.0 +SIM_ARSPD_FAILP,0.0 +SIM_ARSPD_OFS,2013.0 +SIM_ARSPD_PITOT,0.0 +SIM_ARSPD_RATIO,1.9900000095367432 +SIM_ARSPD_RND,2.0 +SIM_ARSPD_SIGN,0.0 +SIM_BAR2_DELAY,0.0 +SIM_BAR2_DISABLE,0.0 +SIM_BAR2_DRIFT,0.0 +SIM_BAR2_FREEZE,0.0 +SIM_BAR2_GLITCH,0.0 +SIM_BAR2_RND,0.20000000298023224 +SIM_BAR2_WCF_BAK,0.0 +SIM_BAR2_WCF_DN,0.0 +SIM_BAR2_WCF_FWD,0.0 +SIM_BAR2_WCF_LFT,0.0 +SIM_BAR2_WCF_RGT,0.0 +SIM_BAR2_WCF_UP,0.0 +SIM_BAR3_DELAY,0.0 +SIM_BAR3_DISABLE,0.0 +SIM_BAR3_DRIFT,0.0 +SIM_BAR3_FREEZE,0.0 +SIM_BAR3_GLITCH,0.0 +SIM_BAR3_RND,0.20000000298023224 +SIM_BAR3_WCF_BAK,0.0 +SIM_BAR3_WCF_DN,0.0 +SIM_BAR3_WCF_FWD,0.0 +SIM_BAR3_WCF_LFT,0.0 +SIM_BAR3_WCF_RGT,0.0 +SIM_BAR3_WCF_UP,0.0 +SIM_BARO_COUNT,2.0 +SIM_BARO_DELAY,0.0 +SIM_BARO_DISABLE,0.0 +SIM_BARO_DRIFT,0.0 +SIM_BARO_FREEZE,0.0 +SIM_BARO_GLITCH,0.0 +SIM_BARO_RND,0.0 +SIM_BARO_WCF_BAK,0.0 +SIM_BARO_WCF_DN,0.0 +SIM_BARO_WCF_FWD,0.0 +SIM_BARO_WCF_LFT,0.0 +SIM_BARO_WCF_RGT,0.0 +SIM_BARO_WCF_UP,0.0 +SIM_BATT_CAP_AH,0.0 +SIM_BATT_VOLTAGE,12.600000381469727 +SIM_BAUDLIMIT_EN,0.0 +SIM_CAN_SRV_MSK,0.0 +SIM_CAN_TYPE1,1.0 +SIM_CAN_TYPE2,1.0 +SIM_CLAMP_CH,0.0 +SIM_DRIFT_SPEED,0.05000000074505806 +SIM_DRIFT_TIME,5.0 +SIM_EFI_TYPE,0.0 +SIM_ENGINE_FAIL,0.0 +SIM_ENGINE_MUL,0.0 +SIM_ESC_ARM_RPM,0.0 +SIM_ESC_TELEM,1.0 +SIM_FLOAT_EXCEPT,1.0 +SIM_FLOW_DELAY,0.0 +SIM_FLOW_ENABLE,0.0 +SIM_FLOW_POS_X,0.0 +SIM_FLOW_POS_Y,0.0 +SIM_FLOW_POS_Z,0.0 +SIM_FLOW_RATE,10.0 +SIM_FLOW_RND,0.05000000074505806 +SIM_FTOWESC_ENA,0.0 +SIM_FTOWESC_POW,4095.0 +SIM_GND_BEHAV,-1.0 +SIM_GPS1_ACC,0.30000001192092896 +SIM_GPS1_ALT_OFS,0.0 +SIM_GPS1_BYTELOS,0.0 +SIM_GPS1_DRFTALT,0.0 +SIM_GPS1_ENABLE,1.0 +SIM_GPS1_GLTCH_X,0.0 +SIM_GPS1_GLTCH_Y,0.0 +SIM_GPS1_GLTCH_Z,0.0 +SIM_GPS1_HDG,0.0 +SIM_GPS1_HZ,5.0 +SIM_GPS1_JAM,0.0 +SIM_GPS1_LAG_MS,100.0 +SIM_GPS1_LCKTIME,0.0 +SIM_GPS1_NOISE,0.0 +SIM_GPS1_NUMSATS,10.0 +SIM_GPS1_POS_X,0.0 +SIM_GPS1_POS_Y,0.0 +SIM_GPS1_POS_Z,0.0 +SIM_GPS1_TYPE,1.0 +SIM_GPS1_VERR_X,0.0 +SIM_GPS1_VERR_Y,0.0 +SIM_GPS1_VERR_Z,0.0 +SIM_GPS2_ENABLE,0.0 +SIM_GPS3_ENABLE,0.0 +SIM_GPS4_ENABLE,0.0 +SIM_GPS_LOG_NUM,0.0 +SIM_GRPE_ENABLE,0.0 +SIM_GRPE_PIN,-1.0 +SIM_GRPS_ENABLE,0.0 +SIM_GRPS_GRAB,2000.0 +SIM_GRPS_PIN,-1.0 +SIM_GRPS_RELEASE,1000.0 +SIM_GRPS_REVERSE,0.0 +SIM_GYR1_BIAS_X,0.0 +SIM_GYR1_BIAS_Y,0.0 +SIM_GYR1_BIAS_Z,0.0 +SIM_GYR1_RND,0.0 +SIM_GYR1_SCALE_X,0.0 +SIM_GYR1_SCALE_Y,0.0 +SIM_GYR1_SCALE_Z,0.0 +SIM_GYR2_BIAS_X,0.0 +SIM_GYR2_BIAS_Y,0.0 +SIM_GYR2_BIAS_Z,0.0 +SIM_GYR2_RND,0.0 +SIM_GYR2_SCALE_X,0.0 +SIM_GYR2_SCALE_Y,0.0 +SIM_GYR2_SCALE_Z,0.0 +SIM_GYR3_BIAS_X,0.0 +SIM_GYR3_BIAS_Y,0.0 +SIM_GYR3_BIAS_Z,0.0 +SIM_GYR3_RND,0.0 +SIM_GYR3_SCALE_X,0.0 +SIM_GYR3_SCALE_Y,0.0 +SIM_GYR3_SCALE_Z,0.0 +SIM_GYR_FAIL_MSK,0.0 +SIM_GYR_FILE_RW,0.0 +SIM_IE24_ENABLE,0.0 +SIM_IE24_ERROR,0.0 +SIM_IE24_STATE,-1.0 +SIM_IMUT1_ENABLE,0.0 +SIM_IMUT2_ENABLE,0.0 +SIM_IMUT3_ENABLE,0.0 +SIM_IMUT_END,45.0 +SIM_IMUT_FIXED,0.0 +SIM_IMUT_START,25.0 +SIM_IMUT_TCONST,300.0 +SIM_IMU_COUNT,2.0 +SIM_IMU_POS_X,0.0 +SIM_IMU_POS_Y,0.0 +SIM_IMU_POS_Z,0.0 +SIM_INIT_ALT_OFS,0.0 +SIM_INIT_LAT_OFS,0.0 +SIM_INIT_LON_OFS,0.0 +SIM_INS_THR_MIN,0.10000000149011612 +SIM_JSON_MASTER,0.0 +SIM_LED_LAYOUT,0.0 +SIM_LOOP_DELAY,0.0 +SIM_MAG1_DEVID,97539.0 +SIM_MAG1_DIA_X,0.0 +SIM_MAG1_DIA_Y,0.0 +SIM_MAG1_DIA_Z,0.0 +SIM_MAG1_FAIL,0.0 +SIM_MAG1_ODI_X,0.0 +SIM_MAG1_ODI_Y,0.0 +SIM_MAG1_ODI_Z,0.0 +SIM_MAG1_OFS_X,5.0 +SIM_MAG1_OFS_Y,13.0 +SIM_MAG1_OFS_Z,-18.0 +SIM_MAG1_ORIENT,0.0 +SIM_MAG1_SCALING,1.0 +SIM_MAG2_DEVID,131874.0 +SIM_MAG2_DIA_X,0.0 +SIM_MAG2_DIA_Y,0.0 +SIM_MAG2_DIA_Z,0.0 +SIM_MAG2_FAIL,0.0 +SIM_MAG2_ODI_X,0.0 +SIM_MAG2_ODI_Y,0.0 +SIM_MAG2_ODI_Z,0.0 +SIM_MAG2_OFS_X,5.0 +SIM_MAG2_OFS_Y,13.0 +SIM_MAG2_OFS_Z,-18.0 +SIM_MAG2_ORIENT,0.0 +SIM_MAG2_SCALING,1.0 +SIM_MAG3_DEVID,263178.0 +SIM_MAG3_DIA_X,0.0 +SIM_MAG3_DIA_Y,0.0 +SIM_MAG3_DIA_Z,0.0 +SIM_MAG3_FAIL,0.0 +SIM_MAG3_ODI_X,0.0 +SIM_MAG3_ODI_Y,0.0 +SIM_MAG3_ODI_Z,0.0 +SIM_MAG3_OFS_X,5.0 +SIM_MAG3_OFS_Y,13.0 +SIM_MAG3_OFS_Z,-18.0 +SIM_MAG3_ORIENT,0.0 +SIM_MAG3_SCALING,1.0 +SIM_MAG4_DEVID,97283.0 +SIM_MAG5_DEVID,97795.0 +SIM_MAG6_DEVID,98051.0 +SIM_MAG7_DEVID,0.0 +SIM_MAG8_DEVID,0.0 +SIM_MAG_ALY_HGT,1.0 +SIM_MAG_ALY_X,0.0 +SIM_MAG_ALY_Y,0.0 +SIM_MAG_ALY_Z,0.0 +SIM_MAG_DELAY,0.0 +SIM_MAG_MOT_X,0.0 +SIM_MAG_MOT_Y,0.0 +SIM_MAG_MOT_Z,0.0 +SIM_MAG_RND,0.0 +SIM_MAG_SAVE_IDS,1.0 +SIM_ODOM_ENABLE,0.0 +SIM_OH_MASK,0.0 +SIM_OH_RELAY_MSK,-1.0 +SIM_OPOS_ALT,584.0 +SIM_OPOS_HDG,353.0 +SIM_OPOS_LAT,-35.36326217651367 +SIM_OPOS_LNG,149.1652374267578 +SIM_PARA_ENABLE,0.0 +SIM_PARA_PIN,-1.0 +SIM_PIN_MASK,0.0 +SIM_PLD_ALT_LMT,15.0 +SIM_PLD_DIST_LMT,10.0 +SIM_PLD_ENABLE,0.0 +SIM_PLD_HEIGHT,0.0 +SIM_PLD_LAT,52.78057098388672 +SIM_PLD_LON,-0.7079235911369324 +SIM_PLD_OPTIONS,0.0 +SIM_PLD_ORIENT,24.0 +SIM_PLD_RATE,100.0 +SIM_PLD_SHIP,0.0 +SIM_PLD_TYPE,0.0 +SIM_PLD_YAW,270.0 +SIM_RATE_HZ,1200.0 +SIM_RC_CHANCOUNT,16.0 +SIM_RC_FAIL,0.0 +SIM_RICH_CTRL,-1.0 +SIM_RICH_ENABLE,0.0 +SIM_SERVO_DELAY,0.0 +SIM_SERVO_FILTER,0.0 +SIM_SERVO_SPEED,0.14000000059604645 +SIM_SHIP_DSIZE,10.0 +SIM_SHIP_ENABLE,0.0 +SIM_SHIP_OFS_X,0.0 +SIM_SHIP_OFS_Y,0.0 +SIM_SHIP_OFS_Z,0.0 +SIM_SHIP_PSIZE,1000.0 +SIM_SHIP_SPEED,3.0 +SIM_SHIP_SYSID,17.0 +SIM_SHOVE_TIME,0.0 +SIM_SHOVE_X,0.0 +SIM_SHOVE_Y,0.0 +SIM_SHOVE_Z,0.0 +SIM_SLUP_ENABLE,0.0 +SIM_SONAR_GLITCH,0.0 +SIM_SONAR_POS_X,0.0 +SIM_SONAR_POS_Y,0.0 +SIM_SONAR_POS_Z,0.0 +SIM_SONAR_RND,0.0 +SIM_SONAR_ROT,25.0 +SIM_SONAR_SCALE,12.121199607849121 +SIM_SPEEDUP,1.0 +SIM_SPR_ENABLE,0.0 +SIM_SPR_PUMP,-1.0 +SIM_SPR_SPIN,-1.0 +SIM_TA_ENABLE,1.0 +SIM_TEMP_BFACTOR,0.0 +SIM_TEMP_BRD_OFF,20.0 +SIM_TEMP_START,25.0 +SIM_TEMP_TCONST,30.0 +SIM_TERRAIN,1.0 +SIM_TETH_ENABLE,0.0 +SIM_THML_SCENARI,0.0 +SIM_TIDE_DIR,0.0 +SIM_TIDE_SPEED,0.0 +SIM_TIME_JITTER,0.0 +SIM_TWIST_TIME,0.0 +SIM_TWIST_X,0.0 +SIM_TWIST_Y,0.0 +SIM_TWIST_Z,0.0 +SIM_UART_LOSS,0.0 +SIM_VIB_FREQ_X,0.0 +SIM_VIB_FREQ_Y,0.0 +SIM_VIB_FREQ_Z,0.0 +SIM_VIB_MOT_HMNC,1.0 +SIM_VIB_MOT_MASK,0.0 +SIM_VIB_MOT_MAX,0.0 +SIM_VIB_MOT_MULT,1.0 +SIM_VICON_FAIL,0.0 +SIM_VICON_GLIT_X,0.0 +SIM_VICON_GLIT_Y,0.0 +SIM_VICON_GLIT_Z,0.0 +SIM_VICON_POS_X,0.0 +SIM_VICON_POS_Y,0.0 +SIM_VICON_POS_Z,0.0 +SIM_VICON_TMASK,3.0 +SIM_VICON_VGLI_X,0.0 +SIM_VICON_VGLI_Y,0.0 +SIM_VICON_VGLI_Z,0.0 +SIM_VICON_YAW,0.0 +SIM_VICON_YAWERR,0.0 +SIM_WAVE_AMP,0.5 +SIM_WAVE_DIR,0.0 +SIM_WAVE_ENABLE,0.0 +SIM_WAVE_LENGTH,10.0 +SIM_WAVE_SPEED,0.5 +SIM_WIND_DIR,180.0 +SIM_WIND_DIR_Z,0.0 +SIM_WIND_SPD,0.0 +SIM_WIND_T,0.0 +SIM_WIND_TC,5.0 +SIM_WIND_TURB,0.0 +SIM_WIND_T_ALT,60.0 +SIM_WIND_T_COEF,0.009999999776482582 +SIM_WOW_PIN,-1.0 +SPRAY_ENABLE,0.0 +SR0_ADSB,0.0 +SR0_EXTRA1,0.0 +SR0_EXTRA2,0.0 +SR0_EXTRA3,0.0 +SR0_EXT_STAT,0.0 +SR0_PARAMS,0.0 +SR0_POSITION,0.0 +SR0_RAW_CTRL,0.0 +SR0_RAW_SENS,0.0 +SR0_RC_CHAN,0.0 +SR1_ADSB,0.0 +SR1_EXTRA1,0.0 +SR1_EXTRA2,0.0 +SR1_EXTRA3,0.0 +SR1_EXT_STAT,0.0 +SR1_PARAMS,0.0 +SR1_POSITION,0.0 +SR1_RAW_CTRL,0.0 +SR1_RAW_SENS,0.0 +SR1_RC_CHAN,0.0 +SR2_ADSB,0.0 +SR2_EXTRA1,0.0 +SR2_EXTRA2,0.0 +SR2_EXTRA3,0.0 +SR2_EXT_STAT,0.0 +SR2_PARAMS,0.0 +SR2_POSITION,0.0 +SR2_RAW_CTRL,0.0 +SR2_RAW_SENS,0.0 +SR2_RC_CHAN,0.0 +SR3_ADSB,0.0 +SR3_EXTRA1,0.0 +SR3_EXTRA2,0.0 +SR3_EXTRA3,0.0 +SR3_EXT_STAT,0.0 +SR3_PARAMS,0.0 +SR3_POSITION,0.0 +SR3_RAW_CTRL,0.0 +SR3_RAW_SENS,0.0 +SR3_RC_CHAN,0.0 +SR4_ADSB,0.0 +SR4_EXTRA1,0.0 +SR4_EXTRA2,0.0 +SR4_EXTRA3,0.0 +SR4_EXT_STAT,0.0 +SR4_PARAMS,0.0 +SR4_POSITION,0.0 +SR4_RAW_CTRL,0.0 +SR4_RAW_SENS,0.0 +SR4_RC_CHAN,0.0 +SR5_ADSB,0.0 +SR5_EXTRA1,0.0 +SR5_EXTRA2,0.0 +SR5_EXTRA3,0.0 +SR5_EXT_STAT,0.0 +SR5_PARAMS,0.0 +SR5_POSITION,0.0 +SR5_RAW_CTRL,0.0 +SR5_RAW_SENS,0.0 +SR5_RC_CHAN,0.0 +SR6_ADSB,0.0 +SR6_EXTRA1,0.0 +SR6_EXTRA2,0.0 +SR6_EXTRA3,0.0 +SR6_EXT_STAT,0.0 +SR6_PARAMS,0.0 +SR6_POSITION,0.0 +SR6_RAW_CTRL,0.0 +SR6_RAW_SENS,0.0 +SR6_RC_CHAN,0.0 +SRTL_ACCURACY,2.0 +SRTL_OPTIONS,0.0 +SRTL_POINTS,300.0 +STAT_BOOTCNT,1.0 +STAT_FLTTIME,0.0 +STAT_RESET,1.0 +STAT_RUNTIME,61.0 +SUPER_SIMPLE,0.0 +SURFTRAK_MODE,1.0 +SURFTRAK_TC,1.0 +SYSID_ENFORCE,0.0 +SYSID_MYGCS,255.0 +SYSID_THISMAV,1.0 +TCAL_ENABLED,0.0 +TELEM_DELAY,0.0 +TEMP1_TYPE,0.0 +TEMP2_TYPE,0.0 +TEMP3_TYPE,0.0 +TEMP_LOG,0.0 +TERRAIN_CACHE_SZ,12.0 +TERRAIN_ENABLE,1.0 +TERRAIN_MARGIN,0.05000000074505806 +TERRAIN_OFS_MAX,30.0 +TERRAIN_OPTIONS,0.0 +TERRAIN_SPACING,100.0 +THROW_ALT_MAX,0.0 +THROW_ALT_MIN,0.0 +THROW_MOT_START,0.0 +THROW_NEXTMODE,18.0 +THROW_TYPE,0.0 +THR_DZ,100.0 +TKOFF_RPM_MAX,0.0 +TKOFF_RPM_MIN,0.0 +TKOFF_SLEW_TIME,2.0 +TKOFF_THR_MAX,0.8999999761581421 +TUNE,0.0 +TUNE_MAX,0.0 +TUNE_MIN,0.0 +VISO_TYPE,0.0 +VTX_ENABLE,0.0 +WINCH_TYPE,0.0 +WPNAV_ACCEL,250.0 +WPNAV_ACCEL_C,0.0 +WPNAV_ACCEL_Z,100.0 +WPNAV_JERK,1.0 +WPNAV_RADIUS,200.0 +WPNAV_RFND_USE,1.0 +WPNAV_SPEED,1000.0 +WPNAV_SPEED_DN,150.0 +WPNAV_SPEED_UP,250.0 +WPNAV_TER_MARGIN,10.0 +WP_NAVALT_MIN,0.0 +WP_YAW_BEHAVIOR,2.0 +WVANE_ENABLE,0.0 +ZIGZ_AUTO_ENABLE,0.0 diff --git a/radio/tests/test_params.py b/radio/tests/test_params.py index 8ae78df55..dd8e82e19 100644 --- a/radio/tests/test_params.py +++ b/radio/tests/test_params.py @@ -1,3 +1,4 @@ +import os import time from typing import Any, List, Optional, Union @@ -8,6 +9,11 @@ from . import falcon_test from .helpers import ParamRefreshTimeout, WaitForMessageReturnsNone, set_params +PARAM_FILES_PATH = os.path.join( + os.path.dirname(__file__), + "param_test_files", +) + @pytest.fixture(scope="session", autouse=True) def setup_function(): @@ -22,6 +28,61 @@ def setup_function(): set_params(params) +@pytest.fixture() +def delete_export_files(): + """ + Deletes the exported param files after running a test. + """ + yield # this is where the testing happens + + # Teardown + export_files = [ + "exported_params.parm", + ] + + for file_name in export_files: + file_path = os.path.join(PARAM_FILES_PATH, file_name) + if os.path.exists(file_path): + os.remove(file_path) + + +@pytest.fixture() +def inject_params(): + """ + Injects parameters from a file before running a test, reset afterwards. + """ + import app.droneStatus as droneStatus + + drone = droneStatus.drone + + if not drone: + yield # this is where the testing happens + return + + inject_param_file = os.path.join(PARAM_FILES_PATH, "inject_params.parm") + inject_params = [] + with open(inject_param_file, "r") as f: + for line in f: + if line.startswith("#") or line.strip() == "": + continue + parts = line.strip().split(",") + if len(parts) >= 2: + param_id = parts[0] + param_value = float(parts[1]) + # We don't care/need param_type for setting params here + # Plus we can't get it from the .parm file anyways + inject_params.append({"param_id": param_id, "param_value": param_value}) + + old_params = drone.paramsController.params.copy() + + drone.paramsController.params = inject_params + + yield # this is where the testing happens + + # Teardown - reset params + drone.paramsController.params = old_params + + def send_and_receive_params( client: SocketIOTestClient, endpoint: str, @@ -459,3 +520,91 @@ def test_refreshParams_successfullyRefreshed( if socketio_result["name"] == "params": assert socketio_result["args"][0] == droneStatus.drone.paramsController.params + + +@falcon_test(pass_drone_status=True) +def test_exportParamsToFile_wrongState( + socketio_client: SocketIOTestClient, droneStatus +) -> None: + droneStatus.state = "dashboard" + + socketio_client.emit( + "export_params_to_file", {"file_path": "test_params_output.txt"} + ) + socketio_result = socketio_client.get_received()[0] + + assert socketio_result["name"] == "params_error" + assert socketio_result["args"][0] == { + "message": "You must be on the params screen to export parameters.", + } + + +@falcon_test(pass_drone_status=True) +def test_exportParamsToFile_noFilePath( + socketio_client: SocketIOTestClient, droneStatus +) -> None: + droneStatus.state = "params" + socketio_client.emit("export_params_to_file", {}) + socketio_result = socketio_client.get_received()[0] + + assert socketio_result["name"] == "export_params_result" + assert socketio_result["args"][0] == { + "success": False, + "message": "No file path provided.", + } + + +@falcon_test(pass_drone_status=True) +def test_exportParamsToFile_incorrectFilePath( + socketio_client: SocketIOTestClient, droneStatus +) -> None: + export_file_path = os.path.join( + PARAM_FILES_PATH, "random_folder_that_should_not_exist", "exported_params.parm" + ) + + droneStatus.state = "params" + socketio_client.emit("export_params_to_file", {"file_path": export_file_path}) + socketio_result = socketio_client.get_received()[0] + + assert socketio_result["name"] == "export_params_result" + assert socketio_result["args"][0]["success"] is False + + # Check that the message contains the expected error indicators + message = socketio_result["args"][0]["message"] + assert "Failed to export params to file:" in message + assert "No such file or directory:" in message + assert "random_folder_that_should_not_exist" in message + assert "exported_params.parm" in message + + +@pytest.mark.usefixtures("delete_export_files") +@pytest.mark.usefixtures("inject_params") +@falcon_test(pass_drone_status=True) +def test_exportParamsToFile_success( + socketio_client: SocketIOTestClient, droneStatus +) -> None: + export_file_path = os.path.join(PARAM_FILES_PATH, "exported_params.parm") + + socketio_client.emit("export_params_to_file", {"file_path": export_file_path}) + socketio_result = socketio_client.get_received()[0] + + assert socketio_result["name"] == "export_params_result" + assert socketio_result["args"][0] == { + "success": True, + "message": f"Parameters exported successfully to {export_file_path}", + } + + # Verify file contents + with open(export_file_path, "r") as f: + lines = [ + line + for line in f.readlines() + if line.strip() != "" and not line.startswith("#") + ] + with open(os.path.join(PARAM_FILES_PATH, "inject_params.parm"), "r") as f: + expected_lines = [ + line + for line in f.readlines() + if line.strip() != "" and not line.startswith("#") + ] + assert lines == expected_lines From ab87512c1ed0d39bc301219395f24b4079e763ef Mon Sep 17 00:00:00 2001 From: Kush Makkapati Date: Fri, 28 Nov 2025 21:53:27 +0000 Subject: [PATCH 2/2] Address copilot review comments --- radio/tests/test_params.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/radio/tests/test_params.py b/radio/tests/test_params.py index dd8e82e19..76b4434b7 100644 --- a/radio/tests/test_params.py +++ b/radio/tests/test_params.py @@ -60,7 +60,7 @@ def inject_params(): return inject_param_file = os.path.join(PARAM_FILES_PATH, "inject_params.parm") - inject_params = [] + inject_params_list = [] with open(inject_param_file, "r") as f: for line in f: if line.startswith("#") or line.strip() == "": @@ -71,11 +71,13 @@ def inject_params(): param_value = float(parts[1]) # We don't care/need param_type for setting params here # Plus we can't get it from the .parm file anyways - inject_params.append({"param_id": param_id, "param_value": param_value}) + inject_params_list.append( + {"param_id": param_id, "param_value": param_value} + ) old_params = drone.paramsController.params.copy() - drone.paramsController.params = inject_params + drone.paramsController.params = inject_params_list yield # this is where the testing happens @@ -585,6 +587,7 @@ def test_exportParamsToFile_success( ) -> None: export_file_path = os.path.join(PARAM_FILES_PATH, "exported_params.parm") + droneStatus.state = "params" socketio_client.emit("export_params_to_file", {"file_path": export_file_path}) socketio_result = socketio_client.get_received()[0]