From 2dd757786d749cc2ca03125b85544bc1cb3e8d68 Mon Sep 17 00:00:00 2001 From: Clement Bouvet Date: Thu, 13 Oct 2022 12:59:57 +0200 Subject: [PATCH] commonise plugins --- src_bagl/ui_flow_signTx.c | 1 + src_bagl/ui_plugin.c | 29 +--------------------------- src_bagl/ui_plugin.h | 2 -- src_common/plugins.c | 40 +++++++++++++++++++++++++++++++++++++++ src_common/plugins.h | 11 +++++++++++ 5 files changed, 53 insertions(+), 30 deletions(-) create mode 100644 src_common/plugins.c create mode 100644 src_common/plugins.h diff --git a/src_bagl/ui_flow_signTx.c b/src_bagl/ui_flow_signTx.c index 6d05d6d..574dd9c 100644 --- a/src_bagl/ui_flow_signTx.c +++ b/src_bagl/ui_flow_signTx.c @@ -7,6 +7,7 @@ #include "eth_plugin_handler.h" #include "ui_plugin.h" #include "common_ui.h" +#include "plugins.h" // clang-format off UX_STEP_NOCB( diff --git a/src_bagl/ui_plugin.c b/src_bagl/ui_plugin.c index ed3f52f..c3743fa 100644 --- a/src_bagl/ui_plugin.c +++ b/src_bagl/ui_plugin.c @@ -3,38 +3,11 @@ #include "eth_plugin_handler.h" #include "ui_callbacks.h" #include "ui_plugin.h" +#include "plugins.h" // This function is not exported by the SDK void ux_layout_paging_redisplay_by_addr(unsigned int stack_slot); -void plugin_ui_get_id() { - ethQueryContractID_t pluginQueryContractID; - eth_plugin_prepare_query_contract_ID(&pluginQueryContractID, - strings.common.fullAddress, - sizeof(strings.common.fullAddress), - strings.common.fullAmount, - sizeof(strings.common.fullAmount)); - // Query the original contract for ID if it's not an internal alias - if (!eth_plugin_call(ETH_PLUGIN_QUERY_CONTRACT_ID, (void *) &pluginQueryContractID)) { - PRINTF("Plugin query contract ID call failed\n"); - io_seproxyhal_touch_tx_cancel(NULL); - } -} - -void plugin_ui_get_item() { - ethQueryContractUI_t pluginQueryContractUI; - eth_plugin_prepare_query_contract_UI(&pluginQueryContractUI, - dataContext.tokenContext.pluginUiCurrentItem, - strings.common.fullAddress, - sizeof(strings.common.fullAddress), - strings.common.fullAmount, - sizeof(strings.common.fullAmount)); - if (!eth_plugin_call(ETH_PLUGIN_QUERY_CONTRACT_UI, (void *) &pluginQueryContractUI)) { - PRINTF("Plugin query contract UI call failed\n"); - io_seproxyhal_touch_tx_cancel(NULL); - } -} - void display_next_plugin_item(bool entering) { if (entering) { if (dataContext.tokenContext.pluginUiState == PLUGIN_UI_OUTSIDE) { diff --git a/src_bagl/ui_plugin.h b/src_bagl/ui_plugin.h index ae86b6a..2f9fe60 100644 --- a/src_bagl/ui_plugin.h +++ b/src_bagl/ui_plugin.h @@ -1,8 +1,6 @@ #ifndef _UI_PLUGIN_H_ #define _UI_PLUGIN_H_ -void plugin_ui_get_id(); -void plugin_ui_get_item(); void display_next_plugin_item(bool entering); #endif // _UI_PLUGIN_H_ diff --git a/src_common/plugins.c b/src_common/plugins.c new file mode 100644 index 0000000..42c17a9 --- /dev/null +++ b/src_common/plugins.c @@ -0,0 +1,40 @@ +#include "eth_plugin_handler.h" +#include "ui_callbacks.h" + +void plugin_ui_get_id(void) { + ethQueryContractID_t pluginQueryContractID; + eth_plugin_prepare_query_contract_ID(&pluginQueryContractID, + strings.common.fullAddress, + sizeof(strings.common.fullAddress), + strings.common.fullAmount, + sizeof(strings.common.fullAmount)); + // Query the original contract for ID if it's not an internal alias + if (!eth_plugin_call(ETH_PLUGIN_QUERY_CONTRACT_ID, (void *) &pluginQueryContractID)) { + PRINTF("Plugin query contract ID call failed\n"); + io_seproxyhal_touch_tx_cancel(NULL); + } +} + +void plugin_ui_get_item_internal(char *title_buffer, + size_t title_buffer_size, + char *msg_buffer, + size_t msg_buffer_size) { + ethQueryContractUI_t pluginQueryContractUI; + eth_plugin_prepare_query_contract_UI(&pluginQueryContractUI, + dataContext.tokenContext.pluginUiCurrentItem, + title_buffer, + title_buffer_size, + msg_buffer, + msg_buffer_size); + if (!eth_plugin_call(ETH_PLUGIN_QUERY_CONTRACT_UI, (void *) &pluginQueryContractUI)) { + PRINTF("Plugin query contract UI call failed\n"); + io_seproxyhal_touch_tx_cancel(NULL); + } +} + +void plugin_ui_get_item(void) { + plugin_ui_get_item_internal(strings.common.fullAddress, + sizeof(strings.common.fullAddress), + strings.common.fullAmount, + sizeof(strings.common.fullAmount)); +} \ No newline at end of file diff --git a/src_common/plugins.h b/src_common/plugins.h new file mode 100644 index 0000000..1ccc123 --- /dev/null +++ b/src_common/plugins.h @@ -0,0 +1,11 @@ +#ifndef _PLUGIN_H_ +#define _PLUGIN_H_ + +void plugin_ui_get_id(); +void plugin_ui_get_item(); +void plugin_ui_get_item_internal(uint8_t *title_buffer, + size_t title_buffer_size, + uint8_t *msg_buffer, + size_t msg_buffer_size); + +#endif // _PLUGIN_H_ \ No newline at end of file