From cb38db30fb40cfff16eabdd33e0656e8f0f2ff57 Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Wed, 1 May 2019 13:05:20 +0200 Subject: [PATCH] LP-609 Add menu page for sensor redirect --- .../UAVOHottBridge/inc/uavohottbridge.h | 26 +++++++--- .../modules/UAVOHottBridge/uavohottbridge.c | 49 +++++++++++++++++-- 2 files changed, 66 insertions(+), 9 deletions(-) diff --git a/flight/modules/UAVOHottBridge/inc/uavohottbridge.h b/flight/modules/UAVOHottBridge/inc/uavohottbridge.h index 5d53f1363..64b8685dd 100644 --- a/flight/modules/UAVOHottBridge/inc/uavohottbridge.h +++ b/flight/modules/UAVOHottBridge/inc/uavohottbridge.h @@ -237,7 +237,8 @@ static const char *const hottTextPageTitle[] = { "------GPS PAGE-------", "--GENERAL AIR PAGE---", "--ELECTRIC AIR PAGE--", - "------ESC PAGE-------" + "------ESC PAGE-------", + "--SENSORREDIR PAGE---" }; typedef enum { @@ -246,13 +247,14 @@ typedef enum { HOTTTEXT_PAGE_GPSCONFIG = 2, HOTTTEXT_PAGE_VARIOWARNINGS = 3, HOTTTEXT_PAGE_VARIOLIMITS = 4, - HOTTTEXT_PAGE_GPS = 5, - HOTTTEXT_PAGE_GENERAL = 6, - HOTTTEXT_PAGE_ELECTRIC = 7, - HOTTTEXT_PAGE_ESC = 8, + HOTTTEXT_PAGE_GPS = 5, + HOTTTEXT_PAGE_GENERAL = 6, + HOTTTEXT_PAGE_ELECTRIC = 7, + HOTTTEXT_PAGE_ESC = 8, + HOTTTEXT_PAGE_SENSORREDIR = 9, } hottTextPageElem; -#define HOTTTEXT_PAGE_NUMELEM 9 +#define HOTTTEXT_PAGE_NUMELEM 10 typedef enum { HOTTTEXT_EDITSTATUS_STEP1 = 0, @@ -275,6 +277,18 @@ static const char *const hottTextADCpinNames[] = { "ADC7" }; +static const char *const hottTextSensorRedirectNames[] = { + " NONE ", + "GPSSPEED", + "AIRSPEED", + "BATTVOLT", + "GYROTEMP", + "BAROTEMP", + " TEMP1 ", + " TEMP2 ", + " GFORCE " +}; + // VARIO Module message structure struct hott_vario_message { uint8_t start; // start byte diff --git a/flight/modules/UAVOHottBridge/uavohottbridge.c b/flight/modules/UAVOHottBridge/uavohottbridge.c index 53d05390b..b2d4019bc 100644 --- a/flight/modules/UAVOHottBridge/uavohottbridge.c +++ b/flight/modules/UAVOHottBridge/uavohottbridge.c @@ -229,9 +229,9 @@ static void uavoHoTTBridgeTask(__attribute__((unused)) void *parameters) int8_t value_change = 0; static uint8_t step_change = 0; - // define allowed edited lines for Main, Main Config, GPS config, VarioWarnings, VarioLimits, GPS, General, Electric and Esc pages - uint8_t min_line[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2 }; - uint8_t max_line[] = { 6, 7, 5, 8, 8, 7, 7, 7, 7 }; + // define allowed edited lines for Main, Main Config, GPS config, VarioWarnings, VarioLimits, GPS, General, Electric, Esc pages and Sensor redirect page + uint8_t min_line[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; + uint8_t max_line[] = { 6, 7, 5, 8, 8, 7, 7, 7, 7, 8 }; static uint8_t page = HOTTTEXT_PAGE_MAIN; static uint8_t edit_status = HOTTTEXT_EDITSTATUS_DONE; @@ -746,6 +746,7 @@ uint8_t build_TEXT_message(struct hott_text_message *msg, uint8_t page, uint8_t HomeLocationSetOptions homeSetFlash; GPSSettingsData gpsSettings; uint8_t adcRouting[HWSETTINGS_ADCROUTING_NUMELEM]; + uint8_t sensorRedirect[HOTTBRIDGESETTINGS_SENSORREDIRECT_NUMELEM]; uint8_t edit_status = step; @@ -1038,6 +1039,35 @@ uint8_t build_TEXT_message(struct hott_text_message *msg, uint8_t page, uint8_t reverse_pixels((char *)msg->text[current_line - 1], 15 + (4 - step), 20 - step); } break; + case HOTTTEXT_PAGE_SENSORREDIR: + if (HoTTBridgeSettingsHandle() != NULL) { + HoTTBridgeSettingsSensorRedirectArrayGet(sensorRedirect); + } + + if (edit_mode) { + uint8_t sensor_data = current_line - 2; + if ((value_change > 0) && (sensorRedirect[sensor_data] < HOTTBRIDGESETTINGS_SENSORREDIRECT_GFORCE)) { + sensorRedirect[sensor_data]++; + } else if ((value_change < 0) && (sensorRedirect[sensor_data] > HOTTBRIDGESETTINGS_SENSORREDIRECT_NONE)) { + sensorRedirect[sensor_data]--; + } + HoTTBridgeSettingsSensorRedirectArraySet(sensorRedirect); + } + + snprintf(msg->text[1], HOTT_TEXT_COLUMNS, " Speed %s ", hottTextSensorRedirectNames[sensorRedirect[HOTTBRIDGESETTINGS_SENSORREDIRECT_SPEED]]); // line 2 + snprintf(msg->text[2], HOTT_TEXT_COLUMNS, " Battery1 %s ", hottTextSensorRedirectNames[sensorRedirect[HOTTBRIDGESETTINGS_SENSORREDIRECT_BATTERY1]]); // line 3 + snprintf(msg->text[3], HOTT_TEXT_COLUMNS, " Battery2 %s ", hottTextSensorRedirectNames[sensorRedirect[HOTTBRIDGESETTINGS_SENSORREDIRECT_BATTERY2]]); // line 4 + snprintf(msg->text[4], HOTT_TEXT_COLUMNS, " Temp1 %s ", hottTextSensorRedirectNames[sensorRedirect[HOTTBRIDGESETTINGS_SENSORREDIRECT_TEMP1]]); // line 5 + snprintf(msg->text[5], HOTT_TEXT_COLUMNS, " Temp2 %s ", hottTextSensorRedirectNames[sensorRedirect[HOTTBRIDGESETTINGS_SENSORREDIRECT_TEMP2]]); // line 6 + snprintf(msg->text[6], HOTT_TEXT_COLUMNS, " Pressure %s ", hottTextSensorRedirectNames[sensorRedirect[HOTTBRIDGESETTINGS_SENSORREDIRECT_PRESSURE]]); // line 7 + snprintf(msg->text[7], HOTT_TEXT_COLUMNS, " RPM %s ", hottTextSensorRedirectNames[sensorRedirect[HOTTBRIDGESETTINGS_SENSORREDIRECT_RPM]]); // line 8 + if (current_line > 1) { + msg->text[current_line - 1][0] = '>'; + } + if (edit_mode) { + reverse_pixels((char *)msg->text[current_line - 1], 12, 20); + } + break; case HOTTTEXT_PAGE_GPSCONFIG: // GPS config page if (GPSSettingsHandle() != NULL) { GPSSettingsGet(&gpsSettings); @@ -1348,12 +1378,24 @@ uint8_t get_page(uint8_t page, bool next) break; } case HOTTTEXT_PAGE_ESC: + if ((sensor.GAM == HOTTBRIDGESETTINGS_SENSOR_ENABLED) || + (sensor.EAM == HOTTBRIDGESETTINGS_SENSOR_ENABLED) || + (sensor.ESC == HOTTBRIDGESETTINGS_SENSOR_ENABLED)) { + page = HOTTTEXT_PAGE_SENSORREDIR; + break; + } + case HOTTTEXT_PAGE_SENSORREDIR: break; default: page = HOTTTEXT_PAGE_MAIN; } } else { switch (page) { + case HOTTTEXT_PAGE_SENSORREDIR: + if (sensor.ESC == HOTTBRIDGESETTINGS_SENSOR_ENABLED) { + page = HOTTTEXT_PAGE_ESC; + break; + } case HOTTTEXT_PAGE_ESC: if (sensor.EAM == HOTTBRIDGESETTINGS_SENSOR_ENABLED) { page = HOTTTEXT_PAGE_ELECTRIC; @@ -1555,6 +1597,7 @@ void store_settings(uint8_t page, uint8_t current_line) case HOTTTEXT_PAGE_VARIOWARNINGS: case HOTTTEXT_PAGE_VARIOLIMITS: case HOTTTEXT_PAGE_GPS: + case HOTTTEXT_PAGE_SENSORREDIR: UAVObjSave(HoTTBridgeSettingsHandle(), 0); break; case HOTTTEXT_PAGE_GENERAL: