// ************************************************************************************************* // @fn display_altitude // @brief Display routine. Supports display in meters and feet. // @param u8 line LINE1 // u8 update DISPLAY_LINE_UPDATE_FULL, // DISPLAY_LINE_UPDATE_PARTIAL, DISPLAY_LINE_CLEAR // @return none // ************************************************************************************************* void display_altitude(int16_t alt, uint8_t scr) { int16_t ft; uint16_t value; if(useMetric){ // Display altitude in xxxx m format, allow 3 leading blank digits if (alt >= 0) { value = alt; display_symbol(scr, LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(scr, LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { value = alt * (-1); display_symbol(scr, LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(scr, LCD_SYMB_ARROW_DOWN, SEG_ON); } display_symbol(scr, LCD_UNIT_L1_M, SEG_ON); }else{ // Convert from meters to feet ft = convert_m_to_ft(alt); // Limit to 9999ft (3047m) if (ft > 9999) ft = 9999; // Display altitude in xxxx ft format, allow 3 leading blank digits if (ft >= 0) { value = ft; display_symbol(scr, LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(scr, LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { value = ft * -1; display_symbol(scr, LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(scr, LCD_SYMB_ARROW_DOWN, SEG_ON); } display_symbol(scr, LCD_UNIT_L1_FT, SEG_ON); } _printf(scr, LCD_SEG_L1_3_0, "%4u", value); }
void display_altitude(u8 line, u8 update) { u8 * str; #ifndef CONFIG_METRIC_ONLY s16 ft; #endif // redraw whole screen if (update == DISPLAY_LINE_UPDATE_FULL) { // Enable pressure measurement sAlt.state = MENU_ITEM_VISIBLE; // Start measurement start_altitude_measurement(); #ifdef CONFIG_ALTI_ACCUMULATOR display_chars(LCD_SEG_L1_3_0, (u8*)"ALT ", SEG_ON); #endif #ifdef CONFIG_METRIC_ONLY display_symbol(LCD_UNIT_L1_M, SEG_ON); #else if (sys.flag.use_metric_units) { // Display "m" symbol display_symbol(LCD_UNIT_L1_M, SEG_ON); } else { // Display "ft" symbol display_symbol(LCD_UNIT_L1_FT, SEG_ON); } #endif // Display altitude display_altitude(LINE1, DISPLAY_LINE_UPDATE_PARTIAL); } else if (update == DISPLAY_LINE_UPDATE_PARTIAL) { // Update display only while measurement is active if (sAlt.timeout > 0) { #ifndef CONFIG_METRIC_ONLY if (sys.flag.use_metric_units) { #endif // Display altitude in xxxx m format, allow 3 leading blank digits if (sAlt.altitude >= 0) { #ifdef CONFIG_ALTI_ACCUMULATOR str = _itoa(sAlt.altitude, 5, 4); #else str = _itoa(sAlt.altitude, 4, 3); #endif display_symbol(LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { #ifdef CONFIG_ALTI_ACCUMULATOR str = _itoa(sAlt.altitude*(-1), 4, 3); #else str = _itoa(sAlt.altitude*(-1), 5, 4); #endif display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_ON); } #ifndef CONFIG_METRIC_ONLY } else { // Convert from meters to feet ft = convert_m_to_ft(sAlt.altitude); #ifndef CONFIG_ALTI_ACCUMULATOR // Limit to 9999ft (3047m) if (ft > 9999) ft = 9999; #endif // Display altitude in xxxx ft format, allow 3 leading blank digits if (ft >= 0) { #ifdef CONFIG_ALTI_ACCUMULATOR str = _itoa(ft, 4, 3); #else str = _itoa(ft, 5, 4); #endif display_symbol(LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { #ifdef CONFIG_ALTI_ACCUMULATOR str = _itoa(ft*(-1), 4, 3); #else str = _itoa(ft*(-1), 5, 4); #endif display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_ON); } } #endif #ifdef CONFIG_ALTI_ACCUMULATOR // display altitude on bottom line (5 digits) clear_line(LINE2); display_chars(LCD_SEG_L2_4_0, str, SEG_ON); #else display_chars(LCD_SEG_L1_3_0, str, SEG_ON); #endif } } else if (update == DISPLAY_LINE_CLEAR) { // Disable pressure measurement sAlt.state = MENU_ITEM_NOT_VISIBLE; // Stop measurement stop_altitude_measurement(); // Clean up function-specific segments before leaving function #ifdef CONFIG_ALTI_ACCUMULATOR // clear off the altitude display from the second line clear_line(LINE2); // should really try to get the date displayed here again too #endif display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } }
// ************************************************************************************************* // @fn mx_altitude // @brief Mx button handler to set the altitude offset. // @param u8 line LINE1 // @return none // ************************************************************************************************* void mx_altitude(u8 line) { s32 altitude; s32 limit_high, limit_low; // Clear display clear_display_all(); #ifdef CONFIG_ALTI_ACCUMULATOR // Display "ALt" on top line display_chars(LCD_SEG_L1_3_0, (u8*)"ALT ", SEG_ON); clear_line(LINE2); #endif // Set lower and upper limits for offset correction #ifdef CONFIG_METRIC_ONLY display_symbol(LCD_UNIT_L1_M, SEG_ON); // Convert global variable to local variable altitude = sAlt.altitude; // Limits for set_value function limit_low = -100; limit_high = 9000; #else if (sys.flag.use_metric_units) { // Display "m" symbol display_symbol(LCD_UNIT_L1_M, SEG_ON); // Convert global variable to local variable altitude = sAlt.altitude; // Limits for set_value function limit_low = -100; limit_high = 9000; } else // English units { // Display "ft" symbol display_symbol(LCD_UNIT_L1_FT, SEG_ON); // Convert altitude in meters to feet altitude = sAlt.altitude; // Convert from meters to feet altitude = convert_m_to_ft(altitude); // Limits for set_value function limit_low = -500; #ifdef CONFIG_ALTI_ACCUMULATOR limit_high = 33000; #else limit_high = 9999; #endif } #endif // Loop values until all are set or user breaks set while(1) { // Idle timeout: exit without saving if (sys.flag.idle_timeout) break; // Button STAR (short): save, then exit if (button.flag.star) { // When using English units, convert ft back to m before updating pressure table #ifndef CONFIG_METRIC_ONLY if (!sys.flag.use_metric_units) altitude = convert_ft_to_m((s16)altitude); #endif // Update pressure table update_pressure_table((s16)altitude, sAlt.pressure, sAlt.temperature); // Set display update flag display.flag.line1_full_update = 1; break; } // Set current altitude - offset is set when leaving function #ifdef CONFIG_ALTI_ACCUMULATOR // use 2nd line as it displays larger numbers set_value(&altitude, 5, 4, limit_low, limit_high, SETVALUE_DISPLAY_VALUE + SETVALUE_FAST_MODE + SETVALUE_DISPLAY_ARROWS, LCD_SEG_L2_4_0, display_value1); #else set_value(&altitude, 4, 3, limit_low, limit_high, SETVALUE_DISPLAY_VALUE + SETVALUE_FAST_MODE + SETVALUE_DISPLAY_ARROWS, LCD_SEG_L1_3_0, display_value1); #endif } // Clear button flags button.all_flags = 0; }
// ************************************************************************************************* // @fn display_altitude // @brief Display routine. Supports display in meters and feet. // @param u8 line LINE1 // u8 update DISPLAY_LINE_UPDATE_FULL, DISPLAY_LINE_UPDATE_PARTIAL, DISPLAY_LINE_CLEAR // @return none // ************************************************************************************************* void display_altitude(u8 line, u8 update) { u8 *str; s16 ft; // Start measurement start_altitude_measurement(); // redraw whole screen if (update == DISPLAY_LINE_UPDATE_FULL) { if (sys.flag.use_metric_units) { // Display "m" symbol display_symbol(LCD_UNIT_L1_M, SEG_ON); } else { // Display "ft" symbol display_symbol(LCD_UNIT_L1_FT, SEG_ON); } // Display altitude display_altitude(LINE1, DISPLAY_LINE_UPDATE_PARTIAL); } else if (update == DISPLAY_LINE_UPDATE_PARTIAL) { if (sys.flag.use_metric_units) { // Display altitude in xxxx m format, allow 3 leading blank digits if (sAlt.altitude >= 0) { str = int_to_array(sAlt.altitude, 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { str = int_to_array(sAlt.altitude * (-1), 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_ON); } } else { // Convert from meters to feet ft = convert_m_to_ft(sAlt.altitude); // Limit to 9999ft (3047m) if (ft > 9999) ft = 9999; // Display altitude in xxxx ft format, allow 3 leading blank digits if (ft >= 0) { str = int_to_array(ft, 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { str = int_to_array(ft * (-1), 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_ON); } } display_chars(LCD_SEG_L1_3_0, str, SEG_ON); } else if (update == DISPLAY_LINE_CLEAR) { // Stop measurement stop_altitude_measurement(); // Clean up function-specific segments before leaving function display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } }
// ************************************************************************************************* // @fn display_altitude // @brief Display routine. Supports display in meters and feet. // @param u8 line LINE1 // u8 update DISPLAY_LINE_UPDATE_FULL, // DISPLAY_LINE_UPDATE_PARTIAL, DISPLAY_LINE_CLEAR // @return none // ************************************************************************************************* void display_altitude(u8 line, u8 update) { u8 *str; s16 ft; // redraw whole screen if (update == DISPLAY_LINE_UPDATE_FULL) { // Enable pressure measurement sAlt.state = MENU_ITEM_VISIBLE; // Start measurement start_altitude_measurement(); // Display altitude display_altitude(LINE1, DISPLAY_LINE_UPDATE_PARTIAL); } else if (update == DISPLAY_LINE_UPDATE_PARTIAL) { // Update display only while measurement is active if (sAlt.timeout > 0) { if (sAlt.display == DISPLAY_DEFAULT_VIEW) { display_symbol(LCD_UNIT_L1_PER_H, SEG_OFF); display_symbol(LCD_SYMB_AM, SEG_OFF); if (sys.flag.use_metric_units) { // Display "m" symbol display_symbol(LCD_UNIT_L1_M, SEG_ON); } else { // Display "ft" symbol display_symbol(LCD_UNIT_L1_FT, SEG_ON); } if (sys.flag.use_metric_units) { // Display altitude in xxxx m format, allow 3 leading blank digits if (sAlt.altitude >= 0) { str = int_to_array(sAlt.altitude, 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { str = int_to_array((-1)*sAlt.altitude, 4, 3); //const u8 neg_txt[3] ="NEG"; //str = (u8 *)neg_txt; display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_ON); } } else { // Convert from meters to feet ft = convert_m_to_ft(sAlt.altitude); // Limit to 9999ft (3047m) if (ft > 9999) ft = 9999; // Display altitude in xxxx ft format, allow 3 leading blank digits if (ft >= 0) { str = int_to_array(ft, 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { str = int_to_array(ft * (-1), 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_ON); } } display_symbol(LCD_ICON_RECORD, SEG_OFF_BLINK_OFF); display_chars(LCD_SEG_L1_3_0, str, SEG_ON); } else if (sAlt.display == DISPLAY_ALTERNATIVE_VIEW) { // Display Pressure in hPa u16 PressureToDisp = (u16) (((float)sAlt.pressure + 100.00 * (float) sAlt.pressure_offset) / 100.00 + 0.5); str = int_to_array(PressureToDisp, 4, 3); display_symbol(LCD_SYMB_AM, SEG_OFF); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_UNIT_L1_PER_H, SEG_ON_BLINK_OFF); display_chars(LCD_SEG_L1_3_0, str, SEG_ON); } else if (sAlt.display == DISPLAY_ALTERNATIVE_VIEW1) { // Display Pressure in mmHg u16 PressureToDisp = (u16) (3.0 * ((float)sAlt.pressure + 100.00 * (float)sAlt.pressure_offset) / 400.00 + 0.5); str = int_to_array(PressureToDisp, 4, 3); // str = int_to_array(sAlt.pressure_delta, 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_UNIT_L1_PER_H, SEG_OFF); display_symbol(LCD_ICON_RECORD, SEG_OFF_BLINK_OFF); display_symbol(LCD_SYMB_AM, SEG_ON); display_chars(LCD_SEG_L1_3_0, str, SEG_ON); } else if (sAlt.display == DISPLAY_ALTERNATIVE_VIEW2) { display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); display_symbol(LCD_SYMB_AM, SEG_OFF); display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_UNIT_L1_PER_H, SEG_OFF); display_symbol(LCD_ICON_RECORD, SEG_ON_BLINK_ON); s16 dp = sAlt.pressure_delta; if (dp > 250) { // unstable high pressure display_chars(LCD_SEG_L1_3_0, (u8 *) "UN H", SEG_ON); } else if ((dp >= 50) && (dp <= 250)) { // stable good weather display_chars(LCD_SEG_L1_3_0, (u8 *) " SUN", SEG_ON); } else if ((dp >= -50) && (dp < 50)) { // stable display_chars(LCD_SEG_L1_3_0, (u8 *) "STAB", SEG_ON); } else if ((dp > -250) && (dp < -50)) { // stable rainy display_chars(LCD_SEG_L1_3_0, (u8 *) "RAIN", SEG_ON); } else { // unstable low display_chars(LCD_SEG_L1_3_0, (u8 *) "UN L", SEG_ON); } /* u32 Temp = (u32)((float) sAlt.pressure_sum / ((float) sAlt.pressure_counter * 100.0) + 0.5); str = int_to_array(Temp, 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); display_symbol(LCD_SYMB_AM, SEG_OFF); display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_UNIT_L1_PER_H, SEG_ON_BLINK_ON); display_chars(LCD_SEG_L1_3_0, str, SEG_ON); */ } else { if (sAlt.pressure_delta >= 0) { str = int_to_array(sAlt.pressure_delta, 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { str = int_to_array(sAlt.pressure_delta * (-1), 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_ON); } display_symbol(LCD_ICON_RECORD, SEG_OFF_BLINK_OFF); display_symbol(LCD_SYMB_AM, SEG_OFF); display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_UNIT_L1_PER_H, SEG_ON); display_chars(LCD_SEG_L1_3_0, str, SEG_ON); } } } else if (update == DISPLAY_LINE_CLEAR) { // Disable pressure measurement sAlt.state = MENU_ITEM_NOT_VISIBLE; // Stop measurement stop_altitude_measurement(); // Clean up function-specific segments before leaving function display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); display_symbol(LCD_UNIT_L1_PER_H, SEG_OFF_BLINK_OFF); display_symbol(LCD_SYMB_AM, SEG_OFF); display_symbol(LCD_ICON_RECORD, SEG_OFF_BLINK_OFF); sAlt.display = DISPLAY_DEFAULT_VIEW; } }
// ************************************************************************************************* // @fn mx_altitude // @brief Mx button handler to set the altitude offset. // @param u8 line LINE1 // @return none // ************************************************************************************************* void mx_altitude(u8 line) { u8 select; s32 altitude; s32 limit_high, limit_low; s32 offset; select = 0; // Clear display clear_display_all(); offset = sAlt.pressure_offset; // Set lower and upper limits for offset correction if (sys.flag.use_metric_units) { // Display "m" symbol display_symbol(LCD_UNIT_L1_M, SEG_ON); // Convert global variable to local variable altitude = sAlt.altitude; // Limits for set_value function limit_low = -100; limit_high = 4000; } else // English units { // Display "ft" symbol display_symbol(LCD_UNIT_L1_FT, SEG_ON); // Convert altitude in meters to feet altitude = sAlt.altitude; // Convert from meters to feet altitude = convert_m_to_ft(altitude); // Limits for set_value function limit_low = -500; limit_high = 9999; } // Loop values until all are set or user breaks set while (1) { // Idle timeout: exit without saving if (sys.flag.idle_timeout) break; // Button STAR (short): save, then exit if (button.flag.star) { // When using English units, convert ft back to m before updating pressure table if (!sys.flag.use_metric_units) altitude = convert_ft_to_m((s16) altitude); // Update pressure table update_pressure_table((s16) altitude, sAlt.pressure, sAlt.temperature); sAlt.pressure_offset = offset; // Set display update flag display.flag.line1_full_update = 1; break; } switch (select) { case 0: // Set current altitude - offset is set when leaving function if (sys.flag.use_metric_units) { // Display "m" symbol display_symbol(LCD_UNIT_L1_M, SEG_ON); } else { // // Display "ft" symbol display_symbol(LCD_UNIT_L1_FT, SEG_ON); } display_symbol(LCD_UNIT_L1_PER_H, SEG_OFF); display_chars(LCD_SEG_L2_5_0, (u8 *) " ALT", SEG_ON); set_value(&altitude, 4, 3, limit_low, limit_high, SETVALUE_DISPLAY_VALUE + SETVALUE_FAST_MODE + SETVALUE_DISPLAY_ARROWS + SETVALUE_NEXT_VALUE, LCD_SEG_L1_3_0, display_value); select = 1; break; case 1: // Set pressure offset display_symbol(LCD_UNIT_L1_PER_H, SEG_ON); display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_chars(LCD_SEG_L2_5_0, (u8 *) " OFFS", SEG_ON); set_value(&offset, 4, 3, -100, 100, SETVALUE_DISPLAY_VALUE + SETVALUE_FAST_MODE + SETVALUE_DISPLAY_ARROWS + SETVALUE_NEXT_VALUE, LCD_SEG_L1_3_0, display_value); select = 0; break; } } // Clear button flags button.all_flags = 0; }
// ************************************************************************************************* // @fn display_altitude // @brief Display routine. Supports display in meters and feet. // @param u8 line LINE1 // u8 update DISPLAY_LINE_UPDATE_FULL, DISPLAY_LINE_UPDATE_PARTIAL, DISPLAY_LINE_CLEAR // @return none // ************************************************************************************************* void display_altitude(u8 line, u8 update) { u8 * str; s16 ft; // redraw whole screen if (update == DISPLAY_LINE_UPDATE_FULL) { // Enable pressure measurement sAlt.state = MENU_ITEM_VISIBLE; // Start measurement start_altitude_measurement(); // Display altitude display_altitude(LINE1, DISPLAY_LINE_UPDATE_PARTIAL); } else if (update == DISPLAY_LINE_UPDATE_PARTIAL) { // Update display only while measurement is active if (sAlt.timeout > 0) { // Altitude view if (PressDisplay == DISPLAY_DEFAULT_VIEW) { display_symbol(LCD_SEG_L1_DP1, SEG_OFF); if (sys.flag.use_metric_units) { // Display "m" symbol display_symbol(LCD_UNIT_L1_M, SEG_ON); // Display altitude in xxxx m format, allow 3 leading blank digits if (sAlt.altitude >= 0) { str = itoa(sAlt.altitude, 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { str = itoa(sAlt.altitude*(-1), 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_ON); } } else { // Display "ft" symbol display_symbol(LCD_UNIT_L1_FT, SEG_ON); // Convert from meters to feet ft = convert_m_to_ft(sAlt.altitude); // Limit to 9999ft (3047m) if (ft > 9999) ft = 9999; // Display altitude in xxxx ft format, allow 3 leading blank digits if (ft >= 0) { str = itoa(ft, 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_ON); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } else { str = itoa(ft*(-1), 4, 3); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_ON); } } } // Pressure view, unit: milliBar = hectoPascal else if (PressDisplay == DISPLAY_ALTERNATIVE_VIEW) { display_symbol(LCD_SEG_L1_DP1, SEG_OFF); display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); str = itoa(AmbientPressure, 4, 3); } // Pressure view, unit: PSI (Pound-force per square inch absolute) 1mbar = 0.01450377 PSI else // DISPLAY_ALTERNATIVE_VIEW_2 { str = itoa((u32)AmbientPressure * 10000L / 6895L, 4, 3); display_symbol(LCD_SEG_L1_DP1, SEG_ON); } display_chars(LCD_SEG_L1_3_0, str, SEG_ON); } } else if (update == DISPLAY_LINE_CLEAR) { // Disable pressure measurement sAlt.state = MENU_ITEM_NOT_VISIBLE; // Stop measurement stop_altitude_measurement(); // Clean up function-specific segments before leaving function display_symbol(LCD_SEG_L1_DP1, SEG_OFF); display_symbol(LCD_UNIT_L1_M, SEG_OFF); display_symbol(LCD_UNIT_L1_FT, SEG_OFF); display_symbol(LCD_SYMB_ARROW_UP, SEG_OFF); display_symbol(LCD_SYMB_ARROW_DOWN, SEG_OFF); } }