From e959d9a8ec394242251180dd4e97818164969528 Mon Sep 17 00:00:00 2001 From: furrtek Date: Mon, 16 May 2016 12:02:45 +0200 Subject: [PATCH] More messagepack --- firmware/application/main.cpp | 1 + firmware/application/ui_closecall.cpp | 55 ++++--- firmware/application/ui_closecall.hpp | 11 +- firmware/common/msgpack.cpp | 212 +++++++++++++++++++++----- firmware/common/msgpack.hpp | 62 ++++++-- firmware/common/ui_widget.cpp | 25 +-- firmware/portapack-h1-firmware.bin | Bin 470472 -> 471080 bytes 7 files changed, 277 insertions(+), 89 deletions(-) diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp index 622fccf25..7aba6fc24 100755 --- a/firmware/application/main.cpp +++ b/firmware/application/main.cpp @@ -21,6 +21,7 @@ //BUG: No audio in about when shown second time //BUG: Description doesn't show up first time going to system>module info (UI drawn on top) +//TODO: Breakout game //TODO: SD card wiper //TODO: Draw on touchscreen and transmit as spectrum paint //TODO: Use progressbars diff --git a/firmware/application/ui_closecall.cpp b/firmware/application/ui_closecall.cpp index 629f1f3d5..c921a24f9 100644 --- a/firmware/application/ui_closecall.cpp +++ b/firmware/application/ui_closecall.cpp @@ -32,7 +32,7 @@ #include "portapack.hpp" #include "radio.hpp" #include "baseband_api.hpp" -#include "string_format.hpp" +#include "string_format.hpp" // DEBUG #include "hackrf_hal.hpp" @@ -55,19 +55,17 @@ CloseCallView::~CloseCallView() { void CloseCallView::do_detection() { uint8_t xmax = 0; - uint16_t imax = 0; + uint16_t imax = 0, c; uint8_t threshold; - rf::Frequency resolved_frequency; - size_t i; mean /= (CC_BIN_NB * (slices_max + 1)); - for (i = 0; i < (slices_max + 1); i++) { - threshold = slicemax_db[i]; + for (c = 0; c < (slices_max + 1); c++) { + threshold = slicemax_db[c]; if (threshold >= min_threshold) { if (((uint8_t)(threshold - min_threshold) > mean) && (threshold > xmax)) { xmax = threshold; - imax = slicemax_idx[i] + (i * CC_BIN_NB); + imax = slicemax_idx[c] + (c * CC_BIN_NB); } } } @@ -97,9 +95,9 @@ void CloseCallView::do_detection() { //strcat(finalstr, "Locked: "); //strcat(finalstr, fstr.c_str()); - text_infos.set("Locked ! "); - big_display.set(resolved_frequency); + text_infos.set("Locked !"); big_display.set_style(&style_locked); + big_display.set(resolved_frequency); locked = true; locked_frequency = imax; @@ -113,8 +111,9 @@ void CloseCallView::do_detection() { if (locked == true) { if (release_counter == 8) { locked = false; - text_infos.set("Lost "); + text_infos.set("Lost "); big_display.set_style(&style_grey); + big_display.set(resolved_frequency); } else { release_counter++; } @@ -319,33 +318,53 @@ CloseCallView::CloseCallView( &field_threshold, &text_slices, &text_rate, + &text_mhz, &text_infos, &text_debug, &big_display, &button_exit } }); - uint8_t testbuffer[] = { 0xDE, 0x00, 0x02, + // DEBUG ------------------------------------------------------------------------- + /*uint8_t testbuffer[] = { 0xDE, 0x00, 0x02, 0xCD, 0x00, 0x00, // Key 0000 = False 0xC2, 0xCD, 0x00, 0x01, // Key 0001 = True - 0xC3 - }; + 0xC3, + 0xCD, 0x00, 0x02, // Key 0002 = False + 0xC2, + 0xCD, 0x00, 0x03, // Key 0003 = fixnum 19 + 19 + };*/ - // DEBUG - bool debug_v; + uint8_t testbuffer[100]; + uint8_t debug_v = 7; + size_t bptr; MsgPack msgpack; - msgpack.msgpack_get(&testbuffer, sizeof(testbuffer), MsgPack::TestList, &debug_v); // MsgPack::FrequencyList - if (debug_v) + + bptr = 0; + + msgpack.msgpack_init(&testbuffer, &bptr); + msgpack.msgpack_add(&testbuffer, &bptr, MsgPack::TestListA, false); + msgpack.msgpack_add(&testbuffer, &bptr, MsgPack::TestListB, true); + msgpack.msgpack_add(&testbuffer, &bptr, MsgPack::TestListC, false); + msgpack.msgpack_add(&testbuffer, &bptr, MsgPack::TestListD, (uint8_t)19); + + msgpack.msgpack_get(&testbuffer, bptr, MsgPack::TestListD, &debug_v); + if (debug_v == 19) text_debug.set("OK!"); else - text_debug.set("NOK"); + text_debug.set(to_string_dec_uint(testbuffer[0])); + + // DEBUG ------------------------------------------------------------------------- text_labels_a.set_style(&style_grey); text_labels_b.set_style(&style_grey); text_labels_c.set_style(&style_grey); text_slices.set_style(&style_grey); text_rate.set_style(&style_grey); + text_mhz.set_style(&style_grey); + big_display.set_style(&style_grey); field_threshold.set_value(80); field_threshold.on_change = [this](int32_t v) { diff --git a/firmware/application/ui_closecall.hpp b/firmware/application/ui_closecall.hpp index 26746327f..1cfc3ac14 100644 --- a/firmware/application/ui_closecall.hpp +++ b/firmware/application/ui_closecall.hpp @@ -70,7 +70,7 @@ private: uint8_t slices_max; uint8_t slices_counter; uint16_t last_channel; - rf::Frequency scan_span, locked_frequency; + rf::Frequency scan_span, locked_frequency, resolved_frequency; uint8_t slicemax_db[32]; // Todo: Cap max slices ! uint8_t slicemax_idx[32]; uint8_t scan_counter; @@ -138,7 +138,7 @@ private: }; Text text_infos { - { 1 * 8, 6 * 16, 28 * 8, 16 }, + { 1 * 8, 6 * 16, 8 * 8, 16 }, "..." }; @@ -147,9 +147,14 @@ private: 0 }; + Text text_mhz { + { 26 * 8, 12 * 16, 3 * 8, 16 }, + "MHz" + }; + Text text_debug { { 1 * 8, 13 * 16, 28 * 8, 16 }, - "..." + "DEBUG: Error" }; Button button_exit { diff --git a/firmware/common/msgpack.cpp b/firmware/common/msgpack.cpp index 93b9e1e56..2ba4f1a3d 100644 --- a/firmware/common/msgpack.cpp +++ b/firmware/common/msgpack.cpp @@ -22,8 +22,6 @@ #include "msgpack.hpp" -#include - bool MsgPack::get_bool(const void * buffer, const bool inc, bool * value) { uint8_t v; @@ -55,6 +53,26 @@ bool MsgPack::get_raw_word(const void * buffer, const bool inc, uint16_t * word) return true; } +bool MsgPack::get_u8(const void * buffer, const bool inc, uint8_t * value) { + uint8_t v; + + if (seek_ptr >= buffer_size) return false; // End of buffer + + v = ((uint8_t*)buffer)[seek_ptr]; + + if (!(v & 0x80)) + *value = ((uint8_t*)buffer)[seek_ptr]; // Fixnum + else if (v == MSGPACK_TYPE_U8) + *value = ((uint8_t*)buffer)[seek_ptr + 1]; // u8 + else + return false; // Value isn't a u8 or fixnum + + if (inc) seek_ptr++; + return true; +} + +// TODO: Typecheck function + bool MsgPack::get_u16(const void * buffer, const bool inc, uint16_t * value) { uint8_t byte; @@ -76,20 +94,7 @@ bool MsgPack::get_s32(const void * buffer, const bool inc, int32_t * value) { return true; } -bool MsgPack::get_s64(const void * buffer, const bool inc, int64_t * value) { - uint8_t byte; - - if ((seek_ptr + 3) >= buffer_size) return false; // End of buffer - if ((get_raw_byte(buffer, true, &byte)) && (byte != MSGPACK_TYPE_S64)) return false; // Value isn't a s64 - *value = ((int64_t)((uint8_t*)buffer)[seek_ptr] << 56) | ((int64_t)((uint8_t*)buffer)[seek_ptr + 1] << 48) | - ((int64_t)((uint8_t*)buffer)[seek_ptr + 2] << 40) | ((int64_t)((uint8_t*)buffer)[seek_ptr + 3] << 32) | - (((uint8_t*)buffer)[seek_ptr + 4] << 24) | (((uint8_t*)buffer)[seek_ptr + 5] << 16) | - (((uint8_t*)buffer)[seek_ptr + 6] << 8) | ((uint8_t*)buffer)[seek_ptr + 7]; - if (inc) seek_ptr += 8; - return true; -} - -bool MsgPack::get_chars(const void * buffer, const bool inc, char * value) { +bool MsgPack::get_string(const void * buffer, const bool inc, std::string& value) { size_t length; uint8_t byte; @@ -100,11 +105,11 @@ bool MsgPack::get_chars(const void * buffer, const bool inc, char * value) { if (byte == MSGPACK_TYPE_STR8) { if (!get_raw_byte(buffer, true, (uint8_t*)&length)) return false; // Couldn't get str8 length - } else { + } else if (byte == MSGPACK_TYPE_STR16) { if (!get_raw_word(buffer, true, (uint16_t*)&length)) return false; // Couldn't get str16 length } - memcpy(value, ((uint8_t*)buffer), length); + memcpy(&value[0], ((uint8_t*)buffer), length); //std::string( if (inc) seek_ptr += length; return true; @@ -112,34 +117,61 @@ bool MsgPack::get_chars(const void * buffer, const bool inc, char * value) { bool MsgPack::init_search(const void * buffer, const size_t size) { uint8_t byte; - uint16_t map_size; // Unused for now + uint16_t map_size; if (!size) return false; buffer_size = size; seek_ptr = 0; if ((get_raw_byte(buffer, true, &byte)) && (byte != MSGPACK_TYPE_MAP16)) return false; // First record isn't a map16 if (!get_raw_word(buffer, true, &map_size)) return false; // Couldn't get map16 size + if (!map_size) return false; return true; } bool MsgPack::skip(const void * buffer) { - uint8_t byte; + uint8_t byte, c; size_t length; if (!get_raw_byte(buffer, true, &byte)) return false; // Couldn't get type + if (!(byte & 0x80)) return true; // Positive fixnum, already skipped by get_raw_byte + if ((byte & 0xE0) == 0xE0) return true; // Negative fixnum, already skipped by get_raw_byte + if ((byte & 0xE0) == 0xA0) { // Fixstr + seek_ptr += (byte & 0x1F); + return true; + } + if ((byte & 0xF0) == 0x80) { // Fixmap + length = (byte & 0x0F) * 2; + for (c = 0; c < length; c++) + skip(buffer); + return true; + } + if ((byte & 0xF0) == 0x90) { // Fixarray + length = byte & 0x0F; + for (c = 0; c < length; c++) + skip(buffer); + return true; + } + switch (byte) { + case MSGPACK_NIL: case MSGPACK_FALSE: - case MSGPACK_TRUE: - return true; // Already skipped by get_raw_byte + case MSGPACK_TRUE: // Already skipped by get_raw_byte + break; + case MSGPACK_TYPE_U8: + case MSGPACK_TYPE_S8: + seek_ptr++; break; case MSGPACK_TYPE_U16: + case MSGPACK_TYPE_S16: seek_ptr += 2; break; + case MSGPACK_TYPE_U32: case MSGPACK_TYPE_S32: seek_ptr += 4; break; + case MSGPACK_TYPE_U64: case MSGPACK_TYPE_S64: seek_ptr += 8; break; @@ -152,11 +184,23 @@ bool MsgPack::skip(const void * buffer) { if (!get_raw_word(buffer, true, (uint16_t*)&length)) return false; // Couldn't get str16 length seek_ptr += length; break; + + case MSGPACK_TYPE_ARR16: + if (!get_raw_word(buffer, true, (uint16_t*)&length)) return false; // Couldn't get arr16 length + for (c = 0; c < length; c++) + skip(buffer); + break; + + case MSGPACK_TYPE_MAP16: + if (!get_raw_word(buffer, true, (uint16_t*)&length)) return false; // Couldn't get map16 length + for (c = 0; c < (length * 2); c++) + skip(buffer); + break; default: return false; // Type unsupported } - + return true; } @@ -164,48 +208,134 @@ bool MsgPack::search_key(const void * buffer, const MsgPack::RecID record_id) { uint8_t byte; uint16_t key; - while (get_raw_byte(buffer, true, &byte)) { - if (byte == MSGPACK_TYPE_U16) { - if (!get_u16(buffer, true, &key)) return false; // Couldn't get key - if (key == record_id) return true; // Found record - if (!skip(buffer)) return false; // Can't skip to next key - } else { - return false; // Key wasn't a U16 - } + while (get_raw_byte(buffer, false, &byte)) { + if (!get_u16(buffer, true, &key)) return false; // Couldn't get key + if (key == record_id) return true; // Found record + if (!skip(buffer)) return false; // Can't skip to next key }; return false; } -bool MsgPack::msgpack_get(const void * buffer, const size_t size, const MsgPack::RecID record_id, bool * value) { +bool MsgPack::msgpack_get(const void * buffer, const size_t size, const RecID record_id, bool * value) { init_search(buffer, size); if (!search_key(buffer, record_id)) return false; // Record not found - *value = true; - return true; if (!get_bool(buffer, false, value)) return false; // Value isn't a bool return true; } -bool MsgPack::msgpack_get(const void * buffer, size_t size, RecID record_id, int32_t * value) { - init_search(buffer, size); +bool MsgPack::msgpack_get(const void * buffer, const size_t size, const RecID record_id, uint8_t * value) { + if (!init_search(buffer, size)) return false; if (!search_key(buffer, record_id)) return false; // Record not found - if (!get_s32(buffer, false, value)) return false; // Value isn't a s32 + if (!get_u8(buffer, false, value)) return false; // Value isn't a u8 return true; } -bool MsgPack::msgpack_get(const void * buffer, size_t size, RecID record_id, int64_t * value) { +bool MsgPack::msgpack_get(const void * buffer, const size_t size, const RecID record_id, int64_t * value) { + uint8_t byte; + init_search(buffer, size); if (!search_key(buffer, record_id)) return false; // Record not found - if (!get_s64(buffer, false, value)) return false; // Value isn't a s64 + + if ((seek_ptr + 3) >= buffer_size) return false; // End of buffer + if ((get_raw_byte(buffer, true, &byte)) && (byte != MSGPACK_TYPE_S64)) return false; // Value isn't a s64 + *value = ((int64_t)((uint8_t*)buffer)[seek_ptr] << 56) | ((int64_t)((uint8_t*)buffer)[seek_ptr + 1] << 48) | + ((int64_t)((uint8_t*)buffer)[seek_ptr + 2] << 40) | ((int64_t)((uint8_t*)buffer)[seek_ptr + 3] << 32) | + (((uint8_t*)buffer)[seek_ptr + 4] << 24) | (((uint8_t*)buffer)[seek_ptr + 5] << 16) | + (((uint8_t*)buffer)[seek_ptr + 6] << 8) | ((uint8_t*)buffer)[seek_ptr + 7]; return true; } -bool MsgPack::msgpack_get(const void * buffer, size_t size, RecID record_id, char * value) { +bool MsgPack::msgpack_get(const void * buffer, const size_t size, const RecID record_id, std::string& value) { init_search(buffer, size); if (!search_key(buffer, record_id)) return false; // Record not found - if (!get_chars(buffer, false, value)) return false; // Value isn't a char array + if (!get_string(buffer, false, value)) return false; // Value isn't a char array return true; } + + + +void MsgPack::msgpack_init(const void * buffer, size_t * ptr) { + ((uint8_t*)buffer)[0] = MSGPACK_TYPE_MAP16; + ((uint8_t*)buffer)[1] = 0; + ((uint8_t*)buffer)[2] = 0; + + *ptr = 3; +} + +void MsgPack::add_key(const void * buffer, size_t * ptr, const RecID record_id) { + uint16_t key; + + ((uint8_t*)buffer)[(*ptr)++] = MSGPACK_TYPE_U16; + ((uint8_t*)buffer)[(*ptr)++] = record_id >> 8; + ((uint8_t*)buffer)[(*ptr)++] = record_id & 0xFF; + + // Auto-inc MAP16 size which should be at the beginning of the buffer + + key = (((uint8_t*)buffer)[1] << 8) | ((uint8_t*)buffer)[2]; + key++; + + ((uint8_t*)buffer)[1] = key >> 8; + ((uint8_t*)buffer)[2] = key & 0xFF; +} + +void MsgPack::msgpack_add(const void * buffer, size_t * ptr, const RecID record_id, bool value) { + add_key(buffer, ptr, record_id); + + if (value) + ((uint8_t*)buffer)[(*ptr)++] = MSGPACK_TRUE; + else + ((uint8_t*)buffer)[(*ptr)++] = MSGPACK_FALSE; +} + +void MsgPack::msgpack_add(const void * buffer, size_t * ptr, const RecID record_id, uint8_t value) { + add_key(buffer, ptr, record_id); + + if (value < 128) { + ((uint8_t*)buffer)[(*ptr)++] = value; + } else { + ((uint8_t*)buffer)[(*ptr)++] = MSGPACK_TYPE_U8; + ((uint8_t*)buffer)[(*ptr)++] = value; + } +} + +void MsgPack::msgpack_add(const void * buffer, size_t * ptr, const RecID record_id, int64_t value) { + uint8_t c; + + add_key(buffer, ptr, record_id); + + ((uint8_t*)buffer)[(*ptr)++] = MSGPACK_TYPE_S64; + + for (c = 0; c < 8; c++) + ((uint8_t*)buffer)[(*ptr)++] = (value >> (8 * (7 - c))) & 0xFF; +} + +bool MsgPack::msgpack_add(const void * buffer, size_t * ptr, const RecID record_id, std::string value) { + uint8_t c; + size_t length; + + add_key(buffer, ptr, record_id); + + length = value.size(); + + if (length < 32) { + ((uint8_t*)buffer)[(*ptr)++] = length | 0xA0; // Fixstr + } else if ((length >= 32) && (length < 256)) { + ((uint8_t*)buffer)[(*ptr)++] = MSGPACK_TYPE_STR8; + ((uint8_t*)buffer)[(*ptr)++] = length; + } else if ((length >= 256) && (length < 65536)) { + ((uint8_t*)buffer)[(*ptr)++] = MSGPACK_TYPE_STR16; + ((uint8_t*)buffer)[(*ptr)++] = length >> 8; + ((uint8_t*)buffer)[(*ptr)++] = length & 0xFF; + } else { + return false; + } + + for (c = 0; c < length; c++) + ((uint8_t*)buffer)[(*ptr)++] = value[c]; + + return true; +} diff --git a/firmware/common/msgpack.hpp b/firmware/common/msgpack.hpp index ae8a3ed11..a857819ef 100644 --- a/firmware/common/msgpack.hpp +++ b/firmware/common/msgpack.hpp @@ -25,40 +25,70 @@ #include "ui.hpp" #include +#include -#define MSGPACK_TYPE_U16 0xcd -#define MSGPACK_TYPE_U32 0xce -#define MSGPACK_TYPE_S32 0xd2 -#define MSGPACK_TYPE_S64 0xd3 -#define MSGPACK_TYPE_STR8 0xd9 -#define MSGPACK_TYPE_STR16 0xda +#define MSGPACK_NIL 0xC0 -#define MSGPACK_TYPE_MAP16 0xde +#define MSGPACK_FALSE 0xC2 +#define MSGPACK_TRUE 0xC3 -#define MSGPACK_FALSE 0xc2 -#define MSGPACK_TRUE 0xc3 +#define MSGPACK_TYPE_F32 0xCA +#define MSGPACK_TYPE_F64 0xCB + +#define MSGPACK_TYPE_U8 0xCC +#define MSGPACK_TYPE_U16 0xCD +#define MSGPACK_TYPE_U32 0xCE +#define MSGPACK_TYPE_U64 0xCF + +#define MSGPACK_TYPE_S8 0xD0 +#define MSGPACK_TYPE_S16 0xD1 +#define MSGPACK_TYPE_S32 0xD2 +#define MSGPACK_TYPE_S64 0xD3 + +#define MSGPACK_TYPE_STR8 0xD9 +#define MSGPACK_TYPE_STR16 0xDA +#define MSGPACK_TYPE_STR32 0xDB + +#define MSGPACK_TYPE_ARR16 0xDC +#define MSGPACK_TYPE_ARR32 0xDD + +#define MSGPACK_TYPE_MAP16 0xDE +#define MSGPACK_TYPE_MAP32 0xDF class MsgPack { public: enum RecID { - FrequencyList = 0, - TestList = 1 + TestListA = 0, + TestListB = 1, + TestListC = 2, + TestListD = 3, + TestListE = 4 }; - bool msgpack_get(const void * buffer, const size_t size, const MsgPack::RecID record_id, bool * value); - bool msgpack_get(const void * buffer, const size_t size, const RecID record_id, int32_t * value); + // Read + bool msgpack_get(const void * buffer, const size_t size, const RecID record_id, bool * value); + bool msgpack_get(const void * buffer, const size_t size, const RecID record_id, uint8_t * value); bool msgpack_get(const void * buffer, const size_t size, const RecID record_id, int64_t * value); - bool msgpack_get(const void * buffer, const size_t size, const RecID record_id, char * value); + bool msgpack_get(const void * buffer, const size_t size, const RecID record_id, std::string& value); + + // Write + void msgpack_init(const void * buffer, size_t * ptr); + void msgpack_add(const void * buffer, size_t * ptr, const RecID record_id, bool value); + void msgpack_add(const void * buffer, size_t * ptr, const RecID record_id, uint8_t value); + void msgpack_add(const void * buffer, size_t * ptr, const RecID record_id, int64_t value); + bool msgpack_add(const void * buffer, size_t * ptr, const RecID record_id, std::string value); private: bool get_raw_byte(const void * buffer, const bool inc, uint8_t * byte); bool get_raw_word(const void * buffer, const bool inc, uint16_t * word); bool get_bool(const void * buffer, const bool inc, bool * value); + bool get_u8(const void * buffer, const bool inc, uint8_t * value); bool get_u16(const void * buffer, const bool inc, uint16_t * value); bool get_s32(const void * buffer, const bool inc, int32_t * value); - bool get_s64(const void * buffer, const bool inc, int64_t * value); - bool get_chars(const void * buffer, const bool inc, char * value); + bool get_string(const void * buffer, const bool inc, std::string& value); + + void add_key(const void * buffer, size_t * ptr, const RecID record_id); bool init_search(const void * buffer, const size_t size); bool search_key(const void * buffer, const RecID record_id); diff --git a/firmware/common/ui_widget.cpp b/firmware/common/ui_widget.cpp index 51d08d1e4..0133f3105 100644 --- a/firmware/common/ui_widget.cpp +++ b/firmware/common/ui_widget.cpp @@ -326,6 +326,7 @@ void BigFrequency::paint(Painter& painter) { char digits[7]; char digit; Coord digit_x, digit_y; + ui::Color segment_color; const auto rect = screen_rect(); @@ -333,7 +334,7 @@ void BigFrequency::paint(Painter& painter) { painter.fill_rectangle({{0, rect.pos.y}, {240, 52}}, ui::Color::black()); if (!_frequency) { - for (i = 0; i < 7; i++) + for (i = 0; i < 7; i++) // ----.------ digits[i] = 10; } else { _frequency /= 1000; // GMMM.KKKuuu @@ -351,6 +352,8 @@ void BigFrequency::paint(Painter& painter) { break; } } + + segment_color = style().foreground; // Draw digit_x = rect.pos.x; // 7 * 32 + 8 = 232 (4 px margins) @@ -358,18 +361,18 @@ void BigFrequency::paint(Painter& painter) { digit = digits[i]; digit_y = rect.pos.y; if (digit < 16) { - digit_def = big_segment_font[digit]; - if (digit_def & 0x01) painter.fill_rectangle({{digit_x + 4, digit_y}, {20, 4}}, ui::Color::white()); - if (digit_def & 0x02) painter.fill_rectangle({{digit_x + 24, digit_y + 4}, {4, 20}}, ui::Color::white()); - if (digit_def & 0x04) painter.fill_rectangle({{digit_x + 24, digit_y + 28}, {4, 20}}, ui::Color::white()); - if (digit_def & 0x08) painter.fill_rectangle({{digit_x + 4, digit_y + 48}, {20, 4}}, ui::Color::white()); - if (digit_def & 0x10) painter.fill_rectangle({{digit_x, digit_y + 28}, {4, 20}}, ui::Color::white()); - if (digit_def & 0x20) painter.fill_rectangle({{digit_x, digit_y + 4}, {4, 20}}, ui::Color::white()); - if (digit_def & 0x40) painter.fill_rectangle({{digit_x + 4, digit_y + 24}, {20, 4}}, ui::Color::white()); + digit_def = big_segment_font[(uint8_t)digit]; + if (digit_def & 0x01) painter.fill_rectangle({{digit_x + 4, digit_y}, {20, 4}}, segment_color); + if (digit_def & 0x02) painter.fill_rectangle({{digit_x + 24, digit_y + 4}, {4, 20}}, segment_color); + if (digit_def & 0x04) painter.fill_rectangle({{digit_x + 24, digit_y + 28}, {4, 20}}, segment_color); + if (digit_def & 0x08) painter.fill_rectangle({{digit_x + 4, digit_y + 48}, {20, 4}}, segment_color); + if (digit_def & 0x10) painter.fill_rectangle({{digit_x, digit_y + 28}, {4, 20}}, segment_color); + if (digit_def & 0x20) painter.fill_rectangle({{digit_x, digit_y + 4}, {4, 20}}, segment_color); + if (digit_def & 0x40) painter.fill_rectangle({{digit_x + 4, digit_y + 24}, {20, 4}}, segment_color); } if (i == 3) { // Dot - painter.fill_rectangle({{digit_x + 34, digit_y + 48}, {4, 4}}, ui::Color::white()); + painter.fill_rectangle({{digit_x + 34, digit_y + 48}, {4, 4}}, segment_color); digit_x += 40; } else { digit_x += 32; @@ -401,7 +404,7 @@ void ProgressBar::paint(Painter& painter) { v_sized = (rect.size.w * _value) / 100; - painter.fill_rectangle({rect.pos, {v_sized, rect.size.h}}, ui::Color::green()); + painter.fill_rectangle({rect.pos, {v_sized, rect.size.h}}, style().foreground); painter.fill_rectangle({{rect.pos.x + v_sized, rect.pos.y}, {rect.size.w - v_sized, rect.size.h}}, s.background); painter.draw_rectangle(rect, s.foreground); diff --git a/firmware/portapack-h1-firmware.bin b/firmware/portapack-h1-firmware.bin index 847e83ff6b22ef6b8dda5d2385e4d796bd44c334..d503ca9443688edd4954d0b1b4ec4c29365603f9 100644 GIT binary patch delta 48704 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 Qn&l0`)@S7<$2sQz0A8Wp4*&oF