diff --git a/common/protob/messages-tron.proto b/common/protob/messages-tron.proto index e54cb10eff..77ec963fc3 100644 --- a/common/protob/messages-tron.proto +++ b/common/protob/messages-tron.proto @@ -98,6 +98,7 @@ message TronSignTx { optional uint64 balance = 3; optional string receiver_address = 4; optional bool lock = 5; + optional uint64 lock_period = 6; } message TronUnDelegateResourceContract { optional TronResourceCode resource = 2; diff --git a/legacy/firmware/cosmos_networks.c b/legacy/firmware/cosmos_networks.c index 6540250c68..3fd6573547 100644 --- a/legacy/firmware/cosmos_networks.c +++ b/legacy/firmware/cosmos_networks.c @@ -6,7 +6,8 @@ const CosmosNetworkType cosmos_networks[COSMOS_NETWORK_COUNT] = { {"osmosis-1", "osmo", "Osmosis", "OSMO", "uosmo", 6}, {"secret-4", "secret", "Secret Network", "SCRT", "uscrt", 6}, {"akashnet-2", "akash", "Akash", "AKT", "uakt", 6}, - {"crypto-org-chain-mainnet-1", "cro", "Crypto.org", "CRO", "basecro", 8}, + {"crypto-org-chain-mainnet-1", "cro", "Cronos POS Chain", "CRO", "basecro", + 8}, {"iov-mainnet-ibc", "star", "Starname", "IOV", "uiov", 6}, {"sifchain-1", "sif", "Sifchain", "ROWAN", "rowan", 18}, {"shentu-2.2", "certik", "Shentu", "CTK", "uctk", 6}, @@ -32,6 +33,7 @@ const CosmosNetworkType cosmos_networks[COSMOS_NETWORK_COUNT] = { {"quicksilver-1", "quick", "Quicksilver", "QCK", "uqck", 6}, {"fetchhub-4", "fetch", "Fetch.ai", "FET", "afet", 18}, {"celestia", "celestia", "Celestia", "TIA", "utia", 6}, + {"bbn-1", "bbn", "BABYLON", "BABY", "ubbn", 6}, }; const CosmosNetworkType *cosmosnetworkByChainId(const char *chain_id) { diff --git a/legacy/firmware/cosmos_networks.h b/legacy/firmware/cosmos_networks.h index c522f765b8..28c86b6daa 100644 --- a/legacy/firmware/cosmos_networks.h +++ b/legacy/firmware/cosmos_networks.h @@ -3,7 +3,7 @@ #include -#define COSMOS_NETWORK_COUNT 30 +#define COSMOS_NETWORK_COUNT 31 typedef struct { const char *const chain_id; diff --git a/legacy/firmware/ethereum.c b/legacy/firmware/ethereum.c index 32883b92b5..d729cd5a83 100644 --- a/legacy/firmware/ethereum.c +++ b/legacy/firmware/ethereum.c @@ -54,7 +54,7 @@ static bool eip1559; struct SHA3_CTX keccak_ctx = {0}; static uint32_t signing_access_list_count; -static EthereumAccessList signing_access_list[8]; +static EthereumAccessList signing_access_list[16]; _Static_assert(sizeof(signing_access_list) == sizeof(((EthereumSignTxEIP1559 *)NULL)->access_list), "access_list buffer size mismatch"); diff --git a/legacy/firmware/ethereum_onekey.c b/legacy/firmware/ethereum_onekey.c index 8710930b3d..97d234002a 100644 --- a/legacy/firmware/ethereum_onekey.c +++ b/legacy/firmware/ethereum_onekey.c @@ -55,7 +55,7 @@ static bool eip1559; static struct SHA3_CTX keccak_ctx = {0}; static uint32_t signing_access_list_count; -static EthereumAccessListOneKey signing_access_list[8]; +static EthereumAccessListOneKey signing_access_list[16]; _Static_assert(sizeof(signing_access_list) == sizeof(((EthereumSignTxEIP1559OneKey *)NULL)->access_list), "access_list buffer size mismatch"); diff --git a/legacy/firmware/language.c b/legacy/firmware/language.c index 044409042c..bd8bb1b6dd 100644 --- a/legacy/firmware/language.c +++ b/legacy/firmware/language.c @@ -448,6 +448,8 @@ const char *const languages[][2] = { {"Format:", "格式:"}, // layout2.c {"From", "发送方"}, + // solana.c + {"From (Token Account)", "发送方 (代币账户)"}, // layout2.c {"GPG sign for:", ""}, {"Gas Fee Cap", "燃料单价上限"}, @@ -798,6 +800,8 @@ const char *const languages[][2] = { {"Tip Amount", "小费金额"}, {"Tipper", "小费支付方"}, {"Title", "标题"}, + // solana.c + {"To (Token Account)", "接收方 (代币账户)"}, // signing.c fsm_msg_coin.h // ada.c {"To Pool:", "目标质押池:"}, diff --git a/legacy/firmware/pinmatrix.c b/legacy/firmware/pinmatrix.c index b9c81570c3..b74c2ee8c1 100644 --- a/legacy/firmware/pinmatrix.c +++ b/legacy/firmware/pinmatrix.c @@ -25,7 +25,7 @@ #include "pinmatrix.h" #include "rng.h" -static char pinmatrix_perm[10] = "XXXXXXXXX"; +static char pinmatrix_perm[11] = "XXXXXXXXX"; void pinmatrix_draw(const char *text) { const BITMAP *bmp_digits[10] = { @@ -37,21 +37,23 @@ void pinmatrix_draw(const char *text) { if (text) { oledDrawStringCenterAdapter(OLED_WIDTH / 2, 0, text, FONT_STANDARD); } - const int w = bmp_digit0.width, h = bmp_digit0.height, pad = 2; + const int w = bmp_digit0.width, h = bmp_digit0.height, pad = 1; + int k = 0; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { // use (2 - j) instead of j to achieve 789456123 layout - int k = pinmatrix_perm[i + (2 - j) * 3] - '0'; + k = pinmatrix_perm[i + (2 - j) * 3] - '0'; oledDrawBitmap((OLED_WIDTH - 3 * w - 2 * pad) / 2 + i * (w + pad), - OLED_HEIGHT - 3 * h - 2 * pad + j * (h + pad), + OLED_HEIGHT - 4 * h - 3 * pad + j * (h + pad), bmp_digits[k]); } } - for (int i = 0; i < 3; i++) { - // 36 is the maximum pixels used for a pin matrix pixel row - // but we use 56 pixels to add some extra - oledSCAInside(12 + i * (h + pad), 12 + i * (h + pad) + h - 1, 56, 38, - OLED_WIDTH - 38); + k = pinmatrix_perm[9] - '0'; + oledBox(27, 52, 101, 64, true); + oledDrawBitmap(52, 52, bmp_digits[k]); + for (int i = 0; i < 4; i++) { + oledSCAInside(13 + i * (h + pad), 13 + i * (h + pad) + h - 1, 76, 27, + OLED_WIDTH - 27); } oledRefresh(); } @@ -60,8 +62,9 @@ void pinmatrix_start(const char *text) { for (int i = 0; i < 9; i++) { pinmatrix_perm[i] = '1' + i; } - pinmatrix_perm[9] = 0; - random_permute(pinmatrix_perm, 9); + pinmatrix_perm[9] = '0'; + pinmatrix_perm[10] = 0; + random_permute(pinmatrix_perm, 10); pinmatrix_draw(text); } @@ -70,7 +73,8 @@ secbool pinmatrix_done(bool clear, char *pin) { secbool ret = sectrue; while (pin && pin[i]) { k = pin[i] - '1'; - if (k >= 0 && k <= 8) { + if (k == -1) k = 9; + if (k >= 0 && k <= 9) { pin[i] = pinmatrix_perm[k]; } else { pin[i] = 'X'; diff --git a/legacy/firmware/protect.c b/legacy/firmware/protect.c index 2ceba0ae35..ce2194a75a 100644 --- a/legacy/firmware/protect.c +++ b/legacy/firmware/protect.c @@ -882,9 +882,7 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, if (counter >= DEFAULT_PIN_LEN) { index = 10; } else { - do { - index = random_uniform(10); - } while (index == 0); + index = random_uniform(10); } } @@ -894,7 +892,7 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, if (isLongPress(KEY_UP_OR_DOWN) && getLongPressStatus()) { if (isLongPress(KEY_UP)) { // up if (!d) { // default direction - if (index > 1) + if (index > 0) index--; else index = max_index; @@ -902,16 +900,16 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, if (index < max_index) index++; else - index = 1; + index = 0; } } else if (isLongPress(KEY_DOWN)) { // down if (!d) { if (index < max_index) index++; else - index = 1; + index = 0; } else { - if (index > 1) + if (index > 0) index--; else index = max_index; @@ -930,7 +928,7 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, } switch (key) { case KEY_UP: - if (index > 1) + if (index > 0) index--; else index = max_index; @@ -939,7 +937,7 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, if (index < max_index) index++; else - index = 1; + index = 0; goto refresh_menu; case KEY_CONFIRM: (void)pin; diff --git a/legacy/firmware/protob/messages-ethereum-onekey.options b/legacy/firmware/protob/messages-ethereum-onekey.options index aa6484be99..0f95b428be 100755 --- a/legacy/firmware/protob/messages-ethereum-onekey.options +++ b/legacy/firmware/protob/messages-ethereum-onekey.options @@ -14,7 +14,7 @@ EthereumSignTxEIP1559OneKey.gas_limit max_size:32 EthereumSignTxEIP1559OneKey.to max_size:43 EthereumSignTxEIP1559OneKey.value max_size:32 EthereumSignTxEIP1559OneKey.data_initial_chunk max_size:1024 -EthereumSignTxEIP1559OneKey.access_list max_count:8 +EthereumSignTxEIP1559OneKey.access_list max_count:16 EthereumAccessListOneKey.address max_size:43 EthereumAccessListOneKey.storage_keys max_count:8 max_size:32 diff --git a/legacy/firmware/protob/messages-ethereum.options b/legacy/firmware/protob/messages-ethereum.options index 8515a93bb7..2469f022a9 100644 --- a/legacy/firmware/protob/messages-ethereum.options +++ b/legacy/firmware/protob/messages-ethereum.options @@ -14,7 +14,7 @@ EthereumSignTxEIP1559.gas_limit max_size:32 EthereumSignTxEIP1559.to max_size:43 EthereumSignTxEIP1559.value max_size:32 EthereumSignTxEIP1559.data_initial_chunk max_size:1024 -EthereumSignTxEIP1559.access_list max_count:8 +EthereumSignTxEIP1559.access_list max_count:16 EthereumAccessList.address max_size:43 EthereumAccessList.storage_keys max_count:8 max_size:32 diff --git a/legacy/firmware/solana.c b/legacy/firmware/solana.c index b804ad1463..799fd36e1c 100644 --- a/legacy/firmware/solana.c +++ b/legacy/firmware/solana.c @@ -107,10 +107,10 @@ void solana_sign_tx(const SolanaSignTx *msg, const HDNode *node, size_t num_summary_steps = 0; size_t steps = 0; uint8_t steps_list[MAX_TRANSACTION_SUMMARY_ITEMS]; - char title_str[65] = {0}; - snprintf(title_str, 65, "%s %s", "Solana", _("Transaction")); + const char **tx_msg = format_tx_message("Solana"); if (transaction_summary_finalize(summary_step_kinds, &num_summary_steps) == 0) { + char desc[64]; for (size_t i = 0; i < num_summary_steps; i++) { if (transaction_summary_display_item(i, DisplayFlagAll)) { fsm_sendFailure(FailureType_Failure_DataError, "Parse error"); @@ -131,26 +131,33 @@ void solana_sign_tx(const SolanaSignTx *msg, const HDNode *node, } else if (strcmp(title, "Funded by") == 0) { continue; } else if (strcmp(title, "Owner") == 0) { - title = "From"; + continue; + } else if (strcmp(title, "Max fees") == 0) { + continue; } else if (strcmp(title, "Owned by") == 0) { - title = "To"; + continue; + } else if (strcmp(title, "Sender") == 0) { + title = "From"; + } else if (strcmp(title, "Recipient") == 0) { + title = "Send to"; } else if (strcmp(title, "Transfer tokens") == 0 || strcmp(title, "Transfer") == 0) { title = "Amount"; + } else if (strcmp(title, "Token Sender") == 0) { + title = "From (Token Account)"; + } else if (strcmp(title, "Token Recipient") == 0) { + title = "To (Token Account)"; } - char desc[64]; - memset(desc, 0, sizeof(desc)); - strcat(desc, _(title)); - strcat(desc, ":"); + snprintf(desc, sizeof(desc), "%s:", _(title)); steps_list[steps++] = i; - layoutDialogAdapterEx(title_str, &bmp_bottom_left_close, NULL, + layoutDialogAdapterEx(tx_msg[0], &bmp_bottom_left_close, NULL, i < num_summary_steps - 1 ? &bmp_bottom_right_arrow : &bmp_bottom_right_confirm, - NULL, NULL, desc, _(text), NULL, NULL); + NULL, NULL, desc, text, NULL, NULL); uint8_t key; button_scan: @@ -176,11 +183,21 @@ void solana_sign_tx(const SolanaSignTx *msg, const HDNode *node, } } } + oledClear_ex(); + layoutHeader(_("Sign Transaction")); + oledDrawStringAdapter(0, 13, tx_msg[1], FONT_STANDARD); + layoutButtonNoAdapter(NULL, &bmp_bottom_left_close); + layoutButtonYesAdapter(NULL, &bmp_bottom_right_confirm); + oledRefresh(); + if (!protectButton(ButtonRequestType_ButtonRequest_SignTx, false)) { + fsm_sendFailure(FailureType_Failure_ActionCancelled, NULL); + return; + } ed25519_sign(msg->raw_tx.bytes, msg->raw_tx.size, node->private_key, resp->signature.bytes); resp->signature.size = 64; } else { - fsm_sendFailure(FailureType_Failure_DataError, _("Parse error")); + fsm_sendFailure(FailureType_Failure_DataError, "Parse error"); return; } msg_write(MessageType_MessageType_SolanaSignedTx, resp); diff --git a/legacy/firmware/tron.c b/legacy/firmware/tron.c index 55b58cbab7..5bff85596c 100644 --- a/legacy/firmware/tron.c +++ b/legacy/firmware/tron.c @@ -408,11 +408,13 @@ int pack_contract(TronSignTx *msg, uint8_t *buf, int *index, MAX_ADDR_RAW_SIZE); cmessage_len += write_bytes_with_length(cmessage, &cmessage_index, addr_raw, len); - - cmessage_len += add_field(cmessage, &cmessage_index, 2, PROTO_TYPE_VARINT); - cmessage_len += - write_varint(cmessage, &cmessage_index, - msg->contract.delegate_resource_contract.resource); + if (msg->contract.delegate_resource_contract.has_resource) { + cmessage_len += + add_field(cmessage, &cmessage_index, 2, PROTO_TYPE_VARINT); + cmessage_len += + write_varint(cmessage, &cmessage_index, + msg->contract.delegate_resource_contract.resource); + } cmessage_len += add_field(cmessage, &cmessage_index, 3, PROTO_TYPE_VARINT); cmessage_len += write_varint(cmessage, &cmessage_index, @@ -434,6 +436,13 @@ int pack_contract(TronSignTx *msg, uint8_t *buf, int *index, write_varint(cmessage, &cmessage_index, msg->contract.delegate_resource_contract.lock); } + if (msg->contract.delegate_resource_contract.has_lock_period) { + cmessage_len += + add_field(cmessage, &cmessage_index, 6, PROTO_TYPE_VARINT); + cmessage_len += + write_varint(cmessage, &cmessage_index, + msg->contract.delegate_resource_contract.lock_period); + } } if (msg->contract.has_undelegate_resource_contract) { @@ -450,10 +459,13 @@ int pack_contract(TronSignTx *msg, uint8_t *buf, int *index, cmessage_len += write_bytes_with_length(cmessage, &cmessage_index, addr_raw, len); - cmessage_len += add_field(cmessage, &cmessage_index, 2, PROTO_TYPE_VARINT); - cmessage_len += - write_varint(cmessage, &cmessage_index, - msg->contract.undelegate_resource_contract.resource); + if (msg->contract.undelegate_resource_contract.has_resource) { + cmessage_len += + add_field(cmessage, &cmessage_index, 2, PROTO_TYPE_VARINT); + cmessage_len += + write_varint(cmessage, &cmessage_index, + msg->contract.undelegate_resource_contract.resource); + } cmessage_len += add_field(cmessage, &cmessage_index, 3, PROTO_TYPE_VARINT); cmessage_len += write_varint(cmessage, &cmessage_index, diff --git a/legacy/firmware/version.h b/legacy/firmware/version.h index d0a4486942..c3b552a2d8 100755 --- a/legacy/firmware/version.h +++ b/legacy/firmware/version.h @@ -6,5 +6,5 @@ #define FIX_VERSION_MINOR 99 #define FIX_VERSION_PATCH 99 -#define ONEKEY_VERSION "3.10.0" -#define ONEKEY_VERSION_HEX 0x3A00 +#define ONEKEY_VERSION "3.11.0" +#define ONEKEY_VERSION_HEX 0x3B00 diff --git a/legacy/gen/bitmaps.c b/legacy/gen/bitmaps.c index fb2d6a5e03..c595c9a81e 100755 --- a/legacy/gen/bitmaps.c +++ b/legacy/gen/bitmaps.c @@ -34,16 +34,16 @@ const uint8_t bmp_button_back_data[] = { 0x00, 0x08, 0x18, 0x30, 0x60, 0x30, 0x1 const uint8_t bmp_button_down_data[] = { 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x10, 0x00, }; const uint8_t bmp_button_forward_data[] = { 0x00, 0x20, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x20, }; const uint8_t bmp_button_up_data[] = { 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, }; -const uint8_t bmp_digit0_data[] = { 0xff, 0xff, 0xf8, 0x1f, 0xf0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x0f, 0xf8, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit1_data[] = { 0xff, 0xff, 0xfc, 0x3f, 0xf8, 0x3f, 0xf0, 0x3f, 0xf0, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xff, 0xff, }; -const uint8_t bmp_digit2_data[] = { 0xff, 0xff, 0xe0, 0x1f, 0xe0, 0x0f, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xf8, 0x0f, 0xf0, 0x1f, 0xe1, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0x07, 0xe0, 0x07, 0xff, 0xff, }; -const uint8_t bmp_digit3_data[] = { 0xff, 0xff, 0xe0, 0x1f, 0xe0, 0x0f, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xf8, 0x0f, 0xf8, 0x0f, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xe0, 0x0f, 0xe0, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit4_data[] = { 0xff, 0xff, 0xff, 0x0f, 0xfe, 0x0f, 0xfc, 0x0f, 0xf8, 0x0f, 0xf1, 0x0f, 0xe3, 0x0f, 0xc7, 0x0f, 0xcf, 0x0f, 0xc0, 0x0f, 0xc0, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0xff, }; -const uint8_t bmp_digit5_data[] = { 0xff, 0xff, 0xe0, 0x0f, 0xe0, 0x0f, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0x1f, 0xe0, 0x0f, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xe0, 0x0f, 0xe0, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit6_data[] = { 0xff, 0xff, 0xf8, 0x1f, 0xf0, 0x1f, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0x1f, 0xe0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x0f, 0xf8, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit7_data[] = { 0xff, 0xff, 0xe0, 0x07, 0xe0, 0x07, 0xff, 0x87, 0xff, 0x87, 0xff, 0x0f, 0xfe, 0x1f, 0xfc, 0x1f, 0xfc, 0x3f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xff, 0xff, }; -const uint8_t bmp_digit8_data[] = { 0xff, 0xff, 0xf8, 0x1f, 0xf0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x0f, 0xf0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x0f, 0xf8, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit9_data[] = { 0xff, 0xff, 0xf8, 0x1f, 0xf0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x07, 0xf8, 0x07, 0xff, 0x87, 0xff, 0x87, 0xf8, 0x0f, 0xf8, 0x1f, 0xff, 0xff, }; +const uint8_t bmp_digit0_data[] = { 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x81, 0xff, 0xff, 0x18, 0xff, 0xff, 0x30, 0xff, 0xff, 0x24, 0xff, 0xff, 0x24, 0xff, 0xff, 0x0c, 0xff, 0xff, 0x18, 0xff, 0xff, 0x81, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit1_data[] = { 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x83, 0xff, 0xff, 0x83, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit2_data[] = { 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0x01, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xc1, 0xff, 0xff, 0x83, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit3_data[] = { 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0x01, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x01, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit4_data[] = { 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xc8, 0xff, 0xff, 0x98, 0xff, 0xff, 0x38, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit5_data[] = { 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0x01, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x03, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x01, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit6_data[] = { 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0x81, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x03, 0xff, 0xff, 0x01, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x81, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit7_data[] = { 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit8_data[] = { 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x81, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x81, 0xff, 0xff, 0x81, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x81, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit9_data[] = { 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x81, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x80, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x81, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff, }; const uint8_t bmp_gears0_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x1e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x1f, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x1f, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x1f, 0xf0, 0x1f, 0xc0, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0xc0, 0x18, 0x00, 0x00, 0x7f, 0xfd, 0xe0, 0x3c, 0x00, 0x00, 0x7f, 0xfd, 0xe0, 0x7c, 0x00, 0x00, 0xff, 0xfd, 0xff, 0xf8, 0x00, 0x00, 0xf8, 0x7e, 0xff, 0xf8, 0x00, 0x00, 0xf0, 0x1e, 0xff, 0xf0, 0x00, 0x00, 0x60, 0x0d, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, 0x07, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; const uint8_t bmp_gears1_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xcf, 0x80, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x1f, 0x80, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x01, 0xf8, 0x3f, 0xe1, 0xc0, 0x00, 0x00, 0xff, 0xfc, 0xc1, 0xc0, 0x00, 0x00, 0xff, 0xfb, 0x03, 0xc0, 0x00, 0x01, 0xff, 0xf7, 0xc3, 0xc0, 0x00, 0x03, 0xff, 0xf7, 0xff, 0xc0, 0x00, 0x03, 0xc7, 0xf7, 0xff, 0xe0, 0x00, 0x01, 0x81, 0xf3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0xf1, 0xff, 0xff, 0x80, 0x00, 0x00, 0xe1, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xf0, 0x7f, 0xc0, 0x00, 0x00, 0x03, 0xe0, 0x3f, 0x80, 0x00, 0x00, 0x03, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; const uint8_t bmp_gears2_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc1, 0x80, 0x00, 0x00, 0x07, 0x3f, 0xf7, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x3f, 0x0e, 0x00, 0x00, 0x07, 0xff, 0xff, 0x8f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x06, 0x1f, 0xe1, 0x9f, 0x83, 0x00, 0x00, 0x0f, 0xce, 0x7f, 0xef, 0x80, 0x00, 0x07, 0x9f, 0xff, 0xff, 0x80, 0x00, 0x07, 0x9f, 0xff, 0xff, 0x00, 0x00, 0x03, 0x8f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x7e, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x0c, 0x3f, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; @@ -109,16 +109,16 @@ const BITMAP bmp_button_back = {8, 8, bmp_button_back_data}; const BITMAP bmp_button_down = {8, 8, bmp_button_down_data}; const BITMAP bmp_button_forward = {8, 8, bmp_button_forward_data}; const BITMAP bmp_button_up = {8, 8, bmp_button_up_data}; -const BITMAP bmp_digit0 = {16, 16, bmp_digit0_data}; -const BITMAP bmp_digit1 = {16, 16, bmp_digit1_data}; -const BITMAP bmp_digit2 = {16, 16, bmp_digit2_data}; -const BITMAP bmp_digit3 = {16, 16, bmp_digit3_data}; -const BITMAP bmp_digit4 = {16, 16, bmp_digit4_data}; -const BITMAP bmp_digit5 = {16, 16, bmp_digit5_data}; -const BITMAP bmp_digit6 = {16, 16, bmp_digit6_data}; -const BITMAP bmp_digit7 = {16, 16, bmp_digit7_data}; -const BITMAP bmp_digit8 = {16, 16, bmp_digit8_data}; -const BITMAP bmp_digit9 = {16, 16, bmp_digit9_data}; +const BITMAP bmp_digit0 = {24, 12, bmp_digit0_data}; +const BITMAP bmp_digit1 = {24, 12, bmp_digit1_data}; +const BITMAP bmp_digit2 = {24, 12, bmp_digit2_data}; +const BITMAP bmp_digit3 = {24, 12, bmp_digit3_data}; +const BITMAP bmp_digit4 = {24, 12, bmp_digit4_data}; +const BITMAP bmp_digit5 = {24, 12, bmp_digit5_data}; +const BITMAP bmp_digit6 = {24, 12, bmp_digit6_data}; +const BITMAP bmp_digit7 = {24, 12, bmp_digit7_data}; +const BITMAP bmp_digit8 = {24, 12, bmp_digit8_data}; +const BITMAP bmp_digit9 = {24, 12, bmp_digit9_data}; const BITMAP bmp_gears0 = {48, 48, bmp_gears0_data}; const BITMAP bmp_gears1 = {48, 48, bmp_gears1_data}; const BITMAP bmp_gears2 = {48, 48, bmp_gears2_data}; diff --git a/legacy/gen/bitmaps/digit0.png b/legacy/gen/bitmaps/digit0.png old mode 100755 new mode 100644 index b6f8b36ef3..7f2b7215a9 Binary files a/legacy/gen/bitmaps/digit0.png and b/legacy/gen/bitmaps/digit0.png differ diff --git a/legacy/gen/bitmaps/digit1.png b/legacy/gen/bitmaps/digit1.png old mode 100755 new mode 100644 index 5592c345d5..a70142fb57 Binary files a/legacy/gen/bitmaps/digit1.png and b/legacy/gen/bitmaps/digit1.png differ diff --git a/legacy/gen/bitmaps/digit2.png b/legacy/gen/bitmaps/digit2.png old mode 100755 new mode 100644 index b843a464de..9615c265ff Binary files a/legacy/gen/bitmaps/digit2.png and b/legacy/gen/bitmaps/digit2.png differ diff --git a/legacy/gen/bitmaps/digit3.png b/legacy/gen/bitmaps/digit3.png old mode 100755 new mode 100644 index e2f485d45f..a565611ad3 Binary files a/legacy/gen/bitmaps/digit3.png and b/legacy/gen/bitmaps/digit3.png differ diff --git a/legacy/gen/bitmaps/digit4.png b/legacy/gen/bitmaps/digit4.png old mode 100755 new mode 100644 index b95f62cbed..084822dfe5 Binary files a/legacy/gen/bitmaps/digit4.png and b/legacy/gen/bitmaps/digit4.png differ diff --git a/legacy/gen/bitmaps/digit5.png b/legacy/gen/bitmaps/digit5.png old mode 100755 new mode 100644 index c01bc59d34..161a1f1f83 Binary files a/legacy/gen/bitmaps/digit5.png and b/legacy/gen/bitmaps/digit5.png differ diff --git a/legacy/gen/bitmaps/digit6.png b/legacy/gen/bitmaps/digit6.png old mode 100755 new mode 100644 index c65b56b5c9..605a72b565 Binary files a/legacy/gen/bitmaps/digit6.png and b/legacy/gen/bitmaps/digit6.png differ diff --git a/legacy/gen/bitmaps/digit7.png b/legacy/gen/bitmaps/digit7.png old mode 100755 new mode 100644 index f0111cd9b0..c28eab0224 Binary files a/legacy/gen/bitmaps/digit7.png and b/legacy/gen/bitmaps/digit7.png differ diff --git a/legacy/gen/bitmaps/digit8.png b/legacy/gen/bitmaps/digit8.png old mode 100755 new mode 100644 index 1d2ac9a305..c1307c6c11 Binary files a/legacy/gen/bitmaps/digit8.png and b/legacy/gen/bitmaps/digit8.png differ diff --git a/legacy/gen/bitmaps/digit9.png b/legacy/gen/bitmaps/digit9.png old mode 100755 new mode 100644 index a7f21238e2..ef71da18bc Binary files a/legacy/gen/bitmaps/digit9.png and b/legacy/gen/bitmaps/digit9.png differ diff --git a/vendor/libsol b/vendor/libsol index 4cc376806a..949fed226b 160000 --- a/vendor/libsol +++ b/vendor/libsol @@ -1 +1 @@ -Subproject commit 4cc376806aea82f89a7773b38988662afd3dbf8e +Subproject commit 949fed226b17e8b2df04ee3b73c2f5f24f13802e