1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-21 11:54:15 +01:00

LP-609 Cleanup, add enable_disable_warning() and enable_disable_sensor()

This commit is contained in:
Laurent Lalanne 2019-04-03 06:11:12 +02:00
parent 2a97f9cf24
commit db096cd598

View File

@ -88,6 +88,8 @@ static uint16_t build_ESC_message(struct hott_esc_message *msg);
static uint8_t build_TEXT_message(struct hott_text_message *msg, uint8_t page, uint8_t current_line, int8_t value_change, uint8_t step_change, bool edit_line, bool exit_menu); static uint8_t build_TEXT_message(struct hott_text_message *msg, uint8_t page, uint8_t current_line, int8_t value_change, uint8_t step_change, bool edit_line, bool exit_menu);
static char *reverse_pixels(char *line, uint8_t from_char, uint8_t to_char); static char *reverse_pixels(char *line, uint8_t from_char, uint8_t to_char);
static uint8_t get_page(uint8_t page, bool next); static uint8_t get_page(uint8_t page, bool next);
static uint8_t enable_disable_warning(uint8_t value);
static uint8_t enable_disable_sensor(uint8_t value);
static int16_t get_new_value(int16_t current_value, int8_t value_change, uint8_t step, int16_t min, int16_t max); static int16_t get_new_value(int16_t current_value, int8_t value_change, uint8_t step, int16_t min, int16_t max);
static uint8_t calc_checksum(uint8_t *data, uint16_t size); static uint8_t calc_checksum(uint8_t *data, uint16_t size);
static uint8_t generate_warning(); static uint8_t generate_warning();
@ -316,7 +318,8 @@ static void uavoHoTTBridgeTask(__attribute__((unused)) void *parameters)
edit_status = build_TEXT_message((struct hott_text_message *)tx_buffer, page, current_line, value_change, step_change, edit_line, exit_menu); edit_status = build_TEXT_message((struct hott_text_message *)tx_buffer, page, current_line, value_change, step_change, edit_line, exit_menu);
message_size = sizeof(tx_buffer); message_size = sizeof(tx_buffer);
if (edit_status == HOTTTEXT_EDITSTATUS_DONE) { if (edit_status == HOTTTEXT_EDITSTATUS_DONE) {
// is already saved, exit edit mode // Save and exit edit mode
store_settings(page);
edit_line = false; edit_line = false;
} else if (edit_line) { } else if (edit_line) {
step_change = edit_status; step_change = edit_status;
@ -741,33 +744,18 @@ uint8_t build_TEXT_message(struct hott_text_message *msg, uint8_t page, uint8_t
bool edit_minheight_value = (edit_mode && (current_line == 6)); bool edit_minheight_value = (edit_mode && (current_line == 6));
if (edit_altitudebeep) { if (edit_altitudebeep) {
if (alarmWarning.AltitudeBeep == HOTTBRIDGESETTINGS_WARNING_DISABLED) { alarmWarning.AltitudeBeep = enable_disable_warning(alarmWarning.AltitudeBeep);
alarmWarning.AltitudeBeep = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
alarmWarning.AltitudeBeep = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
HoTTBridgeSettingsWarningSet(&alarmWarning); HoTTBridgeSettingsWarningSet(&alarmWarning);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
if (edit_minheight) { if (edit_minheight) {
if (alarmWarning.MinHeight == HOTTBRIDGESETTINGS_WARNING_DISABLED) { alarmWarning.MinHeight = enable_disable_warning(alarmWarning.MinHeight);
alarmWarning.MinHeight = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
alarmWarning.MinHeight = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
HoTTBridgeSettingsWarningSet(&alarmWarning); HoTTBridgeSettingsWarningSet(&alarmWarning);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
if (edit_maxheight) { if (edit_maxheight) {
if (alarmWarning.MaxHeight == HOTTBRIDGESETTINGS_WARNING_DISABLED) { alarmWarning.MaxHeight = enable_disable_warning(alarmWarning.MaxHeight);
alarmWarning.MaxHeight = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
alarmWarning.MaxHeight = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
HoTTBridgeSettingsWarningSet(&alarmWarning); HoTTBridgeSettingsWarningSet(&alarmWarning);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
@ -858,33 +846,18 @@ uint8_t build_TEXT_message(struct hott_text_message *msg, uint8_t page, uint8_t
bool edit_minspeed_value = (edit_mode && (current_line == 7)); bool edit_minspeed_value = (edit_mode && (current_line == 7));
if (edit_maxdistance) { if (edit_maxdistance) {
if (alarmWarning.MaxDistance == HOTTBRIDGESETTINGS_WARNING_DISABLED) { alarmWarning.MaxDistance = enable_disable_warning(alarmWarning.MaxDistance);
alarmWarning.MaxDistance = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
alarmWarning.MaxDistance = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
HoTTBridgeSettingsWarningSet(&alarmWarning); HoTTBridgeSettingsWarningSet(&alarmWarning);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
if (edit_minspeed) { if (edit_minspeed) {
if (alarmWarning.MinSpeed == HOTTBRIDGESETTINGS_WARNING_DISABLED) { alarmWarning.MinSpeed = enable_disable_warning(alarmWarning.MinSpeed);
alarmWarning.MinSpeed = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
alarmWarning.MinSpeed = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
HoTTBridgeSettingsWarningSet(&alarmWarning); HoTTBridgeSettingsWarningSet(&alarmWarning);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
if (edit_maxspeed) { if (edit_maxspeed) {
if (alarmWarning.MaxSpeed == HOTTBRIDGESETTINGS_WARNING_DISABLED) { alarmWarning.MaxSpeed = enable_disable_warning(alarmWarning.MaxSpeed);
alarmWarning.MaxSpeed = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
alarmWarning.MaxSpeed = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
HoTTBridgeSettingsWarningSet(&alarmWarning); HoTTBridgeSettingsWarningSet(&alarmWarning);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
if (edit_maxdistance_value) { if (edit_maxdistance_value) {
@ -894,11 +867,13 @@ uint8_t build_TEXT_message(struct hott_text_message *msg, uint8_t page, uint8_t
HoTTBridgeSettingsLimitSet(&alarmLimits); HoTTBridgeSettingsLimitSet(&alarmLimits);
} }
if (edit_maxspeed_value) { if (edit_maxspeed_value) {
// 0kmh to 600kmh
step = (step > HOTTTEXT_EDITSTATUS_STEP100) ? HOTTTEXT_EDITSTATUS_STEP100 : step; step = (step > HOTTTEXT_EDITSTATUS_STEP100) ? HOTTTEXT_EDITSTATUS_STEP100 : step;
alarmLimits.MaxSpeed = get_new_value((int16_t)alarmLimits.MaxSpeed, value_change, step, 0, 600); alarmLimits.MaxSpeed = get_new_value((int16_t)alarmLimits.MaxSpeed, value_change, step, 0, 600);
HoTTBridgeSettingsLimitSet(&alarmLimits); HoTTBridgeSettingsLimitSet(&alarmLimits);
} }
if (edit_minspeed_value) { if (edit_minspeed_value) {
// 0kmh to 150kmh
step = (step > HOTTTEXT_EDITSTATUS_STEP100) ? HOTTTEXT_EDITSTATUS_STEP100 : step; step = (step > HOTTTEXT_EDITSTATUS_STEP100) ? HOTTTEXT_EDITSTATUS_STEP100 : step;
alarmLimits.MinSpeed = get_new_value((int16_t)alarmLimits.MinSpeed, value_change, step, 0, 600); alarmLimits.MinSpeed = get_new_value((int16_t)alarmLimits.MinSpeed, value_change, step, 0, 600);
HoTTBridgeSettingsLimitSet(&alarmLimits); HoTTBridgeSettingsLimitSet(&alarmLimits);
@ -941,33 +916,18 @@ uint8_t build_TEXT_message(struct hott_text_message *msg, uint8_t page, uint8_t
bool edit_maxusedcapacity_value = (edit_mode && (current_line == 7)); bool edit_maxusedcapacity_value = (edit_mode && (current_line == 7));
if (edit_minvoltage) { if (edit_minvoltage) {
if (alarmWarning.MinPowerVoltage == HOTTBRIDGESETTINGS_WARNING_DISABLED) { alarmWarning.MinPowerVoltage = enable_disable_warning(alarmWarning.MinPowerVoltage);
alarmWarning.MinPowerVoltage = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
alarmWarning.MinPowerVoltage = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
HoTTBridgeSettingsWarningSet(&alarmWarning); HoTTBridgeSettingsWarningSet(&alarmWarning);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
if (edit_maxcurrent) { if (edit_maxcurrent) {
if (alarmWarning.MaxCurrent == HOTTBRIDGESETTINGS_WARNING_DISABLED) { alarmWarning.MaxCurrent = enable_disable_warning(alarmWarning.MaxCurrent);
alarmWarning.MaxCurrent = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
alarmWarning.MaxCurrent = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
HoTTBridgeSettingsWarningSet(&alarmWarning); HoTTBridgeSettingsWarningSet(&alarmWarning);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
if (edit_maxusedcapacity) { if (edit_maxusedcapacity) {
if (alarmWarning.MaxUsedCapacity == HOTTBRIDGESETTINGS_WARNING_DISABLED) { alarmWarning.MaxUsedCapacity = enable_disable_warning(alarmWarning.MaxUsedCapacity);
alarmWarning.MaxUsedCapacity = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
alarmWarning.MaxUsedCapacity = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
HoTTBridgeSettingsWarningSet(&alarmWarning); HoTTBridgeSettingsWarningSet(&alarmWarning);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
@ -1082,46 +1042,29 @@ uint8_t build_TEXT_message(struct hott_text_message *msg, uint8_t page, uint8_t
if (edit_mode) { if (edit_mode) {
switch (current_line) { switch (current_line) {
case 2: case 2:
if (sensor.VARIO == HOTTBRIDGESETTINGS_SENSOR_DISABLED) { sensor.VARIO = enable_disable_sensor(sensor.VARIO);
sensor.VARIO = HOTTBRIDGESETTINGS_SENSOR_ENABLED;
} else {
sensor.VARIO = HOTTBRIDGESETTINGS_SENSOR_DISABLED;
}
break; break;
case 3: case 3:
if (sensor.GPS == HOTTBRIDGESETTINGS_SENSOR_DISABLED) { sensor.GPS = enable_disable_sensor(sensor.GPS);
sensor.GPS = HOTTBRIDGESETTINGS_SENSOR_ENABLED;
} else {
sensor.GPS = HOTTBRIDGESETTINGS_SENSOR_DISABLED;
}
break; break;
case 4: case 4:
if (sensor.EAM == HOTTBRIDGESETTINGS_SENSOR_DISABLED) { sensor.EAM = enable_disable_sensor(sensor.EAM);
sensor.EAM = HOTTBRIDGESETTINGS_SENSOR_ENABLED; if (sensor.EAM == HOTTBRIDGESETTINGS_SENSOR_ENABLED) {
// no need to emulate General module // no need to emulate General module
sensor.GAM = HOTTBRIDGESETTINGS_SENSOR_DISABLED; sensor.GAM = HOTTBRIDGESETTINGS_SENSOR_DISABLED;
} else {
sensor.EAM = HOTTBRIDGESETTINGS_SENSOR_DISABLED;
} }
break; break;
case 5: case 5:
if (sensor.GAM == HOTTBRIDGESETTINGS_SENSOR_DISABLED) { sensor.GAM = enable_disable_sensor(sensor.GAM);
sensor.GAM = HOTTBRIDGESETTINGS_SENSOR_ENABLED; if (sensor.GAM == HOTTBRIDGESETTINGS_SENSOR_ENABLED) {
// no need to emulate Electric module // no need to emulate Electric module
sensor.EAM = HOTTBRIDGESETTINGS_SENSOR_DISABLED; sensor.EAM = HOTTBRIDGESETTINGS_SENSOR_DISABLED;
} else {
sensor.GAM = HOTTBRIDGESETTINGS_SENSOR_DISABLED;
} }
break; break;
case 6: case 6:
if (sensor.ESC == HOTTBRIDGESETTINGS_SENSOR_DISABLED) { sensor.ESC = enable_disable_sensor(sensor.ESC);
sensor.ESC = HOTTBRIDGESETTINGS_SENSOR_ENABLED;
} else {
sensor.ESC = HOTTBRIDGESETTINGS_SENSOR_DISABLED;
}
} }
HoTTBridgeSettingsSensorSet(&sensor); HoTTBridgeSettingsSensorSet(&sensor);
UAVObjSave(HoTTBridgeSettingsHandle(), 0);
edit_status = HOTTTEXT_EDITSTATUS_DONE; edit_status = HOTTTEXT_EDITSTATUS_DONE;
} }
@ -1234,6 +1177,32 @@ uint8_t get_page(uint8_t page, bool next)
return page; return page;
} }
/**
* change Hott Warning state
*/
uint8_t enable_disable_warning(uint8_t value)
{
if (value == HOTTBRIDGESETTINGS_WARNING_DISABLED) {
value = HOTTBRIDGESETTINGS_WARNING_ENABLED;
} else {
value = HOTTBRIDGESETTINGS_WARNING_DISABLED;
}
return value;
}
/**
* change emulated Hott sensor state
*/
uint8_t enable_disable_sensor(uint8_t value)
{
if (value == HOTTBRIDGESETTINGS_SENSOR_DISABLED) {
value = HOTTBRIDGESETTINGS_SENSOR_ENABLED;
} else {
value = HOTTBRIDGESETTINGS_SENSOR_DISABLED;
}
return value;
}
/** /**
* get new value for edited field * get new value for edited field
*/ */