pass clone icon to eth

This commit is contained in:
Clement Bouvet
2023-02-07 18:06:45 +01:00
parent 3c8e424d46
commit dbd346c58e
6 changed files with 46 additions and 18 deletions
+1
View File
@@ -69,6 +69,7 @@ ICONNAME=icons/nanos_app_$(CHAIN).gif
else ifeq ($(TARGET_NAME),TARGET_FATSTACKS)
ICONNAME=icons/stax_app_$(CHAIN).gif
DEFINES += ICONGLYPH=C_stax_app_$(CHAIN)_64px
DEFINES += ICONBITMAP=C_stax_app_$(CHAIN)_64px_bitmap
DEFINES += ICONGLYPH_SMALL=C_stax_app_$(CHAIN)
GLYPH_FILES += icons/stax_app_$(CHAIN)_64px.gif
GLYPH_FILES += icons/stax_app_$(CHAIN).gif
+7
View File
@@ -76,10 +76,17 @@ typedef enum chain_kind_e {
CHAIN_KIND_ID4GOOD
} chain_kind_t;
#ifdef HAVE_NBGL
#include "ui_nbgl.h"
#endif // HAVE_NBGL
typedef struct chain_config_s {
char coinName[10]; // ticker
uint64_t chainId;
chain_kind_t kind;
#ifdef HAVE_NBGL
nbgl_icon_details_t coinIconDetails;
#endif // HAVE_NBGL
} chain_config_t;
#define ETHEREUM_MAINNET_CHAINID 1
+8
View File
@@ -1068,6 +1068,13 @@ __attribute__((section(".boot"))) int main(int arg0) {
unsigned int libcall_params[5];
chain_config_t local_chainConfig;
init_coin_config(&local_chainConfig);
#ifdef HAVE_NBGL
uint8_t coinIcon[sizeof(ICONBITMAP)];
memcpy(coinIcon, &ICONBITMAP, sizeof(ICONBITMAP));
memcpy(&local_chainConfig.coinIconDetails, &ICONGLYPH, sizeof(ICONGLYPH));
local_chainConfig.coinIconDetails.bitmap = coinIcon;
#endif // HAVE_NBGL
PRINTF("Hello from Eth-clone\n");
check_api_level(CX_COMPAT_APILEVEL);
// delegate to Ethereum app/lib
@@ -1076,6 +1083,7 @@ __attribute__((section(".boot"))) int main(int arg0) {
libcall_params[2] = RUN_APPLICATION;
libcall_params[3] = (unsigned int) &local_chainConfig;
libcall_params[4] = 0;
if (arg0) {
// call as a library
libcall_params[2] = ((unsigned int *) arg0)[1];
+11
View File
@@ -92,6 +92,17 @@ uint64_t get_app_chain_id(void) {
return chainConfig->chainId;
}
#ifdef HAVE_NBGL
#include "glyphs.h"
const nbgl_icon_details_t* get_app_chain_icon(void) {
if (chainConfig->coinIconDetails.bitmap) {
return &chainConfig->coinIconDetails; // if called from a clone, the bitmap is correct
} else {
return &ICONGLYPH; // else, jsu return the ETH icon
}
}
#endif // HAVE_NBGL
static uint64_t get_chain_id(e_net_type type) {
return (type == APP) ? get_app_chain_id() : get_tx_chain_id();
}
+3 -1
View File
@@ -14,7 +14,9 @@ typedef struct network_info_s {
// Returns the chain ID. Defaults to 0 if txType was not found (For TX).
uint64_t get_tx_chain_id(void);
uint64_t get_app_chain_id(void);
#ifdef HAVE_NBGL
const nbgl_icon_details_t* get_app_chain_icon(void);
#endif // HAVE_NBGL
// Returns a pointer to the network name, or NULL if there is none.
const char *get_tx_network_name(void);
const char *get_app_network_name(void);
+16 -17
View File
@@ -22,14 +22,14 @@ void app_quit(void) {
void ui_idle(void) {
if (plugin_name != NULL) { // plugin
nbgl_useCasePlugInHome((char*)plugin_name,
APPNAME,
&ICONGLYPH_SMALL,
NULL,
NULL,
true,
ui_menu_settings,
app_quit);
nbgl_useCasePlugInHome((char*)plugin_name,
APPNAME,
&ICONGLYPH_SMALL,
NULL,
NULL,
true,
ui_menu_settings,
app_quit);
} else {
char *app_name = (char*) get_app_network_name();
@@ -39,7 +39,7 @@ void ui_idle(void) {
case 3: // Ropsten
case 5: // Goerli
nbgl_useCaseHome(app_name,
&ICONGLYPH,
get_app_chain_icon(),
NULL,
true,
ui_menu_settings,
@@ -47,14 +47,13 @@ void ui_idle(void) {
break;
// Clones
default:
nbgl_useCasePlugInHome(app_name ? app_name : "???",
APPNAME,
&ICONGLYPH_SMALL,
NULL,
NULL,
true,
ui_menu_settings,
app_quit);
nbgl_useCaseHome(app_name,
get_app_chain_icon(),
NULL,
true,
ui_menu_settings,
app_quit);
break;
}
}
}