diff options
-rw-r--r-- | device-functions.c | 6 | ||||
-rw-r--r-- | menus.c | 44 | ||||
-rw-r--r-- | menus.h | 2 | ||||
-rw-r--r-- | parser.c | 2 |
4 files changed, 32 insertions, 22 deletions
diff --git a/device-functions.c b/device-functions.c index e286317..5fca2e5 100644 --- a/device-functions.c +++ b/device-functions.c @@ -224,7 +224,7 @@ void Main_Rst (void) // reset all transient flags globals.Flags = globals.DefaultFlags; - Menu_Clear_Buttons(); + Menu_Clear_Buttons(YES); } @@ -4184,7 +4184,7 @@ int do_full_self_cal(CalStruct *caldata) caldata->response = g_string_new (""); - Menu_Clear_Buttons(); + Menu_Clear_Buttons(YES); string = g_strdup_printf ("Self-calibration in progress - typical run time: %d min, %d sec. To skip, power off 60 sec, then power back on.", globals.Flash.self_cal_typical_time_min, @@ -4507,7 +4507,7 @@ void Set_Rcl(int setting_num) } - Menu_Clear_Buttons(); + Menu_Clear_Buttons(YES); globals.Flags.do_check_settings=YES; /* check for conflicting settings */ @@ -2296,17 +2296,25 @@ static int Submenu_Mult_Value(float mult_by) static void Submenu_Service_Encoder(int encoder_change) { - int error_num; int equivalent_integer; /* non-exponent part stripped of its decimal point */ float new_value; /* new parameter value to be loaded */ float abs_Submenu_Value; /* absolute value of Submenu_Value */ int increment_size; int new_int_value; - int reset_encoder; int channel; - reset_encoder=YES; + // need an encoder change of at least 2 to do anything + if (abs(encoder_change) <= 1) { + Menu_Clear_Buttons(FALSE); + return; + } + else if (encoder_change > 0) { + --encoder_change; + } else { + ++encoder_change; + } + /* quit if RWLS mode */ update_remote_mode (); @@ -2376,7 +2384,6 @@ static void Submenu_Service_Encoder(int encoder_change) { g_usleep (2e5); - reset_encoder=YES; /* to avoid extra unwanted increments */ if (encoder_change>0) { new_int_value=(int) (Submenu_Value + 1.0); if (new_int_value>30) { @@ -2394,7 +2401,6 @@ static void Submenu_Service_Encoder(int encoder_change) { g_usleep (2e5); - reset_encoder=YES; /* to avoid extra unwanted increments */ new_int_value=(int) (Submenu_Value); #define LARGE_CHANGE 3 @@ -2431,7 +2437,6 @@ static void Submenu_Service_Encoder(int encoder_change) ((Submenu_Numeric_Parameter-channel) == Show_route_secondary) ) { g_usleep (2e5); - reset_encoder=YES; /* to avoid extra unwanted increments */ new_int_value=(int) (Submenu_Value); if (encoder_change>0) { @@ -2734,9 +2739,7 @@ static void Submenu_Service_Encoder(int encoder_change) last_encoder_adjust_error=error_num; - if (reset_encoder) { - Menu_Clear_Buttons(); - } + Menu_Clear_Buttons(TRUE); return; } @@ -2744,7 +2747,7 @@ static void Submenu_Service_Encoder(int encoder_change) static void Nonstd_menu_default_rs232(void) { - Menu_Clear_Buttons(); + Menu_Clear_Buttons(TRUE); LCD_clear(); /*0123456789012345678901234567890123456789*/ LCD_write(0,0,"The RS232 settings are now: 1200 baud,"); @@ -2754,7 +2757,7 @@ static void Nonstd_menu_default_rs232(void) IO_Setup_RS232(1200, 1); - Menu_Clear_Buttons(); + Menu_Clear_Buttons(TRUE); globals.MenuStatus.Nonstd_Display=YES; } @@ -2773,12 +2776,24 @@ static void Nonstd_menu_model_info(void) } -void Menu_Clear_Buttons(void) +static void Reset_Encoder () +{ + /* reset encoder-monitoring by presetting counters to mid range */ + I2C_Write(PCF8574A+Upper_Encoder_Port,127); + I2C_Write(PCF8574A+Upper_Encoder_Port,255); +} + + +void Menu_Clear_Buttons(int reset_encoder) { int dummy1,dummy2,dummy3; /* enable interrupt lines */ Read_Keypad(&dummy1,&dummy2,&dummy3); + + if (reset_encoder) { + Reset_Encoder(); + } } @@ -2825,11 +2840,6 @@ static void Read_Keypad(int *button_port_val, int *upper_encoder_val, int *lower /* reenable encoder */ I2C_Write(PCF8574A+Button_Press_Port,255); - /* reset encoder-monitoring by presetting counters to mid range */ - I2C_Write(PCF8574A+Upper_Encoder_Port,127); - I2C_Write(PCF8574A+Upper_Encoder_Port,255); - - /* alarm condition */ /* valid for both local and remote modes */ if ( !(*upper_encoder_val & Over_Temp) @@ -2,5 +2,5 @@ void Update_Main_Menu_If_Visible(void); void Show_Main_Menu(void); -void Menu_Clear_Buttons(void); +void Menu_Clear_Buttons(int reset_encoder); void Menu_Check_Buttons(void); @@ -3767,7 +3767,7 @@ static int Go_eprom_sus_93(gchar** response, int channel, char *parameter,int co return SyntaxError; } - Menu_Clear_Buttons(); + Menu_Clear_Buttons(YES); return OK; break; |