firmware: add current state query command
This commit is contained in:
		
							parent
							
								
									6bf50707c4
								
							
						
					
					
						commit
						aba0476bbe
					
				@ -37,7 +37,20 @@ extern "C" {
 | 
			
		||||
 | 
			
		||||
/* Exported types ------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN ET */
 | 
			
		||||
struct ui_state {
 | 
			
		||||
  uint8_t oldchannel;
 | 
			
		||||
  enum {
 | 
			
		||||
    UI_STATE_NORMAL = 0, 
 | 
			
		||||
    UI_STATE_MUTE,
 | 
			
		||||
    UI_STATE_SHORT,
 | 
			
		||||
  } state;
 | 
			
		||||
 | 
			
		||||
  uint8_t gain;
 | 
			
		||||
  uint8_t bboost, tboost;
 | 
			
		||||
  uint8_t latt, ratt;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
extern struct ui_state ui_state; // global ui state
 | 
			
		||||
/* USER CODE END ET */
 | 
			
		||||
 | 
			
		||||
/* Exported constants --------------------------------------------------------*/
 | 
			
		||||
@ -54,6 +67,7 @@ extern "C" {
 | 
			
		||||
void Error_Handler(void);
 | 
			
		||||
 | 
			
		||||
void set_input(uint8_t channel);
 | 
			
		||||
int get_input();
 | 
			
		||||
void set_attenuation(uint8_t left, uint8_t right);
 | 
			
		||||
void set_mute(uint8_t mute); //< tries to switch to muted ui state
 | 
			
		||||
int is_muted(); //< returns whether the ui is muted
 | 
			
		||||
 | 
			
		||||
@ -102,15 +102,7 @@ int test_button_pressed() {
 | 
			
		||||
#undef TEST_BUTTON
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct ui_state {
 | 
			
		||||
  uint8_t oldchannel;
 | 
			
		||||
  enum {
 | 
			
		||||
    UI_STATE_NORMAL = 0, 
 | 
			
		||||
    UI_STATE_MUTE,
 | 
			
		||||
    UI_STATE_SHORT,
 | 
			
		||||
  } state;
 | 
			
		||||
 | 
			
		||||
} ui_state = {
 | 
			
		||||
struct ui_state ui_state = {
 | 
			
		||||
  .oldchannel = -1,
 | 
			
		||||
  .state = UI_STATE_NORMAL,
 | 
			
		||||
};
 | 
			
		||||
@ -131,6 +123,10 @@ void set_input(uint8_t channel) {
 | 
			
		||||
	printf("C%d\n", channel);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int get_input() {
 | 
			
		||||
  return ui_state.oldchannel;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// only mute if the ui allows to 
 | 
			
		||||
void set_mute(uint8_t mute) {
 | 
			
		||||
  if(UI_STATE_MUTE == ui_state.state && mute)
 | 
			
		||||
@ -190,8 +186,8 @@ int is_shorted() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void set_attenuation(uint8_t left, uint8_t right) {
 | 
			
		||||
	bd_set_attenuation(&hi2c1, 0, left);
 | 
			
		||||
	bd_set_attenuation(&hi2c1, 1, right);
 | 
			
		||||
	ui_state.latt = bd_set_attenuation(&hi2c1, 0, left);
 | 
			
		||||
  ui_state.ratt = bd_set_attenuation(&hi2c1, 1, right);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -138,16 +138,24 @@ int parse_buffer() {
 | 
			
		||||
			uint16_t gain;
 | 
			
		||||
			if (next_arg_unsigned(&gain)) break;
 | 
			
		||||
 | 
			
		||||
			printf("G%d\n", bd_set_gain(&hi2c1, gain));
 | 
			
		||||
			printf("G%d\n", (ui_state.gain = bd_set_gain(&hi2c1, gain)));
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case 'L':
 | 
			
		||||
	case 'R':
 | 
			
		||||
	{
 | 
			
		||||
		uint16_t att;
 | 
			
		||||
		uint8_t dir = 0;
 | 
			
		||||
		uint8_t * save = &ui_state.latt;
 | 
			
		||||
 | 
			
		||||
		if (next_arg_unsigned(&att)) break;
 | 
			
		||||
		
 | 
			
		||||
		printf("%c%d\n", temp, bd_set_attenuation(&hi2c1, temp == 'R', att&0xFF));
 | 
			
		||||
		if (temp == 'R') {
 | 
			
		||||
			dir = 1;
 | 
			
		||||
			save = &ui_state.ratt;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		printf("%c%d\n", temp, (*save = bd_set_attenuation(&hi2c1, dir, att&0xFF)));
 | 
			
		||||
	}
 | 
			
		||||
		break;
 | 
			
		||||
	case 'M':
 | 
			
		||||
@ -173,7 +181,7 @@ int parse_buffer() {
 | 
			
		||||
		uint16_t boost;
 | 
			
		||||
		if (next_arg_unsigned(&boost)) break;
 | 
			
		||||
 | 
			
		||||
		printf("B%d\n", bd_set_bass_boost(&hi2c1, boost));
 | 
			
		||||
		printf("B%d\n", (ui_state.bboost = bd_set_bass_boost(&hi2c1, boost)));
 | 
			
		||||
	}
 | 
			
		||||
		break;
 | 
			
		||||
	case 'T':
 | 
			
		||||
@ -181,7 +189,19 @@ int parse_buffer() {
 | 
			
		||||
		uint16_t boost;
 | 
			
		||||
		if (next_arg_unsigned(&boost)) break;
 | 
			
		||||
 | 
			
		||||
		printf("T%d\n", bd_set_treble_boost(&hi2c1, boost));
 | 
			
		||||
		printf("T%d\n", (ui_state.tboost = bd_set_treble_boost(&hi2c1, boost)));
 | 
			
		||||
	}
 | 
			
		||||
		break;
 | 
			
		||||
	case '?':
 | 
			
		||||
	{
 | 
			
		||||
		// return the system state
 | 
			
		||||
		printf("M%d\n", is_muted());
 | 
			
		||||
		printf("S%d\n", is_shorted());
 | 
			
		||||
		printf("C%d\n", get_input());
 | 
			
		||||
		printf("B%d\n", ui_state.bboost);
 | 
			
		||||
		printf("T%d\n", ui_state.tboost);
 | 
			
		||||
		printf("L%d\n", ui_state.latt);
 | 
			
		||||
		printf("R%d\n", ui_state.ratt);
 | 
			
		||||
	}
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user