From 5d3f829e69a9dac133ce9df066456444894b1ff8 Mon Sep 17 00:00:00 2001 From: Mitch Lustig Date: Tue, 10 Sep 2019 01:38:03 -0700 Subject: [PATCH] Fix conf gen --- confgenerator.c | 342 ++++++++++++++++++++++++++++++++++++++++++++++++ confgenerator.h | 2 +- 2 files changed, 343 insertions(+), 1 deletion(-) diff --git a/confgenerator.c b/confgenerator.c index 4ef70fb4..ff8615dc 100644 --- a/confgenerator.c +++ b/confgenerator.c @@ -145,6 +145,120 @@ int32_t confgenerator_serialize_appconf(uint8_t *buffer, const app_configuration buffer_append_uint32(buffer, APPCONF_SIGNATURE, &ind); + buffer[ind++] = (uint8_t)conf->controller_id; + buffer_append_uint32(buffer, conf->timeout_msec, &ind); + buffer_append_float32_auto(buffer, conf->timeout_brake_current, &ind); + buffer[ind++] = conf->send_can_status; + buffer_append_uint16(buffer, conf->send_can_status_rate_hz, &ind); + buffer[ind++] = conf->can_baud_rate; + buffer[ind++] = conf->pairing_done; + buffer[ind++] = conf->permanent_uart_enabled; + buffer[ind++] = conf->shutdown_mode; + buffer[ind++] = conf->uavcan_enable; + buffer[ind++] = (uint8_t)conf->uavcan_esc_index; + buffer[ind++] = conf->app_to_use; + buffer[ind++] = conf->app_ppm_conf.ctrl_type; + buffer_append_float32_auto(buffer, conf->app_ppm_conf.pid_max_erpm, &ind); + buffer_append_float32_auto(buffer, conf->app_ppm_conf.hyst, &ind); + buffer_append_float32_auto(buffer, conf->app_ppm_conf.pulse_start, &ind); + buffer_append_float32_auto(buffer, conf->app_ppm_conf.pulse_end, &ind); + buffer_append_float32_auto(buffer, conf->app_ppm_conf.pulse_center, &ind); + buffer[ind++] = conf->app_ppm_conf.median_filter; + buffer[ind++] = conf->app_ppm_conf.safe_start; + buffer_append_float32_auto(buffer, conf->app_ppm_conf.throttle_exp, &ind); + buffer_append_float32_auto(buffer, conf->app_ppm_conf.throttle_exp_brake, &ind); + buffer[ind++] = conf->app_ppm_conf.throttle_exp_mode; + buffer_append_float32_auto(buffer, conf->app_ppm_conf.ramp_time_pos, &ind); + buffer_append_float32_auto(buffer, conf->app_ppm_conf.ramp_time_neg, &ind); + buffer[ind++] = conf->app_ppm_conf.multi_esc; + buffer[ind++] = conf->app_ppm_conf.tc; + buffer_append_float32_auto(buffer, conf->app_ppm_conf.tc_max_diff, &ind); + buffer_append_float32_auto(buffer, conf->app_ppm_conf.max_erpm_for_dir, &ind); + buffer[ind++] = conf->app_adc_conf.ctrl_type; + buffer_append_float32_auto(buffer, conf->app_adc_conf.hyst, &ind); + buffer_append_float32_auto(buffer, conf->app_adc_conf.voltage_start, &ind); + buffer_append_float32_auto(buffer, conf->app_adc_conf.voltage_end, &ind); + buffer_append_float32_auto(buffer, conf->app_adc_conf.voltage_center, &ind); + buffer_append_float32_auto(buffer, conf->app_adc_conf.voltage2_start, &ind); + buffer_append_float32_auto(buffer, conf->app_adc_conf.voltage2_end, &ind); + buffer[ind++] = conf->app_adc_conf.use_filter; + buffer[ind++] = conf->app_adc_conf.safe_start; + buffer[ind++] = conf->app_adc_conf.cc_button_inverted; + buffer[ind++] = conf->app_adc_conf.rev_button_inverted; + buffer[ind++] = conf->app_adc_conf.voltage_inverted; + buffer[ind++] = conf->app_adc_conf.voltage2_inverted; + buffer_append_float32_auto(buffer, conf->app_adc_conf.throttle_exp, &ind); + buffer_append_float32_auto(buffer, conf->app_adc_conf.throttle_exp_brake, &ind); + buffer[ind++] = conf->app_adc_conf.throttle_exp_mode; + buffer_append_float32_auto(buffer, conf->app_adc_conf.ramp_time_pos, &ind); + buffer_append_float32_auto(buffer, conf->app_adc_conf.ramp_time_neg, &ind); + buffer[ind++] = conf->app_adc_conf.multi_esc; + buffer[ind++] = conf->app_adc_conf.tc; + buffer_append_float32_auto(buffer, conf->app_adc_conf.tc_max_diff, &ind); + buffer_append_uint16(buffer, conf->app_adc_conf.update_rate_hz, &ind); + buffer_append_uint32(buffer, conf->app_uart_baudrate, &ind); + buffer[ind++] = conf->app_chuk_conf.ctrl_type; + buffer_append_float32_auto(buffer, conf->app_chuk_conf.hyst, &ind); + buffer_append_float32_auto(buffer, conf->app_chuk_conf.ramp_time_pos, &ind); + buffer_append_float32_auto(buffer, conf->app_chuk_conf.ramp_time_neg, &ind); + buffer_append_float32_auto(buffer, conf->app_chuk_conf.stick_erpm_per_s_in_cc, &ind); + buffer_append_float32_auto(buffer, conf->app_chuk_conf.throttle_exp, &ind); + buffer_append_float32_auto(buffer, conf->app_chuk_conf.throttle_exp_brake, &ind); + buffer[ind++] = conf->app_chuk_conf.throttle_exp_mode; + buffer[ind++] = conf->app_chuk_conf.multi_esc; + buffer[ind++] = conf->app_chuk_conf.tc; + buffer_append_float32_auto(buffer, conf->app_chuk_conf.tc_max_diff, &ind); + buffer[ind++] = conf->app_chuk_conf.use_smart_rev; + buffer_append_float32_auto(buffer, conf->app_chuk_conf.smart_rev_max_duty, &ind); + buffer_append_float32_auto(buffer, conf->app_chuk_conf.smart_rev_ramp_time, &ind); + buffer[ind++] = conf->app_nrf_conf.speed; + buffer[ind++] = conf->app_nrf_conf.power; + buffer[ind++] = conf->app_nrf_conf.crc_type; + buffer[ind++] = conf->app_nrf_conf.retry_delay; + buffer[ind++] = (uint8_t)conf->app_nrf_conf.retries; + buffer[ind++] = (uint8_t)conf->app_nrf_conf.channel; + buffer[ind++] = (uint8_t)conf->app_nrf_conf.address[0]; + buffer[ind++] = (uint8_t)conf->app_nrf_conf.address[1]; + buffer[ind++] = (uint8_t)conf->app_nrf_conf.address[2]; + buffer[ind++] = conf->app_nrf_conf.send_crc_ack; + buffer_append_float32_auto(buffer, conf->app_balance_conf.kp, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.ki, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.kd, &ind); + buffer_append_uint16(buffer, conf->app_balance_conf.hertz, &ind); + buffer[ind++] = conf->app_balance_conf.m_axis; + buffer[ind++] = conf->app_balance_conf.c_axis; + buffer_append_float32_auto(buffer, conf->app_balance_conf.m_fault, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.c_fault, &ind); + buffer[ind++] = conf->app_balance_conf.use_switches; + buffer_append_float32_auto(buffer, conf->app_balance_conf.overspeed_duty, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_duty, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_angle, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_speed, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.startup_m_tolerance, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.startup_c_tolerance, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.startup_speed, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.deadzone, &ind); + buffer_append_float32_auto(buffer, conf->app_balance_conf.current_boost, &ind); + buffer[ind++] = conf->imu_conf.type; + buffer[ind++] = conf->imu_conf.mode; + buffer_append_uint16(buffer, conf->imu_conf.sample_rate_hz, &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.accel_confidence_decay, &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.mahony_kp, &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.mahony_ki, &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.madgwick_beta, &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.rot_roll, &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.rot_pitch, &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.rot_yaw, &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.accel_offsets[0], &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.accel_offsets[1], &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.accel_offsets[2], &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.gyro_offsets[0], &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.gyro_offsets[1], &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.gyro_offsets[2], &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.gyro_offset_comp_fact[0], &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.gyro_offset_comp_fact[1], &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.gyro_offset_comp_fact[2], &ind); + buffer_append_float32_auto(buffer, conf->imu_conf.gyro_offset_comp_clamp, &ind); return ind; } @@ -296,6 +410,120 @@ bool confgenerator_deserialize_appconf(const uint8_t *buffer, app_configuration return false; } + conf->controller_id = buffer[ind++]; + conf->timeout_msec = buffer_get_uint32(buffer, &ind); + conf->timeout_brake_current = buffer_get_float32_auto(buffer, &ind); + conf->send_can_status = buffer[ind++]; + conf->send_can_status_rate_hz = buffer_get_uint16(buffer, &ind); + conf->can_baud_rate = buffer[ind++]; + conf->pairing_done = buffer[ind++]; + conf->permanent_uart_enabled = buffer[ind++]; + conf->shutdown_mode = buffer[ind++]; + conf->uavcan_enable = buffer[ind++]; + conf->uavcan_esc_index = buffer[ind++]; + conf->app_to_use = buffer[ind++]; + conf->app_ppm_conf.ctrl_type = buffer[ind++]; + conf->app_ppm_conf.pid_max_erpm = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.hyst = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.pulse_start = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.pulse_end = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.pulse_center = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.median_filter = buffer[ind++]; + conf->app_ppm_conf.safe_start = buffer[ind++]; + conf->app_ppm_conf.throttle_exp = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.throttle_exp_brake = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.throttle_exp_mode = buffer[ind++]; + conf->app_ppm_conf.ramp_time_pos = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.ramp_time_neg = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.multi_esc = buffer[ind++]; + conf->app_ppm_conf.tc = buffer[ind++]; + conf->app_ppm_conf.tc_max_diff = buffer_get_float32_auto(buffer, &ind); + conf->app_ppm_conf.max_erpm_for_dir = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.ctrl_type = buffer[ind++]; + conf->app_adc_conf.hyst = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.voltage_start = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.voltage_end = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.voltage_center = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.voltage2_start = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.voltage2_end = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.use_filter = buffer[ind++]; + conf->app_adc_conf.safe_start = buffer[ind++]; + conf->app_adc_conf.cc_button_inverted = buffer[ind++]; + conf->app_adc_conf.rev_button_inverted = buffer[ind++]; + conf->app_adc_conf.voltage_inverted = buffer[ind++]; + conf->app_adc_conf.voltage2_inverted = buffer[ind++]; + conf->app_adc_conf.throttle_exp = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.throttle_exp_brake = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.throttle_exp_mode = buffer[ind++]; + conf->app_adc_conf.ramp_time_pos = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.ramp_time_neg = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.multi_esc = buffer[ind++]; + conf->app_adc_conf.tc = buffer[ind++]; + conf->app_adc_conf.tc_max_diff = buffer_get_float32_auto(buffer, &ind); + conf->app_adc_conf.update_rate_hz = buffer_get_uint16(buffer, &ind); + conf->app_uart_baudrate = buffer_get_uint32(buffer, &ind); + conf->app_chuk_conf.ctrl_type = buffer[ind++]; + conf->app_chuk_conf.hyst = buffer_get_float32_auto(buffer, &ind); + conf->app_chuk_conf.ramp_time_pos = buffer_get_float32_auto(buffer, &ind); + conf->app_chuk_conf.ramp_time_neg = buffer_get_float32_auto(buffer, &ind); + conf->app_chuk_conf.stick_erpm_per_s_in_cc = buffer_get_float32_auto(buffer, &ind); + conf->app_chuk_conf.throttle_exp = buffer_get_float32_auto(buffer, &ind); + conf->app_chuk_conf.throttle_exp_brake = buffer_get_float32_auto(buffer, &ind); + conf->app_chuk_conf.throttle_exp_mode = buffer[ind++]; + conf->app_chuk_conf.multi_esc = buffer[ind++]; + conf->app_chuk_conf.tc = buffer[ind++]; + conf->app_chuk_conf.tc_max_diff = buffer_get_float32_auto(buffer, &ind); + conf->app_chuk_conf.use_smart_rev = buffer[ind++]; + conf->app_chuk_conf.smart_rev_max_duty = buffer_get_float32_auto(buffer, &ind); + conf->app_chuk_conf.smart_rev_ramp_time = buffer_get_float32_auto(buffer, &ind); + conf->app_nrf_conf.speed = buffer[ind++]; + conf->app_nrf_conf.power = buffer[ind++]; + conf->app_nrf_conf.crc_type = buffer[ind++]; + conf->app_nrf_conf.retry_delay = buffer[ind++]; + conf->app_nrf_conf.retries = (int8_t)buffer[ind++]; + conf->app_nrf_conf.channel = (int8_t)buffer[ind++]; + conf->app_nrf_conf.address[0] = buffer[ind++]; + conf->app_nrf_conf.address[1] = buffer[ind++]; + conf->app_nrf_conf.address[2] = buffer[ind++]; + conf->app_nrf_conf.send_crc_ack = buffer[ind++]; + conf->app_balance_conf.kp = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.ki = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.kd = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.hertz = buffer_get_uint16(buffer, &ind); + conf->app_balance_conf.m_axis = buffer[ind++]; + conf->app_balance_conf.c_axis = buffer[ind++]; + conf->app_balance_conf.m_fault = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.c_fault = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.use_switches = buffer[ind++]; + conf->app_balance_conf.overspeed_duty = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.tiltback_duty = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.tiltback_angle = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.tiltback_speed = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.startup_m_tolerance = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.startup_c_tolerance = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.startup_speed = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.deadzone = buffer_get_float32_auto(buffer, &ind); + conf->app_balance_conf.current_boost = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.type = buffer[ind++]; + conf->imu_conf.mode = buffer[ind++]; + conf->imu_conf.sample_rate_hz = buffer_get_uint16(buffer, &ind); + conf->imu_conf.accel_confidence_decay = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.mahony_kp = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.mahony_ki = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.madgwick_beta = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.rot_roll = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.rot_pitch = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.rot_yaw = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.accel_offsets[0] = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.accel_offsets[1] = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.accel_offsets[2] = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.gyro_offsets[0] = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.gyro_offsets[1] = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.gyro_offsets[2] = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.gyro_offset_comp_fact[0] = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.gyro_offset_comp_fact[1] = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.gyro_offset_comp_fact[2] = buffer_get_float32_auto(buffer, &ind); + conf->imu_conf.gyro_offset_comp_clamp = buffer_get_float32_auto(buffer, &ind); return true; } @@ -431,4 +659,118 @@ void confgenerator_set_defaults_mcconf(mc_configuration *conf) { } void confgenerator_set_defaults_appconf(app_configuration *conf) { + conf->controller_id = HW_DEFAULT_ID; + conf->timeout_msec = APPCONF_TIMEOUT_MSEC; + conf->timeout_brake_current = APPCONF_TIMEOUT_BRAKE_CURRENT; + conf->send_can_status = APPCONF_SEND_CAN_STATUS; + conf->send_can_status_rate_hz = APPCONF_SEND_CAN_STATUS_RATE_HZ; + conf->can_baud_rate = APPCONF_CAN_BAUD_RATE; + conf->pairing_done = APPCONF_PAIRING_DONE; + conf->permanent_uart_enabled = APPCONF_PERMANENT_UART_ENABLED; + conf->shutdown_mode = APPCONF_SHUTDOWN_MODE; + conf->uavcan_enable = APPCONF_UAVCAN_ENABLE; + conf->uavcan_esc_index = APPCONF_UAVCAN_ESC_INDEX; + conf->app_to_use = APPCONF_APP_TO_USE; + conf->app_ppm_conf.ctrl_type = APPCONF_PPM_CTRL_TYPE; + conf->app_ppm_conf.pid_max_erpm = APPCONF_PPM_PID_MAX_ERPM; + conf->app_ppm_conf.hyst = APPCONF_PPM_HYST; + conf->app_ppm_conf.pulse_start = APPCONF_PPM_PULSE_START; + conf->app_ppm_conf.pulse_end = APPCONF_PPM_PULSE_END; + conf->app_ppm_conf.pulse_center = APPCONF_PPM_PULSE_CENTER; + conf->app_ppm_conf.median_filter = APPCONF_PPM_MEDIAN_FILTER; + conf->app_ppm_conf.safe_start = APPCONF_PPM_SAFE_START; + conf->app_ppm_conf.throttle_exp = APPCONF_PPM_THROTTLE_EXP; + conf->app_ppm_conf.throttle_exp_brake = APPCONF_PPM_THROTTLE_EXP_BRAKE; + conf->app_ppm_conf.throttle_exp_mode = APPCONF_PPM_THROTTLE_EXP_MODE; + conf->app_ppm_conf.ramp_time_pos = APPCONF_PPM_RAMP_TIME_POS; + conf->app_ppm_conf.ramp_time_neg = APPCONF_PPM_RAMP_TIME_NEG; + conf->app_ppm_conf.multi_esc = APPCONF_PPM_MULTI_ESC; + conf->app_ppm_conf.tc = APPCONF_PPM_TC; + conf->app_ppm_conf.tc_max_diff = APPCONF_PPM_TC_MAX_DIFF; + conf->app_ppm_conf.max_erpm_for_dir = APPCONF_PPM_MAX_ERPM_FOR_DIR; + conf->app_adc_conf.ctrl_type = APPCONF_ADC_CTRL_TYPE; + conf->app_adc_conf.hyst = APPCONF_ADC_HYST; + conf->app_adc_conf.voltage_start = APPCONF_ADC_VOLTAGE_START; + conf->app_adc_conf.voltage_end = APPCONF_ADC_VOLTAGE_END; + conf->app_adc_conf.voltage_center = APPCONF_ADC_VOLTAGE_CENTER; + conf->app_adc_conf.voltage2_start = APPCONF_ADC_VOLTAGE2_START; + conf->app_adc_conf.voltage2_end = APPCONF_ADC_VOLTAGE2_END; + conf->app_adc_conf.use_filter = APPCONF_ADC_USE_FILTER; + conf->app_adc_conf.safe_start = APPCONF_ADC_SAFE_START; + conf->app_adc_conf.cc_button_inverted = APPCONF_ADC_CC_BUTTON_INVERTED; + conf->app_adc_conf.rev_button_inverted = APPCONF_ADC_REV_BUTTON_INVERTED; + conf->app_adc_conf.voltage_inverted = APPCONF_ADC_VOLTAGE_INVERTED; + conf->app_adc_conf.voltage2_inverted = APPCONF_ADC_VOLTAGE2_INVERTED; + conf->app_adc_conf.throttle_exp = APPCONF_ADC_THROTTLE_EXP; + conf->app_adc_conf.throttle_exp_brake = APPCONF_ADC_THROTTLE_EXP_BRAKE; + conf->app_adc_conf.throttle_exp_mode = APPCONF_ADC_THROTTLE_EXP_MODE; + conf->app_adc_conf.ramp_time_pos = APPCONF_ADC_RAMP_TIME_POS; + conf->app_adc_conf.ramp_time_neg = APPCONF_ADC_RAMP_TIME_NEG; + conf->app_adc_conf.multi_esc = APPCONF_ADC_MULTI_ESC; + conf->app_adc_conf.tc = APPCONF_ADC_TC; + conf->app_adc_conf.tc_max_diff = APPCONF_ADC_TC_MAX_DIFF; + conf->app_adc_conf.update_rate_hz = APPCONF_ADC_UPDATE_RATE_HZ; + conf->app_uart_baudrate = APPCONF_UART_BAUDRATE; + conf->app_chuk_conf.ctrl_type = APPCONF_CHUK_CTRL_TYPE; + conf->app_chuk_conf.hyst = APPCONF_CHUK_HYST; + conf->app_chuk_conf.ramp_time_pos = APPCONF_CHUK_RAMP_TIME_POS; + conf->app_chuk_conf.ramp_time_neg = APPCONF_CHUK_RAMP_TIME_NEG; + conf->app_chuk_conf.stick_erpm_per_s_in_cc = APPCONF_STICK_ERPM_PER_S_IN_CC; + conf->app_chuk_conf.throttle_exp = APPCONF_CHUK_THROTTLE_EXP; + conf->app_chuk_conf.throttle_exp_brake = APPCONF_CHUK_THROTTLE_EXP_BRAKE; + conf->app_chuk_conf.throttle_exp_mode = APPCONF_CHUK_THROTTLE_EXP_MODE; + conf->app_chuk_conf.multi_esc = APPCONF_CHUK_MULTI_ESC; + conf->app_chuk_conf.tc = APPCONF_CHUK_TC; + conf->app_chuk_conf.tc_max_diff = APPCONF_CHUK_TC_MAX_DIFF; + conf->app_chuk_conf.use_smart_rev = APPCONF_CHUK_USE_SMART_REV; + conf->app_chuk_conf.smart_rev_max_duty = APPCONF_CHUK_SMART_REV_MAX_DUTY; + conf->app_chuk_conf.smart_rev_ramp_time = APPCONF_CHUK_SMART_REV_RAMP_TIME; + conf->app_nrf_conf.speed = APPCONF_NRF_SPEED; + conf->app_nrf_conf.power = APPCONF_NRF_POWER; + conf->app_nrf_conf.crc_type = APPCONF_NRF_CRC; + conf->app_nrf_conf.retry_delay = APPCONF_NRF_RETR_DELAY; + conf->app_nrf_conf.retries = APPCONF_NRF_RETRIES; + conf->app_nrf_conf.channel = APPCONF_NRF_CHANNEL; + conf->app_nrf_conf.address[0] = APPCONF_NRF_ADDR_B0; + conf->app_nrf_conf.address[1] = APPCONF_NRF_ADDR_B1; + conf->app_nrf_conf.address[2] = APPCONF_NRF_ADDR_B2; + conf->app_nrf_conf.send_crc_ack = APPCONF_NRF_SEND_CRC_ACK; + conf->app_balance_conf.kp = APPCONF_BALANCE_KP; + conf->app_balance_conf.ki = APPCONF_BALANCE_KI; + conf->app_balance_conf.kd = APPCONF_BALANCE_KD; + conf->app_balance_conf.hertz = APPCONF_BALANCE_HERTZ; + conf->app_balance_conf.m_axis = APPCONF_BALANCE_M_AXIS; + conf->app_balance_conf.c_axis = APPCONF_BALANCE_C_AXIS; + conf->app_balance_conf.m_fault = APPCONF_BALANCE_M_FAULT; + conf->app_balance_conf.c_fault = APPCONF_BALANCE_C_FAULT; + conf->app_balance_conf.use_switches = APPCONF_BALANCE_USE_SWITCHES; + conf->app_balance_conf.overspeed_duty = APPCONF_BALANCE_OVERSPEED_DUTY; + conf->app_balance_conf.tiltback_duty = APPCONF_BALANCE_TILTBACK_DUTY; + conf->app_balance_conf.tiltback_angle = APPCONF_BALANCE_TILTBACK_ANGLE; + conf->app_balance_conf.tiltback_speed = APPCONF_BALANCE_TILTBACK_SPEED; + conf->app_balance_conf.startup_m_tolerance = APPCONF_BALANCE_STARTUP_M_TOLERANCE; + conf->app_balance_conf.startup_c_tolerance = APPCONF_BALANCE_STARTUP_C_TOLERANCE; + conf->app_balance_conf.startup_speed = APPCONF_BALANCE_STARTUP_SPEED; + conf->app_balance_conf.deadzone = APPCONF_BALANCE_DEADZONE; + conf->app_balance_conf.current_boost = APPCONF_BALANCE_CURRENT_BOOST; + conf->imu_conf.type = APPCONF_IMU_TYPE; + conf->imu_conf.mode = APPCONF_IMU_AHRS_MODE; + conf->imu_conf.sample_rate_hz = APPCONF_IMU_SAMPLE_RATE_HZ; + conf->imu_conf.accel_confidence_decay = APPCONF_IMU_ACCEL_CONFIDENCE_DECAY; + conf->imu_conf.mahony_kp = APPCONF_IMU_MAHONY_KP; + conf->imu_conf.mahony_ki = APPCONF_IMU_MAHONY_KI; + conf->imu_conf.madgwick_beta = APPCONF_IMU_MADGWICK_BETA; + conf->imu_conf.rot_roll = APPCONF_IMU_ROT_ROLL; + conf->imu_conf.rot_pitch = APPCONF_IMU_ROT_PITCH; + conf->imu_conf.rot_yaw = APPCONF_IMU_ROT_YAW; + conf->imu_conf.accel_offsets[0] = APPCONF_IMU_A_OFFSET_0; + conf->imu_conf.accel_offsets[1] = APPCONF_IMU_A_OFFSET_1; + conf->imu_conf.accel_offsets[2] = APPCONF_IMU_A_OFFSET_2; + conf->imu_conf.gyro_offsets[0] = APPCONF_IMU_G_OFFSET_0; + conf->imu_conf.gyro_offsets[1] = APPCONF_IMU_G_OFFSET_1; + conf->imu_conf.gyro_offsets[2] = APPCONF_IMU_G_OFFSET_2; + conf->imu_conf.gyro_offset_comp_fact[0] = APPCONF_IMU_G_OFFSET_COMP_FACT_0; + conf->imu_conf.gyro_offset_comp_fact[1] = APPCONF_IMU_G_OFFSET_COMP_FACT_1; + conf->imu_conf.gyro_offset_comp_fact[2] = APPCONF_IMU_G_OFFSET_COMP_FACT_2; + conf->imu_conf.gyro_offset_comp_clamp = APPCONF_IMU_G_OFFSET_COMP_CLAMP; } diff --git a/confgenerator.h b/confgenerator.h index 59e1dfdc..0ff856c7 100644 --- a/confgenerator.h +++ b/confgenerator.h @@ -9,7 +9,7 @@ // Constants #define MCCONF_SIGNATURE 503309878 -#define APPCONF_SIGNATURE 0 +#define APPCONF_SIGNATURE 4290437352 // Functions int32_t confgenerator_serialize_mcconf(uint8_t *buffer, const mc_configuration *conf);