Add peak indicators to the bar graph

master
Markus Koch 2018-03-24 18:00:38 +01:00
parent 7828be22aa
commit ed32a6d2fd
2 changed files with 39 additions and 2 deletions

View File

@ -168,7 +168,24 @@ const char hcs12ss59t_bar_styles[2][5][2] = {
{0x40, 0x20}, // 2 {0x40, 0x20}, // 2
{0x40, 0x30}, // 3 {0x40, 0x30}, // 3
{0x40, 0x38} // 4 {0x40, 0x38} // 4
}
};
const char hcs12ss59t_tick_styles[2][5][2] = {
{
{0x80, 0x00}, // 1
{0x00, 0x80}, // 2
{0x00, 0x01}, // 3
{0x00, 0x02}, // 4
{0x04, 0x00} // 5
}, },
{
{0x40, 0x00}, // 1
{0x00, 0x20}, // 2
{0x00, 0x10}, // 3
{0x00, 0x08}, // 4
{0x08, 0x00} // 5
}
}; };
/** /**
@ -176,7 +193,8 @@ const char hcs12ss59t_bar_styles[2][5][2] = {
* @param top Top progress bar value. 0 - HCS12SS59T_NUMDIGITS * 5 * @param top Top progress bar value. 0 - HCS12SS59T_NUMDIGITS * 5
* @param bottom Bottom progress bar value. 0 - HCS12SS59T_NUMDIGITS * 5 * @param bottom Bottom progress bar value. 0 - HCS12SS59T_NUMDIGITS * 5
*/ */
void hcs12ss59t_set_progress(int top, int bottom) void hcs12ss59t_set_progress_peak(uint8_t top, uint8_t bottom,
uint8_t peak_top, uint8_t peak_bottom)
{ {
char charconf[HCS12SS59T_NUMDIGITS * 2]; char charconf[HCS12SS59T_NUMDIGITS * 2];
int full; int full;
@ -189,12 +207,30 @@ void hcs12ss59t_set_progress(int top, int bottom)
top = HCS12SS59T_NUMDIGITS * 5; top = HCS12SS59T_NUMDIGITS * 5;
if (bottom > HCS12SS59T_NUMDIGITS * 5) if (bottom > HCS12SS59T_NUMDIGITS * 5)
bottom = HCS12SS59T_NUMDIGITS * 5; bottom = HCS12SS59T_NUMDIGITS * 5;
if (peak_top > HCS12SS59T_NUMDIGITS * 5)
peak_top = HCS12SS59T_NUMDIGITS * 5;
if (peak_bottom > HCS12SS59T_NUMDIGITS * 5)
peak_bottom = HCS12SS59T_NUMDIGITS * 5;
// Clear memory // Clear memory
for (ptr = charconf; ptr < charconf + HCS12SS59T_NUMDIGITS * 2; ++ptr) { for (ptr = charconf; ptr < charconf + HCS12SS59T_NUMDIGITS * 2; ++ptr) {
*ptr = 0; *ptr = 0;
} }
// Calculate ticks
if (peak_top != 0) {
peak_top--;
ptr = charconf + ((peak_top / 5) * 2);
*(ptr++) |= hcs12ss59t_tick_styles[0][peak_top % 5][0];
*ptr |= hcs12ss59t_tick_styles[0][peak_top % 5][1];
}
if (peak_bottom != 0) {
peak_bottom--;
ptr = charconf + ((peak_bottom / 5) * 2);
*(ptr++) |= hcs12ss59t_tick_styles[1][peak_bottom % 5][0];
*ptr |= hcs12ss59t_tick_styles[1][peak_bottom % 5][1];
}
// Calculate top memory // Calculate top memory
for (row = 0; row < 2; ++row) { for (row = 0; row < 2; ++row) {
if (row == 0) { if (row == 0) {

View File

@ -53,7 +53,8 @@ void hcs12ss59t_set_buffer(char *data);
void hcs12ss59t_set_brightness(char brightness); void hcs12ss59t_set_brightness(char brightness);
void hcs12ss59t_set_lights(char lights); void hcs12ss59t_set_lights(char lights);
void hcs12ss59t_set_character(int addr, char *data, int nchar); void hcs12ss59t_set_character(int addr, char *data, int nchar);
void hcs12ss59t_set_progress(int top, int bottom); void hcs12ss59t_set_progress_peak(uint8_t top, uint8_t bottom, uint8_t peak_top, uint8_t peak_bottom);
#define hcs12ss59t_set_progress(top,bottom) hcs12ss59t_set_progress_peak(top, bottom, 0, 0)
void hcs12ss59t_en_progress(); void hcs12ss59t_en_progress();
/* Low level functions */ /* Low level functions */