@@ -42,7 +42,7 @@ static uint8_t ao_lco_event_debug;
42
42
static uint8_t ao_lco_display_mutex ;
43
43
44
44
void
45
- ao_lco_show_pad (uint8_t pad )
45
+ ao_lco_show_pad (int8_t pad )
46
46
{
47
47
ao_mutex_get (& ao_lco_display_mutex );
48
48
ao_seven_segment_set (AO_LCO_PAD_DIGIT , (uint8_t ) (pad | (ao_lco_drag_race << 4 )));
@@ -76,18 +76,31 @@ ao_lco_show_box(int16_t box)
76
76
}
77
77
78
78
static void
79
- ao_lco_show_voltage (uint16_t decivolts )
79
+ ao_lco_show_value (uint16_t value , uint8_t point )
80
80
{
81
- uint8_t tens , ones , tenths ;
81
+ uint8_t hundreds , tens , ones ;
82
82
83
- PRINTD ("voltage %d\n" , decivolts );
84
- tenths = (uint8_t ) (decivolts % 10 );
85
- ones = (uint8_t ) ((decivolts / 10 ) % 10 );
86
- tens = (uint8_t ) ((decivolts / 100 ) % 10 );
83
+ PRINTD ("value %d\n" , value );
84
+ ones = (uint8_t ) (value % 10 );
85
+ tens = (uint8_t ) ((value / 10 ) % 10 );
86
+ hundreds = (uint8_t ) ((value / 100 ) % 10 );
87
+ switch (point ) {
88
+ case 2 :
89
+ hundreds |= 0x10 ;
90
+ break ;
91
+ case 1 :
92
+ tens |= 0x10 ;
93
+ break ;
94
+ case 0 :
95
+ ones |= 0x10 ;
96
+ break ;
97
+ default :
98
+ break ;
99
+ }
87
100
ao_mutex_get (& ao_lco_display_mutex );
88
- ao_seven_segment_set (AO_LCO_PAD_DIGIT , tenths );
89
- ao_seven_segment_set (AO_LCO_BOX_DIGIT_1 , ones | 0x10 );
90
- ao_seven_segment_set (AO_LCO_BOX_DIGIT_10 , tens );
101
+ ao_seven_segment_set (AO_LCO_PAD_DIGIT , ones );
102
+ ao_seven_segment_set (AO_LCO_BOX_DIGIT_1 , tens );
103
+ ao_seven_segment_set (AO_LCO_BOX_DIGIT_10 , hundreds );
91
104
ao_mutex_put (& ao_lco_display_mutex );
92
105
}
93
106
@@ -99,19 +112,32 @@ ao_lco_show_lco_voltage(void)
99
112
100
113
ao_adc_single_get (& packet );
101
114
decivolt = ao_battery_decivolt (packet .v_batt );
102
- ao_lco_show_voltage ((uint16_t ) decivolt );
115
+ ao_lco_show_value ((uint16_t ) decivolt , 1 );
103
116
}
104
117
105
118
void
106
119
ao_lco_show (void )
107
120
{
108
- if (ao_lco_box == AO_LCO_LCO_VOLTAGE ) {
121
+ switch (ao_lco_box ) {
122
+ case AO_LCO_LCO_VOLTAGE :
109
123
ao_lco_show_lco_voltage ();
110
- } else if (ao_lco_pad == AO_LCO_PAD_VOLTAGE ) {
111
- ao_lco_show_voltage (ao_pad_query .battery );
112
- } else {
113
- ao_lco_show_pad (ao_lco_pad );
114
- ao_lco_show_box (ao_lco_box );
124
+ break ;
125
+ default :
126
+ switch (ao_lco_pad ) {
127
+ case AO_LCO_PAD_VOLTAGE :
128
+ ao_lco_show_value (ao_pad_query .battery , 1 );
129
+ break ;
130
+ case AO_LCO_PAD_RSSI :
131
+ if (!(ao_lco_valid [ao_lco_box ] & AO_LCO_VALID_LAST ))
132
+ ao_lco_show_value (888 , 0 );
133
+ else
134
+ ao_lco_show_value ((uint16_t ) (- ao_radio_cmac_rssi ), 0 );
135
+ break ;
136
+ default :
137
+ ao_lco_show_pad (ao_lco_pad );
138
+ ao_lco_show_box (ao_lco_box );
139
+ break ;
140
+ }
115
141
}
116
142
}
117
143
0 commit comments