From 95e88d516b2b0b7e41b5db69ab240c4af51c2be4 Mon Sep 17 00:00:00 2001 From: Arthur Bonnaudet Date: Tue, 1 Oct 2024 10:02:47 +0200 Subject: [PATCH 01/53] Add `api_levels.json` Map existing API Levels with the corresponding OS versions in a single JSON file. --- api_levels.json | 98 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 api_levels.json diff --git a/api_levels.json b/api_levels.json new file mode 100644 index 000000000..8dffb911a --- /dev/null +++ b/api_levels.json @@ -0,0 +1,98 @@ +{ + "LNS": [ + "nanos_2.1.0" + ], + "1": [ + "nanox_2.1.0", + "nanos+_1.1.0" + ], + "2": [ + "only rc releases" + ], + "3": [ + "only rc releases" + ], + "4": [ + "only rc releases" + ], + "5": [ + "nanox_2.2.0", + "nanox_2.2.1", + "nanox_2.2.2", + "nanox_2.2.3", + "nanos+_1.1.1" + ], + "6": [ + "only rc releases" + ], + "7": [ + "only rc releases" + ], + "7.1": [ + "only rc releases" + ], + "7.2": [ + "only rc releases" + ], + "8": [ + "stax_1.0.0" + ], + "9": [ + "only rc releases" + ], + "10": [ + "stax_1.1.0" + ], + "11": [ + "stax_1.2.0", + "stax_1.2.1" + ], + "12": [ + "nanox_2.3.0-rc2", + "nanos+_1.2.0-rc2" + ], + "13": [ + "stax_1.3.0" + ], + "14": [ + "only rc releases" + ], + "15": [ + "stax_1.4.0" + ], + "16": [ + "europa_0.1.0-re1" + ], + "17": [ + "europa_0.1.0-re2" + ], + "18": [ + "europa_0.1.0-re3", + "flex_0.2.0-rc1", + "flex_0.2.0-rc2", + "nanox_2.3.0-rc5", + "nanos+_1.2.0-rc5", + "nanos+_1.2.0" + ], + "19": [ + "flex_1.0.0-rc1", + "flex_1.0.0-rc2", + "flex_1.0.0", + "flex_1.0.1" + ], + "20": [ + "stax_1.5.0-rc1", + "flex_1.1.0-rc1" + ], + "21": [ + "stax_1.5.0-rc2", + "flex_1.1.0-rc2", + "stax_1.5.0", + "flex_1.1.0", + "flex_1.1.1", + "nanos+_1.3.0-rc1", + "nanox_2.4.0-rc1", + "stax_1.6.0-rc1", + "flex_1.2.0-rc1" + ] +} From 0c27c8ea9c0c0ef42f2ebba6be2809bad6606ed4 Mon Sep 17 00:00:00 2001 From: Arthur Bonnaudet Date: Tue, 1 Oct 2024 10:12:35 +0200 Subject: [PATCH 02/53] Doc: Update README.md API_LEVEL section Remove release candidates OS from API_LEVEL table. --- README.md | 45 +++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 31608c075..61538a176 100644 --- a/README.md +++ b/README.md @@ -55,34 +55,23 @@ In short, to build an app for an OS, you should: ## About API_LEVEL branches -This list the API_LEVEL branches with their purposed (corresponding OS) and state if they should still be patched or not (OS not “active” anymore). -OS release candidates are only kept in the list when a corresponding OS release production might be released on the same API_LEVEL. - -| Name | Related OS | Active -|---------|-------------------------------------------------------------------------------------------------------------------------------|------------------- -| LNS |
nanos_2.1.0 | :heavy_check_mark: -| 1 | nanox_2.1.0
nanos+_1.1.0 | :x: -| 2 | only rc releases | :x: -| 3 | only rc releases | :x: -| 4 | only rc releases | :x: -| 5 | nanox_2.2.{0, 1, 2, 3}
nanos+ 1.1.1 | :heavy_check_mark: -| 6 | only rc releases | :x: -| 7 / 7.1 | only rc releases | :x: -| 7.2 | only rc releases
(not compatible due
to font update) | :x: -| 8 | stax_1.0.0 | :x: -| 9 | only rc releases | :x: -| 10 | stax_1.1.0 | :x: -| 11 | stax_1.2.0
stax_1.2.1 | :x: -| 12 | nanox_2.3.0-rc2
nanos+_1.2.0-rc2 | :x: -| 13 | stax_1.3.0 | :x: -| 14 | only rc releases | :x: -| 15 | stax_1.4.0 | :heavy_check_mark: -| 16 | europa_0.1.0-re1 | :x: -| 17 | europa_0.1.0-re2 | :x: -| 18 | europa_0.1.0-re3
flex_0.2.0-rc1
flex_0.2.0-rc2
nanox_2.3.0-rc5
nanos+_1.2.0-rc5
nanos+_1.2.0 | :heavy_check_mark: -| 19 | flex_1.0.0-rc1
flex_1.0.0-rc2
flex_1.0.0
flex_1.0.1
| :x: -| 20 | stax_1.5.0-rc1
flex_1.1.0-rc1 | :x: -| 21 | stax_1.5.0-rc2
flex_1.1.0-rc2
stax_1.5.0
flex_1.1.0
flex_1.1.1
| :heavy_check_mark: +This list the main API_LEVEL branches with their purposed (corresponding OS) and state if they should still be patched or not (OS not “active” anymore). + +The full mapping of API_LEVEL branches, including OS release candidates, is available [here](api_levels.json). + +| Name | Related OS | Active | +| ---- | -------------------------------------------------- | ------------------ | +| LNS |
nanos_2.1.0 | :heavy_check_mark: | +| 1 | nanox_2.1.0
nanos+_1.1.0 | :x: | +| 5 | nanox_2.2.{0, 1, 2, 3}
nanos+ 1.1.1 | :heavy_check_mark: | +| 8 | stax_1.0.0 | :x: | +| 10 | stax_1.1.0 | :x: | +| 11 | stax_1.2.0
stax_1.2.1 | :x: | +| 13 | stax_1.3.0 | :x: | +| 15 | stax_1.4.0 | :x: | +| 18 | nanos+_1.2.0 | :heavy_check_mark: | +| 19 | flex_1.0.0
flex_1.0.1
| :x: | +| 21 | stax_1.5.0
flex_1.1.0
flex_1.1.1
| :heavy_check_mark: | ### Cherry-picking process: From 91bcfcf1480cc3f77a33f923954634aa1a9cd780 Mon Sep 17 00:00:00 2001 From: "kevin.meudic" Date: Mon, 23 Sep 2024 10:48:01 +0200 Subject: [PATCH 03/53] Add Return status to syscall for nvram --- include/os_nvm.h | 2 +- src/syscalls.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/include/os_nvm.h b/include/os_nvm.h index 3f1811bda..8fd5e370f 100644 --- a/include/os_nvm.h +++ b/include/os_nvm.h @@ -23,7 +23,7 @@ SYSCALL void nvm_erase(void *dst_adr PLENGTH(len), unsigned int len); SUDOCALL void nvm_write_page(unsigned int page_adr, bool force); // erase a nvm page at given address, only callable by the privileged APIs -SUDOCALL void nvm_erase_page(unsigned int page_adr); +SUDOCALL unsigned int nvm_erase_page(unsigned int page_adr); // any application can wipe the global pin, global seed, user's keys // disabled for security reasons // SYSCALL void diff --git a/src/syscalls.c b/src/syscalls.c index 076b95ece..c32c1f1c0 100644 --- a/src/syscalls.c +++ b/src/syscalls.c @@ -1835,13 +1835,12 @@ void nvm_write_page(unsigned int page_adr, bool force) return; } -void nvm_erase_page(unsigned int page_adr) +unsigned int nvm_erase_page(unsigned int page_adr) { unsigned int parameters[2]; parameters[0] = (unsigned int) page_adr; parameters[1] = 0; - SVC_Call(SYSCALL_nvm_erase_page_ID, parameters); - return; + return (unsigned int) SVC_Call(SYSCALL_nvm_erase_page_ID, parameters); } try_context_t *try_context_get(void) From f3f72ed99d8bbaa486306b87ec219f488e53e7a8 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Tue, 1 Oct 2024 13:13:48 +0200 Subject: [PATCH 04/53] Add navigable content use case to replace settings use case --- lib_nbgl/doc/nbgl_use_case.dox | 4 +- lib_nbgl/include/nbgl_use_case.h | 119 +++++++++++++++++-------------- lib_nbgl/src/nbgl_use_case.c | 94 ++++++++++++------------ 3 files changed, 116 insertions(+), 101 deletions(-) diff --git a/lib_nbgl/doc/nbgl_use_case.dox b/lib_nbgl/doc/nbgl_use_case.dox index 5035fd80a..d92699220 100644 --- a/lib_nbgl/doc/nbgl_use_case.dox +++ b/lib_nbgl/doc/nbgl_use_case.dox @@ -55,11 +55,11 @@ A few APIs are available to draw typical Use-Cases, such as: - for keypad: - @ref nbgl_useCaseKeypadPIN() to draw a default keypad implementation with hidden digits (see @subpage use_case_keypad) - @ref nbgl_useCaseKeypadDigits() to draw a default keypad implementation, showing digits (see @subpage use_case_keypad) +- for generic navigable content: + - @ref nbgl_useCaseNavigableContent() to draw a level of generic content navigable pages Some APIs have also been kept for backward compatibility, and for some rare cases: -- for Settings: - - @ref nbgl_useCaseSettings() to draw a level of settings pages - for most used reviews: - @ref nbgl_useCaseReviewStart() to draw the cover page of a review (initial page, without data) - @ref nbgl_useCaseStaticReview() to draw the data pages of a regular review, when all info are available from the beginning (all pages but the cover one) diff --git a/lib_nbgl/include/nbgl_use_case.h b/lib_nbgl/include/nbgl_use_case.h index 3d56a73f1..e36079cae 100644 --- a/lib_nbgl/include/nbgl_use_case.h +++ b/lib_nbgl/include/nbgl_use_case.h @@ -365,61 +365,70 @@ uint8_t nbgl_useCaseGetNbChoicesInPage(uint8_t nbChoice uint8_t nbgl_useCaseGetNbPagesForTagValueList(const nbgl_contentTagValueList_t *tagValueList); // use case drawing -void nbgl_useCaseHome(const char *appName, - const nbgl_icon_details_t *appIcon, - const char *tagline, - bool withSettings, - nbgl_callback_t topRightCallback, - nbgl_callback_t quitCallback); -void nbgl_useCaseHomeExt(const char *appName, - const nbgl_icon_details_t *appIcon, - const char *tagline, - bool withSettings, - const char *actionButtonText, - nbgl_callback_t actionCallback, - nbgl_callback_t topRightCallback, - nbgl_callback_t quitCallback); -void nbgl_useCaseSettings(const char *settingsTitle, - uint8_t initPage, - uint8_t nbPages, - bool touchableTitle, - nbgl_callback_t quitCallback, - nbgl_navCallback_t navCallback, - nbgl_layoutTouchCallback_t controlsCallback); -void nbgl_useCaseGenericSettings(const char *appName, - uint8_t initPage, - const nbgl_genericContents_t *settingContents, - const nbgl_contentInfoList_t *infosList, - nbgl_callback_t quitCallback); -void nbgl_useCaseConfirm(const char *message, - const char *subMessage, - const char *confirmText, - const char *rejectText, - nbgl_callback_t callback); -void nbgl_useCaseReviewStart(const nbgl_icon_details_t *icon, - const char *reviewTitle, - const char *reviewSubTitle, - const char *rejectText, - nbgl_callback_t continueCallback, - nbgl_callback_t rejectCallback); -void nbgl_useCaseRegularReview(uint8_t initPage, - uint8_t nbPages, - const char *rejectText, - nbgl_layoutTouchCallback_t buttonCallback, - nbgl_navCallback_t navCallback, - nbgl_choiceCallback_t choiceCallback); -void nbgl_useCaseStaticReview(const nbgl_contentTagValueList_t *tagValueList, - const nbgl_pageInfoLongPress_t *infoLongPress, - const char *rejectText, - nbgl_choiceCallback_t callback); -void nbgl_useCaseStaticReviewLight(const nbgl_contentTagValueList_t *tagValueList, - const nbgl_pageInfoLongPress_t *infoLongPress, - const char *rejectText, - nbgl_choiceCallback_t callback); -void nbgl_useCaseAddressConfirmation(const char *address, nbgl_choiceCallback_t callback); -void nbgl_useCaseAddressConfirmationExt(const char *address, - nbgl_choiceCallback_t callback, - const nbgl_contentTagValueList_t *tagValueList); +DEPRECATED void nbgl_useCaseHome(const char *appName, + const nbgl_icon_details_t *appIcon, + const char *tagline, + bool withSettings, + nbgl_callback_t topRightCallback, + nbgl_callback_t quitCallback); +DEPRECATED void nbgl_useCaseHomeExt(const char *appName, + const nbgl_icon_details_t *appIcon, + const char *tagline, + bool withSettings, + const char *actionButtonText, + nbgl_callback_t actionCallback, + nbgl_callback_t topRightCallback, + nbgl_callback_t quitCallback); +void nbgl_useCaseNavigableContent(const char *title, + uint8_t initPage, + uint8_t nbPages, + nbgl_callback_t quitCallback, + nbgl_navCallback_t navCallback, + nbgl_layoutTouchCallback_t controlsCallback); +DEPRECATED void nbgl_useCaseSettings(const char *settingsTitle, + uint8_t initPage, + uint8_t nbPages, + bool touchableTitle, + nbgl_callback_t quitCallback, + nbgl_navCallback_t navCallback, + nbgl_layoutTouchCallback_t controlsCallback); +void nbgl_useCaseGenericSettings(const char *appName, + uint8_t initPage, + const nbgl_genericContents_t *settingContents, + const nbgl_contentInfoList_t *infosList, + nbgl_callback_t quitCallback); +void nbgl_useCaseConfirm(const char *message, + const char *subMessage, + const char *confirmText, + const char *rejectText, + nbgl_callback_t callback); +void nbgl_useCaseReviewStart(const nbgl_icon_details_t *icon, + const char *reviewTitle, + const char *reviewSubTitle, + const char *rejectText, + nbgl_callback_t continueCallback, + nbgl_callback_t rejectCallback); +void nbgl_useCaseRegularReview(uint8_t initPage, + uint8_t nbPages, + const char *rejectText, + nbgl_layoutTouchCallback_t buttonCallback, + nbgl_navCallback_t navCallback, + nbgl_choiceCallback_t choiceCallback); +void nbgl_useCaseStaticReview(const nbgl_contentTagValueList_t *tagValueList, + const nbgl_pageInfoLongPress_t *infoLongPress, + const char *rejectText, + nbgl_choiceCallback_t callback); +void nbgl_useCaseStaticReviewLight(const nbgl_contentTagValueList_t *tagValueList, + const nbgl_pageInfoLongPress_t *infoLongPress, + const char *rejectText, + nbgl_choiceCallback_t callback); + +DEPRECATED void nbgl_useCaseAddressConfirmationExt(const char *address, + nbgl_choiceCallback_t callback, + const nbgl_contentTagValueList_t *tagValueList); +#define nbgl_useCaseAddressConfirmation(__address, __callback) \ + nbgl_useCaseAddressConfirmationExt(__address, __callback, NULL) + #ifdef NBGL_KEYPAD void nbgl_useCaseKeypadDigits(const char *title, uint8_t minDigits, diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index bb77a2e50..c905fe97c 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -16,7 +16,6 @@ #include "os_pic.h" #include "os_print.h" #include "os_helpers.h" -#include "decorators.h" /********************* * DEFINES @@ -2330,29 +2329,30 @@ uint8_t nbgl_useCaseGetNbPagesForTagValueList(const nbgl_contentTagValueList_t * * @deprecated * See #nbgl_useCaseHomeAndSettings */ -DEPRECATED void nbgl_useCaseHome(const char *appName, - const nbgl_icon_details_t *appIcon, - const char *tagline, - bool withSettings, - nbgl_callback_t topRightCallback, - nbgl_callback_t quitCallback) -{ - nbgl_useCaseHomeExt( - appName, appIcon, tagline, withSettings, NULL, NULL, topRightCallback, quitCallback); +void nbgl_useCaseHome(const char *appName, + const nbgl_icon_details_t *appIcon, + const char *tagline, + bool withSettings, + nbgl_callback_t topRightCallback, + nbgl_callback_t quitCallback) +{ + nbgl_homeAction_t homeAction = {0}; + useCaseHomeExt( + appName, appIcon, tagline, withSettings, &homeAction, topRightCallback, quitCallback); } /** * @deprecated * See #nbgl_useCaseHomeAndSettings */ -DEPRECATED void nbgl_useCaseHomeExt(const char *appName, - const nbgl_icon_details_t *appIcon, - const char *tagline, - bool withSettings, - const char *actionButtonText, - nbgl_callback_t actionCallback, - nbgl_callback_t topRightCallback, - nbgl_callback_t quitCallback) +void nbgl_useCaseHomeExt(const char *appName, + const nbgl_icon_details_t *appIcon, + const char *tagline, + bool withSettings, + const char *actionButtonText, + nbgl_callback_t actionCallback, + nbgl_callback_t topRightCallback, + nbgl_callback_t quitCallback) { nbgl_homeAction_t homeAction = {.callback = actionCallback, .icon = NULL, @@ -2364,28 +2364,25 @@ DEPRECATED void nbgl_useCaseHomeExt(const char *appName, } /** - * @brief Draws the settings pages of an app with as many pages as given - * For each page, the given navCallback will be called to get the content. Only 'type' and - * union has to be set in this content + * @brief Initiates the drawing a set of pages of generic content, with a touchable header (usually + * to go back or to an upper level) For each page (including the first one), the given 'navCallback' + * will be called to get the content. Only 'type' and union has to be set in this content. * - * @param title string to set in touchable title + * @param title string to set in touchable title (header) * @param initPage page on which to start [0->(nbPages-1)] * @param nbPages number of pages - * @param touchable unused, it is always on - * @param quitCallback callback called when quit button (or title) is pressed + * @param quitCallback callback called title is pressed * @param navCallback callback called when navigation arrows are pressed * @param controlsCallback callback called when any controls in the settings (radios, switches) is * called (the tokens must be >= @ref FIRST_USER_TOKEN) */ -void nbgl_useCaseSettings(const char *title, - uint8_t initPage, - uint8_t nbPages, - bool touchable, - nbgl_callback_t quitCallback, - nbgl_navCallback_t navCallback, - nbgl_layoutTouchCallback_t controlsCallback) +void nbgl_useCaseNavigableContent(const char *title, + uint8_t initPage, + uint8_t nbPages, + nbgl_callback_t quitCallback, + nbgl_navCallback_t navCallback, + nbgl_layoutTouchCallback_t controlsCallback) { - UNUSED(touchable); reset_callbacks(); // memorize context @@ -2401,6 +2398,24 @@ void nbgl_useCaseSettings(const char *title, displaySettingsPage(initPage, true); } +/** + * @deprecated + * See #nbgl_useCaseHomeAndSettings if used in a 'Settings' context, or nbgl_useCaseNavigableContent + * otherwise + */ +void nbgl_useCaseSettings(const char *title, + uint8_t initPage, + uint8_t nbPages, + bool touchable, + nbgl_callback_t quitCallback, + nbgl_navCallback_t navCallback, + nbgl_layoutTouchCallback_t controlsCallback) +{ + UNUSED(touchable); + nbgl_useCaseNavigableContent( + title, initPage, nbPages, quitCallback, navCallback, controlsCallback); +} + /** * @brief Draws the settings pages of an app with automatic pagination depending on content * to be displayed that is passed through settingContents and infosList @@ -3245,18 +3260,9 @@ void nbgl_useCaseReviewStreamingFinish(const char *finishTitle, * @deprecated * See #nbgl_useCaseAddressReview */ -DEPRECATED void nbgl_useCaseAddressConfirmation(const char *address, nbgl_choiceCallback_t callback) -{ - nbgl_useCaseAddressConfirmationExt(address, callback, NULL); -} - -/** - * @deprecated - * See #nbgl_useCaseAddressReview - */ -DEPRECATED void nbgl_useCaseAddressConfirmationExt(const char *address, - nbgl_choiceCallback_t callback, - const nbgl_contentTagValueList_t *tagValueList) +void nbgl_useCaseAddressConfirmationExt(const char *address, + nbgl_choiceCallback_t callback, + const nbgl_contentTagValueList_t *tagValueList) { reset_callbacks(); memset(&genericContext, 0, sizeof(genericContext)); From d12f64300890599e1dc49d08b7e04af42d9360f5 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 7 Oct 2024 15:44:10 +0200 Subject: [PATCH 05/53] Now uses clang for all steps of the standard app build by default --- Makefile.standard_app | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile.standard_app b/Makefile.standard_app index 2cee343d9..95c02823a 100644 --- a/Makefile.standard_app +++ b/Makefile.standard_app @@ -218,8 +218,11 @@ APP_FLAGS_APP_LOAD_PARAMS = $(shell printf '0x%x' $$(( $(STANDARD_APP_FLAGS) + $ # COMPILER SETTINGS # ##################################################################### CC := $(CLANGPATH)clang -AS := $(GCCPATH)arm-none-eabi-gcc -LD := $(GCCPATH)arm-none-eabi-gcc +AS := $(CLANGPATH)clang +LD := $(CLANGPATH)clang +ifeq ($(AS),$(CLANGPATH)clang) + AFLAGS += --target=arm-arm-none-eabi +endif LDLIBS += -lm -lgcc -lc ##################################################################### From 036331fb9ad26b9e96cf80bdf4fb76c98b99182f Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Thu, 10 Oct 2024 08:09:28 +0200 Subject: [PATCH 06/53] Fix crashing address review after a blind signing review --- lib_nbgl/src/nbgl_use_case.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index c905fe97c..0f3ae0e7e 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -48,9 +48,8 @@ #define QRCODE_REDUCED_ADDR_LEN 128 // macros to ease access to shared contexts -#define keypadContext sharedContext.keypad -#define addressConfirmationContext sharedContext.addressConfirmation -#define blindSigningContext sharedContext.blindSigning +#define keypadContext sharedContext.keypad +#define blindSigningContext sharedContext.blindSigning /********************** * TYPEDEFS @@ -119,13 +118,12 @@ typedef struct BlindSigningContext_s { } BlindSigningContext_t; // this union is intended to save RAM for context storage -// indeed, these three contexts cannot happen simultaneously +// indeed, these 2 contexts cannot happen simultaneously typedef union { #ifdef NBGL_KEYPAD KeypadContext_t keypad; #endif - AddressConfirmationContext_t addressConfirmation; - BlindSigningContext_t blindSigning; + BlindSigningContext_t blindSigning; } SharedContext_t; typedef struct { @@ -216,6 +214,9 @@ static DetailsContext_t detailsContext; // multi-purpose context shared for non-concurrent usages static SharedContext_t sharedContext; +// context for address review +static AddressConfirmationContext_t addressConfirmationContext; + // contexts for generic navigation static GenericContext_t genericContext; static nbgl_content_t @@ -713,7 +714,9 @@ static const nbgl_content_t *genericContextComputeNextPageParams(uint8_t // Handle case where the content to be displayed is in the next content // In such case start at element index 0. - if (nextElementIdx >= genericContext.currentContentElementNb) { + // If currentContentElementNb == 0, means not initialized, so skip + if ((nextElementIdx >= genericContext.currentContentElementNb) + && (genericContext.currentContentElementNb > 0)) { nextContentIdx += 1; nextElementIdx = 0; } From 6a5f785f41a14051587b4f2f8b8dc858215620c0 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 10 Oct 2024 16:14:19 +0200 Subject: [PATCH 07/53] Disables unused cli argument warnings from clang assembler --- Makefile.standard_app | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.standard_app b/Makefile.standard_app index 95c02823a..e2870cea6 100644 --- a/Makefile.standard_app +++ b/Makefile.standard_app @@ -221,7 +221,7 @@ CC := $(CLANGPATH)clang AS := $(CLANGPATH)clang LD := $(CLANGPATH)clang ifeq ($(AS),$(CLANGPATH)clang) - AFLAGS += --target=arm-arm-none-eabi + AFLAGS += --target=arm-arm-none-eabi -Wno-unused-command-line-argument endif LDLIBS += -lm -lgcc -lc From b9dd66758730746984a5e4234cfffe90924d374b Mon Sep 17 00:00:00 2001 From: Thomas Joly Date: Wed, 9 Oct 2024 15:48:41 +0200 Subject: [PATCH 08/53] Move flags member of the application structure in order to remove hole and padding --- include/os_app.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/os_app.h b/include/os_app.h index 3668ed3a4..76b29f571 100644 --- a/include/os_app.h +++ b/include/os_app.h @@ -28,6 +28,9 @@ typedef void (*appmain_t)(void); // application slot description typedef struct application_s { + // special flags for this application + uint64_t flags; + // nvram start address for this application (to check overlap when loading, and mpu lock) unsigned char *nvram_begin; // nvram stop address (exclusive) for this application (to check overlap when loading, and mpu @@ -38,9 +41,6 @@ typedef struct application_s { // into Thumb code appmain_t main; - // special flags for this application - uint64_t flags; - // Memory organization: [ code (RX) |alignpage| data (RW) |alignpage| install params (R) ] // length of the code section of the application (RX) From cd37fce92d62f0bd4432d24f69316785f13a768b Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Thu, 10 Oct 2024 16:07:09 +0200 Subject: [PATCH 09/53] Now uses same optimization level for compiling and assembling with clang --- Makefile.defines | 15 +-------------- Makefile.rules | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/Makefile.defines b/Makefile.defines index 9b83c46cd..e86c6703f 100644 --- a/Makefile.defines +++ b/Makefile.defines @@ -55,18 +55,6 @@ else CFLAGS += --sysroot="$(SYSROOT)" endif -# optimization and debug levels -ifneq ($(DEBUG),0) -OPTI_LVL = -Og -OPTI_ALVL = $(OPTI_LVL) -DBG_LVL = -g3 -else -OPTI_LVL = -Oz -OPTI_ALVL = -Os # assembler does not handle -Oz, use -Os instead -DBG_LVL = -g0 -endif - -CFLAGS += $(OPTI_LVL) $(DBG_LVL) CFLAGS += -fomit-frame-pointer -momit-leaf-frame-pointer CFLAGS += -fno-common -mlittle-endian @@ -91,9 +79,8 @@ CFLAGS += -fropi CFLAGS += -fno-jump-tables # avoid jump tables for switch to avoid problems with invalid PIC access CFLAGS += -nostdlib -nodefaultlibs -AFLAGS += $(OPTI_ALVL) $(DBG_LVL) -fno-common +AFLAGS += -fno-common -LDFLAGS += $(OPTI_LVL) $(DBG_LVL) LDFLAGS += -fomit-frame-pointer LDFLAGS += -Wall LDFLAGS += -fno-common -ffunction-sections -fdata-sections -fwhole-program diff --git a/Makefile.rules b/Makefile.rules index b45f41c5a..af19b53ba 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -89,4 +89,25 @@ OBJECTS_DIR += $(sort $(dir $(OBJECT_FILES))) DEPEND_FILES = $(subst $(OBJ_DIR), $(DEP_DIR), $(addsuffix .d, $(basename $(OBJECT_FILES)))) DEPEND_DIR += $(sort $(dir $(DEPEND_FILES))) +# optimization and debug levels +# this should be in Makefile.defines, but $(AS) is not yet defined at that point +ifneq ($(DEBUG),0) + OPTI_LVL = -Og + OPTI_ALVL = $(OPTI_LVL) + DBG_LVL = -g3 +else + OPTI_LVL = -Oz + ifeq ($(AS),$(CLANGPATH)clang) + OPTI_ALVL = $(OPTI_LVL) + else + # GCC assembler does not handle -Oz + OPTI_ALVL = -Os + endif + DBG_LVL = -g0 +endif +# at the beginning so they can be overridden by apps +CFLAGS := $(OPTI_LVL) $(DBG_LVL) $(CFLAGS) +AFLAGS := $(OPTI_ALVL) $(DBG_LVL) $(AFLAGS) +LDFLAGS := $(OPTI_LVL) $(DBG_LVL) $(LDFLAGS) + include $(BOLOS_SDK)/Makefile.rules_generic From ab01ade31288da96f7645a75e1c51f9d88b1e0e0 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Mon, 14 Oct 2024 09:54:51 +0200 Subject: [PATCH 10/53] Create a QR Code type of modal window for Tag/Value alias --- lib_nbgl/include/nbgl_content.h | 8 +++++--- lib_nbgl/src/nbgl_use_case.c | 30 +++++++++++++++++++----------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/lib_nbgl/include/nbgl_content.h b/lib_nbgl/include/nbgl_content.h index 5dcbb47d2..ee68f265f 100644 --- a/lib_nbgl/include/nbgl_content.h +++ b/lib_nbgl/include/nbgl_content.h @@ -123,8 +123,10 @@ typedef struct { * */ typedef enum { - ENS_ALIAS = 0, ///< alias comes from ENS - ADDRESS_BOOK_ALIAS ///< alias comes from Address Book + NO_ALIAS_TYPE = 0, + ENS_ALIAS, ///< alias comes from ENS + ADDRESS_BOOK_ALIAS, ///< alias comes from Address Book + QR_CODE_ALIAS ///< alias is an address to be displayed as a QR Code } nbgl_contentValueAliasType_t; /** @@ -134,7 +136,7 @@ typedef enum { typedef struct { const char *fullValue; ///< full string of the value when used as an alias const char *explanation; ///< string displayed in gray, explaing where the alias comes from - ///< if NULL, a default explanation is provided, depending of the type + ///< only used if aliasType is @ref NO_ALIAS_TYPE nbgl_contentValueAliasType_t aliasType; ///< type of alias } nbgl_contentValueExt_t; diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index 0f3ae0e7e..e331f8a85 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -1146,12 +1146,24 @@ static void displayFullValuePage(const nbgl_contentTagValue_t *pair) .backAndText.token = 0, .backAndText.tuneId = TUNE_TAP_CASUAL, .backAndText.text = PIC(pair->item)}; - const char *info; - genericContext.modalLayout = nbgl_layoutGet(&layoutDescription); + genericContext.modalLayout = nbgl_layoutGet(&layoutDescription); // add header with the tag part of the pair, to go back nbgl_layoutAddHeader(genericContext.modalLayout, &headerDesc); - // add full value text - if (pair->extension->explanation == NULL) { + // add either QR Code or full value text + if (pair->extension->aliasType == QR_CODE_ALIAS) { +#ifdef NBGL_QRCODE + nbgl_layoutQRCode_t qrCode = {.url = pair->extension->fullValue, + .text1 = pair->extension->fullValue, + .text2 = pair->extension->explanation, + .centered = true, + .offsetY = 0}; + + nbgl_layoutAddQRCode(genericContext.modalLayout, &qrCode); +#endif // NBGL_QRCODE + } + else { + const char *info; + // add full value text if (pair->extension->aliasType == ENS_ALIAS) { info = "ENS names are resolved by Ledger backend."; } @@ -1159,15 +1171,11 @@ static void displayFullValuePage(const nbgl_contentTagValue_t *pair) info = "This account label comes from your Address Book in Ledger Live."; } else { - info = ""; + info = pair->extension->explanation; } + nbgl_layoutAddTextContent( + genericContext.modalLayout, pair->value, pair->extension->fullValue, info); } - else { - info = pair->extension->explanation; - } - nbgl_layoutAddTextContent( - genericContext.modalLayout, pair->value, pair->extension->fullValue, info); - // draw & refresh nbgl_layoutDraw(genericContext.modalLayout); nbgl_refresh(); From de002259d55180bcef31699616cc51d06e7ab30a Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Tue, 15 Oct 2024 16:21:05 +0200 Subject: [PATCH 11/53] No "swipe to review" in first page of review if using a Tip-Box --- lib_nbgl/src/nbgl_use_case.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index e331f8a85..dada714fa 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -1778,6 +1778,9 @@ static void useCaseReview(nbgl_operationType_t operationType, prepareReviewFirstPage( &STARTING_CONTENT.content.extendedCenter.contentCenter, icon, reviewTitle, reviewSubTitle); if (tipBox != NULL) { + // do not display "Swipe to review" if a tip-box is displayed + STARTING_CONTENT.content.extendedCenter.contentCenter.subText = NULL; + STARTING_CONTENT.content.extendedCenter.tipBox.icon = tipBox->icon; STARTING_CONTENT.content.extendedCenter.tipBox.text = tipBox->text; STARTING_CONTENT.content.extendedCenter.tipBox.token = TIP_BOX_TOKEN; @@ -1785,7 +1788,9 @@ static void useCaseReview(nbgl_operationType_t operationType, tipBoxModalTitle = tipBox->modalTitle; // the only supported type yet is @ref INFOS_LIST if (tipBox->type == INFOS_LIST) { - memcpy(&tipBoxInfoList, &tipBox->infos, sizeof(nbgl_contentInfoList_t)); + tipBoxInfoList.nbInfos = tipBox->infos.nbInfos; + tipBoxInfoList.infoTypes = PIC(tipBox->infos.infoTypes); + tipBoxInfoList.infoContents = PIC(tipBox->infos.infoContents); } } From a305b6bb858897088d303c09c432a287a167645c Mon Sep 17 00:00:00 2001 From: Julian Arevalo Date: Mon, 7 Oct 2024 18:06:44 +0200 Subject: [PATCH 12/53] cx_aes_siv: Add new function to reset AES hw copro Update the syscall to have a signature that return an error that may be useful depending on the HW. --- include/cx_stubs.h | 1 + include/ox_aes.h | 2 +- lib_cxng/cx.export | 1 + lib_cxng/include/lcx_aes_siv.h | 11 +++++++++++ lib_cxng/src/cx_aes.c | 11 +++++++---- lib_cxng/src/cx_aes_siv.c | 23 ++++++++++++++++++++--- lib_cxng/src/cx_cipher.h | 2 +- src/cx_stubs.S | 1 + src/syscalls.c | 4 ++-- 9 files changed, 45 insertions(+), 11 deletions(-) diff --git a/include/cx_stubs.h b/include/cx_stubs.h index b0d5a5e7e..40ec737dd 100644 --- a/include/cx_stubs.h +++ b/include/cx_stubs.h @@ -145,3 +145,4 @@ #define _NR_cx_cmac_start 0x8d #define _NR_cx_cmac_update 0x8e #define _NR_cx_cmac_finish 0x8f +#define _NR_cx_aes_siv_reset 0x90 diff --git a/include/ox_aes.h b/include/ox_aes.h index f09cf751d..2ee7b87f8 100644 --- a/include/ox_aes.h +++ b/include/ox_aes.h @@ -99,7 +99,7 @@ cx_aes_set_key_hw(const cx_aes_key_t *key PLENGTH(sizeof(cx_aes_key_t)), uint32_ /** * @brief Resets the AES context. */ -SYSCALL void cx_aes_reset_hw(void); +SYSCALL cx_err_t cx_aes_reset_hw(void); /** * @brief Encrypts or decrypts a block with AES. diff --git a/lib_cxng/cx.export b/lib_cxng/cx.export index 19d47e726..b935b75ff 100644 --- a/lib_cxng/cx.export +++ b/lib_cxng/cx.export @@ -148,3 +148,4 @@ cx_cipher_reset cx_cmac_start cx_cmac_update cx_cmac_finish +cx_aes_siv_reset diff --git a/lib_cxng/include/lcx_aes_siv.h b/lib_cxng/include/lcx_aes_siv.h index 06905dc69..b4db323b2 100644 --- a/lib_cxng/include/lcx_aes_siv.h +++ b/lib_cxng/include/lcx_aes_siv.h @@ -55,6 +55,17 @@ typedef struct _cx_aes_siv_context { */ WARN_UNUSED_RESULT cx_err_t cx_aes_siv_init(cx_aes_siv_context_t *ctx); +/** + * @brief Reset the AES-SIV context and HW used. + * @details The cipher context must be initialized beforehand. + * This function must be called after calls to #cx_aes_siv_finish or + * #cx_aes_siv_update. + * + * @param[in] ctx Pointer to the AES-SIV context. + * @return Error code. + */ +WARN_UNUSED_RESULT cx_err_t cx_aes_siv_reset(cx_aes_siv_context_t *ctx); + /** * @brief Sets the key to compute AES-SIV. * diff --git a/lib_cxng/src/cx_aes.c b/lib_cxng/src/cx_aes.c index 338f5386c..49dd20cdd 100644 --- a/lib_cxng/src/cx_aes.c +++ b/lib_cxng/src/cx_aes.c @@ -28,21 +28,24 @@ cx_err_t cx_aes_init_key_no_throw(const uint8_t *raw_key, size_t key_len, cx_aes cx_err_t cx_aes_enc_block(const cx_aes_key_t *key, const uint8_t *inblock, uint8_t *outblock) { cx_err_t error; + cx_err_t err_reset = CX_INTERNAL_ERROR; CX_CHECK(cx_aes_set_key_hw(key, CX_ENCRYPT)); CX_CHECK(cx_aes_block_hw(inblock, outblock)); - cx_aes_reset_hw(); end: - return error; + err_reset = cx_aes_reset_hw(); + return error == CX_OK ? err_reset : error; } cx_err_t cx_aes_dec_block(const cx_aes_key_t *key, const uint8_t *inblock, uint8_t *outblock) { cx_err_t error; + cx_err_t err_reset = CX_INTERNAL_ERROR; + CX_CHECK(cx_aes_set_key_hw(key, CX_ENCRYPT)); CX_CHECK(cx_aes_set_key_hw(key, CX_DECRYPT)); CX_CHECK(cx_aes_block_hw(inblock, outblock)); - cx_aes_reset_hw(); end: - return error; + err_reset = cx_aes_reset_hw(); + return error == CX_OK ? err_reset : error; } cx_err_t cx_aes_iv_no_throw(const cx_aes_key_t *key, diff --git a/lib_cxng/src/cx_aes_siv.c b/lib_cxng/src/cx_aes_siv.c index ed106d3dd..e7d8fd762 100644 --- a/lib_cxng/src/cx_aes_siv.c +++ b/lib_cxng/src/cx_aes_siv.c @@ -22,6 +22,19 @@ cx_err_t cx_aes_siv_init(cx_aes_siv_context_t *ctx) return error; } +cx_err_t cx_aes_siv_reset(cx_aes_siv_context_t *ctx) +{ + cx_err_t error = CX_INVALID_PARAMETER_VALUE; + if (ctx->cipher_ctx == NULL) { + goto end; + } + CX_CHECK(ctx->cipher_ctx->cipher_info->base->ctx_reset()); + cx_cipher_reset(ctx->cipher_ctx); + +end: + return error; +} + cx_err_t cx_aes_siv_set_key(cx_aes_siv_context_t *ctx, const uint8_t *key, size_t key_bitlen) { // AES SIV uses two keys of either 128, 192 or 256 bits each @@ -156,12 +169,14 @@ cx_err_t cx_aes_siv_encrypt(cx_aes_siv_context_t *ctx, uint8_t *tag) { cx_err_t error; + cx_err_t err_reset = CX_INTERNAL_ERROR; CX_CHECK(cx_aes_siv_start(ctx, CX_ENCRYPT, NULL, 0)); CX_CHECK(cx_aes_siv_update_aad(ctx, aad, aad_len)); CX_CHECK(cx_aes_siv_finish(ctx, input, in_len, tag)); CX_CHECK(cx_aes_siv_update(ctx, input, output, in_len)); end: - return error; + err_reset = cx_aes_siv_reset(ctx); + return error == CX_OK ? err_reset : error; } cx_err_t cx_aes_siv_decrypt(cx_aes_siv_context_t *ctx, @@ -173,14 +188,16 @@ cx_err_t cx_aes_siv_decrypt(cx_aes_siv_context_t *ctx, uint8_t *tag) { cx_err_t error; + cx_err_t err_reset = CX_INTERNAL_ERROR; CX_CHECK(cx_aes_siv_start(ctx, CX_DECRYPT, tag, CX_AES_BLOCK_SIZE)); CX_CHECK(cx_aes_siv_update(ctx, input, output, in_len)); - cx_cipher_reset(ctx->cipher_ctx); + CX_CHECK(cx_aes_siv_reset(ctx)); CX_CHECK(cx_aes_siv_update_aad(ctx, aad, aad_len)); CX_CHECK(cx_aes_siv_finish(ctx, output, in_len, tag)); end: - return error; + err_reset = cx_aes_siv_reset(ctx); + return error == CX_OK ? err_reset : error; } #endif // HAVE_AES && HAVE_CMAC diff --git a/lib_cxng/src/cx_cipher.h b/lib_cxng/src/cx_cipher.h index 88eddd8a6..7b8741a25 100644 --- a/lib_cxng/src/cx_cipher.h +++ b/lib_cxng/src/cx_cipher.h @@ -31,7 +31,7 @@ extern const cx_cipher_info_t cx_aes_256_info; /** HW support */ WARN_UNUSED_RESULT cx_err_t cx_aes_set_key_hw(const cx_aes_key_t *keys, uint32_t mode); WARN_UNUSED_RESULT cx_err_t cx_aes_block_hw(const uint8_t *inblock, uint8_t *outblock); -void cx_aes_reset_hw(void); +WARN_UNUSED_RESULT cx_err_t cx_aes_reset_hw(void); #endif // HAVE_AES #endif /* CX_CIPHER_H */ diff --git a/src/cx_stubs.S b/src/cx_stubs.S index 49d1ade68..c4ab57a23 100644 --- a/src/cx_stubs.S +++ b/src/cx_stubs.S @@ -160,6 +160,7 @@ CX_TRAMPOLINE _NR_cx_cipher_reset cx_cipher_reset CX_TRAMPOLINE _NR_cx_cmac_start cx_cmac_start CX_TRAMPOLINE _NR_cx_cmac_update cx_cmac_update CX_TRAMPOLINE _NR_cx_cmac_finish cx_cmac_finish +CX_TRAMPOLINE _NR_cx_aes_siv_reset cx_aes_siv_reset .thumb_func cx_trampoline_helper: diff --git a/src/syscalls.c b/src/syscalls.c index c32c1f1c0..3e8b5edc3 100644 --- a/src/syscalls.c +++ b/src/syscalls.c @@ -252,11 +252,11 @@ cx_err_t cx_aes_set_key_hw(const cx_aes_key_t *keys, uint32_t mode) return SVC_cx_call(SYSCALL_cx_aes_set_key_hw_ID, parameters); } -void cx_aes_reset_hw(void) +cx_err_t cx_aes_reset_hw(void) { unsigned int parameters[2]; parameters[1] = 0; - SVC_cx_call(SYSCALL_cx_aes_reset_hw_ID, parameters); + return SVC_cx_call(SYSCALL_cx_aes_reset_hw_ID, parameters); } cx_err_t cx_aes_block_hw(const unsigned char *inblock, unsigned char *outblock) From 8676173e5e6b5c510cce4d55c228f3341e977a54 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Wed, 16 Oct 2024 13:53:37 +0200 Subject: [PATCH 13/53] Add extension to INFOS_LIST to enable alias for some info types --- lib_nbgl/include/nbgl_content.h | 9 +- lib_nbgl/include/nbgl_layout.h | 5 + lib_nbgl/src/nbgl_layout.c | 200 ++++++++++++++++++++------------ lib_nbgl/src/nbgl_page.c | 18 ++- lib_nbgl/src/nbgl_use_case.c | 62 ++++++---- 5 files changed, 194 insertions(+), 100 deletions(-) diff --git a/lib_nbgl/include/nbgl_content.h b/lib_nbgl/include/nbgl_content.h index ee68f265f..0c06616ae 100644 --- a/lib_nbgl/include/nbgl_content.h +++ b/lib_nbgl/include/nbgl_content.h @@ -266,7 +266,14 @@ typedef struct nbgl_pageSwitchesList_s { typedef struct { const char *const *infoTypes; ///< array of types of infos (in black/bold) const char *const *infoContents; ///< array of contents of infos (in black) - uint8_t nbInfos; ///< number of elements in infoTypes and infoContents array + const nbgl_contentValueExt_t + *infoExtensions; ///< if not NULL, gives additional info on type field + ///< any {0} element of this array is considered as invalid + uint8_t nbInfos; ///< number of elements in infoTypes and infoContents array + uint8_t token; ///< token to use with extensions, if withExtensions is true and infoExtensions + ///< is not NULL + bool withExtensions; /// if set to TRUE and if infoExtensions is not NULL, use this + /// infoExtensions field } nbgl_contentInfoList_t; /** diff --git a/lib_nbgl/include/nbgl_layout.h b/lib_nbgl/include/nbgl_layout.h index 0fd7dca6d..c414ed91a 100644 --- a/lib_nbgl/include/nbgl_layout.h +++ b/lib_nbgl/include/nbgl_layout.h @@ -593,6 +593,11 @@ int nbgl_layoutAddTopRightButton(nbgl_layout_t *layout, int nbgl_layoutAddTouchableBar(nbgl_layout_t *layout, const nbgl_layoutBar_t *barLayout); int nbgl_layoutAddSwitch(nbgl_layout_t *layout, const nbgl_layoutSwitch_t *switchLayout); int nbgl_layoutAddText(nbgl_layout_t *layout, const char *text, const char *subText); +int nbgl_layoutAddTextWithAlias(nbgl_layout_t *layout, + const char *text, + const char *subText, + uint8_t token, + uint8_t index); int nbgl_layoutAddSubHeaderText(nbgl_layout_t *layout, const char *text); int nbgl_layoutAddRadioChoice(nbgl_layout_t *layout, const nbgl_layoutRadioChoice_t *choices); int nbgl_layoutAddQRCode(nbgl_layout_t *layout, const nbgl_layoutQRCode_t *info); diff --git a/lib_nbgl/src/nbgl_layout.c b/lib_nbgl/src/nbgl_layout.c index 179716f86..fdfd8914a 100644 --- a/lib_nbgl/src/nbgl_layout.c +++ b/lib_nbgl/src/nbgl_layout.c @@ -878,6 +878,109 @@ static nbgl_container_t *addContentCenter(nbgl_layoutInternal_t *layoutInt, return container; } +static int addText(nbgl_layout_t *layout, + const char *text, + const char *subText, + uint8_t token, + uint8_t index, + bool withAlias) +{ + nbgl_layoutInternal_t *layoutInt = (nbgl_layoutInternal_t *) layout; + nbgl_container_t *container; + nbgl_text_area_t *textArea; + nbgl_text_area_t *subTextArea; + uint16_t fullHeight = 0; + + if (layout == NULL) { + return -1; + } + container = (nbgl_container_t *) nbgl_objPoolGet(CONTAINER, layoutInt->layer); + + // get container children + container->children = nbgl_containerPoolGet(withAlias ? 3 : 2, layoutInt->layer); + container->obj.area.width = AVAILABLE_WIDTH; + + if (text != NULL) { + textArea = (nbgl_text_area_t *) nbgl_objPoolGet(TEXT_AREA, layoutInt->layer); + + textArea->textColor = BLACK; + textArea->text = PIC(text); + textArea->textAlignment = MID_LEFT; + textArea->fontId = SMALL_BOLD_FONT; + textArea->style = NO_STYLE; + textArea->wrapping = true; + textArea->obj.alignment = NO_ALIGNMENT; + textArea->obj.alignmentMarginY = PRE_TEXT_MARGIN; + textArea->obj.area.width = container->obj.area.width; + if (withAlias == true) { + textArea->obj.area.width -= 12 + MINI_PUSH_ICON.width; + } + textArea->obj.area.height = nbgl_getTextHeightInWidth( + textArea->fontId, textArea->text, textArea->obj.area.width, textArea->wrapping); + fullHeight += textArea->obj.area.height + textArea->obj.alignmentMarginY; + container->children[container->nbChildren] = (nbgl_obj_t *) textArea; + container->nbChildren++; + if (withAlias == true) { + nbgl_image_t *image = (nbgl_image_t *) nbgl_objPoolGet(IMAGE, layoutInt->layer); + layoutObj_t *obj + = layoutAddCallbackObj(layoutInt, (nbgl_obj_t *) image, token, TUNE_TAP_CASUAL); + obj->index = index; + image->foregroundColor = BLACK; + image->buffer = &MINI_PUSH_ICON; + image->obj.alignment = RIGHT_TOP; + image->obj.alignmentMarginX = 12; + image->obj.alignTo = (nbgl_obj_t *) textArea; + image->obj.touchMask = (1 << TOUCHED); + image->obj.touchId = VALUE_BUTTON_1_ID + index; + + container->children[container->nbChildren] = (nbgl_obj_t *) image; + container->nbChildren++; + } + } + if (subText != NULL) { + subTextArea = (nbgl_text_area_t *) nbgl_objPoolGet(TEXT_AREA, layoutInt->layer); + subTextArea->textColor = BLACK; + subTextArea->text = PIC(subText); + subTextArea->fontId = SMALL_REGULAR_FONT; + subTextArea->style = NO_STYLE; + subTextArea->wrapping = true; + subTextArea->obj.area.width = container->obj.area.width; + subTextArea->obj.area.height = nbgl_getTextHeightInWidth(subTextArea->fontId, + subTextArea->text, + subTextArea->obj.area.width, + subTextArea->wrapping); + subTextArea->textAlignment = MID_LEFT; + subTextArea->obj.alignment = NO_ALIGNMENT; + if (text != NULL) { + subTextArea->obj.alignmentMarginY = TEXT_SUBTEXT_MARGIN; + fullHeight += POST_SUBTEXT_MARGIN; // under the subText + } + else { +#ifdef TARGET_STAX + subTextArea->obj.alignmentMarginY = BORDER_MARGIN; + fullHeight += BORDER_MARGIN; +#else // TARGET_STAX + subTextArea->obj.alignmentMarginY = 26; + fullHeight += 26; // under the subText +#endif // TARGET_STAX + } + container->children[container->nbChildren] = (nbgl_obj_t *) subTextArea; + container->nbChildren++; + fullHeight += subTextArea->obj.area.height + subTextArea->obj.alignmentMarginY; + } + else { + fullHeight += PRE_TEXT_MARGIN; + } + container->obj.area.height = fullHeight; + container->layout = VERTICAL; + container->obj.alignmentMarginX = BORDER_MARGIN; + container->obj.alignment = NO_ALIGNMENT; + // set this new obj as child of main container + layoutAddObject(layoutInt, (nbgl_obj_t *) container); + + return container->obj.area.height; +} + /********************** * GLOBAL FUNCTIONS **********************/ @@ -1187,7 +1290,7 @@ int nbgl_layoutAddSwitch(nbgl_layout_t *layout, const nbgl_layoutSwitch_t *switc } /** - * @brief Creates an area with given text and sub text (in gray) + * @brief Creates an area with given text (in bold) and sub text (in regular) * * @param layout the current layout * @param text main text (in small bold font), optional @@ -1196,82 +1299,29 @@ int nbgl_layoutAddSwitch(nbgl_layout_t *layout, const nbgl_layoutSwitch_t *switc */ int nbgl_layoutAddText(nbgl_layout_t *layout, const char *text, const char *subText) { - nbgl_layoutInternal_t *layoutInt = (nbgl_layoutInternal_t *) layout; - nbgl_container_t *container; - nbgl_text_area_t *textArea; - nbgl_text_area_t *subTextArea; - uint16_t fullHeight = 0; - LOG_DEBUG(LAYOUT_LOGGER, "nbgl_layoutAddText():\n"); - if (layout == NULL) { - return -1; - } - container = (nbgl_container_t *) nbgl_objPoolGet(CONTAINER, layoutInt->layer); - - // get container children - container->children = nbgl_containerPoolGet(2, layoutInt->layer); - container->obj.area.width = AVAILABLE_WIDTH; - - if (text != NULL) { - textArea = (nbgl_text_area_t *) nbgl_objPoolGet(TEXT_AREA, layoutInt->layer); - - textArea->textColor = BLACK; - textArea->text = PIC(text); - textArea->textAlignment = MID_LEFT; - textArea->fontId = SMALL_BOLD_FONT; - textArea->style = NO_STYLE; - textArea->wrapping = true; - textArea->obj.alignment = NO_ALIGNMENT; - textArea->obj.alignmentMarginY = PRE_TEXT_MARGIN; - textArea->obj.area.width = container->obj.area.width; - textArea->obj.area.height = nbgl_getTextHeightInWidth( - textArea->fontId, textArea->text, textArea->obj.area.width, textArea->wrapping); - fullHeight += textArea->obj.area.height + textArea->obj.alignmentMarginY; - container->children[container->nbChildren] = (nbgl_obj_t *) textArea; - container->nbChildren++; - } - if (subText != NULL) { - subTextArea = (nbgl_text_area_t *) nbgl_objPoolGet(TEXT_AREA, layoutInt->layer); - subTextArea->textColor = BLACK; - subTextArea->text = PIC(subText); - subTextArea->fontId = SMALL_REGULAR_FONT; - subTextArea->style = NO_STYLE; - subTextArea->wrapping = true; - subTextArea->obj.area.width = container->obj.area.width; - subTextArea->obj.area.height = nbgl_getTextHeightInWidth(subTextArea->fontId, - subTextArea->text, - subTextArea->obj.area.width, - subTextArea->wrapping); - subTextArea->textAlignment = MID_LEFT; - subTextArea->obj.alignment = NO_ALIGNMENT; - if (text != NULL) { - subTextArea->obj.alignmentMarginY = TEXT_SUBTEXT_MARGIN; - fullHeight += POST_SUBTEXT_MARGIN; // under the subText - } - else { -#ifdef TARGET_STAX - subTextArea->obj.alignmentMarginY = BORDER_MARGIN; - fullHeight += BORDER_MARGIN; -#else // TARGET_STAX - subTextArea->obj.alignmentMarginY = 26; - fullHeight += 26; // under the subText -#endif // TARGET_STAX - } - container->children[container->nbChildren] = (nbgl_obj_t *) subTextArea; - container->nbChildren++; - fullHeight += subTextArea->obj.area.height + subTextArea->obj.alignmentMarginY; - } - else { - fullHeight += PRE_TEXT_MARGIN; - } - container->obj.area.height = fullHeight; - container->layout = VERTICAL; - container->obj.alignmentMarginX = BORDER_MARGIN; - container->obj.alignment = NO_ALIGNMENT; - // set this new obj as child of main container - layoutAddObject(layoutInt, (nbgl_obj_t *) container); + return addText(layout, text, subText, 0, 0, false); +} - return container->obj.area.height; +/** + * @brief Creates an area with given text (in bold) and sub text (in regular), with a + * > icon on right of text to activate an action when touched, with the given token + * + * @param layout the current layout + * @param text main text (in small bold font), optional + * @param subText description under main text (in small regular font), optional + * @param token token to use in callback when > icon is touched + * @param index index to use in callback when > icon is touched + * @return height of the control if OK + */ +int nbgl_layoutAddTextWithAlias(nbgl_layout_t *layout, + const char *text, + const char *subText, + uint8_t token, + uint8_t index) +{ + LOG_DEBUG(LAYOUT_LOGGER, "nbgl_layoutAddTextWithAlias():\n"); + return addText(layout, text, subText, token, index, true); } /** diff --git a/lib_nbgl/src/nbgl_page.c b/lib_nbgl/src/nbgl_page.c index 25f0a2a05..f0e037f8b 100644 --- a/lib_nbgl/src/nbgl_page.c +++ b/lib_nbgl/src/nbgl_page.c @@ -199,8 +199,22 @@ static void addContent(nbgl_pageContent_t *content, case INFOS_LIST: { uint8_t i; for (i = 0; i < content->infosList.nbInfos; i++) { - availableHeight -= nbgl_layoutAddText( - layout, content->infosList.infoTypes[i], content->infosList.infoContents[i]); + // if the extension is valid for this index, use a Text with Alias + if ((content->infosList.withExtensions == true) + && (content->infosList.infoExtensions != NULL) + && (content->infosList.infoExtensions[i].fullValue != NULL)) { + availableHeight + -= nbgl_layoutAddTextWithAlias(layout, + content->infosList.infoTypes[i], + content->infosList.infoContents[i], + content->infosList.token, + i); + } + else { + availableHeight -= nbgl_layoutAddText(layout, + content->infosList.infoTypes[i], + content->infosList.infoContents[i]); + } // do not draw a separation line if too low in the container if (availableHeight > 10) { nbgl_layoutAddSeparationLine(layout); diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index dada714fa..f3ef77fd5 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -68,6 +68,7 @@ enum { CONFIRM_TOKEN, REJECT_TOKEN, VALUE_ALIAS_TOKEN, + INFO_ALIAS_TOKEN, BLIND_WARNING_TOKEN, TIP_BOX_TOKEN }; @@ -251,7 +252,9 @@ static char reducedAddress[QRCODE_REDUCED_ADDR_LEN]; **********************/ static void displayReviewPage(uint8_t page, bool forceFullRefresh); static void displayDetailsPage(uint8_t page, bool forceFullRefresh); -static void displayFullValuePage(const nbgl_contentTagValue_t *pair); +static void displayFullValuePage(const char *backText, + const char *aliasText, + const nbgl_contentValueExt_t *extension); static void displayBlindWarning(void); static void displayTipBoxModal(void); static void displaySettingsPage(uint8_t page, bool forceFullRefresh); @@ -444,6 +447,14 @@ static const char *getRejectReviewText(nbgl_operationType_t operationType) static void pageModalCallback(int token, uint8_t index) { LOG_DEBUG(USE_CASE_LOGGER, "pageModalCallback, token = %d, index = %d\n", token, index); + + if (token == INFO_ALIAS_TOKEN) { + // the icon next to info type alias has been touched + displayFullValuePage(tipBoxInfoList.infoTypes[index], + tipBoxInfoList.infoContents[index], + &tipBoxInfoList.infoExtensions[index]); + return; + } nbgl_pageRelease(modalPageContext); modalPageContext = NULL; if (token == NAV_TOKEN) { @@ -580,7 +591,7 @@ static void pageCallback(int token, uint8_t index) else { pair = genericContext.currentCallback(genericContext.currentElementIdx + index); } - displayFullValuePage(pair); + displayFullValuePage(pair->item, pair->value, pair->extension); } else if (token == BLIND_WARNING_TOKEN) { displayBlindWarning(); @@ -1135,7 +1146,9 @@ static void displayDetailsPage(uint8_t detailsPage, bool forceFullRefresh) } // function used to display the content of a full value, when touching an alias of a tag/value pair -static void displayFullValuePage(const nbgl_contentTagValue_t *pair) +static void displayFullValuePage(const char *backText, + const char *aliasText, + const nbgl_contentValueExt_t *extension) { nbgl_layoutDescription_t layoutDescription = {.modal = true, .withLeftBorder = true, @@ -1145,16 +1158,16 @@ static void displayFullValuePage(const nbgl_contentTagValue_t *pair) .separationLine = false, .backAndText.token = 0, .backAndText.tuneId = TUNE_TAP_CASUAL, - .backAndText.text = PIC(pair->item)}; + .backAndText.text = PIC(backText)}; genericContext.modalLayout = nbgl_layoutGet(&layoutDescription); // add header with the tag part of the pair, to go back nbgl_layoutAddHeader(genericContext.modalLayout, &headerDesc); // add either QR Code or full value text - if (pair->extension->aliasType == QR_CODE_ALIAS) { + if (extension->aliasType == QR_CODE_ALIAS) { #ifdef NBGL_QRCODE - nbgl_layoutQRCode_t qrCode = {.url = pair->extension->fullValue, - .text1 = pair->extension->fullValue, - .text2 = pair->extension->explanation, + nbgl_layoutQRCode_t qrCode = {.url = extension->fullValue, + .text1 = extension->fullValue, + .text2 = extension->explanation, .centered = true, .offsetY = 0}; @@ -1164,17 +1177,17 @@ static void displayFullValuePage(const nbgl_contentTagValue_t *pair) else { const char *info; // add full value text - if (pair->extension->aliasType == ENS_ALIAS) { + if (extension->aliasType == ENS_ALIAS) { info = "ENS names are resolved by Ledger backend."; } - else if (pair->extension->aliasType == ADDRESS_BOOK_ALIAS) { + else if (extension->aliasType == ADDRESS_BOOK_ALIAS) { info = "This account label comes from your Address Book in Ledger Live."; } else { - info = pair->extension->explanation; + info = extension->explanation; } nbgl_layoutAddTextContent( - genericContext.modalLayout, pair->value, pair->extension->fullValue, info); + genericContext.modalLayout, aliasText, extension->fullValue, info); } // draw & refresh nbgl_layoutDraw(genericContext.modalLayout); @@ -1225,13 +1238,16 @@ static void displayTipBoxModal(void) .navWithButtons.quitText = NULL, .progressIndicator = false, .tuneId = TUNE_TAP_CASUAL}; - nbgl_pageContent_t content = {.type = INFOS_LIST, - .topRightIcon = NULL, - .infosList.nbInfos = tipBoxInfoList.nbInfos, - .infosList.infoTypes = tipBoxInfoList.infoTypes, - .infosList.infoContents = tipBoxInfoList.infoContents, - .title = tipBoxModalTitle, - .titleToken = QUIT_TOKEN}; + nbgl_pageContent_t content = {.type = INFOS_LIST, + .topRightIcon = NULL, + .infosList.nbInfos = tipBoxInfoList.nbInfos, + .infosList.withExtensions = tipBoxInfoList.withExtensions, + .infosList.infoTypes = tipBoxInfoList.infoTypes, + .infosList.infoContents = tipBoxInfoList.infoContents, + .infosList.infoExtensions = tipBoxInfoList.infoExtensions, + .infosList.token = INFO_ALIAS_TOKEN, + .title = tipBoxModalTitle, + .titleToken = QUIT_TOKEN}; if (modalPageContext != NULL) { nbgl_pageRelease(modalPageContext); @@ -1788,9 +1804,11 @@ static void useCaseReview(nbgl_operationType_t operationType, tipBoxModalTitle = tipBox->modalTitle; // the only supported type yet is @ref INFOS_LIST if (tipBox->type == INFOS_LIST) { - tipBoxInfoList.nbInfos = tipBox->infos.nbInfos; - tipBoxInfoList.infoTypes = PIC(tipBox->infos.infoTypes); - tipBoxInfoList.infoContents = PIC(tipBox->infos.infoContents); + tipBoxInfoList.nbInfos = tipBox->infos.nbInfos; + tipBoxInfoList.withExtensions = tipBox->infos.withExtensions; + tipBoxInfoList.infoTypes = PIC(tipBox->infos.infoTypes); + tipBoxInfoList.infoContents = PIC(tipBox->infos.infoContents); + tipBoxInfoList.infoExtensions = PIC(tipBox->infos.infoExtensions); } } From 305a7084ef06346d878a92f77ffa21c27853a940 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Thu, 17 Oct 2024 09:51:04 +0200 Subject: [PATCH 14/53] Display QR Code title different from URL in alias --- lib_nbgl/include/nbgl_content.h | 2 ++ lib_nbgl/src/nbgl_use_case.c | 11 ++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib_nbgl/include/nbgl_content.h b/lib_nbgl/include/nbgl_content.h index 0c06616ae..47ad63ca9 100644 --- a/lib_nbgl/include/nbgl_content.h +++ b/lib_nbgl/include/nbgl_content.h @@ -137,6 +137,8 @@ typedef struct { const char *fullValue; ///< full string of the value when used as an alias const char *explanation; ///< string displayed in gray, explaing where the alias comes from ///< only used if aliasType is @ref NO_ALIAS_TYPE + const char *title; ///< if not NULL and aliasType is @ref QR_CODE_ALIAS, is used as title of + ///< the QR Code nbgl_contentValueAliasType_t aliasType; ///< type of alias } nbgl_contentValueExt_t; diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index f3ef77fd5..33c20abe1 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -1165,11 +1165,12 @@ static void displayFullValuePage(const char *backText, // add either QR Code or full value text if (extension->aliasType == QR_CODE_ALIAS) { #ifdef NBGL_QRCODE - nbgl_layoutQRCode_t qrCode = {.url = extension->fullValue, - .text1 = extension->fullValue, - .text2 = extension->explanation, - .centered = true, - .offsetY = 0}; + nbgl_layoutQRCode_t qrCode + = {.url = extension->fullValue, + .text1 = (extension->title != NULL) ? extension->title : extension->fullValue, + .text2 = extension->explanation, + .centered = true, + .offsetY = 0}; nbgl_layoutAddQRCode(genericContext.modalLayout, &qrCode); #endif // NBGL_QRCODE From caaf780a32bb1f0eb5031e2c15aebdece12bda9b Mon Sep 17 00:00:00 2001 From: GroM Date: Thu, 17 Oct 2024 10:36:47 +0200 Subject: [PATCH 15/53] Use current PR branch when compiling C SDK --- .github/workflows/build_rust_sdk.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build_rust_sdk.yml b/.github/workflows/build_rust_sdk.yml index 2eb48df3f..54a4ee6dd 100644 --- a/.github/workflows/build_rust_sdk.yml +++ b/.github/workflows/build_rust_sdk.yml @@ -18,7 +18,6 @@ jobs: uses: actions/checkout@v4 with: path: c_sdk - ref: master - name: Clone Rust SDK uses: actions/checkout@v4 with: From 1d9b04b2b512ef78e69784354db499c6a10739aa Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 16 Oct 2024 14:46:44 +0200 Subject: [PATCH 16/53] Cleaned up arguments passed to the assembler Removes need for -Wno-unused-command-line-argument --- Makefile.defines | 6 ++---- Makefile.rules_generic | 14 +++++++------- Makefile.standard_app | 2 +- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Makefile.defines b/Makefile.defines index e86c6703f..b600857b5 100644 --- a/Makefile.defines +++ b/Makefile.defines @@ -79,8 +79,6 @@ CFLAGS += -fropi CFLAGS += -fno-jump-tables # avoid jump tables for switch to avoid problems with invalid PIC access CFLAGS += -nostdlib -nodefaultlibs -AFLAGS += -fno-common - LDFLAGS += -fomit-frame-pointer LDFLAGS += -Wall LDFLAGS += -fno-common -ffunction-sections -fdata-sections -fwhole-program @@ -90,7 +88,7 @@ LDFLAGS += -Wl,--gc-sections -Wl,-Map,$(DBG_DIR)/app.map ifeq ($(TARGET_NAME),$(filter $(TARGET_NAME),TARGET_NANOS)) CFLAGS += --target=armv6m-none-eabi -mthumb CFLAGS += -mcpu=cortex-m0plus -mthumb -mtune=cortex-m0plus -AFLAGS += -mcpu=cortex-m0plus -mtune=cortex-m0plus -mthumb +AFLAGS += -mcpu=cortex-m0plus -mthumb LDFLAGS += -mcpu=cortex-m0plus -mthumb LDFLAGS += -nostartfiles --specs=nano.specs endif @@ -104,7 +102,7 @@ LDFLAGS += -mtune=cortex-m0plus -mlittle-endian -mcpu=cortex-m0plus LDFLAGS += -nostdlib -nodefaultlibs #-nostartfiles LDFLAGS += -mno-movt LDFLAGS += -L$(BOLOS_SDK)/arch/st33/lib/ -AFLAGS += -mcpu=cortex-m0plus -mtune=cortex-m0plus -mthumb +AFLAGS += -mcpu=cortex-m0plus -mthumb endif ifeq ($(TARGET_NAME),$(filter $(TARGET_NAME),TARGET_STAX TARGET_FLEX TARGET_NANOS2)) diff --git a/Makefile.rules_generic b/Makefile.rules_generic index a3170dccd..bf4fded01 100644 --- a/Makefile.rules_generic +++ b/Makefile.rules_generic @@ -92,11 +92,11 @@ $(OBJ_DIR)/app/%.o: $(APP_DIR)/%.c $(BUILD_DEPENDENCIES) prepare $(OBJ_DIR)/app/%.o: $(APP_DIR)/%.s $(BUILD_DEPENDENCIES) prepare @echo "[AS] $@" - $(L)$(call as_cmdline,$(INCLUDES_PATH), $(DEFINES),$<,$@) + $(L)$(call as_cmdline,$(INCLUDES_PATH),$<,$@) $(OBJ_DIR)/app/%.o: $(APP_DIR)/%.S $(BUILD_DEPENDENCIES) prepare @echo "[AS] $@" - $(L)$(call as_cmdline,$(INCLUDES_PATH), $(DEFINES),$<,$@) + $(L)$(call as_cmdline,$(INCLUDES_PATH),$<,$@) # SDK files targets $(OBJ_DIR)/sdk/%.o: $(BOLOS_SDK)/%.c $(BUILD_DEPENDENCIES) prepare @@ -105,11 +105,11 @@ $(OBJ_DIR)/sdk/%.o: $(BOLOS_SDK)/%.c $(BUILD_DEPENDENCIES) prepare $(OBJ_DIR)/sdk/%.o: $(BOLOS_SDK)/%.s $(BUILD_DEPENDENCIES) prepare @echo "[AS] $@" - $(L)$(call as_cmdline,$(INCLUDES_PATH), $(DEFINES),$<,$@) + $(L)$(call as_cmdline,$(INCLUDES_PATH),$<,$@) $(OBJ_DIR)/sdk/%.o: $(BOLOS_SDK)/%.S $(BUILD_DEPENDENCIES) prepare @echo "[AS] $@" - $(L)$(call as_cmdline,$(INCLUDES_PATH), $(DEFINES),$<,$@) + $(L)$(call as_cmdline,$(INCLUDES_PATH),$<,$@) # Generic targets $(OBJ_DIR)/%.o: %.c $(BUILD_DEPENDENCIES) prepare @@ -118,11 +118,11 @@ $(OBJ_DIR)/%.o: %.c $(BUILD_DEPENDENCIES) prepare $(OBJ_DIR)/%.o: %.s $(BUILD_DEPENDENCIES) prepare @echo "[AS] $@" - $(L)$(call as_cmdline,$(INCLUDES_PATH), $(DEFINES),$<,$@) + $(L)$(call as_cmdline,$(INCLUDES_PATH),$<,$@) $(OBJ_DIR)/%.o: %.S $(BUILD_DEPENDENCIES) prepare @echo "[AS] $@" - $(L)$(call as_cmdline,$(INCLUDES_PATH), $(DEFINES),$<,$@) + $(L)$(call as_cmdline,$(INCLUDES_PATH),$<,$@) ifeq (,$(filter $(DEFINES),BOLOS_OS_UPGRADER_APP)) ifneq ($(SCRIPT_LD),) @@ -197,7 +197,7 @@ endif # dependency files are generated along the object file cc_cmdline = $(CC) -c $(CFLAGS) -MMD -MT $(4) -MF $(subst $(OBJ_DIR), $(DEP_DIR), $(addsuffix .d, $(basename $(4)))) $(addprefix -D,$(2)) $(addprefix -I,$(1)) -o $(4) $(3) -as_cmdline = $(AS) -c $(AFLAGS) $(addprefix -D,$(2)) $(addprefix -I,$(1)) -o $(4) $(3) +as_cmdline = $(AS) -c $(AFLAGS) $(addprefix -I,$(1)) -o $(3) $(2) ### END GCC COMPILER RULES diff --git a/Makefile.standard_app b/Makefile.standard_app index e2870cea6..95c02823a 100644 --- a/Makefile.standard_app +++ b/Makefile.standard_app @@ -221,7 +221,7 @@ CC := $(CLANGPATH)clang AS := $(CLANGPATH)clang LD := $(CLANGPATH)clang ifeq ($(AS),$(CLANGPATH)clang) - AFLAGS += --target=arm-arm-none-eabi -Wno-unused-command-line-argument + AFLAGS += --target=arm-arm-none-eabi endif LDLIBS += -lm -lgcc -lc From 7c137499b036fac92f8ba4f2a07b61141f698d42 Mon Sep 17 00:00:00 2001 From: Aido Date: Fri, 18 Oct 2024 22:47:48 +0100 Subject: [PATCH 17/53] Fix error when setting `DISABLE_STANDARD_USB = 1` in standard app Makefile Fixes #786 --- lib_standard_app/main.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib_standard_app/main.c b/lib_standard_app/main.c index a04b360e2..fc0b0fbb5 100644 --- a/lib_standard_app/main.c +++ b/lib_standard_app/main.c @@ -46,8 +46,10 @@ WEAK void common_app_init(void) io_seproxyhal_init(); +#ifdef HAVE_IO_USB USB_power(0); USB_power(1); +#endif #ifdef HAVE_BLE BLE_power(0, NULL); @@ -83,7 +85,9 @@ WEAK void standalone_app_main(void) // - the NanoX goes on battery power and display the lock screen // - the user plug the NanoX instead of entering its pin // - the device is frozen, battery should be removed +#ifdef HAVE_IO_USB USB_power(0); +#endif #ifdef HAVE_BLE BLE_power(0, NULL); #endif From 8f2486f173585aec93e4607e6df87e5f4189bdb9 Mon Sep 17 00:00:00 2001 From: Arthur Bonnaudet Date: Mon, 21 Oct 2024 14:06:10 +0200 Subject: [PATCH 18/53] Set API_LEVEL to 22 --- Makefile.defines | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.defines b/Makefile.defines index b600857b5..c68a20a73 100644 --- a/Makefile.defines +++ b/Makefile.defines @@ -20,7 +20,7 @@ __MAKEFILE_DEFINES__ := 1 include $(BOLOS_SDK)/Makefile.target -API_LEVEL := 0 +API_LEVEL := 22 # APPNAME exposed to the app as a CFLAG because it might contain spaces CFLAGS += -DAPPNAME=\"$(APPNAME)\" From b52fd97b8c127840c8f53b58c19b6d1d64e7fda8 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Tue, 22 Oct 2024 14:08:22 +0200 Subject: [PATCH 19/53] Minor fixes in infos-list with alias display (touchable area, icon, tune) --- lib_nbgl/src/nbgl_layout.c | 11 ++++++----- lib_nbgl/src/nbgl_use_case.c | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib_nbgl/src/nbgl_layout.c b/lib_nbgl/src/nbgl_layout.c index fdfd8914a..6d0907d0d 100644 --- a/lib_nbgl/src/nbgl_layout.c +++ b/lib_nbgl/src/nbgl_layout.c @@ -922,16 +922,17 @@ static int addText(nbgl_layout_t *layout, container->nbChildren++; if (withAlias == true) { nbgl_image_t *image = (nbgl_image_t *) nbgl_objPoolGet(IMAGE, layoutInt->layer); - layoutObj_t *obj - = layoutAddCallbackObj(layoutInt, (nbgl_obj_t *) image, token, TUNE_TAP_CASUAL); + // the whole container is touchable + layoutObj_t *obj + = layoutAddCallbackObj(layoutInt, (nbgl_obj_t *) container, token, TUNE_TAP_CASUAL); obj->index = index; image->foregroundColor = BLACK; - image->buffer = &MINI_PUSH_ICON; + image->buffer = &PUSH_ICON; image->obj.alignment = RIGHT_TOP; image->obj.alignmentMarginX = 12; image->obj.alignTo = (nbgl_obj_t *) textArea; - image->obj.touchMask = (1 << TOUCHED); - image->obj.touchId = VALUE_BUTTON_1_ID + index; + container->obj.touchMask = (1 << TOUCHED); + container->obj.touchId = VALUE_BUTTON_1_ID + index; container->children[container->nbChildren] = (nbgl_obj_t *) image; container->nbChildren++; diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index 33c20abe1..e241fb015 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -1248,7 +1248,8 @@ static void displayTipBoxModal(void) .infosList.infoExtensions = tipBoxInfoList.infoExtensions, .infosList.token = INFO_ALIAS_TOKEN, .title = tipBoxModalTitle, - .titleToken = QUIT_TOKEN}; + .titleToken = QUIT_TOKEN, + .tuneId = TUNE_TAP_CASUAL}; if (modalPageContext != NULL) { nbgl_pageRelease(modalPageContext); From ec96367d980a7f856cce68ba53c604b065063f94 Mon Sep 17 00:00:00 2001 From: Stephane Portron Date: Thu, 7 Nov 2024 17:54:45 +0100 Subject: [PATCH 20/53] nanox: fix inactivity shutdown issue. (cherry picked from commit 1f6bc24686512ae194dfbaa04214ba3a07e67673) --- lib_nbgl/src/nbgl_step.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib_nbgl/src/nbgl_step.c b/lib_nbgl/src/nbgl_step.c index 774fb0a6a..e5a9d6f64 100644 --- a/lib_nbgl/src/nbgl_step.c +++ b/lib_nbgl/src/nbgl_step.c @@ -526,9 +526,12 @@ nbgl_step_t nbgl_stepDrawCenteredInfo(nbgl_stepPosition_t pos, // initialize context (already set to 0 by getFreeContext()) ctx->textContext.onActionCallback = onActionCallback; if (ticker) { - ctx->ticker.tickerCallback = ticker->tickerCallback; - ctx->ticker.tickerIntervale = ticker->tickerIntervale; - ctx->ticker.tickerValue = ticker->tickerValue; + ctx->ticker.tickerCallback = ticker->tickerCallback; + ctx->ticker.tickerIntervale = ticker->tickerIntervale; + ctx->ticker.tickerValue = ticker->tickerValue; + layoutDescription.ticker.tickerCallback = ticker->tickerCallback; + layoutDescription.ticker.tickerIntervale = ticker->tickerIntervale; + layoutDescription.ticker.tickerValue = ticker->tickerValue; } ctx->textContext.nbPages = 1; From 3355db03f624b73eb763b468526d433cad22876d Mon Sep 17 00:00:00 2001 From: Arthur Bonnaudet Date: Fri, 15 Nov 2024 11:33:58 +0100 Subject: [PATCH 21/53] NBGL Nano: Check onActionCallback validity In nbgl_step actionCallback, `onActionCallback` was called without being checked, leading to crash if the callback is NULL. This commit adds the relevant checks. (cherry picked from commit 263df08179b45216c63808e3653e50abd49bbc09) --- lib_nbgl/src/nbgl_step.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib_nbgl/src/nbgl_step.c b/lib_nbgl/src/nbgl_step.c index e5a9d6f64..69bb1328f 100644 --- a/lib_nbgl/src/nbgl_step.c +++ b/lib_nbgl/src/nbgl_step.c @@ -309,7 +309,9 @@ static void actionCallback(nbgl_layout_t *layout, nbgl_buttonEvent_t event) } else if ((ctx->textContext.pos == LAST_STEP) || (ctx->textContext.pos == NEITHER_FIRST_NOR_LAST_STEP)) { - ctx->textContext.onActionCallback((nbgl_step_t) ctx, event); + if (ctx->textContext.onActionCallback != NULL) { + ctx->textContext.onActionCallback((nbgl_step_t) ctx, event); + } } } else if (event == BUTTON_RIGHT_PRESSED) { @@ -319,11 +321,15 @@ static void actionCallback(nbgl_layout_t *layout, nbgl_buttonEvent_t event) } else if ((ctx->textContext.pos == FIRST_STEP) || (ctx->textContext.pos == NEITHER_FIRST_NOR_LAST_STEP)) { - ctx->textContext.onActionCallback((nbgl_step_t) ctx, event); + if (ctx->textContext.onActionCallback != NULL) { + ctx->textContext.onActionCallback((nbgl_step_t) ctx, event); + } } } else if (event == BUTTON_BOTH_PRESSED) { - ctx->textContext.onActionCallback((nbgl_step_t) ctx, event); + if (ctx->textContext.onActionCallback != NULL) { + ctx->textContext.onActionCallback((nbgl_step_t) ctx, event); + } } } From 5fcfe7f330981255f1e37fd3917d149be4218389 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Tue, 26 Nov 2024 10:18:55 +0100 Subject: [PATCH 22/53] Make the info list property in nbgl_tipBox_t non-const (cherry picked from commit 5a77ca7bd804b7e10177ee61d45102f420882cd7) --- lib_nbgl/include/nbgl_use_case.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_nbgl/include/nbgl_use_case.h b/lib_nbgl/include/nbgl_use_case.h index e36079cae..5d9f8dd24 100644 --- a/lib_nbgl/include/nbgl_use_case.h +++ b/lib_nbgl/include/nbgl_use_case.h @@ -184,7 +184,7 @@ typedef struct { const char *modalTitle; ///< title given to modal window displayed when tip-box is touched nbgl_contentType_t type; ///< type of page content in the following union union { - const nbgl_contentInfoList_t infos; ///< infos pairs displayed in modal. + nbgl_contentInfoList_t infos; ///< infos pairs displayed in modal. }; } nbgl_tipBox_t; From b0725a8e918d971711e7051f1190c1f155de83f1 Mon Sep 17 00:00:00 2001 From: Julian Arevalo Date: Mon, 9 Dec 2024 13:19:39 +0100 Subject: [PATCH 23/53] Fix nano backspace key behavior Stay on backspace key until there is a PIN entry to delete (cherry picked from commit 3ddcf740c692e91ede4f89ba18a3b6e8a43219c4) --- lib_nbgl/src/nbgl_layout_keypad_nanos.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_nbgl/src/nbgl_layout_keypad_nanos.c b/lib_nbgl/src/nbgl_layout_keypad_nanos.c index 877a00b3f..ecc680b88 100644 --- a/lib_nbgl/src/nbgl_layout_keypad_nanos.c +++ b/lib_nbgl/src/nbgl_layout_keypad_nanos.c @@ -136,8 +136,8 @@ int nbgl_layoutUpdateKeypad(nbgl_layout_t *layout, // if validate key is enabled and was not, select it directly keypad->selectedKey = 11; } - else { - // otherwise let the draw function pick a new selected + // Shuffle if selected key was not backspace or if the last pin entry has been deleted + else if ((keypad->selectedKey != 0) || (keypad->enableBackspace && !enableBackspace)) { keypad->selectedKey = 0xFF; } keypad->enableValidate = enableValidate; From b3b059ddc9cf6ad25cef4164b650d2f9cf7b48bb Mon Sep 17 00:00:00 2001 From: Julian Arevalo Date: Mon, 9 Dec 2024 13:22:26 +0100 Subject: [PATCH 24/53] Fix nano keypad shuffling Only shuffle digits, backspace and validate keys must not be selected (cherry picked from commit 823c5ca75aeb06209886392b9b6562d788d46c42) --- lib_nbgl/src/nbgl_obj_keypad_nanos.c | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/lib_nbgl/src/nbgl_obj_keypad_nanos.c b/lib_nbgl/src/nbgl_obj_keypad_nanos.c index 75dd229d8..20f98414e 100644 --- a/lib_nbgl/src/nbgl_obj_keypad_nanos.c +++ b/lib_nbgl/src/nbgl_obj_keypad_nanos.c @@ -165,24 +165,8 @@ static void keypadInitSelected(nbgl_keypad_t *keypad) keypad->selectedKey = 1 + INIT_DIGIT_VALUE; } else { - uint8_t nbChoices = 10; - uint8_t random; - if (keypad->enableBackspace) { - nbChoices++; - } - if (keypad->enableValidate) { - nbChoices++; - } - random = cx_rng_u32_range(0, nbChoices); - if (random < 10) { - keypad->selectedKey = 1 + random; - } - else if (random == 10) { - keypad->selectedKey = 0; - } - else if (random == 11) { - keypad->selectedKey = 11; - } + // Exclude backspace and validate keys ([0,11]), shuffle only digits + keypad->selectedKey = cx_rng_u32_range(1, 11); } } From c25416985e01b62d527251ee5e0428003115f02e Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 13 Jan 2025 14:28:13 +0100 Subject: [PATCH 25/53] New hardcoded sysroot fallback in case GCC wasn't compiled with one (cherry picked from commit fdf40debd800d028eabdb0c3ef582a6ce95a3449) --- Makefile.defines | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.defines b/Makefile.defines index c68a20a73..e44351ec6 100644 --- a/Makefile.defines +++ b/Makefile.defines @@ -50,10 +50,10 @@ endif SYSROOT = $(shell $(GCCPATH)arm-none-eabi-gcc -print-sysroot) ifeq ($(SYSROOT),) -CFLAGS += -I/usr/include -else -CFLAGS += --sysroot="$(SYSROOT)" + # path for Debian-based systems + SYSROOT = /usr/lib/arm-none-eabi endif +CFLAGS += --sysroot="$(SYSROOT)" CFLAGS += -fomit-frame-pointer -momit-leaf-frame-pointer From 0d6a579e0f3fcdaa30cf7cb6124e0aa7aac7638b Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 13 Jan 2025 17:43:06 +0100 Subject: [PATCH 26/53] Simplifies optimization / debugging levels Now only use them for compilation since they don't do anything on other steps of the build. (cherry picked from commit 903fb656493be21da0794a0f733df999666e90b8) --- Makefile.defines | 10 ++++++++++ Makefile.rules | 21 --------------------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/Makefile.defines b/Makefile.defines index e44351ec6..81ff7be69 100644 --- a/Makefile.defines +++ b/Makefile.defines @@ -55,6 +55,16 @@ ifeq ($(SYSROOT),) endif CFLAGS += --sysroot="$(SYSROOT)" +# optimization and debugging levels +ifneq ($(DEBUG),0) + OPTI_LVL = g + DBG_LVL = 3 +else + OPTI_LVL = z + DBG_LVL = 0 +endif +CFLAGS += -O$(OPTI_LVL) -g$(DBG_LVL) + CFLAGS += -fomit-frame-pointer -momit-leaf-frame-pointer CFLAGS += -fno-common -mlittle-endian diff --git a/Makefile.rules b/Makefile.rules index af19b53ba..b45f41c5a 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -89,25 +89,4 @@ OBJECTS_DIR += $(sort $(dir $(OBJECT_FILES))) DEPEND_FILES = $(subst $(OBJ_DIR), $(DEP_DIR), $(addsuffix .d, $(basename $(OBJECT_FILES)))) DEPEND_DIR += $(sort $(dir $(DEPEND_FILES))) -# optimization and debug levels -# this should be in Makefile.defines, but $(AS) is not yet defined at that point -ifneq ($(DEBUG),0) - OPTI_LVL = -Og - OPTI_ALVL = $(OPTI_LVL) - DBG_LVL = -g3 -else - OPTI_LVL = -Oz - ifeq ($(AS),$(CLANGPATH)clang) - OPTI_ALVL = $(OPTI_LVL) - else - # GCC assembler does not handle -Oz - OPTI_ALVL = -Os - endif - DBG_LVL = -g0 -endif -# at the beginning so they can be overridden by apps -CFLAGS := $(OPTI_LVL) $(DBG_LVL) $(CFLAGS) -AFLAGS := $(OPTI_ALVL) $(DBG_LVL) $(AFLAGS) -LDFLAGS := $(OPTI_LVL) $(DBG_LVL) $(LDFLAGS) - include $(BOLOS_SDK)/Makefile.rules_generic From 67b630e7f40a5d557b8406e0e76569fd476a150f Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Wed, 22 Jan 2025 15:16:13 +0100 Subject: [PATCH 27/53] Lowers the debugging level for compatibility with newer versions of LLVM (cherry picked from commit 808df4e35f7465297f91167032ed012e87315bba) --- Makefile.defines | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile.defines b/Makefile.defines index 81ff7be69..b66338d2a 100644 --- a/Makefile.defines +++ b/Makefile.defines @@ -58,7 +58,9 @@ CFLAGS += --sysroot="$(SYSROOT)" # optimization and debugging levels ifneq ($(DEBUG),0) OPTI_LVL = g - DBG_LVL = 3 + # any higher won't work with LLVM >= 14 + # will be fixed in LLVM 20 : https://github.com/llvm/llvm-project/pull/116956 + DBG_LVL = 1 else OPTI_LVL = z DBG_LVL = 0 From dff9c21ec0088ccc4fa17006e9756d4958a5bbf4 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Thu, 9 Jan 2025 11:00:23 +0100 Subject: [PATCH 28/53] Add privacy report warning in NBGL Use Case --- lib_nbgl/glyphs/32px/Privacy_32px.png | Bin 0 -> 663 bytes .../glyphs/40px/Important_Circle_40px.png | Bin 0 -> 652 bytes lib_nbgl/glyphs/40px/Privacy_40px.png | Bin 0 -> 833 bytes lib_nbgl/include/nbgl_obj.h | 4 + lib_nbgl/include/nbgl_use_case.h | 90 ++- lib_nbgl/src/nbgl_use_case.c | 622 ++++++++++++++---- unit-tests/lib_nbgl/CMakeLists.txt | 2 +- unit-tests/lib_nbgl/nbgl_stubs.c | 2 + unit-tests/lib_nbgl/test_nbgl_screen.c | 10 + 9 files changed, 609 insertions(+), 121 deletions(-) create mode 100755 lib_nbgl/glyphs/32px/Privacy_32px.png create mode 100755 lib_nbgl/glyphs/40px/Important_Circle_40px.png create mode 100755 lib_nbgl/glyphs/40px/Privacy_40px.png diff --git a/lib_nbgl/glyphs/32px/Privacy_32px.png b/lib_nbgl/glyphs/32px/Privacy_32px.png new file mode 100755 index 0000000000000000000000000000000000000000..700f60a21d4ff9c57d055c639e8fe636e6c90696 GIT binary patch literal 663 zcmV;I0%-k-P)PAx$FbmV=!OAJ`{^G|@pO?vP*Q zQaFw+tFpSnd~^I}rxHlunu8J!%qcTx;@C9jCqH`@;FMD-F`bS!VebQf72?QV;Vv;R zcdn5*WOgxwYy;+t$_c;~>fnsPW8fnPyus^+jlSPe(HUz6+>7KC^al%&pglpywP9cS zt8P)iCCYG^m;KgAPWa2hB3js|snG%^@!M*b^4Z9VQW!B8w>EsfiSa=TxJF*U1Il<5 zV^@ebk$^E_v{2KaN+-z)zn2P3B7s+vCNZ`uq;Vt0`c>>xHtPGaJ#N(`{jTsxW37Ch zvJb-6YGv|$piA8=yS2GI=6!x=*mL4$>N;g3K}Qu}V80FQJH$rCXfxuf6gt#jJRF_riz91L}^T)n|%mVfO%fwog3wMw|`{l1Dh?dq8Z{ x9X{t;|3=8^BNEqq9j6e#4G45gDqcV>JOT9DE47hM$XEaX002ovPDHLkV1j9f9IOBU literal 0 HcmV?d00001 diff --git a/lib_nbgl/glyphs/40px/Important_Circle_40px.png b/lib_nbgl/glyphs/40px/Important_Circle_40px.png new file mode 100755 index 0000000000000000000000000000000000000000..5037b98d5e44f1e99efb87e3cf6bd4645ec90e76 GIT binary patch literal 652 zcmV;70(1R|P)w$f!vcpWx*|J928>}xPyH?t9ti=r*clS=;t*IOeVPPpu~9MQ*`edxx0 zU`g!47)B%~H`nM7ROG}MM&yXx+@L?uzL_zMNV-UC^oO0M!ZC?9BA;6g`@}b~8zOHS zwTK zTmWbmR=66ZCKyxgXBawAj%F6-1kLH3S;z&{$d{_Uooh(LeKA8uK9M5Cx1Aw#_#<|@ z8JfX)^>LzMkIB$O;5vvgA4i5eIMOP(iUT<}c?Mfxi3kYTWtJJz;i}G+NPvo71-lw1 z5VsGmU>B@{$}6Y9aJp#vt~=qdOMl8w;PAG(>Y5cgC_V_dOLw7+Egc4n-QbGiauoKt mwufjI_SG>!4Q5TQ{};cGK{!VNt?}&u000059vpaYT$AQjlIfJ+6YgXHAX4J+NQKHwPt@tfJ< z?zCDxX+ItY5W)>?h?eFJh_yC2HmPS_x+999&mR5EMw!)%1;!msx!7~4RecPY|M@-}PaEbTAj6aE$=nORKpwP|QdU5t< zl{O4Q4{F+INy8fDFi6J~>#hX0q_1%w?tOzIN)7T*o|p@2ozdHPU4=Xv^8Dd}Z~oWk4P^7ZTn6esGBs>h+Vn{pWzB&==6z~f!xw7js*b!{U6J(FkKciJlZk)**2VlMt+41 zLN_ds#{&66ts)&I8KZ7k3Oeytw-OAx2|iXj42FH!fs+aoX>+h$bTDF zj7{+z7-JGCTgW8$kk5g!yktnu{J7Gh1h5EKMkRC&`2Q8uU52qMk<=)}5rr{9jL&g) zu>n6Z8o(T1ex*B{jUnXo@i~s|^IQKitem, pair->value, pair->extension); } - else if (token == BLIND_WARNING_TOKEN) { - displayBlindWarning(); + else if (token == WARNING_BUTTON_TOKEN) { + // top-right button, display the security modal + reviewWithWarnCtx.securityReportLevel = 1; + // if preset is used + if (reviewWithWarnCtx.warning->predefinedSet) { + displaySecurityReport(reviewWithWarnCtx.warning->predefinedSet); + } + else { + // use customized warning + if (reviewWithWarnCtx.isIntro) { + displayCustomizedSecurityReport(reviewWithWarnCtx.warning->introDetails); + } + else { + displayCustomizedSecurityReport(reviewWithWarnCtx.warning->reviewDetails); + } + } } else if (token == TIP_BOX_TOKEN) { displayTipBoxModal(); @@ -974,13 +1022,13 @@ static bool genericContextPreparePageContent(const nbgl_content_t *p_content, bool isStreamingNavAndBlindOperation = (navType == STREAMING_NAV) && (bundleNavContext.reviewStreaming.operationType & BLIND_OPERATION); - bool isGenericNavAndBlindOperation + bool isGenericNavAndRiskyOperation = (navType == GENERIC_NAV) && (bundleNavContext.review.operationType & BLIND_OPERATION); // if first or last page of review and blind operation, add the warning top-right button - if (isFirstOrLastPage && (isStreamingNavAndBlindOperation || isGenericNavAndBlindOperation)) { + if (isFirstOrLastPage && (isStreamingNavAndBlindOperation || isGenericNavAndRiskyOperation)) { pageContent->topRightIcon = &WARNING_ICON; - pageContent->topRightToken = BLIND_WARNING_TOKEN; + pageContent->topRightToken = WARNING_BUTTON_TOKEN; } return true; @@ -1195,37 +1243,6 @@ static void displayFullValuePage(const char *backText, nbgl_refresh(); } -// function used to display the modal warning when touching the alert symbol of a blind review -static void displayBlindWarning(void) -{ - nbgl_layoutDescription_t layoutDescription = {.modal = true, - .withLeftBorder = true, - .onActionCallback = &modalLayoutTouchCallback, - .tapActionText = NULL}; - nbgl_layoutHeader_t headerDesc = {.type = HEADER_BACK_AND_TEXT, - .separationLine = false, - .backAndText.token = 0, - .backAndText.tuneId = TUNE_TAP_CASUAL, - .backAndText.text = NULL}; - nbgl_layoutCenteredInfo_t centeredInfo - = {.icon = NULL, .text3 = NULL, .style = LARGE_CASE_INFO, .offsetY = 0, .onTop = false}; - centeredInfo.text1 = "Security risk detected"; - centeredInfo.text2 - = "This transaction or message cannot be decoded fully. If you choose to sign, you could " - "be authorizing malicious actions that can drain your wallet.\n\n" - "Learn more: ledger.com/e8"; - - genericContext.modalLayout = nbgl_layoutGet(&layoutDescription); - // add header with the tag part of the pair, to go back - nbgl_layoutAddHeader(genericContext.modalLayout, &headerDesc); - // add full value text - nbgl_layoutAddCenteredInfo(genericContext.modalLayout, ¢eredInfo); - - // draw & refresh - nbgl_layoutDraw(genericContext.modalLayout); - nbgl_refresh(); -} - // function used to display the modal containing tip-box infos static void displayTipBoxModal(void) { @@ -1265,7 +1282,7 @@ static void displayAddressQRCode(void) // display the address as QR Code nbgl_layoutDescription_t layoutDescription = {.modal = true, .withLeftBorder = true, - .onActionCallback = &addressLayoutTouchCallbackQR, + .onActionCallback = &modalLayoutTouchCallback, .tapActionText = NULL}; nbgl_layoutHeader_t headerDesc = { .type = HEADER_EMPTY, .separationLine = false, .emptySpace.height = SMALL_CENTERING_HEADER}; @@ -1297,38 +1314,128 @@ static void displayAddressQRCode(void) nbgl_layoutAddQRCode(addressConfirmationContext.modalLayout, &qrCode); - nbgl_layoutAddFooter(addressConfirmationContext.modalLayout, "Close", 0, TUNE_TAP_CASUAL); + nbgl_layoutAddFooter( + addressConfirmationContext.modalLayout, "Close", DISMISS_QR_TOKEN, TUNE_TAP_CASUAL); nbgl_layoutDraw(addressConfirmationContext.modalLayout); nbgl_refresh(); } -// called when quit button is touched on Address verification page -static void addressLayoutTouchCallbackQR(int token, uint8_t index) -{ - UNUSED(token); - UNUSED(index); - - // dismiss modal - nbgl_layoutRelease(addressConfirmationContext.modalLayout); - addressConfirmationContext.modalLayout = NULL; - nbgl_screenRedraw(); - nbgl_refresh(); -} #endif // NBGL_QRCODE // called when header is touched on modal page, to dismiss it static void modalLayoutTouchCallback(int token, uint8_t index) { - UNUSED(token); UNUSED(index); - - // dismiss modal - nbgl_layoutRelease(genericContext.modalLayout); - genericContext.modalLayout = NULL; - nbgl_screenRedraw(); + if (token == DISMISS_QR_TOKEN) { + // dismiss modal + nbgl_layoutRelease(addressConfirmationContext.modalLayout); + addressConfirmationContext.modalLayout = NULL; + nbgl_screenRedraw(); + } + else if (token == DISMISS_WARNING_TOKEN) { + // dismiss modal + nbgl_layoutRelease(reviewWithWarnCtx.modalLayout); + // if already at first level, simply redraw the background + if (reviewWithWarnCtx.securityReportLevel <= 1) { + reviewWithWarnCtx.modalLayout = NULL; + nbgl_screenRedraw(); + } + else { + // We are at level 2 of warning modal, so re-display the level 1 + reviewWithWarnCtx.securityReportLevel = 1; + // if preset is used + if (reviewWithWarnCtx.warning->predefinedSet) { + displaySecurityReport(reviewWithWarnCtx.warning->predefinedSet); + } + else { + // use customized warning + const nbgl_warningDetails_t *details + = (reviewWithWarnCtx.isIntro) ? reviewWithWarnCtx.warning->introDetails + : reviewWithWarnCtx.warning->reviewDetails; + displayCustomizedSecurityReport(details); + } + return; + } + } + else if ((token >= FIRST_WARN_BAR_TOKEN) && (token <= LAST_WARN_BAR_TOKEN)) { + // dismiss modal before creating a new one + nbgl_layoutRelease(reviewWithWarnCtx.modalLayout); + reviewWithWarnCtx.securityReportLevel = 2; + // if preset is used + if (reviewWithWarnCtx.warning->predefinedSet) { + displaySecurityReport(1 << (token - FIRST_WARN_BAR_TOKEN)); + } + else { + // use customized warning + const nbgl_warningDetails_t *details = (reviewWithWarnCtx.isIntro) + ? reviewWithWarnCtx.warning->introDetails + : reviewWithWarnCtx.warning->reviewDetails; + if (details->type == BAR_LIST_WARNING) { + displayCustomizedSecurityReport( + &details->barList.details[token - FIRST_WARN_BAR_TOKEN]); + } + } + return; + } + else { + // dismiss modal + nbgl_layoutRelease(genericContext.modalLayout); + genericContext.modalLayout = NULL; + nbgl_screenRedraw(); + } nbgl_refresh(); } +// called when item are touched in layout +static void layoutTouchCallback(int token, uint8_t index) +{ + // choice buttons in initial warning page + if (token == WARNING_CHOICE_TOKEN) { + if (index == 0) { // top button to exit + reviewWithWarnCtx.choiceCallback(false); + } + else { // bottom button to continue to review + reviewWithWarnCtx.isIntro = false; + if (reviewWithWarnCtx.isStreaming) { + useCaseReviewStreamingStart(reviewWithWarnCtx.operationType, + reviewWithWarnCtx.icon, + reviewWithWarnCtx.reviewTitle, + reviewWithWarnCtx.reviewSubTitle, + reviewWithWarnCtx.choiceCallback, + false); + } + else { + useCaseReview(reviewWithWarnCtx.operationType, + reviewWithWarnCtx.tagValueList, + reviewWithWarnCtx.icon, + reviewWithWarnCtx.reviewTitle, + reviewWithWarnCtx.reviewSubTitle, + reviewWithWarnCtx.finishTitle, + reviewWithWarnCtx.tipBox, + reviewWithWarnCtx.choiceCallback, + false, + false); + } + } + } + // top-right button in initial warning page + else if (token == WARNING_BUTTON_TOKEN) { + // start at first level of security report + reviewWithWarnCtx.securityReportLevel = 1; + // if preset is used + if (reviewWithWarnCtx.warning->predefinedSet) { + displaySecurityReport(reviewWithWarnCtx.warning->predefinedSet); + } + else { + // use customized warning + const nbgl_warningDetails_t *details = (reviewWithWarnCtx.isIntro) + ? reviewWithWarnCtx.warning->introDetails + : reviewWithWarnCtx.warning->reviewDetails; + displayCustomizedSecurityReport(details); + } + } +} + // called when skip button is touched in footer, during forward only review static void displaySkipWarning(void) { @@ -1717,51 +1824,283 @@ static void bundleNavReviewStreamingChoice(bool confirm) } } -// function called when the warning page of Blind Signing review buttons are pressed -static void blindSigningWarningCallback(bool confirm) +// function used to display the security level page in modal +// it can be either a single page with text or QR code, or a list of touchable bars leading +// to single pages +static void displaySecurityReport(uint32_t set) { - if (confirm) { // top button to exit - blindSigningContext.choiceCallback(false); + nbgl_layoutDescription_t layoutDescription = {.modal = true, + .withLeftBorder = true, + .onActionCallback = modalLayoutTouchCallback, + .tapActionText = NULL}; + nbgl_layoutHeader_t headerDesc = {.type = HEADER_BACK_AND_TEXT, + .separationLine = true, + .backAndText.icon = NULL, + .backAndText.tuneId = TUNE_TAP_CASUAL, + .backAndText.token = DISMISS_WARNING_TOKEN}; + uint8_t i; + uint8_t nbWarnings = 0; + + reviewWithWarnCtx.modalLayout = nbgl_layoutGet(&layoutDescription); + + for (i = 0; i < NB_WARNING_TYPES; i++) { + if (reviewWithWarnCtx.warning->predefinedSet & (1 << i)) { + nbWarnings++; + } + } + + if ((reviewWithWarnCtx.securityReportLevel == 1) && (nbWarnings > 1)) { + // if more than one warning warning, so use a list of touchable bars + for (i = 0; i < NB_WARNING_TYPES; i++) { + if (reviewWithWarnCtx.warning->predefinedSet & (1 << i)) { + nbgl_layoutBar_t bar; + bar.text = securityReportItems[i].text; + bar.subText = securityReportItems[i].subText; + bar.iconRight = &PUSH_ICON; + bar.iconLeft = securityReportItems[i].icon; + bar.token = FIRST_WARN_BAR_TOKEN + i; + bar.tuneId = TUNE_TAP_CASUAL; + bar.large = false; + bar.inactive = false; + nbgl_layoutAddTouchableBar(reviewWithWarnCtx.modalLayout, &bar); + nbgl_layoutAddSeparationLine(reviewWithWarnCtx.modalLayout); + } + } + headerDesc.backAndText.text = "Security report"; + nbgl_layoutAddHeader(reviewWithWarnCtx.modalLayout, &headerDesc); + nbgl_layoutDraw(reviewWithWarnCtx.modalLayout); + nbgl_refresh(); + return; } - else { // bottom button to continue to review - if (blindSigningContext.isStreaming) { - useCaseReviewStreamingStart(blindSigningContext.operationType, - blindSigningContext.icon, - blindSigningContext.reviewTitle, - blindSigningContext.reviewSubTitle, - blindSigningContext.choiceCallback, - false); + if (set & (1 << BLIND_SIGNING_WARN)) { + if (reviewWithWarnCtx.isIntro) { +#ifdef NBGL_QRCODE + // display a QR Code if in intro + nbgl_layoutQRCode_t qrCode + = {.url = "ledger.com/e8", + .text1 = "ledger.com/e8", + .text2 = "Scan to learn about the risks of blind signing.", + .centered = true, + .offsetY = 0}; + nbgl_layoutAddQRCode(reviewWithWarnCtx.modalLayout, &qrCode); +#endif // NBGL_QRCODE + headerDesc.backAndText.text = "Blind signing report"; + } + else { + // display a centered if in review + nbgl_contentCenter_t info = {0}; + info.icon = &C_Warning_64px; + info.title = "Blind Signing"; + info.description + = "This transaction's details are not fully verifiable. If you sign it, you could " + "lose all your assets.\n\n" + "Learn about blind signing:\nledger.com/e8"; + nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); + headerDesc.separationLine = false; + } + } + if (set & (1 << W3C_ISSUE_WARN)) { + // if W3 Checks issue, display a centered info + nbgl_contentCenter_t info = {0}; + info.icon = &C_Important_Circle_64px; + info.title = "Web3 Checks could not verify this message"; + info.description = "An issue prevented Web3 Checks from running.\nGet help: ledger.com/e11"; + nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); + headerDesc.separationLine = false; + } + else if (set & (1 << W3C_THREAT_DETECTED_WARN)) { + if (reviewWithWarnCtx.isIntro) { +#ifdef NBGL_QRCODE + // display a QR Code if in intro + nbgl_layoutQRCode_t qrCode = {.url = "url.com/od24xz", + .text1 = "url.com/od24xz", + .text2 = "Scan to view the threat report from Blockaid.", + .centered = true, + .offsetY = 0}; + nbgl_layoutAddQRCode(reviewWithWarnCtx.modalLayout, &qrCode); +#endif // NBGL_QRCODE + headerDesc.backAndText.text = "Web3 Checks threat report"; + } + else { + // display a centered if in review + nbgl_contentCenter_t info = {0}; + info.icon = &C_Warning_64px; + info.title = "Threat detected"; + info.smallTitle = "Known drainer contract"; + info.description + = "This transaction was scanned as malicious by Web3 Checks.\n\n" + "View full Blockaid report:\nurl.com/od24xz"; + nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); + headerDesc.separationLine = false; + } + } + else if (set & (1 << W3C_LOSING_SWAP_WARN)) { + if (reviewWithWarnCtx.isIntro) { +#ifdef NBGL_QRCODE + // display a QR Code if in intro + nbgl_layoutQRCode_t qrCode = {.url = "url.com/od24xz", + .text1 = "url.com/od24xz", + .text2 = "Scan to view the risk report from Blockaid.", + .centered = true, + .offsetY = 0}; + nbgl_layoutAddQRCode(reviewWithWarnCtx.modalLayout, &qrCode); +#endif // NBGL_QRCODE + headerDesc.backAndText.text = "Web3 Checks risk report"; } else { - useCaseReview(blindSigningContext.operationType, - blindSigningContext.tagValueList, - blindSigningContext.icon, - blindSigningContext.reviewTitle, - blindSigningContext.reviewSubTitle, - blindSigningContext.finishTitle, - blindSigningContext.tipBox, - blindSigningContext.choiceCallback, - false, - false); + // display a centered if in review + nbgl_contentCenter_t info = {0}; + info.icon = &C_Warning_64px; + info.title = "Risk detected"; + info.smallTitle = "Losing swap"; + info.description + = "This transaction was scanned as risky by Web3 Checks.\n\n" + "View full Blockaid report:\\nurl.com/od24xz"; + nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); + headerDesc.separationLine = false; } } + else { + } + nbgl_layoutAddHeader(reviewWithWarnCtx.modalLayout, &headerDesc); + nbgl_layoutDraw(reviewWithWarnCtx.modalLayout); + nbgl_refresh(); +} + +// function used to display the security level page in modal +// it can be either a single page with text or QR code, or a list of touchable bars leading +// to single pages +static void displayCustomizedSecurityReport(const nbgl_warningDetails_t *details) +{ + nbgl_layoutDescription_t layoutDescription = {.modal = true, + .withLeftBorder = true, + .onActionCallback = modalLayoutTouchCallback, + .tapActionText = NULL}; + nbgl_layoutHeader_t headerDesc = {.type = HEADER_BACK_AND_TEXT, + .separationLine = true, + .backAndText.icon = NULL, + .backAndText.tuneId = TUNE_TAP_CASUAL, + .backAndText.token = DISMISS_WARNING_TOKEN}; + uint8_t i; + + reviewWithWarnCtx.modalLayout = nbgl_layoutGet(&layoutDescription); + headerDesc.backAndText.text = details->title; + nbgl_layoutAddHeader(reviewWithWarnCtx.modalLayout, &headerDesc); + if (details->type == BAR_LIST_WARNING) { + // if more than one warning warning, so use a list of touchable bars + for (i = 0; i < details->barList.nbBars; i++) { + nbgl_layoutBar_t bar; + bar.text = details->barList.texts[i]; + bar.subText = details->barList.subTexts[i]; + bar.iconRight = &PUSH_ICON; + bar.iconLeft = details->barList.icons[i]; + bar.token = FIRST_WARN_BAR_TOKEN + i; + bar.tuneId = TUNE_TAP_CASUAL; + bar.large = false; + bar.inactive = false; + nbgl_layoutAddTouchableBar(reviewWithWarnCtx.modalLayout, &bar); + nbgl_layoutAddSeparationLine(reviewWithWarnCtx.modalLayout); + } + } + else if (details->type == QRCODE_WARNING) { +#ifdef NBGL_QRCODE + // display a QR Code + nbgl_layoutAddQRCode(reviewWithWarnCtx.modalLayout, &details->qrCode); +#endif // NBGL_QRCODE + headerDesc.backAndText.text = details->title; + } + else if (details->type == CENTERED_INFO_WARNING) { + // display a centered info + nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &details->centeredInfo); + headerDesc.separationLine = false; + } + nbgl_layoutDraw(reviewWithWarnCtx.modalLayout); + nbgl_refresh(); } -// function used to display the warning page when starting a Bling Signing review -static void blindSigningWarning(void) +// function used to display the initial warning page when starting a "review with warning" +static void displayInitialWarning(void) { // Play notification sound #ifdef HAVE_PIEZO_SOUND io_seproxyhal_play_tune(TUNE_LOOK_AT_ME); #endif // HAVE_PIEZO_SOUND - nbgl_useCaseChoice(&C_Warning_64px, - "Blind signing ahead", - "The details of this transaction or message are not fully verifiable. If " - "you sign it, you could lose all " - "your assets.", - "Back to safety", - "Continue anyway", - blindSigningWarningCallback); + nbgl_layoutDescription_t layoutDescription; + nbgl_layoutChoiceButtons_t buttonsInfo = {.bottomText = "Continue anyway", + .token = WARNING_CHOICE_TOKEN, + .topText = "Back to safety", + .style = ROUNDED_AND_FOOTER_STYLE, + .tuneId = TUNE_TAP_CASUAL}; + nbgl_layoutHeader_t headerDesc = {.type = HEADER_EMPTY, + .separationLine = false, + .emptySpace.height = MEDIUM_CENTERING_HEADER}; + + reviewWithWarnCtx.isIntro = true; + + layoutDescription.modal = false; + layoutDescription.withLeftBorder = true; + + layoutDescription.onActionCallback = layoutTouchCallback; + layoutDescription.tapActionText = NULL; + + layoutDescription.ticker.tickerCallback = NULL; + reviewWithWarnCtx.layoutCtx = nbgl_layoutGet(&layoutDescription); + + nbgl_layoutAddHeader(reviewWithWarnCtx.layoutCtx, &headerDesc); + // do not display top-right icon if only Web3 Checks issue + if ((reviewWithWarnCtx.warning->predefinedSet != (1 << W3C_ISSUE_WARN)) + && ((reviewWithWarnCtx.warning->predefinedSet != 0) + || (reviewWithWarnCtx.warning->introTopRightIcon != NULL))) { + if (reviewWithWarnCtx.warning->predefinedSet != 0) { + nbgl_layoutAddTopRightButton( + reviewWithWarnCtx.layoutCtx, &PRIVACY_ICON, WARNING_BUTTON_TOKEN, TUNE_TAP_CASUAL); + } + else { + nbgl_layoutAddTopRightButton(reviewWithWarnCtx.layoutCtx, + reviewWithWarnCtx.warning->introTopRightIcon, + WARNING_BUTTON_TOKEN, + TUNE_TAP_CASUAL); + } + } + // add button and footer on bottom + nbgl_layoutAddChoiceButtons(reviewWithWarnCtx.layoutCtx, &buttonsInfo); + // add main content + // if predefined content is configured, use it preferably + if (reviewWithWarnCtx.warning->predefinedSet != 0) { + nbgl_contentCenter_t info = {0}; + info.icon = &C_Warning_64px; + if (reviewWithWarnCtx.warning->predefinedSet == (1 << BLIND_SIGNING_WARN)) { + info.title = "Blind signing ahead"; + info.description + = "The details of this transaction or message are not fully verifiable. If " + "you sign it, you could lose all " + "your assets."; + } + else if (reviewWithWarnCtx.warning->predefinedSet == (1 << W3C_ISSUE_WARN)) { + info.icon = &C_Important_Circle_64px; + info.title = "Web3 Checks could not verify this message"; + info.description + = "An issue prevented Web3 Checks from running.\nGet help: ledger.com/e11"; + } + else if (reviewWithWarnCtx.warning->predefinedSet == (1 << W3C_THREAT_DETECTED_WARN)) { + info.title = "Threat detected"; + info.smallTitle = "Known drainer contract"; + info.description = "This transaction was scanned as malicious by Web3 Checks."; + } + else { + info.title = "Dangerous transaction"; + info.description + = "This transaction cannot be fully decoded, and was not verified by Web3 Checks."; + } + nbgl_layoutAddContentCenter(reviewWithWarnCtx.layoutCtx, &info); + } + else if (reviewWithWarnCtx.warning->info != NULL) { + // if no predefined content, use custom one + nbgl_layoutAddContentCenter(reviewWithWarnCtx.layoutCtx, reviewWithWarnCtx.warning->info); + } + + nbgl_layoutDraw(reviewWithWarnCtx.layoutCtx); + nbgl_refresh(); } // function to factorize code for all simple reviews @@ -3041,20 +3380,64 @@ void nbgl_useCaseReviewBlindSigning(nbgl_operationType_t operationT const nbgl_tipBox_t *tipBox, nbgl_choiceCallback_t choiceCallback) { - memset(&blindSigningContext, 0, sizeof(blindSigningContext)); - - blindSigningContext.isStreaming = false; - blindSigningContext.operationType = operationType | BLIND_OPERATION; - blindSigningContext.tagValueList = tagValueList; - blindSigningContext.icon = icon; - blindSigningContext.reviewTitle = reviewTitle; - blindSigningContext.reviewSubTitle = reviewSubTitle; - blindSigningContext.finishTitle = finishTitle; - blindSigningContext.tipBox = tipBox; - blindSigningContext.choiceCallback = choiceCallback; + nbgl_useCaseReviewWithWarning(operationType, + tagValueList, + icon, + reviewTitle, + reviewSubTitle, + finishTitle, + tipBox, + &blindSigningWarning, + choiceCallback); +} - blindSigningWarning(); +/** + * @brief Draws a flow of pages of a review requiring a warning page before the review. + * Moreover, the first and last pages of review display a top-right button, that displays more + * information about the warnings + * + * Navigation operates with either swipe or navigation + * keys at bottom right. The last page contains a long-press button with the given finishTitle and + * the given icon. + * @note All tag/value pairs are provided in the API and the number of pages is automatically + * computed, the last page being a long press one + * + * @param operationType type of operation (Operation, Transaction, Message) + * @param tagValueList list of tag/value pairs + * @param icon icon used on first and last review page + * @param reviewTitle string used in the first review page + * @param reviewSubTitle string to set under reviewTitle (can be NULL) + * @param finishTitle string used in the last review page + * @param tipBox parameter to build a tip-box and necessary modal (can be NULL) + * @param warning structure to build the initial warning page (cannot be NULL) + * @param choiceCallback callback called when operation is accepted (param is true) or rejected + * (param is false) + */ +void nbgl_useCaseReviewWithWarning(nbgl_operationType_t operationType, + const nbgl_contentTagValueList_t *tagValueList, + const nbgl_icon_details_t *icon, + const char *reviewTitle, + const char *reviewSubTitle, + const char *finishTitle, + const nbgl_tipBox_t *tipBox, + const nbgl_warning_t *warning, + nbgl_choiceCallback_t choiceCallback) +{ + memset(&reviewWithWarnCtx, 0, sizeof(reviewWithWarnCtx)); + reviewWithWarnCtx.isStreaming = false; + reviewWithWarnCtx.operationType = operationType | BLIND_OPERATION; + reviewWithWarnCtx.tagValueList = tagValueList; + reviewWithWarnCtx.icon = icon; + reviewWithWarnCtx.reviewTitle = reviewTitle; + reviewWithWarnCtx.reviewSubTitle = reviewSubTitle; + reviewWithWarnCtx.finishTitle = finishTitle; + reviewWithWarnCtx.tipBox = tipBox; + reviewWithWarnCtx.warning = warning; + reviewWithWarnCtx.choiceCallback = choiceCallback; + + displayInitialWarning(); } + /** * @brief Draws a flow of pages of a light review. Navigation operates with either swipe or * navigation keys at bottom right. The last page contains a button/footer with the given @@ -3168,16 +3551,17 @@ void nbgl_useCaseReviewStreamingBlindSigningStart(nbgl_operationType_t ope const char *reviewSubTitle, nbgl_choiceCallback_t choiceCallback) { - memset(&blindSigningContext, 0, sizeof(blindSigningContext)); + memset(&reviewWithWarnCtx, 0, sizeof(reviewWithWarnCtx)); - blindSigningContext.isStreaming = true; - blindSigningContext.operationType = operationType | BLIND_OPERATION; - blindSigningContext.icon = icon; - blindSigningContext.reviewTitle = reviewTitle; - blindSigningContext.reviewSubTitle = reviewSubTitle; - blindSigningContext.choiceCallback = choiceCallback; + reviewWithWarnCtx.isStreaming = true; + reviewWithWarnCtx.operationType = operationType | BLIND_OPERATION; + reviewWithWarnCtx.icon = icon; + reviewWithWarnCtx.reviewTitle = reviewTitle; + reviewWithWarnCtx.reviewSubTitle = reviewSubTitle; + reviewWithWarnCtx.choiceCallback = choiceCallback; + reviewWithWarnCtx.warning = &blindSigningWarning; - blindSigningWarning(); + displayInitialWarning(); } /** diff --git a/unit-tests/lib_nbgl/CMakeLists.txt b/unit-tests/lib_nbgl/CMakeLists.txt index 815bc2a08..5ee877e25 100644 --- a/unit-tests/lib_nbgl/CMakeLists.txt +++ b/unit-tests/lib_nbgl/CMakeLists.txt @@ -78,7 +78,7 @@ add_library(nbgl_obj SHARED ../../lib_nbgl/src/nbgl_obj.c) target_link_libraries(test_nbgl_fonts PUBLIC cmocka gcov nbgl_fonts nbgl_stubs) target_link_libraries(test_nbgl_obj_pool PUBLIC cmocka gcov nbgl_obj_pool) -target_link_libraries(test_nbgl_screen PUBLIC cmocka gcov nbgl_screen nbgl_obj_pool) +target_link_libraries(test_nbgl_screen PUBLIC cmocka gcov nbgl_screen nbgl_obj_pool nbgl_stubs) target_link_libraries(test_nbgl_obj PUBLIC cmocka gcov nbgl_obj nbgl_screen nbgl_obj_pool nbgl_fonts nbgl_stubs) add_test(test_nbgl_fonts test_nbgl_fonts) diff --git a/unit-tests/lib_nbgl/nbgl_stubs.c b/unit-tests/lib_nbgl/nbgl_stubs.c index c9913caf8..9605d7215 100644 --- a/unit-tests/lib_nbgl/nbgl_stubs.c +++ b/unit-tests/lib_nbgl/nbgl_stubs.c @@ -8,7 +8,9 @@ #include #include #include "nbgl_fonts.h" +#include "nbgl_touch.h" #include "ux_loc.h" +#include "os_helpers.h" #include "os_task.h" void fetch_language_packs(void); diff --git a/unit-tests/lib_nbgl/test_nbgl_screen.c b/unit-tests/lib_nbgl/test_nbgl_screen.c index 3ef09bff4..8f542b207 100644 --- a/unit-tests/lib_nbgl/test_nbgl_screen.c +++ b/unit-tests/lib_nbgl/test_nbgl_screen.c @@ -9,6 +9,7 @@ #include #include "nbgl_screen.h" #include "nbgl_debug.h" +#include "nbgl_touch.h" #include "ux_loc.h" #include "os_task.h" @@ -46,6 +47,15 @@ void nbgl_objDraw(nbgl_obj_t *obj) UNUSED(obj); } +void nbgl_touchHandler(bool fromUx, + nbgl_touchStatePosition_t *touchStatePosition, + uint32_t currentTime) +{ + UNUSED(fromUx); + UNUSED(touchStatePosition); + UNUSED(currentTime); +} + static void test_push_pop(void **state __attribute__((unused))) { nbgl_obj_t **elements0, **elements1, **elements2, **elements3; From 7338101a02dccebffcd8070cbe98d545accf2580 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Fri, 10 Jan 2025 08:17:26 +0100 Subject: [PATCH 29/53] Fix minor issues in Blind Signing review --- lib_nbgl/include/nbgl_use_case.h | 2 +- lib_nbgl/src/nbgl_use_case.c | 47 +++++++++++++++++++------------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/lib_nbgl/include/nbgl_use_case.h b/lib_nbgl/include/nbgl_use_case.h index bc9787724..f55afe47c 100644 --- a/lib_nbgl/include/nbgl_use_case.h +++ b/lib_nbgl/include/nbgl_use_case.h @@ -208,7 +208,7 @@ typedef struct { const char *const *subTexts; ///< array of texts for each bar (nbBars items, in black) const nbgl_icon_details_t **icons; ///< array of icons for each bar (nbBars items) const struct nbgl_warningDetails_s - *details; ///< array of nbBars structure giving what to deplay when each bar is touched. + *details; ///< array of nbBars structures giving what to display when each bar is touched. } nbgl_warningBarList_t; /** diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index 64781188c..585fa7e3d 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -51,6 +51,13 @@ #define keypadContext sharedContext.keypad #define reviewWithWarnCtx sharedContext.reviewWithWarning +/** + * @brief This is to use in @ref nbgl_operationType_t when the operation is concerned by an internal + * warning This is used to indicate a warning with a top-right button in review first & last page + * + */ +#define RISKY_OPERATION (1 << 6) + /********************** * TYPEDEFS **********************/ @@ -69,6 +76,7 @@ enum { REJECT_TOKEN, VALUE_ALIAS_TOKEN, INFO_ALIAS_TOKEN, + BLIND_WARNING_TOKEN, WARNING_BUTTON_TOKEN, TIP_BOX_TOKEN, WARNING_CHOICE_TOKEN, @@ -627,6 +635,11 @@ static void pageCallback(int token, uint8_t index) } displayFullValuePage(pair->item, pair->value, pair->extension); } + else if (token == BLIND_WARNING_TOKEN) { + reviewWithWarnCtx.isIntro = false; + reviewWithWarnCtx.warning = NULL; + displaySecurityReport(1 << BLIND_SIGNING_WARN); + } else if (token == WARNING_BUTTON_TOKEN) { // top-right button, display the security modal reviewWithWarnCtx.securityReportLevel = 1; @@ -1019,16 +1032,16 @@ static bool genericContextPreparePageContent(const nbgl_content_t *p_content, bool isFirstOrLastPage = ((p_content->type == CENTERED_INFO) || (p_content->type == EXTENDED_CENTER)) || (p_content->type == INFO_LONG_PRESS); - bool isStreamingNavAndBlindOperation + nbgl_operationType_t operationType = (navType == STREAMING_NAV) - && (bundleNavContext.reviewStreaming.operationType & BLIND_OPERATION); - bool isGenericNavAndRiskyOperation - = (navType == GENERIC_NAV) && (bundleNavContext.review.operationType & BLIND_OPERATION); + ? bundleNavContext.reviewStreaming.operationType + : ((navType == GENERIC_NAV) ? bundleNavContext.review.operationType : 0); - // if first or last page of review and blind operation, add the warning top-right button - if (isFirstOrLastPage && (isStreamingNavAndBlindOperation || isGenericNavAndRiskyOperation)) { - pageContent->topRightIcon = &WARNING_ICON; - pageContent->topRightToken = WARNING_BUTTON_TOKEN; + // if first or last page of review and blind/risky operation, add the warning top-right button + if (isFirstOrLastPage && (operationType & (BLIND_OPERATION | RISKY_OPERATION))) { + pageContent->topRightIcon = &WARNING_ICON; + pageContent->topRightToken + = (operationType & BLIND_OPERATION) ? BLIND_WARNING_TOKEN : WARNING_BUTTON_TOKEN; } return true; @@ -1775,7 +1788,7 @@ static void bundleNavReviewAskRejectionConfirmation(nbgl_operationType_t operati const char *title; const char *confirmText; // clear skip and blind bits - operationType &= ~(SKIPPABLE_OPERATION | BLIND_OPERATION); + operationType &= ~(SKIPPABLE_OPERATION | BLIND_OPERATION | RISKY_OPERATION); if (operationType == TYPE_TRANSACTION) { title = "Reject transaction?"; confirmText = "Go back to transaction"; @@ -1844,12 +1857,12 @@ static void displaySecurityReport(uint32_t set) reviewWithWarnCtx.modalLayout = nbgl_layoutGet(&layoutDescription); for (i = 0; i < NB_WARNING_TYPES; i++) { - if (reviewWithWarnCtx.warning->predefinedSet & (1 << i)) { + if (set & (1 << i)) { nbWarnings++; } } - if ((reviewWithWarnCtx.securityReportLevel == 1) && (nbWarnings > 1)) { + if ((nbWarnings > 1) && (reviewWithWarnCtx.securityReportLevel == 1)) { // if more than one warning warning, so use a list of touchable bars for (i = 0; i < NB_WARNING_TYPES; i++) { if (reviewWithWarnCtx.warning->predefinedSet & (1 << i)) { @@ -1960,8 +1973,6 @@ static void displaySecurityReport(uint32_t set) headerDesc.separationLine = false; } } - else { - } nbgl_layoutAddHeader(reviewWithWarnCtx.modalLayout, &headerDesc); nbgl_layoutDraw(reviewWithWarnCtx.modalLayout); nbgl_refresh(); @@ -2048,14 +2059,12 @@ static void displayInitialWarning(void) nbgl_layoutAddHeader(reviewWithWarnCtx.layoutCtx, &headerDesc); // do not display top-right icon if only Web3 Checks issue - if ((reviewWithWarnCtx.warning->predefinedSet != (1 << W3C_ISSUE_WARN)) - && ((reviewWithWarnCtx.warning->predefinedSet != 0) - || (reviewWithWarnCtx.warning->introTopRightIcon != NULL))) { + if (reviewWithWarnCtx.warning->predefinedSet != (1 << W3C_ISSUE_WARN)) { if (reviewWithWarnCtx.warning->predefinedSet != 0) { nbgl_layoutAddTopRightButton( reviewWithWarnCtx.layoutCtx, &PRIVACY_ICON, WARNING_BUTTON_TOKEN, TUNE_TAP_CASUAL); } - else { + else if (reviewWithWarnCtx.warning->introTopRightIcon != NULL) { nbgl_layoutAddTopRightButton(reviewWithWarnCtx.layoutCtx, reviewWithWarnCtx.warning->introTopRightIcon, WARNING_BUTTON_TOKEN, @@ -3425,7 +3434,7 @@ void nbgl_useCaseReviewWithWarning(nbgl_operationType_t operationTy { memset(&reviewWithWarnCtx, 0, sizeof(reviewWithWarnCtx)); reviewWithWarnCtx.isStreaming = false; - reviewWithWarnCtx.operationType = operationType | BLIND_OPERATION; + reviewWithWarnCtx.operationType = operationType | RISKY_OPERATION; reviewWithWarnCtx.tagValueList = tagValueList; reviewWithWarnCtx.icon = icon; reviewWithWarnCtx.reviewTitle = reviewTitle; @@ -3554,7 +3563,7 @@ void nbgl_useCaseReviewStreamingBlindSigningStart(nbgl_operationType_t ope memset(&reviewWithWarnCtx, 0, sizeof(reviewWithWarnCtx)); reviewWithWarnCtx.isStreaming = true; - reviewWithWarnCtx.operationType = operationType | BLIND_OPERATION; + reviewWithWarnCtx.operationType = operationType | RISKY_OPERATION; reviewWithWarnCtx.icon = icon; reviewWithWarnCtx.reviewTitle = reviewTitle; reviewWithWarnCtx.reviewSubTitle = reviewSubTitle; From 734c9dc8438d93a9950ef8ddc472eb9056f2ea99 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Tue, 14 Jan 2025 13:48:44 +0100 Subject: [PATCH 30/53] Add report provider name in warning structure and support streaming review --- lib_nbgl/glyphs/32px/Exclamation_32px.png | Bin 0 -> 161 bytes lib_nbgl/glyphs/40px/Exclamation_40px.png | Bin 0 -> 208 bytes lib_nbgl/include/nbgl_obj.h | 2 + lib_nbgl/include/nbgl_use_case.h | 8 ++ lib_nbgl/src/nbgl_use_case.c | 94 ++++++++++++++++------ 5 files changed, 81 insertions(+), 23 deletions(-) create mode 100755 lib_nbgl/glyphs/32px/Exclamation_32px.png create mode 100755 lib_nbgl/glyphs/40px/Exclamation_40px.png diff --git a/lib_nbgl/glyphs/32px/Exclamation_32px.png b/lib_nbgl/glyphs/32px/Exclamation_32px.png new file mode 100755 index 0000000000000000000000000000000000000000..1eee850081cefa364b65aa98ffd951d3c0b36ddc GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP%zlj z#WAGf*4xVqc^eEETrQrw)G{|Qq{XM_XuUq`c+EtMZ%W70y9P-)Le$E3L&*16m=d#Wz Gp$PzV^f?Ux literal 0 HcmV?d00001 diff --git a/lib_nbgl/glyphs/40px/Exclamation_40px.png b/lib_nbgl/glyphs/40px/Exclamation_40px.png new file mode 100755 index 0000000000000000000000000000000000000000..37f8b56a19ebfb621cf7eee4d0cc00f669e94d12 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEoCO|{#S9GGLLkg|>2BR0pkR}y zi(^Q|t+&?|xmp55S`$|topRightIcon = &WARNING_ICON; + // if issue is only Web3Checks issue, use '!' icon + if ((operationType & RISKY_OPERATION) + && (reviewWithWarnCtx.warning->predefinedSet == (1 << W3C_ISSUE_WARN))) { + pageContent->topRightIcon = &EXCLAMATION_ICON; + } + else { + pageContent->topRightIcon = &WARNING_ICON; + } + pageContent->topRightToken = (operationType & BLIND_OPERATION) ? BLIND_WARNING_TOKEN : WARNING_BUTTON_TOKEN; } @@ -1936,13 +1947,19 @@ static void displaySecurityReport(uint32_t set) } else { // display a centered if in review - nbgl_contentCenter_t info = {0}; - info.icon = &C_Warning_64px; - info.title = "Threat detected"; - info.smallTitle = "Known drainer contract"; - info.description - = "This transaction was scanned as malicious by Web3 Checks.\n\n" - "View full Blockaid report:\nurl.com/od24xz"; + nbgl_contentCenter_t info = {0}; + const char *provider = reviewWithWarnCtx.warning->reportProvider + ? reviewWithWarnCtx.warning->reportProvider + : "[unknown]"; + info.icon = &C_Warning_64px; + info.title = "Threat detected"; + info.smallTitle = "Known drainer contract"; + info.description = tmpString; + snprintf(tmpString, + W3C_DESCRIPTION_MAX_LEN, + "This transaction was scanned as malicious by Web3 Checks.\n\nView full %s " + "report:\nurl.com/od24xz", + provider); nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); headerDesc.separationLine = false; } @@ -1962,13 +1979,19 @@ static void displaySecurityReport(uint32_t set) } else { // display a centered if in review - nbgl_contentCenter_t info = {0}; - info.icon = &C_Warning_64px; - info.title = "Risk detected"; - info.smallTitle = "Losing swap"; - info.description - = "This transaction was scanned as risky by Web3 Checks.\n\n" - "View full Blockaid report:\\nurl.com/od24xz"; + nbgl_contentCenter_t info = {0}; + const char *provider = reviewWithWarnCtx.warning->reportProvider + ? reviewWithWarnCtx.warning->reportProvider + : "[unknown]"; + info.icon = &C_Warning_64px; + info.title = "Risk detected"; + info.smallTitle = "Losing swap"; + info.description = tmpString; + snprintf(tmpString, + W3C_DESCRIPTION_MAX_LEN, + "This transaction was scanned as risky by Web3 Checks.\n\n" + "View full %s report:\\nurl.com/od24xz", + provider); nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); headerDesc.separationLine = false; } @@ -2294,12 +2317,12 @@ static void useCaseHomeExt(const char *appName, } if (tagline == NULL) { if (strlen(appName) > MAX_APP_NAME_FOR_SDK_TAGLINE) { - snprintf(appDescription, + snprintf(tmpString, APP_DESCRIPTION_MAX_LEN, "This app enables signing\ntransactions on its network."); } else { - snprintf(appDescription, + snprintf(tmpString, APP_DESCRIPTION_MAX_LEN, "%s %s\n%s", TAGLINE_PART1, @@ -2309,16 +2332,15 @@ static void useCaseHomeExt(const char *appName, // If there is more than 3 lines, it means the appName was split, so we put it on the next // line - if (nbgl_getTextNbLinesInWidth(SMALL_REGULAR_FONT, appDescription, AVAILABLE_WIDTH, false) - > 3) { - snprintf(appDescription, + if (nbgl_getTextNbLinesInWidth(SMALL_REGULAR_FONT, tmpString, AVAILABLE_WIDTH, false) > 3) { + snprintf(tmpString, APP_DESCRIPTION_MAX_LEN, "%s\n%s %s", TAGLINE_PART1, appName, TAGLINE_PART2); } - info.centeredInfo.text2 = appDescription; + info.centeredInfo.text2 = tmpString; } else { info.centeredInfo.text2 = tagline; @@ -3559,6 +3581,32 @@ void nbgl_useCaseReviewStreamingBlindSigningStart(nbgl_operationType_t ope const char *reviewTitle, const char *reviewSubTitle, nbgl_choiceCallback_t choiceCallback) +{ + nbgl_useCaseReviewStreamingWithWarningStart( + operationType, icon, reviewTitle, reviewSubTitle, &blindSigningWarning, choiceCallback); +} + +/** + * @brief Start drawing the flow of pages of a blind-signing review. The review is preceded by a + * warning page + * @note This should be followed by calls to @ref nbgl_useCaseReviewStreamingContinue and finally + * to + * @ref nbgl_useCaseReviewStreamingFinish. + * + * @param operationType type of operation (Operation, Transaction, Message) + * @param icon icon used on first and last review page + * @param reviewTitle string used in the first review page + * @param reviewSubTitle string to set under reviewTitle (can be NULL) + * @param warning structure to build the initial warning page (cannot be NULL) + * @param choiceCallback callback called when more operation data are needed (param is true) or + * operation is rejected (param is false) + */ +void nbgl_useCaseReviewStreamingWithWarningStart(nbgl_operationType_t operationType, + const nbgl_icon_details_t *icon, + const char *reviewTitle, + const char *reviewSubTitle, + const nbgl_warning_t *warning, + nbgl_choiceCallback_t choiceCallback) { memset(&reviewWithWarnCtx, 0, sizeof(reviewWithWarnCtx)); @@ -3568,7 +3616,7 @@ void nbgl_useCaseReviewStreamingBlindSigningStart(nbgl_operationType_t ope reviewWithWarnCtx.reviewTitle = reviewTitle; reviewWithWarnCtx.reviewSubTitle = reviewSubTitle; reviewWithWarnCtx.choiceCallback = choiceCallback; - reviewWithWarnCtx.warning = &blindSigningWarning; + reviewWithWarnCtx.warning = warning; displayInitialWarning(); } From f7e34bdfe8bd99d76abfb403450889b38af40673 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Tue, 14 Jan 2025 15:25:18 +0100 Subject: [PATCH 31/53] Document review with warning Use Case API --- lib_nbgl/doc/nbgl_use_case.dox | 168 ++++++++++++++++++ .../resources/UseCase-Review-With-Warning.png | Bin 0 -> 271013 bytes lib_nbgl/include/nbgl_step.h | 1 + lib_nbgl/include/nbgl_use_case.h | 6 +- lib_nbgl/src/nbgl_use_case.c | 52 +++--- 5 files changed, 203 insertions(+), 24 deletions(-) create mode 100755 lib_nbgl/doc/resources/UseCase-Review-With-Warning.png diff --git a/lib_nbgl/doc/nbgl_use_case.dox b/lib_nbgl/doc/nbgl_use_case.dox index d92699220..f4a2ec5c2 100644 --- a/lib_nbgl/doc/nbgl_use_case.dox +++ b/lib_nbgl/doc/nbgl_use_case.dox @@ -50,6 +50,9 @@ A few APIs are available to draw typical Use-Cases, such as: - @ref nbgl_useCaseReview() to draw the pages of a regular coin transaction review, when all info are available from the beginning (see @subpage use_case_review) - @ref nbgl_useCaseReviewLight() to draw the pages of a transaction review with a simple button confirmation, when all info are available from the beginning (see @subpage use_case_review_light) - @ref nbgl_useCaseReviewStreamingStart() to draw the pages of a regular coin transaction review, when all info are not available from the beginning (see @subpage use_case_review_streaming) +- for reviews with a warning prolog: + - @ref nbgl_useCaseReviewWithWarning() to draw the pages of a regular coin transaction review, when all info are available from the beginning, but with an identified risk requiring a warning prolog (see @subpage use_case_review_with_warning) + - @ref nbgl_useCaseReviewStreamingWithWarningStart() to draw the pages of a regular coin transaction review, when all info are not available from the beginning, but with an identified risk requiring a warning prolog (see @subpage use_case_review_with_warning and @subpage use_case_review_streaming) - for address verification: - @ref nbgl_useCaseAddressReview() to draw an address confirmation page, with a possibility to see it as QR Code and some extra tag/value pairs (see @subpage use_case_addr_review) - for keypad: @@ -455,6 +458,171 @@ void staticReview(void) { } @endcode +@subsection use_case_review_with_warning Review with warning Use Case + +\image{inline} html UseCase-Review-With-Warning.png "caption" height=500 + +The review itself behaves like in @subpage use_case_review. The main differences are: + +- The review itself is preceded by a warning page offering the possibility to cancel the review ("Back to safety") or to start it ("Continue anyway") +- In the first and last pages of the actual review, a top-right button offers the possibility to get more information about the warning + +The API to initiate the display of the series of pages is @ref nbgl_useCaseReviewWithWarning(), providing: + +- the type of operation to review (transaction, message or generic operation) +- the list of tag/value pairs (or a callback to get them one by one) +- the texts/icon to use in presentation page and in last page +- the configuration to use for the warning (see @ref nbgl_warning_t structure) +- a callback called when the long press button on last page or reject confirmation is used. The callback's param is *true* for confirmation, *false* for rejection. + +@note the recommended configuration for warning is the predefined one. In this case, one just has to fill the *predefinedSet* field of @ref nbgl_warning_t with the appropriate warning +causes (bitfield) and the *reportProvider* field with the name of the 3rd party providing the Web3Checks report, if necessary. + +Here is the code to display something similar to example picture: + +@code +// 4 pairs of tag/value to display +static nbgl_layoutTagValue_t pairs[4]; + +static const nbgl_contentTagValueList_t pairList = { + .nbMaxLinesForValue = 0, + .nbPairs = 4, + .pairs = (nbgl_layoutTagValue_t*)pairs +}; + +// warning description (cannot be in call stack) +static nbgl_warning_t warningDesc; + +// called when long press button on 3rd page is long-touched or when reject footer is touched +static void onReviewResult(bool confirm) { + // display a status page and go back to main + if (confirm) { + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_SIGNED, appMain); + } + else { + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_REJECTED, appMain); + } +} + +void staticReview(void) { + warningDesc.predefinedSet = (1 << W3C_LOSING_SWAP_WARN) | (1 << BLIND_SIGNING_WARN); + warningDesc.reportProvider = "Blockaid"; + + // static review, providing the whole list of pairs + nbgl_useCaseReviewWithWarning(TYPE_TRANSACTION, // type of operation + &pairList, // list of tag/value pairs + coinIcon, // icon of the coin + "Review transaction\nto send coin", // title of the first page + NULL, // sub-title of the first page + "Sign transaction to\nsend coin?", // title of the last page + NULL, // no tip-box in first page of review + warningDesc, // description of warning causes + onReviewResult); // callback on result of the review +} +@endcode + +Here is another version of the example code, not using predefined text: + +@code +// 4 pairs of tag/value to display +static nbgl_layoutTagValue_t pairs[4]; + +static const nbgl_contentTagValueList_t pairList = { + .nbMaxLinesForValue = 0, + .nbPairs = 4, + .pairs = (nbgl_layoutTagValue_t*)pairs +}; + +// icons for first level warning details +static const nbgl_icon_details_t *barListIcons[] = {&WARNING_ICON, &INFO_I_ICON}; + +// first level warning details +static const char *const barListTexts[] = {"Blind signing", "Risk detected"}; +static const char *const barListSubTexts[] = {"This transaction cannot be fully decoded.", "Web3 Checks found a risk:\nLosing swap"}; +// second level warning details in prolog +static const struct nbgl_warningDetails_s barListIntroDetails[] = { + {.title = "Back", + .type = QRCODE_WARNING, + .qrCode = {.url = "ledger.com/e8", .text1 = "ledger.com/e8", .text2 = "Scan to learn about the risks of blind signing.", .centered = true}}, + {.title = "Back", + .type = QRCODE_WARNING, + .qrCode = {.url = "url.com/od24xz", .text1 = "url.com/od24xz", .text2 = "Scan to view the risk report from Blockaid.", .centered = true}} +}; + +// second level warning details in review +static const struct nbgl_warningDetails_s barListIntroDetails[] = { + {.title = "Back", + .type = CENTERED_INFO_WARNING, + .centeredInfo = {.icon = &C_Warning_64px, .title = "Blind signing", .description = "This transaction’s details are not fully verifiable. If you sign it, you could lose all your assets.\n\nLearn about blind signing: +ledger.com/e8"}}, + {.title = "Back", + .type = CENTERED_INFO_WARNING, + .centeredInfo = {.icon = &C_Warning_64px, .title = "Risk detected", .description = "This transaction was scanned as risky by Web3 Checks.\n\nView full Blockaid report:url.com/od24xz"}} +}; + +// info in main warning page +static const nbgl_contentCenter_t warningInfo = { + .icon = &C_Warning_64px, + .title = "Dangerous transaction", + .description = "This transaction cannot be fully decoded, and was marked risky by Web3 Checks." +}; + +// first level warning details in prolog +static const nbgl_warningDetails_t warningIntroDetails = { + .title = "Security report", + .type = BAR_LIST_WARNING, + .barList.nbBars = 2, + .barList.icons = barListIcons, + .texts = barListTexts, + .subTexts = barListSubTexts, + .barList.details = barListIntroDetails +}; + +// first level warning details in review (when pressing top-right from first and last pages) +static const nbgl_warningDetails_t warningReviewDetails = { + .title = "Security report", + .type = BAR_LIST_WARNING, + .barList.nbBars = 2, + .barList.icons = barListIcons, + .texts = barListTexts, + .subTexts = barListSubTexts, + .barList.details = barListReviewDetails +}; + +// warning description (cannot be in call stack) +static const nbgl_warning_t warningDesc = { + .info = &warningInfo, + .introTopRightIcon = &PRIVACY_ICON, + .reviewTopRightIcon = &WARNING_ICON, + .introDetails = &warningIntroDetails, + .reviewDetails = &warningReviewDetails +}; + +// called when long press button on 3rd page is long-touched or when reject footer is touched +static void onReviewResult(bool confirm) { + // display a status page and go back to main + if (confirm) { + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_SIGNED, appMain); + } + else { + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_REJECTED, appMain); + } +} + +void staticReview(void) { + // static review, providing the whole list of pairs + nbgl_useCaseReviewWithWarning(TYPE_TRANSACTION, // type of operation + &pairList, // list of tag/value pairs + coinIcon, // icon of the coin + "Review transaction\nto send coin", // title of the first page + NULL, // sub-title of the first page + "Sign transaction to\nsend coin?", // title of the last page + NULL, // no tip-box in first page of review + warningDesc, // description of warning causes + onReviewResult); // callback on result of the review +} +@endcode + @subsection use_case_addr_review Address Review Use Case \image{inline} html UseCase-AddressReview.png "caption" height=500 diff --git a/lib_nbgl/doc/resources/UseCase-Review-With-Warning.png b/lib_nbgl/doc/resources/UseCase-Review-With-Warning.png new file mode 100755 index 0000000000000000000000000000000000000000..7829ed476510b332a55278c338bb3f00f7e4ff7a GIT binary patch literal 271013 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
e(@#G&FItc#jbB8%T$~)FPo+51>wl= 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±yY2g6v^J1Ade)fU! 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 z`{@tU?Hz`reportProvider) { + provider = reviewWithWarnCtx.warning->reportProvider; + } + else { + provider = "[unknown]"; + } if (set & (1 << BLIND_SIGNING_WARN)) { if (reviewWithWarnCtx.isIntro) { #ifdef NBGL_QRCODE @@ -1923,7 +1931,7 @@ static void displaySecurityReport(uint32_t set) headerDesc.separationLine = false; } } - if (set & (1 << W3C_ISSUE_WARN)) { + else if (set & (1 << W3C_ISSUE_WARN)) { // if W3 Checks issue, display a centered info nbgl_contentCenter_t info = {0}; info.icon = &C_Important_Circle_64px; @@ -1936,25 +1944,26 @@ static void displaySecurityReport(uint32_t set) if (reviewWithWarnCtx.isIntro) { #ifdef NBGL_QRCODE // display a QR Code if in intro - nbgl_layoutQRCode_t qrCode = {.url = "url.com/od24xz", - .text1 = "url.com/od24xz", - .text2 = "Scan to view the threat report from Blockaid.", + nbgl_layoutQRCode_t qrCode = {.url = "url.com/od24xz", + .text1 = "url.com/od24xz", + .text2 = tmpString, .centered = true, .offsetY = 0}; + snprintf(tmpString, + W3C_DESCRIPTION_MAX_LEN, + "Scan to view the threat report from %s.", + provider); nbgl_layoutAddQRCode(reviewWithWarnCtx.modalLayout, &qrCode); #endif // NBGL_QRCODE headerDesc.backAndText.text = "Web3 Checks threat report"; } else { // display a centered if in review - nbgl_contentCenter_t info = {0}; - const char *provider = reviewWithWarnCtx.warning->reportProvider - ? reviewWithWarnCtx.warning->reportProvider - : "[unknown]"; - info.icon = &C_Warning_64px; - info.title = "Threat detected"; - info.smallTitle = "Known drainer contract"; - info.description = tmpString; + nbgl_contentCenter_t info = {0}; + info.icon = &C_Warning_64px; + info.title = "Threat detected"; + info.smallTitle = "Known drainer contract"; + info.description = tmpString; snprintf(tmpString, W3C_DESCRIPTION_MAX_LEN, "This transaction was scanned as malicious by Web3 Checks.\n\nView full %s " @@ -1970,23 +1979,24 @@ static void displaySecurityReport(uint32_t set) // display a QR Code if in intro nbgl_layoutQRCode_t qrCode = {.url = "url.com/od24xz", .text1 = "url.com/od24xz", - .text2 = "Scan to view the risk report from Blockaid.", + .text2 = tmpString, .centered = true, .offsetY = 0}; + snprintf(tmpString, + W3C_DESCRIPTION_MAX_LEN, + "Scan to view the risk report from %s.", + provider); nbgl_layoutAddQRCode(reviewWithWarnCtx.modalLayout, &qrCode); #endif // NBGL_QRCODE headerDesc.backAndText.text = "Web3 Checks risk report"; } else { // display a centered if in review - nbgl_contentCenter_t info = {0}; - const char *provider = reviewWithWarnCtx.warning->reportProvider - ? reviewWithWarnCtx.warning->reportProvider - : "[unknown]"; - info.icon = &C_Warning_64px; - info.title = "Risk detected"; - info.smallTitle = "Losing swap"; - info.description = tmpString; + nbgl_contentCenter_t info = {0}; + info.icon = &C_Warning_64px; + info.title = "Risk detected"; + info.smallTitle = "Losing swap"; + info.description = tmpString; snprintf(tmpString, W3C_DESCRIPTION_MAX_LEN, "This transaction was scanned as risky by Web3 Checks.\n\n" From b8374c1770da18f9be2ae168ee81c2a7fd202dba Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Thu, 23 Jan 2025 13:37:03 +0100 Subject: [PATCH 32/53] Add empty footer in warning screens --- lib_nbgl/src/nbgl_use_case.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index 3713a917c..a06dd676f 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -1862,9 +1862,11 @@ static void displaySecurityReport(uint32_t set) .backAndText.icon = NULL, .backAndText.tuneId = TUNE_TAP_CASUAL, .backAndText.token = DISMISS_WARNING_TOKEN}; - uint8_t i; - uint8_t nbWarnings = 0; - const char *provider; + nbgl_layoutFooter_t footerDesc + = {.type = FOOTER_EMPTY, .separationLine = false, .emptySpace.height = 0}; + uint8_t i; + uint8_t nbWarnings = 0; + const char *provider; reviewWithWarnCtx.modalLayout = nbgl_layoutGet(&layoutDescription); @@ -1915,6 +1917,7 @@ static void displaySecurityReport(uint32_t set) .centered = true, .offsetY = 0}; nbgl_layoutAddQRCode(reviewWithWarnCtx.modalLayout, &qrCode); + footerDesc.emptySpace.height = 24; #endif // NBGL_QRCODE headerDesc.backAndText.text = "Blind signing report"; } @@ -1928,7 +1931,8 @@ static void displaySecurityReport(uint32_t set) "lose all your assets.\n\n" "Learn about blind signing:\nledger.com/e8"; nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); - headerDesc.separationLine = false; + footerDesc.emptySpace.height = MEDIUM_CENTERING_HEADER; + headerDesc.separationLine = false; } } else if (set & (1 << W3C_ISSUE_WARN)) { @@ -1938,7 +1942,8 @@ static void displaySecurityReport(uint32_t set) info.title = "Web3 Checks could not verify this message"; info.description = "An issue prevented Web3 Checks from running.\nGet help: ledger.com/e11"; nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); - headerDesc.separationLine = false; + footerDesc.emptySpace.height = MEDIUM_CENTERING_HEADER; + headerDesc.separationLine = false; } else if (set & (1 << W3C_THREAT_DETECTED_WARN)) { if (reviewWithWarnCtx.isIntro) { @@ -1954,6 +1959,7 @@ static void displaySecurityReport(uint32_t set) "Scan to view the threat report from %s.", provider); nbgl_layoutAddQRCode(reviewWithWarnCtx.modalLayout, &qrCode); + footerDesc.emptySpace.height = 24; #endif // NBGL_QRCODE headerDesc.backAndText.text = "Web3 Checks threat report"; } @@ -1970,7 +1976,8 @@ static void displaySecurityReport(uint32_t set) "report:\nurl.com/od24xz", provider); nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); - headerDesc.separationLine = false; + footerDesc.emptySpace.height = MEDIUM_CENTERING_HEADER; + headerDesc.separationLine = false; } } else if (set & (1 << W3C_LOSING_SWAP_WARN)) { @@ -1987,6 +1994,7 @@ static void displaySecurityReport(uint32_t set) "Scan to view the risk report from %s.", provider); nbgl_layoutAddQRCode(reviewWithWarnCtx.modalLayout, &qrCode); + footerDesc.emptySpace.height = 24; #endif // NBGL_QRCODE headerDesc.backAndText.text = "Web3 Checks risk report"; } @@ -2003,10 +2011,14 @@ static void displaySecurityReport(uint32_t set) "View full %s report:\\nurl.com/od24xz", provider); nbgl_layoutAddContentCenter(reviewWithWarnCtx.modalLayout, &info); - headerDesc.separationLine = false; + footerDesc.emptySpace.height = MEDIUM_CENTERING_HEADER; + headerDesc.separationLine = false; } } nbgl_layoutAddHeader(reviewWithWarnCtx.modalLayout, &headerDesc); + if (footerDesc.emptySpace.height > 0) { + nbgl_layoutAddExtendedFooter(reviewWithWarnCtx.modalLayout, &footerDesc); + } nbgl_layoutDraw(reviewWithWarnCtx.modalLayout); nbgl_refresh(); } From fb6ff490a9e577682deb973665c51ac75e7d6e03 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Fri, 24 Jan 2025 14:47:58 +0100 Subject: [PATCH 33/53] Fix case when multi-pages text contains '\n' at page break --- lib_nbgl/src/nbgl_step.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib_nbgl/src/nbgl_step.c b/lib_nbgl/src/nbgl_step.c index 69bb1328f..95e4f9118 100644 --- a/lib_nbgl/src/nbgl_step.c +++ b/lib_nbgl/src/nbgl_step.c @@ -251,6 +251,10 @@ static void displayTextPage(StepContext_t *ctx, uint8_t textPage) BAGL_FONT_OPEN_SANS_REGULAR_11px_1bpp, txt, AVAILABLE_WIDTH, nbLines, &len, true); // memorize next position to save processing ctx->textContext.nextPageStart = txt + len; + // if the next char is '\n', skip it to avoid starting with an empty line + if (*ctx->textContext.nextPageStart == '\n') { + ctx->textContext.nextPageStart++; + } } else { ctx->textContext.nextPageStart = NULL; From 22030aeb0313cf282295590ae954662dc5d0aaa0 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Mon, 27 Jan 2025 12:36:21 +0100 Subject: [PATCH 34/53] Remove call to missing field in Use Case in level 22 --- lib_nbgl/src/nbgl_use_case.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case.c b/lib_nbgl/src/nbgl_use_case.c index a06dd676f..8beba798f 100644 --- a/lib_nbgl/src/nbgl_use_case.c +++ b/lib_nbgl/src/nbgl_use_case.c @@ -1859,7 +1859,6 @@ static void displaySecurityReport(uint32_t set) .tapActionText = NULL}; nbgl_layoutHeader_t headerDesc = {.type = HEADER_BACK_AND_TEXT, .separationLine = true, - .backAndText.icon = NULL, .backAndText.tuneId = TUNE_TAP_CASUAL, .backAndText.token = DISMISS_WARNING_TOKEN}; nbgl_layoutFooter_t footerDesc @@ -2034,7 +2033,6 @@ static void displayCustomizedSecurityReport(const nbgl_warningDetails_t *details .tapActionText = NULL}; nbgl_layoutHeader_t headerDesc = {.type = HEADER_BACK_AND_TEXT, .separationLine = true, - .backAndText.icon = NULL, .backAndText.tuneId = TUNE_TAP_CASUAL, .backAndText.token = DISMISS_WARNING_TOKEN}; uint8_t i; From e51e770546ad0561bf16ae868756f84f69ad9376 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Thu, 23 Jan 2025 17:27:13 +0100 Subject: [PATCH 35/53] Update actions/upload-artifact to v4 (cherry picked from commit 7fc8a66bc1baaab5d3fface803a2b1ef083b8c21) --- .github/workflows/check_clang_static_analyzer.yml | 2 +- .github/workflows/unit_tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check_clang_static_analyzer.yml b/.github/workflows/check_clang_static_analyzer.yml index 8eea72f42..213541bda 100644 --- a/.github/workflows/check_clang_static_analyzer.yml +++ b/.github/workflows/check_clang_static_analyzer.yml @@ -38,7 +38,7 @@ jobs: make scan-build -j ENABLE_SDK_WERROR=1 DEBUG=${{ matrix.debug }} - name: Upload scan result - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: failure() with: name: scan-build diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 155dc7cd0..5986a0e85 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -52,7 +52,7 @@ jobs: genhtml coverage.info -o coverage - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: code-coverage path: unit-tests/lib_*/coverage From ef691e8c31b3c3d55b671f76207e05ca446e57b0 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 10:06:55 +0100 Subject: [PATCH 36/53] Add missing API nbgl_useCaseGetNbxxx (cherry picked from commit 178550e18423fa25236d952ff40930d654b6db09) --- lib_nbgl/include/nbgl_use_case.h | 2 +- lib_nbgl/src/nbgl_use_case_nanos.c | 153 +++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+), 1 deletion(-) diff --git a/lib_nbgl/include/nbgl_use_case.h b/lib_nbgl/include/nbgl_use_case.h index 0d227e59e..0a9f24a86 100644 --- a/lib_nbgl/include/nbgl_use_case.h +++ b/lib_nbgl/include/nbgl_use_case.h @@ -431,7 +431,6 @@ void nbgl_useCaseStatus(const char *message, bool isSuccess, nbgl_callback_t qui void nbgl_useCaseSpinner(const char *text); -#ifdef HAVE_SE_TOUCH // utils uint8_t nbgl_useCaseGetNbTagValuesInPage(uint8_t nbPairs, const nbgl_contentTagValueList_t *tagValueList, @@ -460,6 +459,7 @@ uint8_t nbgl_useCaseGetNbChoicesInPage(uint8_t nbChoice bool withNav); uint8_t nbgl_useCaseGetNbPagesForTagValueList(const nbgl_contentTagValueList_t *tagValueList); +#ifdef HAVE_SE_TOUCH // use case drawing DEPRECATED void nbgl_useCaseHome(const char *appName, const nbgl_icon_details_t *appIcon, diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 0b821c461..f421c2492 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -708,6 +708,159 @@ static void displayChoicePage(nbgl_stepPosition_t pos) * GLOBAL FUNCTIONS **********************/ +/** + * @brief with Nano Screen, only a single tag/value pair is displayable in a page + * + * @param nbPairs unused + * @param tagValueList unused + * @param startIndex unused + * @param requireSpecificDisplay (output) set to true if the tag/value needs a specific display: + * - centeredInfo flag is enabled + * - the tag/value doesn't fit in a page + * @return the number of tag/value pairs fitting in a page + */ +uint8_t nbgl_useCaseGetNbTagValuesInPage(uint8_t nbPairs, + const nbgl_contentTagValueList_t *tagValueList, + uint8_t startIndex, + bool *requireSpecificDisplay) +{ + UNUSED(nbPairs); + UNUSED(tagValueList); + UNUSED(startIndex); + *requireSpecificDisplay = true; + return 1; +} + +/** + * @brief with Nano Screen, only a single tag/value pair is displayable in a page + * + * @param nbPairs unused + * @param tagValueList unused + * @param startIndex unused + * @param isSkippable unused + * @param requireSpecificDisplay (output) set to true if the tag/value needs a specific display: + * - centeredInfo flag is enabled + * - the tag/value doesn't fit in a page + * @return the number of tag/value pairs fitting in a page + */ +uint8_t nbgl_useCaseGetNbTagValuesInPageExt(uint8_t nbPairs, + const nbgl_contentTagValueList_t *tagValueList, + uint8_t startIndex, + bool isSkippable, + bool *requireSpecificDisplay) +{ + UNUSED(nbPairs); + UNUSED(tagValueList); + UNUSED(startIndex); + UNUSED(isSkippable); + *requireSpecificDisplay = true; + return 1; +} + +/** + * @brief with Nano Screen, only a single info is displayable in a page + * + * @param nbInfos unused + * @param infosList unused + * @param startIndex unused + * @return the number of infos fitting in a page + */ +uint8_t nbgl_useCaseGetNbInfosInPage(uint8_t nbInfos, + const nbgl_contentInfoList_t *infosList, + uint8_t startIndex, + bool withNav) +{ + UNUSED(nbInfos); + UNUSED(infosList); + UNUSED(startIndex); + UNUSED(withNav); + return 1; +} + +/** + * @brief with Nano Screen, only a single switch is displayable in a page + * + * @param nbSwitches unused + * @param switchesList unused + * @param startIndex unused + * @return the number of switches fitting in a page + */ +uint8_t nbgl_useCaseGetNbSwitchesInPage(uint8_t nbSwitches, + const nbgl_contentSwitchesList_t *switchesList, + uint8_t startIndex, + bool withNav) +{ + UNUSED(nbSwitches); + UNUSED(switchesList); + UNUSED(startIndex); + UNUSED(withNav); + return 1; +} + +/** + * @brief with Nano Screen, only a single bar is displayable in a page + * + * @param nbBars unused + * @param barsList unused + * @param startIndex unused + * @return the number of bars fitting in a page + */ +uint8_t nbgl_useCaseGetNbBarsInPage(uint8_t nbBars, + const nbgl_contentBarsList_t *barsList, + uint8_t startIndex, + bool withNav) +{ + UNUSED(nbBars); + UNUSED(barsList); + UNUSED(startIndex); + UNUSED(withNav); + return 1; +} + +/** + * @brief with Nano Screen, only a single radio choice displayable in a page + * + * @param nbChoices unused + * @param choicesList unused + * @param startIndex unused + * @return the number of radio choices fitting in a page + */ +uint8_t nbgl_useCaseGetNbChoicesInPage(uint8_t nbChoices, + const nbgl_contentRadioChoice_t *choicesList, + uint8_t startIndex, + bool withNav) +{ + UNUSED(nbChoices); + UNUSED(choicesList); + UNUSED(startIndex); + UNUSED(withNav); + return 1; +} + +/** + * @brief computes the number of pages necessary to display the given list of tag/value pairs + * + * @param tagValueList list of tag/value pairs + * @return the number of pages necessary to display the given list of tag/value pairs + */ +uint8_t nbgl_useCaseGetNbPagesForTagValueList(const nbgl_contentTagValueList_t *tagValueList) +{ + uint8_t nbPages = 0; + uint8_t nbPairs = tagValueList->nbPairs; + uint8_t nbPairsInPage; + uint8_t i = 0; + bool flag; + + while (i < tagValueList->nbPairs) { + // upper margin + nbPairsInPage = nbgl_useCaseGetNbTagValuesInPageExt(nbPairs, tagValueList, i, false, &flag); + i += nbPairsInPage; + nbPairs -= nbPairsInPage; + nbPages++; + } + return nbPages; +} + /** * @brief Draws the extended version of home page of an app (page on which we land when launching it * from dashboard) with automatic support of setting display. From a4ff2aaae0c05a540709291aad471e44000d6e7b Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 10:10:18 +0100 Subject: [PATCH 37/53] Add missing API nbgl_useCaseGenericSettings & nbgl_useCaseGenericConfiguration (cherry picked from commit 35b08101f7f2ea133aed3c0c219271b2a129c5f7) --- lib_nbgl/include/nbgl_use_case.h | 11 ++--- lib_nbgl/src/nbgl_use_case_nanos.c | 64 ++++++++++++++++++++++++++++-- 2 files changed, 66 insertions(+), 9 deletions(-) diff --git a/lib_nbgl/include/nbgl_use_case.h b/lib_nbgl/include/nbgl_use_case.h index 0a9f24a86..98cc9ad0c 100644 --- a/lib_nbgl/include/nbgl_use_case.h +++ b/lib_nbgl/include/nbgl_use_case.h @@ -420,6 +420,12 @@ void nbgl_useCaseGenericConfiguration(const char *title, const nbgl_genericContents_t *contents, nbgl_callback_t quitCallback); +void nbgl_useCaseGenericSettings(const char *appName, + uint8_t initPage, + const nbgl_genericContents_t *settingContents, + const nbgl_contentInfoList_t *infosList, + nbgl_callback_t quitCallback); + void nbgl_useCaseChoice(const nbgl_icon_details_t *icon, const char *message, const char *subMessage, @@ -488,11 +494,6 @@ DEPRECATED void nbgl_useCaseSettings(const char *settingsTitle, nbgl_callback_t quitCallback, nbgl_navCallback_t navCallback, nbgl_layoutTouchCallback_t controlsCallback); -void nbgl_useCaseGenericSettings(const char *appName, - uint8_t initPage, - const nbgl_genericContents_t *settingContents, - const nbgl_contentInfoList_t *infosList, - nbgl_callback_t quitCallback); void nbgl_useCaseConfirm(const char *message, const char *subMessage, const char *confirmText, diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index f421c2492..26951a115 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -62,6 +62,7 @@ typedef enum { HOME_USE_CASE, INFO_USE_CASE, SETTINGS_USE_CASE, + GENERIC_SETTINGS, } ContextType_t; typedef struct UseCaseContext_s { @@ -532,9 +533,14 @@ static void displaySettingsPage(nbgl_stepPosition_t pos, bool toogle_state) } } else { // last page is for quit - icon = &C_icon_back_x; - text = "Back"; - context.stepCallback = startUseCaseHome; + icon = &C_icon_back_x; + text = "Back"; + if (context.type == GENERIC_SETTINGS) { + context.stepCallback = context.home.quitCallback; + } + else { + context.stepCallback = startUseCaseHome; + } } drawStep(pos, icon, text, subText, settingsCallback); @@ -572,7 +578,10 @@ static void startUseCaseSettingsAtPage(uint8_t initSettingPage) nbgl_content_t content; const nbgl_content_t *p_content; - context.type = SETTINGS_USE_CASE; + if (context.type == 0) { + // Not yet init, it is not a GENERIC_SETTINGS + context.type = SETTINGS_USE_CASE; + } context.nbPages = 1; // For back screen for (int i = 0; i < context.home.settingContents->nbContents; i++) { p_content = getContentAtIdx(context.home.settingContents, i, &content); @@ -902,6 +911,53 @@ void nbgl_useCaseHomeAndSettings(const char *appName, } } +/** + * @brief Draws the settings pages of an app with automatic pagination depending on content + * to be displayed that is passed through settingContents and infosList + * + * @param appName string to use as title + * @param initPage page on which to start, can be != 0 if you want to display a specific page + * after a setting confirmation change or something. Then the value should be taken from the + * nbgl_contentActionCallback_t callback call. + * @param settingContents contents to be displayed + * @param infosList infos to be displayed (version, license, developer, ...) + * @param quitCallback callback called when quit button (or title) is pressed + */ +void nbgl_useCaseGenericSettings(const char *appName, + uint8_t initPage, + const nbgl_genericContents_t *settingContents, + const nbgl_contentInfoList_t *infosList, + nbgl_callback_t quitCallback) +{ + memset(&context, 0, sizeof(UseCaseContext_t)); + context.type = GENERIC_SETTINGS; + context.home.appName = appName; + context.home.settingContents = PIC(settingContents); + context.home.infosList = PIC(infosList); + context.home.quitCallback = quitCallback; + + startUseCaseSettingsAtPage(initPage); +} + +/** + * @brief Draws a set of pages with automatic pagination depending on content + * to be displayed that is passed through contents. + * + * @param title string to use as title + * @param initPage page on which to start, can be != 0 if you want to display a specific page + * after a confirmation change or something. Then the value should be taken from the + * nbgl_contentActionCallback_t callback call. + * @param contents contents to be displayed + * @param quitCallback callback called when quit button (or title) is pressed + */ +void nbgl_useCaseGenericConfiguration(const char *title, + uint8_t initPage, + const nbgl_genericContents_t *contents, + nbgl_callback_t quitCallback) +{ + nbgl_useCaseGenericSettings(title, initPage, contents, NULL, quitCallback); +} + /** * @brief Draws a flow of pages of a review. * @note All tag/value pairs are provided in the API and the number of pages is automatically From 66dc1454d6c31b830108cd022bd7c8c5ee6f1c92 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 10:16:46 +0100 Subject: [PATCH 38/53] Improve nbgl_useCaseStatus to support icon display (cherry picked from commit 5ffaabc90c3ef0193aa5adaa800ff6ead2cd0dd5) --- lib_nbgl/src/nbgl_use_case_nanos.c | 31 ++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 26951a115..51454def5 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -59,6 +59,7 @@ typedef enum { STREAMING_CONTINUE_REVIEW_USE_CASE, STREAMING_FINISH_REVIEW_USE_CASE, CHOICE_USE_CASE, + STATUS_USE_CASE, HOME_USE_CASE, INFO_USE_CASE, SETTINGS_USE_CASE, @@ -98,6 +99,8 @@ static void startUseCaseInfo(void); static void startUseCaseSettings(void); static void startUseCaseSettingsAtPage(uint8_t initSettingPage); +static void statusTickerCallback(void); + // Simple helper to get the number of elements inside a nbgl_content_t static uint8_t getContentNbElement(const nbgl_content_t *content) { @@ -237,10 +240,20 @@ static void drawStep(nbgl_stepPosition_t pos, const char *subTxt, nbgl_stepButtonCallback_t onActionCallback) { + nbgl_screenTickerConfiguration_t *p_ticker = NULL; + nbgl_screenTickerConfiguration_t ticker = { + .tickerCallback = PIC(statusTickerCallback), + .tickerIntervale = 0, // not periodic + .tickerValue = 3000 // 3 seconds + }; + pos |= GET_POS_OF_STEP(context.currentPage, context.nbPages); + if (context.type == STATUS_USE_CASE) { + p_ticker = &ticker; + } if (icon == NULL) { - nbgl_stepDrawText(pos, onActionCallback, NULL, txt, subTxt, BOLD_TEXT1_INFO, false); + nbgl_stepDrawText(pos, onActionCallback, p_ticker, txt, subTxt, BOLD_TEXT1_INFO, false); } else { nbgl_layoutCenteredInfo_t info; @@ -249,7 +262,7 @@ static void drawStep(nbgl_stepPosition_t pos, info.text2 = subTxt; info.onTop = false; info.style = BOLD_TEXT1_INFO; - nbgl_stepDrawCenteredInfo(pos, onActionCallback, NULL, &info, false); + nbgl_stepDrawCenteredInfo(pos, onActionCallback, p_ticker, &info, false); } } @@ -1081,22 +1094,16 @@ void nbgl_useCaseAddressReview(const char *address, */ void nbgl_useCaseStatus(const char *message, bool isSuccess, nbgl_callback_t quitCallback) { - UNUSED(isSuccess); // TODO add icon depending on isSuccess? + const nbgl_icon_details_t *icon = NULL; memset(&context, 0, sizeof(UseCaseContext_t)); + context.type = STATUS_USE_CASE; context.stepCallback = quitCallback; context.currentPage = 0; context.nbPages = 1; - nbgl_screenTickerConfiguration_t ticker = { - .tickerCallback = PIC(statusTickerCallback), - .tickerIntervale = 0, // not periodic - .tickerValue = 3000 // 3 seconds - }; - - nbgl_stepDrawText( - SINGLE_STEP, statusButtonCallback, &ticker, message, NULL, BOLD_TEXT1_INFO, false); - nbgl_refresh(); + icon = isSuccess ? &C_icon_validate_14 : &C_icon_crossmark; + drawStep(SINGLE_STEP, icon, message, NULL, statusButtonCallback); } /** From e389e53a140ed5066ef35e286947fa7af6ec7aea Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 10:36:41 +0100 Subject: [PATCH 39/53] Add missing API nbgl_useCaseConfirm - support modal screens (cherry picked from commit 2d24b6849052449e75537e8df45de4b4bc3505f5) --- lib_nbgl/include/nbgl_use_case.h | 10 +- lib_nbgl/src/nbgl_use_case_nanos.c | 144 ++++++++++++++++++++++++++--- 2 files changed, 135 insertions(+), 19 deletions(-) diff --git a/lib_nbgl/include/nbgl_use_case.h b/lib_nbgl/include/nbgl_use_case.h index 98cc9ad0c..7924b9949 100644 --- a/lib_nbgl/include/nbgl_use_case.h +++ b/lib_nbgl/include/nbgl_use_case.h @@ -435,6 +435,11 @@ void nbgl_useCaseChoice(const nbgl_icon_details_t *icon, void nbgl_useCaseStatus(const char *message, bool isSuccess, nbgl_callback_t quitCallback); +void nbgl_useCaseConfirm(const char *message, + const char *subMessage, + const char *confirmText, + const char *rejectText, + nbgl_callback_t callback); void nbgl_useCaseSpinner(const char *text); // utils @@ -494,11 +499,6 @@ DEPRECATED void nbgl_useCaseSettings(const char *settingsTitle, nbgl_callback_t quitCallback, nbgl_navCallback_t navCallback, nbgl_layoutTouchCallback_t controlsCallback); -void nbgl_useCaseConfirm(const char *message, - const char *subMessage, - const char *confirmText, - const char *rejectText, - nbgl_callback_t callback); void nbgl_useCaseReviewStart(const nbgl_icon_details_t *icon, const char *reviewTitle, const char *reviewSubTitle, diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 51454def5..92ac12726 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -42,6 +42,15 @@ typedef struct ChoiceContext_s { nbgl_choiceCallback_t onChoice; } ChoiceContext_t; +typedef struct ConfirmContext_s { + const char *message; + const char *subMessage; + const char *confirmText; + const char *cancelText; + nbgl_callback_t onConfirm; + nbgl_step_t currentStep; +} ConfirmContext_t; + typedef struct HomeContext_s { const char *appName; const nbgl_icon_details_t *appIcon; @@ -60,6 +69,7 @@ typedef enum { STREAMING_FINISH_REVIEW_USE_CASE, CHOICE_USE_CASE, STATUS_USE_CASE, + CONFIRM_USE_CASE, HOME_USE_CASE, INFO_USE_CASE, SETTINGS_USE_CASE, @@ -73,9 +83,10 @@ typedef struct UseCaseContext_s { nbgl_stepCallback_t stepCallback; ///< if not NULL, function to be called on "double-key" action union { - ReviewContext_t review; - ChoiceContext_t choice; - HomeContext_t home; + ReviewContext_t review; + ChoiceContext_t choice; + ConfirmContext_t confirm; + HomeContext_t home; }; } UseCaseContext_t; @@ -93,6 +104,7 @@ static void displayHomePage(nbgl_stepPosition_t pos); static void displayInfoPage(nbgl_stepPosition_t pos); static void displaySettingsPage(nbgl_stepPosition_t pos, bool toogle_state); static void displayChoicePage(nbgl_stepPosition_t pos); +static void displayConfirm(nbgl_stepPosition_t pos); static void startUseCaseHome(void); static void startUseCaseInfo(void); @@ -208,6 +220,25 @@ static void onChoiceReject(void) } } +static void onConfirmAccept(void) +{ + if (context.confirm.currentStep) { + nbgl_stepRelease(context.confirm.currentStep); + } + if (context.confirm.onConfirm) { + context.confirm.onConfirm(); + } +} + +static void onConfirmReject(void) +{ + if (context.confirm.currentStep) { + nbgl_stepRelease(context.confirm.currentStep); + nbgl_screenRedraw(); + nbgl_refresh(); + } +} + static void onSettingsAction(void) { nbgl_content_t content; @@ -238,8 +269,10 @@ static void drawStep(nbgl_stepPosition_t pos, const nbgl_icon_details_t *icon, const char *txt, const char *subTxt, - nbgl_stepButtonCallback_t onActionCallback) + nbgl_stepButtonCallback_t onActionCallback, + bool modal) { + nbgl_step_t newStep = NULL; nbgl_screenTickerConfiguration_t *p_ticker = NULL; nbgl_screenTickerConfiguration_t ticker = { .tickerCallback = PIC(statusTickerCallback), @@ -252,8 +285,12 @@ static void drawStep(nbgl_stepPosition_t pos, if (context.type == STATUS_USE_CASE) { p_ticker = &ticker; } + if ((context.type == CONFIRM_USE_CASE) && (context.confirm.currentStep != NULL)) { + nbgl_stepRelease(context.confirm.currentStep); + } if (icon == NULL) { - nbgl_stepDrawText(pos, onActionCallback, p_ticker, txt, subTxt, BOLD_TEXT1_INFO, false); + newStep = nbgl_stepDrawText( + pos, onActionCallback, p_ticker, txt, subTxt, BOLD_TEXT1_INFO, modal); } else { nbgl_layoutCenteredInfo_t info; @@ -262,7 +299,10 @@ static void drawStep(nbgl_stepPosition_t pos, info.text2 = subTxt; info.onTop = false; info.style = BOLD_TEXT1_INFO; - nbgl_stepDrawCenteredInfo(pos, onActionCallback, p_ticker, &info, false); + newStep = nbgl_stepDrawCenteredInfo(pos, onActionCallback, p_ticker, &info, modal); + } + if (context.type == CONFIRM_USE_CASE) { + context.confirm.currentStep = newStep; } } @@ -369,6 +409,18 @@ static void genericChoiceCallback(nbgl_step_t stepCtx, nbgl_buttonEvent_t event) displayChoicePage(pos); } +static void genericConfirmCallback(nbgl_step_t stepCtx, nbgl_buttonEvent_t event) +{ + UNUSED(stepCtx); + nbgl_stepPosition_t pos; + + if (!buttonGenericCallback(event, &pos)) { + return; + } + + displayConfirm(pos); +} + static void statusButtonCallback(nbgl_step_t stepCtx, nbgl_buttonEvent_t event) { UNUSED(stepCtx); @@ -421,7 +473,7 @@ static void displayReviewPage(nbgl_stepPosition_t pos) getPairData(context.review.tagValueList, pairIndex, &text, &subText); } - drawStep(pos, icon, text, subText, reviewCallback); + drawStep(pos, icon, text, subText, reviewCallback, false); nbgl_refresh(); } @@ -468,7 +520,7 @@ static void displayStreamingReviewPage(nbgl_stepPosition_t pos) } } - drawStep(pos, icon, text, subText, streamingReviewCallback); + drawStep(pos, icon, text, subText, streamingReviewCallback, false); nbgl_refresh(); } @@ -493,7 +545,7 @@ static void displayInfoPage(nbgl_stepPosition_t pos) context.stepCallback = startUseCaseHome; } - drawStep(pos, icon, text, subText, infoCallback); + drawStep(pos, icon, text, subText, infoCallback, false); nbgl_refresh(); } @@ -556,7 +608,7 @@ static void displaySettingsPage(nbgl_stepPosition_t pos, bool toogle_state) } } - drawStep(pos, icon, text, subText, settingsCallback); + drawStep(pos, icon, text, subText, settingsCallback, false); nbgl_refresh(); } @@ -673,7 +725,7 @@ static void displayHomePage(nbgl_stepPosition_t pos) break; } - drawStep(pos, icon, text, subText, homeCallback); + drawStep(pos, icon, text, subText, homeCallback, false); nbgl_refresh(); } @@ -722,7 +774,39 @@ static void displayChoicePage(nbgl_stepPosition_t pos) context.stepCallback = onChoiceReject; } - drawStep(pos, icon, text, subText, genericChoiceCallback); + drawStep(pos, icon, text, subText, genericChoiceCallback, false); + nbgl_refresh(); +} + +// function used to display the Confirm page +static void displayConfirm(nbgl_stepPosition_t pos) +{ + const char *text = NULL; + const char *subText = NULL; + const nbgl_icon_details_t *icon = NULL; + + context.stepCallback = NULL; + switch (context.currentPage) { + case 0: + // title page + text = context.confirm.message; + subText = context.confirm.subMessage; + break; + case 1: + // confirm page + icon = &C_icon_validate_14; + text = context.confirm.confirmText; + context.stepCallback = onConfirmAccept; + break; + case 2: + // cancel page + icon = &C_icon_crossmark; + text = context.confirm.cancelText; + context.stepCallback = onConfirmReject; + break; + } + + drawStep(pos, icon, text, subText, genericConfirmCallback, true); nbgl_refresh(); } @@ -1103,7 +1187,7 @@ void nbgl_useCaseStatus(const char *message, bool isSuccess, nbgl_callback_t qui context.nbPages = 1; icon = isSuccess ? &C_icon_validate_14 : &C_icon_crossmark; - drawStep(SINGLE_STEP, icon, message, NULL, statusButtonCallback); + drawStep(SINGLE_STEP, icon, message, NULL, statusButtonCallback, false); } /** @@ -1252,7 +1336,7 @@ void nbgl_useCaseReviewStreamingFinish(const char *finishTitle, */ void nbgl_useCaseSpinner(const char *text) { - drawStep(SINGLE_STEP, &C_icon_processing, text, NULL, NULL); + drawStep(SINGLE_STEP, &C_icon_processing, text, NULL, NULL, false); nbgl_refresh(); } @@ -1277,5 +1361,37 @@ void nbgl_useCaseChoice(const nbgl_icon_details_t *icon, displayChoicePage(FORWARD_DIRECTION); }; +/** + * @brief Draws a page to confirm or not an action, described in a centered info (with info icon), + * thanks to a button and a footer at the bottom of the page. The given callback is called if the + * button is touched. If the footer is touched, the page is only "dismissed" + * @note This page is displayed as a modal (so the content of the previous page will be visible when + * dismissed). + * + * @param message string to set in center of page (32px) + * @param subMessage string to set under message (24px) (can be NULL) + * @param confirmText string to set in button, to confirm + * @param cancelText string to set in footer, to reject + * @param callback callback called when confirmation button is touched + */ +void nbgl_useCaseConfirm(const char *message, + const char *subMessage, + const char *confirmText, + const char *cancelText, + nbgl_callback_t callback) +{ + memset(&context, 0, sizeof(UseCaseContext_t)); + context.type = CONFIRM_USE_CASE; + context.confirm.message = message; + context.confirm.subMessage = subMessage; + context.confirm.confirmText = confirmText; + context.confirm.cancelText = cancelText; + context.confirm.onConfirm = callback; + context.currentPage = 0; + context.nbPages = 1 + 2; // 2 pages at the end for confirm/cancel + + displayConfirm(FORWARD_DIRECTION); +} + #endif // HAVE_SE_TOUCH #endif // NBGL_USE_CASE From 67809bc9b9d3fd5f6bb687f6be2a46ca37c1f21f Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 11:50:23 +0100 Subject: [PATCH 40/53] Add missing API nbgl_useCaseReviewBlindSigning (cherry picked from commit 84d8978ff424e0f2c930f49ee6e19d5ef4cf39b5) --- lib_nbgl/src/nbgl_use_case_nanos.c | 228 ++++++++++++++++++++++++----- 1 file changed, 189 insertions(+), 39 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 92ac12726..414a9b7b8 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -30,6 +30,7 @@ typedef struct ReviewContext_s { const nbgl_contentTagValueList_t *tagValueList; const nbgl_icon_details_t *icon; const char *reviewTitle; + const char *reviewSubTitle; const char *address; // for address confirmation review } ReviewContext_t; @@ -63,6 +64,7 @@ typedef struct HomeContext_s { typedef enum { NONE_USE_CASE, REVIEW_USE_CASE, + REVIEW_BLIND_SIGN_USE_CASE, ADDRESS_REVIEW_USE_CASE, STREAMING_START_REVIEW_USE_CASE, STREAMING_CONTINUE_REVIEW_USE_CASE, @@ -442,34 +444,80 @@ static void statusTickerCallback(void) // function used to display the current page in review static void displayReviewPage(nbgl_stepPosition_t pos) { - const char *text = NULL; - const char *subText = NULL; - const nbgl_icon_details_t *icon = NULL; + uint8_t reviewPages = 0; + uint8_t finalPages = 0; + uint8_t pairIndex = 0; + const char *text = NULL; + const char *subText = NULL; + const nbgl_icon_details_t *icon = NULL; + uint8_t currentIndex = 0; + uint8_t warnIndex = 255; + uint8_t titleIndex = 255; + uint8_t subIndex = 255; + uint8_t approveIndex = 255; + uint8_t rejectIndex = 255; context.stepCallback = NULL; - if (context.currentPage == 0) { // title page - icon = context.review.icon; - text = context.review.reviewTitle; + // Determine the 1st page to display tag/values + if (context.type == REVIEW_BLIND_SIGN_USE_CASE) { + // Warning page to display + warnIndex = currentIndex++; + reviewPages++; } - else if (context.currentPage == (context.nbPages - 2)) { // accept page - icon = &C_icon_validate_14; - text = "Approve"; - context.stepCallback = onReviewAccept; + // Title page to display + titleIndex = currentIndex++; + reviewPages++; + if (context.review.reviewSubTitle) { + // subtitle page to display + subIndex = currentIndex++; + reviewPages++; } - else if (context.currentPage == (context.nbPages - 1)) { // reject page - icon = &C_icon_crossmark; - text = "Reject"; - context.stepCallback = onReviewReject; + approveIndex = context.nbPages - 2; + rejectIndex = context.nbPages - 1; + finalPages = approveIndex; + + // Determine which page to display + if (context.currentPage >= finalPages) { + if (context.currentPage == approveIndex) { + // Approve page + icon = &C_icon_validate_14; + text = "Approve"; + context.stepCallback = onReviewAccept; + } + else if (context.currentPage == rejectIndex) { + // Reject page + icon = &C_icon_crossmark; + text = "Reject"; + context.stepCallback = onReviewReject; + } + } + else if (context.currentPage < reviewPages) { + if (context.currentPage == warnIndex) { + // Blind Signing Warning page + icon = &C_icon_warning; + text = "Blind\nsigning"; + } + else if (context.currentPage == titleIndex) { + // Title page + icon = context.review.icon; + text = context.review.reviewTitle; + } + else if (context.currentPage == subIndex) { + // SubTitle page + text = context.review.reviewSubTitle; + } } - else if ((context.review.address != NULL) - && (context.currentPage == 1)) { // address confirmation and 2nd page + else if ((context.review.address != NULL) && (context.currentPage == reviewPages)) { + // address confirmation and 2nd page text = "Address"; subText = context.review.address; } else { - uint8_t pairIndex = (context.review.address != NULL) ? (context.currentPage - 2) - : (context.currentPage - 1); + pairIndex = context.currentPage - reviewPages; + if (context.review.address != NULL) { + pairIndex--; + } getPairData(context.review.tagValueList, pairIndex, &text, &subText); } @@ -810,6 +858,37 @@ static void displayConfirm(nbgl_stepPosition_t pos) nbgl_refresh(); } +// function to factorize code for all simple reviews +static void useCaseReview(ContextType_t type, + const nbgl_contentTagValueList_t *tagValueList, + const nbgl_icon_details_t *icon, + const char *reviewTitle, + const char *reviewSubTitle, + const char *finishTitle, + nbgl_choiceCallback_t choiceCallback) +{ + UNUSED(finishTitle); // TODO dedicated screen for it? + + memset(&context, 0, sizeof(UseCaseContext_t)); + context.type = type; + context.review.tagValueList = tagValueList; + context.review.reviewTitle = reviewTitle; + context.review.reviewSubTitle = reviewSubTitle; + context.review.icon = icon; + context.review.onChoice = choiceCallback; + context.currentPage = 0; + // 1 page for title and 2 pages at the end for accept/reject + context.nbPages = tagValueList->nbPairs + 3; + if (type == REVIEW_BLIND_SIGN_USE_CASE) { + context.nbPages++; // 1 page for warning + } + if (reviewSubTitle) { + context.nbPages++; // 1 page for subtitle page + } + + displayReviewPage(FORWARD_DIRECTION); +} + /********************** * GLOBAL FUNCTIONS **********************/ @@ -1077,21 +1156,93 @@ void nbgl_useCaseReview(nbgl_operationType_t operationType, const char *finishTitle, nbgl_choiceCallback_t choiceCallback) { - UNUSED(operationType); // TODO adapt accept and reject text depending on this value? - UNUSED(reviewSubTitle); // TODO dedicated screen for it? - UNUSED(finishTitle); // TODO dedicated screen for it? + UNUSED(operationType); // TODO adapt accept and reject text depending on this value? + + useCaseReview(REVIEW_USE_CASE, + tagValueList, + icon, + reviewTitle, + reviewSubTitle, + finishTitle, + choiceCallback); +} - memset(&context, 0, sizeof(UseCaseContext_t)); - context.type = REVIEW_USE_CASE; - context.review.tagValueList = tagValueList; - context.review.reviewTitle = reviewTitle; - context.review.icon = icon; - context.review.onChoice = choiceCallback; - context.currentPage = 0; - // + 3 because 1 page for title and 2 pages at the end for accept/reject - context.nbPages = tagValueList->nbPairs + 3; +/** + * @brief Draws a flow of pages of a review. Navigation operates with either swipe or navigation + * keys at bottom right. The last page contains a long-press button with the given finishTitle and + * the given icon. + * @note All tag/value pairs are provided in the API and the number of pages is automatically + * computed, the last page being a long press one + * + * @param operationType type of operation (Operation, Transaction, Message) + * @param tagValueList list of tag/value pairs + * @param icon icon used on first and last review page + * @param reviewTitle string used in the first review page + * @param reviewSubTitle string to set under reviewTitle (can be NULL) + * @param finishTitle string used in the last review page + * @param dummy inconsistent parameter on Nano devices (ignored) + * @param choiceCallback callback called when operation is accepted (param is true) or rejected + * (param is false) + */ +void nbgl_useCaseAdvancedReview(nbgl_operationType_t operationType, + const nbgl_contentTagValueList_t *tagValueList, + const nbgl_icon_details_t *icon, + const char *reviewTitle, + const char *reviewSubTitle, + const char *finishTitle, + const nbgl_tipBox_t *dummy, + nbgl_choiceCallback_t choiceCallback) +{ + UNUSED(operationType); // TODO adapt accept and reject text depending on this value? + UNUSED(dummy); + + useCaseReview(REVIEW_USE_CASE, + tagValueList, + icon, + reviewTitle, + reviewSubTitle, + finishTitle, + choiceCallback); +} - displayReviewPage(FORWARD_DIRECTION); +/** + * @brief Draws a flow of pages of a blind-signing review. The review is preceded by a warning page + * + * Navigation operates with either swipe or navigation + * keys at bottom right. The last page contains a long-press button with the given finishTitle and + * the given icon. + * @note All tag/value pairs are provided in the API and the number of pages is automatically + * computed, the last page being a long press one + * + * @param operationType type of operation (Operation, Transaction, Message) + * @param tagValueList list of tag/value pairs + * @param icon icon used on first and last review page + * @param reviewTitle string used in the first review page + * @param reviewSubTitle string to set under reviewTitle (can be NULL) + * @param finishTitle string used in the last review page + * @param dummy inconsistent parameter on Nano devices (ignored) + * @param choiceCallback callback called when operation is accepted (param is true) or rejected + * (param is false) + */ +void nbgl_useCaseReviewBlindSigning(nbgl_operationType_t operationType, + const nbgl_contentTagValueList_t *tagValueList, + const nbgl_icon_details_t *icon, + const char *reviewTitle, + const char *reviewSubTitle, + const char *finishTitle, + const nbgl_tipBox_t *dummy, + nbgl_choiceCallback_t choiceCallback) +{ + UNUSED(operationType); // TODO adapt accept and reject text depending on this value? + UNUSED(dummy); + + useCaseReview(REVIEW_BLIND_SIGN_USE_CASE, + tagValueList, + icon, + reviewTitle, + reviewSubTitle, + finishTitle, + choiceCallback); } /** @@ -1148,15 +1299,14 @@ void nbgl_useCaseAddressReview(const char *address, const char *reviewSubTitle, nbgl_choiceCallback_t choiceCallback) { - UNUSED(reviewSubTitle); // TODO dedicated screen for it? - memset(&context, 0, sizeof(UseCaseContext_t)); - context.type = ADDRESS_REVIEW_USE_CASE; - context.review.address = address; - context.review.reviewTitle = reviewTitle; - context.review.icon = icon; - context.review.onChoice = choiceCallback; - context.currentPage = 0; + context.type = ADDRESS_REVIEW_USE_CASE; + context.review.address = address; + context.review.reviewTitle = reviewTitle; + context.review.reviewSubTitle = reviewSubTitle; + context.review.icon = icon; + context.review.onChoice = choiceCallback; + context.currentPage = 0; // + 4 because 1 page for title, 1 for address and 2 pages at the end for approve/reject context.nbPages = 4; if (additionalTagValueList) { From ec36b197b63b7ebe6c5dd955016e6ae4fa4179c1 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 12:04:19 +0100 Subject: [PATCH 41/53] Add support of reviewSubTitle in streaming review (cherry picked from commit c3a4492b7a061a3dd039cf862d006a5a5bddc1af) --- lib_nbgl/src/nbgl_use_case_nanos.c | 54 ++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 414a9b7b8..55458f021 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -528,16 +528,42 @@ static void displayReviewPage(nbgl_stepPosition_t pos) // function used to display the current page in review static void displayStreamingReviewPage(nbgl_stepPosition_t pos) { - const char *text = NULL; - const char *subText = NULL; - const nbgl_icon_details_t *icon = NULL; + uint8_t reviewPages = 0; + const char *text = NULL; + const char *subText = NULL; + const nbgl_icon_details_t *icon = NULL; + uint8_t currentIndex = 0; + uint8_t titleIndex = 255; + uint8_t subIndex = 255; context.stepCallback = NULL; + // Title page to display + titleIndex = currentIndex++; if (context.type == STREAMING_START_REVIEW_USE_CASE) { - if (context.currentPage == 0) { // title page - icon = context.review.icon; - text = context.review.reviewTitle; + // Determine the 1st page to display tag/values + reviewPages = 1; // 1st page is for title + if (context.review.reviewSubTitle) { + // subtitle page to display + subIndex = currentIndex++; + reviewPages++; // 2nd page is for subtitle + } + // Determine which page to display + if (context.currentPage < reviewPages) { + // header page(s) + switch (context.currentPage) { + case titleIndex: + // title page + icon = context.review.icon; + text = context.review.reviewTitle; + break; + case subIndex: + // subtitle page + text = context.review.reviewSubTitle; + break; + default: + break; + } } else { nbgl_useCaseSpinner("Processing"); @@ -1408,16 +1434,16 @@ void nbgl_useCaseReviewStreamingStart(nbgl_operationType_t operationType, const char *reviewSubTitle, nbgl_choiceCallback_t choiceCallback) { - UNUSED(operationType); // TODO adapt accept and reject text depending on this value? - UNUSED(reviewSubTitle); // TODO dedicated screen for it? + UNUSED(operationType); // TODO adapt accept and reject text depending on this value? memset(&context, 0, sizeof(UseCaseContext_t)); - context.type = STREAMING_START_REVIEW_USE_CASE; - context.review.reviewTitle = reviewTitle; - context.review.icon = icon; - context.review.onChoice = choiceCallback; - context.currentPage = 0; - context.nbPages = 1 + 1; // Start page + trick for review continue + context.type = STREAMING_START_REVIEW_USE_CASE; + context.review.reviewTitle = reviewTitle; + context.review.reviewSubTitle = reviewSubTitle; + context.review.icon = icon; + context.review.onChoice = choiceCallback; + context.currentPage = 0; + context.nbPages = 2; // Start page + trick for review continue displayStreamingReviewPage(FORWARD_DIRECTION); } From 930617545f6cee7695fee38885944fa31709f7a7 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 12:16:14 +0100 Subject: [PATCH 42/53] Add missing API nbgl_useCaseReviewStreamingBlindSigningStart - factorize code (cherry picked from commit ac82e75e9ee426ff32dec457f0048a8e1fb82d5c) --- lib_nbgl/src/nbgl_use_case_nanos.c | 78 ++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 55458f021..971291a81 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -66,6 +66,7 @@ typedef enum { REVIEW_USE_CASE, REVIEW_BLIND_SIGN_USE_CASE, ADDRESS_REVIEW_USE_CASE, + STREAMING_BLIND_SIGN_START_REVIEW_USE_CASE, STREAMING_START_REVIEW_USE_CASE, STREAMING_CONTINUE_REVIEW_USE_CASE, STREAMING_FINISH_REVIEW_USE_CASE, @@ -533,14 +534,52 @@ static void displayStreamingReviewPage(nbgl_stepPosition_t pos) const char *subText = NULL; const nbgl_icon_details_t *icon = NULL; uint8_t currentIndex = 0; + uint8_t warnIndex = 255; uint8_t titleIndex = 255; uint8_t subIndex = 255; context.stepCallback = NULL; - // Title page to display - titleIndex = currentIndex++; - if (context.type == STREAMING_START_REVIEW_USE_CASE) { + if (context.type == STREAMING_BLIND_SIGN_START_REVIEW_USE_CASE) { + // warning page to display + warnIndex = currentIndex++; + // Title page to display + titleIndex = currentIndex++; + // Determine the 1st page to display tag/values + reviewPages = 1; // 1st page is for warning + reviewPages++; // 2nd page is for title + if (context.review.reviewSubTitle) { + // subtitle page to display + subIndex = currentIndex++; + reviewPages++; // 3rd page is for subtitle + } + // Determine which page to display + if (context.currentPage < reviewPages) { + // header page(s) + if (context.currentPage == warnIndex) { + // warning page + icon = &C_icon_warning; + text = "Blind\nsigning"; + } + else if (context.currentPage == titleIndex) { + // title page + icon = context.review.icon; + text = context.review.reviewTitle; + } + else if (context.currentPage == subIndex) { + // subtitle page + text = context.review.reviewSubTitle; + } + } + else { + nbgl_useCaseSpinner("Processing"); + onReviewAccept(); + return; + } + } + else if (context.type == STREAMING_START_REVIEW_USE_CASE) { + // Title page to display + titleIndex = currentIndex++; // Determine the 1st page to display tag/values reviewPages = 1; // 1st page is for title if (context.review.reviewSubTitle) { @@ -1448,6 +1487,39 @@ void nbgl_useCaseReviewStreamingStart(nbgl_operationType_t operationType, displayStreamingReviewPage(FORWARD_DIRECTION); } +/** + * @brief Start drawing the flow of pages of a blind-signing review. The review is preceded by a + * warning page + * @note This should be followed by calls to nbgl_useCaseReviewStreamingContinue and finally to + * nbgl_useCaseReviewStreamingFinish. + * + * @param operationType type of operation (Operation, Transaction, Message) + * @param icon icon used on first and last review page + * @param reviewTitle string used in the first review page + * @param reviewSubTitle string to set under reviewTitle (can be NULL) + * @param choiceCallback callback called when more operation data are needed (param is true) or + * operation is rejected (param is false) + */ +void nbgl_useCaseReviewStreamingBlindSigningStart(nbgl_operationType_t operationType, + const nbgl_icon_details_t *icon, + const char *reviewTitle, + const char *reviewSubTitle, + nbgl_choiceCallback_t choiceCallback) +{ + UNUSED(operationType); // TODO adapt accept and reject text depending on this value? + + memset(&context, 0, sizeof(UseCaseContext_t)); + context.type = STREAMING_BLIND_SIGN_START_REVIEW_USE_CASE; + context.review.reviewTitle = reviewTitle; + context.review.reviewSubTitle = reviewSubTitle; + context.review.icon = icon; + context.review.onChoice = choiceCallback; + context.currentPage = 0; + context.nbPages = 3; // Warning + Start page + trick for review continue + + displayStreamingReviewPage(FORWARD_DIRECTION); +} + /** * @brief Continue drawing the flow of pages of a review. * @note This should be called after a call to nbgl_useCaseReviewStreamingStart and can be followed From 73fb30c9c6c7e898dbb4d5102366ebc73ed08b3b Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 12:30:38 +0100 Subject: [PATCH 43/53] Optimize displayStreamingReviewPage (cherry picked from commit 2a6e69f4df916c44938fe582c9dabfacc636e622) --- lib_nbgl/src/nbgl_use_case_nanos.c | 140 ++++++++++++----------------- 1 file changed, 58 insertions(+), 82 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 971291a81..1fa3f1623 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -529,32 +529,43 @@ static void displayReviewPage(nbgl_stepPosition_t pos) // function used to display the current page in review static void displayStreamingReviewPage(nbgl_stepPosition_t pos) { - uint8_t reviewPages = 0; - const char *text = NULL; - const char *subText = NULL; - const nbgl_icon_details_t *icon = NULL; - uint8_t currentIndex = 0; - uint8_t warnIndex = 255; - uint8_t titleIndex = 255; - uint8_t subIndex = 255; + const char *text = NULL; + const char *subText = NULL; + const nbgl_icon_details_t *icon = NULL; + uint8_t reviewPages = 0; + uint8_t warnIndex = 255; + uint8_t titleIndex = 255; + uint8_t subIndex = 255; context.stepCallback = NULL; - if (context.type == STREAMING_BLIND_SIGN_START_REVIEW_USE_CASE) { - // warning page to display - warnIndex = currentIndex++; - // Title page to display - titleIndex = currentIndex++; - // Determine the 1st page to display tag/values - reviewPages = 1; // 1st page is for warning - reviewPages++; // 2nd page is for title - if (context.review.reviewSubTitle) { - // subtitle page to display - subIndex = currentIndex++; - reviewPages++; // 3rd page is for subtitle - } - // Determine which page to display - if (context.currentPage < reviewPages) { + switch (context.type) { + case STREAMING_START_REVIEW_USE_CASE: + case STREAMING_BLIND_SIGN_START_REVIEW_USE_CASE: + if (context.type == STREAMING_START_REVIEW_USE_CASE) { + // Title page to display + titleIndex = reviewPages++; + if (context.review.reviewSubTitle) { + // subtitle page to display + subIndex = reviewPages++; + } + } + else { + // warning page to display + warnIndex = reviewPages++; + // Title page to display + titleIndex = reviewPages++; + if (context.review.reviewSubTitle) { + // subtitle page to display + subIndex = reviewPages++; + } + } + // Determine which page to display + if (context.currentPage >= reviewPages) { + nbgl_useCaseSpinner("Processing"); + onReviewAccept(); + return; + } // header page(s) if (context.currentPage == warnIndex) { // warning page @@ -570,67 +581,32 @@ static void displayStreamingReviewPage(nbgl_stepPosition_t pos) // subtitle page text = context.review.reviewSubTitle; } - } - else { - nbgl_useCaseSpinner("Processing"); - onReviewAccept(); - return; - } - } - else if (context.type == STREAMING_START_REVIEW_USE_CASE) { - // Title page to display - titleIndex = currentIndex++; - // Determine the 1st page to display tag/values - reviewPages = 1; // 1st page is for title - if (context.review.reviewSubTitle) { - // subtitle page to display - subIndex = currentIndex++; - reviewPages++; // 2nd page is for subtitle - } - // Determine which page to display - if (context.currentPage < reviewPages) { - // header page(s) - switch (context.currentPage) { - case titleIndex: - // title page - icon = context.review.icon; - text = context.review.reviewTitle; - break; - case subIndex: - // subtitle page - text = context.review.reviewSubTitle; - break; - default: - break; + break; + + case STREAMING_CONTINUE_REVIEW_USE_CASE: + if (context.currentPage >= context.review.tagValueList->nbPairs) { + nbgl_useCaseSpinner("Processing"); + onReviewAccept(); + return; } - } - else { - nbgl_useCaseSpinner("Processing"); - onReviewAccept(); - return; - } - } - else if (context.type == STREAMING_CONTINUE_REVIEW_USE_CASE) { - if (context.currentPage < context.review.tagValueList->nbPairs) { getPairData(context.review.tagValueList, context.currentPage, &text, &subText); - } - else { - nbgl_useCaseSpinner("Processing"); - onReviewAccept(); - return; - } - } - else { - if (context.currentPage == 0) { // accept page - icon = &C_icon_validate_14; - text = "Approve"; - context.stepCallback = onReviewAccept; - } - else { // reject page - icon = &C_icon_crossmark; - text = "Reject"; - context.stepCallback = onReviewReject; - } + break; + + case STREAMING_FINISH_REVIEW_USE_CASE: + default: + if (context.currentPage == 0) { + // accept page + icon = &C_icon_validate_14; + text = "Approve"; + context.stepCallback = onReviewAccept; + } + else { + // reject page + icon = &C_icon_crossmark; + text = "Reject"; + context.stepCallback = onReviewReject; + } + break; } drawStep(pos, icon, text, subText, streamingReviewCallback, false); From 1792fd1e12443e87ee9a5aaff1c0c1ca0cdbfa05 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 14:06:17 +0100 Subject: [PATCH 44/53] Add support for 'action' in Home&Settings (cherry picked from commit 91cb1d7fe2ab9726550ba7ac6510501fcb2140bc) --- lib_nbgl/src/nbgl_use_case_nanos.c | 137 ++++++++++++++++------------- 1 file changed, 77 insertions(+), 60 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 1fa3f1623..b8daeecc1 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -58,6 +58,7 @@ typedef struct HomeContext_s { const char *tagline; const nbgl_genericContents_t *settingContents; const nbgl_contentInfoList_t *infosList; + const nbgl_homeAction_t *homeAction; nbgl_callback_t quitCallback; } HomeContext_t; @@ -703,18 +704,37 @@ static void displaySettingsPage(nbgl_stepPosition_t pos, bool toogle_state) static void startUseCaseHome(void) { - if (context.type == SETTINGS_USE_CASE) { - context.currentPage = 1; + int8_t addPages = 0; + if (context.home.homeAction) { + // Action page index + addPages++; } - else if (context.type == INFO_USE_CASE) { - context.currentPage = 2; - } - else { - context.currentPage = 0; + switch (context.type) { + case SETTINGS_USE_CASE: + // Settings page index + context.currentPage = 1 + addPages; + break; + case INFO_USE_CASE: + // Info page index + context.currentPage = 2 + addPages; + break; + default: + // Home page index + context.currentPage = 0; + break; } - context.type = HOME_USE_CASE; - context.nbPages = 4; + context.type = HOME_USE_CASE; + context.nbPages = 2; // Home + Quit + if (context.home.settingContents) { + context.nbPages++; + } + if (context.home.infosList) { + context.nbPages++; + } + if (context.home.homeAction) { + context.nbPages += addPages; + } displayHomePage(FORWARD_DIRECTION); } @@ -754,64 +774,62 @@ static void startUseCaseSettings(void) // function used to display the current page in home static void displayHomePage(nbgl_stepPosition_t pos) { - const char *text = NULL; - const char *subText = NULL; - const nbgl_icon_details_t *icon = NULL; + const char *text = NULL; + const char *subText = NULL; + const nbgl_icon_details_t *icon = NULL; + uint8_t currentIndex = 0; + uint8_t homeIndex = 255; + uint8_t actionIndex = 255; + uint8_t settingsIndex = 255; + uint8_t infoIndex = 255; context.stepCallback = NULL; - // Handle case where there is no settings - if (context.home.settingContents == NULL && context.currentPage == 1) { - if (pos & BACKWARD_DIRECTION) { - context.currentPage -= 1; - } - else { - context.currentPage += 1; - if (context.home.infosList == NULL) { - context.currentPage += 1; - } - } + // Determine which pages are present + homeIndex = currentIndex++; + if (context.home.homeAction) { + actionIndex = currentIndex++; + } + if (context.home.settingContents) { + settingsIndex = currentIndex++; + } + if (context.home.infosList) { + infoIndex = currentIndex++; } - // Handle case where there is no info - if (context.home.infosList == NULL && context.currentPage == 2) { - if (pos & BACKWARD_DIRECTION) { - context.currentPage -= 1; - if (context.home.settingContents == NULL) { - context.currentPage -= 1; - } + if (context.currentPage == homeIndex) { + // Home page + icon = context.home.appIcon; + if (context.home.tagline != NULL) { + text = context.home.tagline; } else { - context.currentPage += 1; + text = context.home.appName; + subText = "is ready"; } } - - switch (context.currentPage) { - case 0: - icon = context.home.appIcon; - if (context.home.tagline != NULL) { - text = context.home.tagline; - } - else { - text = context.home.appName; - subText = "is ready"; - } - break; - case 1: - icon = &C_icon_coggle; - text = "Settings"; - context.stepCallback = startUseCaseSettings; - break; - case 2: - icon = &C_icon_certificate; - text = "About"; - context.stepCallback = startUseCaseInfo; - break; - default: - icon = &C_icon_dashboard_x; - text = "Quit"; - context.stepCallback = context.home.quitCallback; - break; + else if (context.currentPage == actionIndex) { + // Action page + icon = context.home.homeAction->icon; + text = PIC(context.home.homeAction->text); + context.stepCallback = context.home.homeAction->callback; + } + else if (context.currentPage == settingsIndex) { + // Settings page + icon = &C_icon_coggle; + text = "Settings"; + context.stepCallback = startUseCaseSettings; + } + else if (context.currentPage == infoIndex) { + // About page + icon = &C_icon_certificate; + text = "About"; + context.stepCallback = startUseCaseInfo; + } + else { + icon = &C_icon_dashboard_x; + text = "Quit"; + context.stepCallback = context.home.quitCallback; } drawStep(pos, icon, text, subText, homeCallback, false); @@ -1110,14 +1128,13 @@ void nbgl_useCaseHomeAndSettings(const char *appName, const nbgl_homeAction_t *action, nbgl_callback_t quitCallback) { - UNUSED(action); // TODO support it at some point? - memset(&context, 0, sizeof(UseCaseContext_t)); context.home.appName = appName; context.home.appIcon = appIcon; context.home.tagline = tagline; context.home.settingContents = PIC(settingContents); context.home.infosList = PIC(infosList); + context.home.homeAction = action; context.home.quitCallback = quitCallback; if (initSettingPage != INIT_HOME_PAGE) { From f0df3a5031d703ffc6aa1bc1c13f7dad79dc709c Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 15:45:40 +0100 Subject: [PATCH 45/53] Add missing API nbgl_useCaseNavigableContent (cherry picked from commit 22070caf7cfb2ea8c6a11030d9d111276cb2e176) --- lib_nbgl/include/nbgl_flow.h | 13 +- lib_nbgl/include/nbgl_use_case.h | 13 +- lib_nbgl/src/nbgl_use_case_nanos.c | 207 ++++++++++++++++++++++++++++- 3 files changed, 221 insertions(+), 12 deletions(-) diff --git a/lib_nbgl/include/nbgl_flow.h b/lib_nbgl/include/nbgl_flow.h index 142e3b2bd..204361381 100644 --- a/lib_nbgl/include/nbgl_flow.h +++ b/lib_nbgl/include/nbgl_flow.h @@ -51,7 +51,18 @@ typedef struct nbgl_stepDesc_s { #endif // HAVE_LANGUAGE_PACK } nbgl_stepDesc_t; -typedef nbgl_stepDesc_t nbgl_pageContent_t; +/** + * @brief This structure contains data to build a page in multi-pages mode (@ref + * nbgl_pageDrawGenericContent) + */ +typedef struct nbgl_pageContent_s { + nbgl_contentType_t type; ///< type of page content in the following union + union { + nbgl_contentTagValueList_t tagValueList; ///< @ref TAG_VALUE_LIST type + nbgl_contentSwitchesList_t switchesList; ///< @ref SWITCHES_LIST type + nbgl_contentInfoList_t infosList; ///< @ref INFOS_LIST type + }; +} nbgl_pageContent_t; /********************** * GLOBAL PROTOTYPES diff --git a/lib_nbgl/include/nbgl_use_case.h b/lib_nbgl/include/nbgl_use_case.h index 7924b9949..6036079ac 100644 --- a/lib_nbgl/include/nbgl_use_case.h +++ b/lib_nbgl/include/nbgl_use_case.h @@ -442,6 +442,13 @@ void nbgl_useCaseConfirm(const char *message, nbgl_callback_t callback); void nbgl_useCaseSpinner(const char *text); +void nbgl_useCaseNavigableContent(const char *title, + uint8_t initPage, + uint8_t nbPages, + nbgl_callback_t quitCallback, + nbgl_navCallback_t navCallback, + nbgl_layoutTouchCallback_t controlsCallback); + // utils uint8_t nbgl_useCaseGetNbTagValuesInPage(uint8_t nbPairs, const nbgl_contentTagValueList_t *tagValueList, @@ -486,12 +493,6 @@ DEPRECATED void nbgl_useCaseHomeExt(const char *appName, nbgl_callback_t actionCallback, nbgl_callback_t topRightCallback, nbgl_callback_t quitCallback); -void nbgl_useCaseNavigableContent(const char *title, - uint8_t initPage, - uint8_t nbPages, - nbgl_callback_t quitCallback, - nbgl_navCallback_t navCallback, - nbgl_layoutTouchCallback_t controlsCallback); DEPRECATED void nbgl_useCaseSettings(const char *settingsTitle, uint8_t initPage, uint8_t nbPages, diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index b8daeecc1..59ad19682 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -52,6 +52,13 @@ typedef struct ConfirmContext_s { nbgl_step_t currentStep; } ConfirmContext_t; +typedef struct ContentContext_s { + nbgl_genericContents_t genericContents; + const char *rejectText; + nbgl_layoutTouchCallback_t controlsCallback; + nbgl_callback_t quitCallback; +} ContentContext_t; + typedef struct HomeContext_s { const char *appName; const nbgl_icon_details_t *appIcon; @@ -78,6 +85,7 @@ typedef enum { INFO_USE_CASE, SETTINGS_USE_CASE, GENERIC_SETTINGS, + CONTENT_USE_CASE, } ContextType_t; typedef struct UseCaseContext_s { @@ -91,6 +99,7 @@ typedef struct UseCaseContext_s { ChoiceContext_t choice; ConfirmContext_t confirm; HomeContext_t home; + ContentContext_t content; }; } UseCaseContext_t; @@ -109,11 +118,13 @@ static void displayInfoPage(nbgl_stepPosition_t pos); static void displaySettingsPage(nbgl_stepPosition_t pos, bool toogle_state); static void displayChoicePage(nbgl_stepPosition_t pos); static void displayConfirm(nbgl_stepPosition_t pos); +static void displayContent(nbgl_stepPosition_t pos, bool toogle_state); static void startUseCaseHome(void); static void startUseCaseInfo(void); static void startUseCaseSettings(void); static void startUseCaseSettingsAtPage(uint8_t initSettingPage); +static void startUseCaseContent(void); static void statusTickerCallback(void); @@ -258,9 +269,33 @@ static void onSettingsAction(void) nbgl_state_t state = (contentSwitch->initState == ON_STATE) ? OFF_STATE : ON_STATE; displaySettingsPage(FORWARD_DIRECTION, true); if (p_content->contentActionCallback != NULL) { - nbgl_contentActionCallback_t onContentAction - = PIC(p_content->contentActionCallback); - onContentAction(contentSwitch->token, state, context.currentPage); + nbgl_contentActionCallback_t actionCallback = PIC(p_content->contentActionCallback); + actionCallback(contentSwitch->token, state, context.currentPage); + } + break; + } + default: + break; + } +} + +static void onContentAction(void) +{ + nbgl_content_t content; + uint8_t elemIdx; + + const nbgl_content_t *p_content = getContentElemAtIdx( + &context.content.genericContents, context.currentPage, &elemIdx, &content); + + switch (p_content->type) { + case SWITCHES_LIST: { + const nbgl_contentSwitch_t *contentSwitch = &((const nbgl_contentSwitch_t *) PIC( + p_content->content.switchesList.switches))[elemIdx]; + nbgl_state_t state = (contentSwitch->initState == ON_STATE) ? OFF_STATE : ON_STATE; + displayContent(FORWARD_DIRECTION, true); + if (p_content->contentActionCallback != NULL) { + nbgl_contentActionCallback_t actionCallback = PIC(p_content->contentActionCallback); + actionCallback(contentSwitch->token, state, context.currentPage); } break; } @@ -312,6 +347,7 @@ static void drawStep(nbgl_stepPosition_t pos, static bool buttonGenericCallback(nbgl_buttonEvent_t event, nbgl_stepPosition_t *pos) { + uint8_t token = 0; if (event == BUTTON_LEFT_PRESSED) { if (context.currentPage > 0) { context.currentPage--; @@ -333,8 +369,23 @@ static bool buttonGenericCallback(nbgl_buttonEvent_t event, nbgl_stepPosition_t *pos = FORWARD_DIRECTION; } else { - if ((event == BUTTON_BOTH_PRESSED) && (context.stepCallback != NULL)) { - context.stepCallback(); + if (event == BUTTON_BOTH_PRESSED) { + if (context.stepCallback != NULL) { + context.stepCallback(); + } + else if (context.type == CONTENT_USE_CASE) { + if (context.content.controlsCallback != NULL) { + switch (context.content.genericContents.contentsList->type) { + case SWITCHES_LIST: + token = context.content.genericContents.contentsList->content + .switchesList.switches->token; + break; + default: + break; + } + context.content.controlsCallback(token + context.currentPage, 0); + } + } } return false; } @@ -435,6 +486,18 @@ static void statusButtonCallback(nbgl_step_t stepCtx, nbgl_buttonEvent_t event) } } +static void contentCallback(nbgl_step_t stepCtx, nbgl_buttonEvent_t event) +{ + UNUSED(stepCtx); + nbgl_stepPosition_t pos; + + if (!buttonGenericCallback(event, &pos)) { + return; + } + + displayContent(pos, false); +} + // callback used for timeout static void statusTickerCallback(void) { @@ -771,6 +834,22 @@ static void startUseCaseSettings(void) startUseCaseSettingsAtPage(0); } +static void startUseCaseContent(void) +{ + uint8_t contentIdx = 0; + const nbgl_content_t *p_content = NULL; + nbgl_content_t content = {0}; + + context.nbPages = 1; // Quit + + for (contentIdx = 0; contentIdx < context.content.genericContents.nbContents; contentIdx++) { + p_content = getContentAtIdx(&context.content.genericContents, contentIdx, &content); + context.nbPages += getContentNbElement(p_content); + } + + displayContent(FORWARD_DIRECTION, false); +} + // function used to display the current page in home static void displayHomePage(nbgl_stepPosition_t pos) { @@ -917,6 +996,68 @@ static void displayConfirm(nbgl_stepPosition_t pos) nbgl_refresh(); } +// function used to display the current navigable content +static void displayContent(nbgl_stepPosition_t pos, bool toogle_state) +{ + const char *text = NULL; + const char *subText = NULL; + const nbgl_icon_details_t *icon = NULL; + + context.stepCallback = NULL; + + if (context.currentPage < (context.nbPages - 1)) { + nbgl_content_t nbgl_content; + uint8_t elemIdx; + + const nbgl_content_t *p_nbgl_content = getContentElemAtIdx( + context.home.settingContents, context.currentPage, &elemIdx, &nbgl_content); + + switch (p_nbgl_content->type) { + case TAG_VALUE_LIST: + getPairData(&p_nbgl_content->content.tagValueList, elemIdx, &text, &subText); + break; + case SWITCHES_LIST: { + const nbgl_contentSwitch_t *contentSwitch = &((const nbgl_contentSwitch_t *) PIC( + p_nbgl_content->content.switchesList.switches))[elemIdx]; + text = contentSwitch->text; + // switch subtext is ignored + nbgl_state_t state = contentSwitch->initState; + if (toogle_state) { + state = (state == ON_STATE) ? OFF_STATE : ON_STATE; + } + if (state == ON_STATE) { + subText = "Enabled"; + } + else { + subText = "Disabled"; + } + context.stepCallback = onContentAction; + break; + } + case INFOS_LIST: + text = ((const char *const *) PIC( + p_nbgl_content->content.infosList.infoTypes))[elemIdx]; + subText = ((const char *const *) PIC( + p_nbgl_content->content.infosList.infoContents))[elemIdx]; + break; + default: + break; + } + } + else { // last page is for quit + icon = &C_icon_back_x; + if (context.content.rejectText) { + text = context.content.rejectText; + } + else { + text = "Back"; + } + context.stepCallback = context.content.quitCallback; + } + drawStep(pos, icon, text, subText, contentCallback, false); + nbgl_refresh(); +} + // function to factorize code for all simple reviews static void useCaseReview(ContextType_t type, const nbgl_contentTagValueList_t *tagValueList, @@ -1105,6 +1246,62 @@ uint8_t nbgl_useCaseGetNbPagesForTagValueList(const nbgl_contentTagValueList_t * return nbPages; } +/** + * @brief Initiates the drawing a set of pages of generic content, with a touchable header (usually + * to go back or to an upper level) For each page (including the first one), the given 'navCallback' + * will be called to get the content. Only 'type' and union has to be set in this content. + * + * @param title string to set in touchable title (header) + * @param initPage page on which to start [0->(nbPages-1)] + * @param nbPages number of pages + * @param quitCallback callback called title is pressed + * @param navCallback callback called when navigation arrows are pressed + * @param controlsCallback callback called when any controls in the settings (radios, switches) is + * called (the tokens must be >= @ref FIRST_USER_TOKEN) + */ +void nbgl_useCaseNavigableContent(const char *title, + uint8_t initPage, + uint8_t nbPages, + nbgl_callback_t quitCallback, + nbgl_navCallback_t navCallback, + nbgl_layoutTouchCallback_t controlsCallback) +{ + nbgl_pageContent_t pageContent = {0}; + static nbgl_content_t contentsList = {0}; + + if (initPage >= nbPages) { + return; + } + // Use Callback to get the page content + if (navCallback(initPage, &pageContent) == false) { + return; + } + memset(&context, 0, sizeof(UseCaseContext_t)); + context.type = CONTENT_USE_CASE; + context.content.quitCallback = quitCallback; + context.content.controlsCallback = controlsCallback; + context.content.genericContents.callbackCallNeeded = false; + context.content.genericContents.nbContents = nbPages; + + contentsList.type = pageContent.type; + switch (pageContent.type) { + case TAG_VALUE_LIST: + contentsList.content.tagValueList = pageContent.tagValueList; + break; + case SWITCHES_LIST: + contentsList.content.switchesList = pageContent.switchesList; + break; + case INFOS_LIST: + contentsList.content.infosList = pageContent.infosList; + break; + default: + break; + } + context.content.genericContents.contentsList = (const nbgl_content_t *) &contentsList; + + startUseCaseContent(); +} + /** * @brief Draws the extended version of home page of an app (page on which we land when launching it * from dashboard) with automatic support of setting display. From f62bba49f315961a4a613afcf2e0d069065ecd42 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 16:42:45 +0100 Subject: [PATCH 46/53] Add missing API nbgl_useCaseGenericReview (cherry picked from commit a57dff604c2031fb282f03a92a893e4c5711e66e) --- lib_nbgl/src/nbgl_use_case_nanos.c | 39 ++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 59ad19682..5b01c78f8 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -72,6 +72,7 @@ typedef struct HomeContext_s { typedef enum { NONE_USE_CASE, REVIEW_USE_CASE, + GENERIC_REVIEW_USE_CASE, REVIEW_BLIND_SIGN_USE_CASE, ADDRESS_REVIEW_USE_CASE, STREAMING_BLIND_SIGN_START_REVIEW_USE_CASE, @@ -373,7 +374,8 @@ static bool buttonGenericCallback(nbgl_buttonEvent_t event, nbgl_stepPosition_t if (context.stepCallback != NULL) { context.stepCallback(); } - else if (context.type == CONTENT_USE_CASE) { + else if ((context.type == CONTENT_USE_CASE) + || (context.type == GENERIC_REVIEW_USE_CASE)) { if (context.content.controlsCallback != NULL) { switch (context.content.genericContents.contentsList->type) { case SWITCHES_LIST: @@ -1045,13 +1047,18 @@ static void displayContent(nbgl_stepPosition_t pos, bool toogle_state) } } else { // last page is for quit - icon = &C_icon_back_x; if (context.content.rejectText) { text = context.content.rejectText; } else { text = "Back"; } + if (context.type == GENERIC_REVIEW_USE_CASE) { + icon = &C_icon_crossmark; + } + else { + icon = &C_icon_back_x; + } context.stepCallback = context.content.quitCallback; } drawStep(pos, icon, text, subText, contentCallback, false); @@ -1574,6 +1581,34 @@ void nbgl_useCaseAddressReview(const char *address, displayReviewPage(FORWARD_DIRECTION); } +/** + * @brief Draws a flow of pages of a review with automatic pagination depending on content + * to be displayed that is passed through contents. + * + * @param contents contents to be displayed + * @param rejectText text to use in footer + * @param rejectCallback callback called when reject is pressed + */ +void nbgl_useCaseGenericReview(const nbgl_genericContents_t *contents, + const char *rejectText, + nbgl_callback_t rejectCallback) +{ + memset(&context, 0, sizeof(UseCaseContext_t)); + context.type = GENERIC_REVIEW_USE_CASE; + context.content.rejectText = rejectText; + context.content.quitCallback = rejectCallback; + context.content.genericContents.nbContents = contents->nbContents; + context.content.genericContents.callbackCallNeeded = contents->callbackCallNeeded; + if (contents->callbackCallNeeded) { + context.content.genericContents.contentGetterCallback = contents->contentGetterCallback; + } + else { + context.content.genericContents.contentsList = PIC(contents->contentsList); + } + + startUseCaseContent(); +} + /** * @brief Draws a transient (3s) status page, either of success or failure, with the given message * From e72700ab84c8219df7d86fa602934336431d0b67 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Sat, 18 Jan 2025 11:18:58 +0100 Subject: [PATCH 47/53] Fix nbgl_useCaseAddressReview - Fix additional tags handling (PIC) - Align STATUS_TYPE_ADDRESS_REJECTED message with Stax/Flex (cherry picked from commit cf4e13fb90b7b2a89cabd96a80aa044022f8f311) --- lib_nbgl/src/nbgl_use_case_nanos.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 5b01c78f8..39e797e4b 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -1572,9 +1572,7 @@ void nbgl_useCaseAddressReview(const char *address, // + 4 because 1 page for title, 1 for address and 2 pages at the end for approve/reject context.nbPages = 4; if (additionalTagValueList) { - memcpy(&context.review.tagValueList, - additionalTagValueList, - sizeof(nbgl_contentTagValueList_t)); + context.review.tagValueList = PIC(additionalTagValueList); context.nbPages += additionalTagValueList->nbPairs; } @@ -1671,7 +1669,7 @@ void nbgl_useCaseReviewStatus(nbgl_reviewStatusType_t reviewStatusType, isSuccess = true; break; case STATUS_TYPE_ADDRESS_REJECTED: - msg = "Verification\ncancelled"; + msg = "Address verification cancelled"; isSuccess = false; break; default: From 9ca4bfaaf1a4c352190c88c81a475db31144ffad Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 24 Jan 2025 17:43:08 +0100 Subject: [PATCH 48/53] Fix nbgl_useCaseSpinner removing navigation (cherry picked from commit f77dfb8562c85c0cc9ffb98c1a2e7bc3ac776fac) --- lib_nbgl/src/nbgl_use_case_nanos.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 39e797e4b..b3d3b3cd9 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -71,6 +71,7 @@ typedef struct HomeContext_s { typedef enum { NONE_USE_CASE, + SPINNER_USE_CASE, REVIEW_USE_CASE, GENERIC_REVIEW_USE_CASE, REVIEW_BLIND_SIGN_USE_CASE, @@ -120,6 +121,7 @@ static void displaySettingsPage(nbgl_stepPosition_t pos, bool toogle_state); static void displayChoicePage(nbgl_stepPosition_t pos); static void displayConfirm(nbgl_stepPosition_t pos); static void displayContent(nbgl_stepPosition_t pos, bool toogle_state); +static void displaySpinner(const char *text); static void startUseCaseHome(void); static void startUseCaseInfo(void); @@ -322,7 +324,7 @@ static void drawStep(nbgl_stepPosition_t pos, pos |= GET_POS_OF_STEP(context.currentPage, context.nbPages); - if (context.type == STATUS_USE_CASE) { + if ((context.type == STATUS_USE_CASE) || (context.type == SPINNER_USE_CASE)) { p_ticker = &ticker; } if ((context.type == CONFIRM_USE_CASE) && (context.confirm.currentStep != NULL)) { @@ -628,7 +630,7 @@ static void displayStreamingReviewPage(nbgl_stepPosition_t pos) } // Determine which page to display if (context.currentPage >= reviewPages) { - nbgl_useCaseSpinner("Processing"); + displaySpinner("Processing"); onReviewAccept(); return; } @@ -651,7 +653,7 @@ static void displayStreamingReviewPage(nbgl_stepPosition_t pos) case STREAMING_CONTINUE_REVIEW_USE_CASE: if (context.currentPage >= context.review.tagValueList->nbPairs) { - nbgl_useCaseSpinner("Processing"); + displaySpinner("Processing"); onReviewAccept(); return; } @@ -1065,6 +1067,12 @@ static void displayContent(nbgl_stepPosition_t pos, bool toogle_state) nbgl_refresh(); } +static void displaySpinner(const char *text) +{ + drawStep(SINGLE_STEP, &C_icon_processing, text, NULL, NULL, false); + nbgl_refresh(); +} + // function to factorize code for all simple reviews static void useCaseReview(ContextType_t type, const nbgl_contentTagValueList_t *tagValueList, @@ -1807,8 +1815,12 @@ void nbgl_useCaseReviewStreamingFinish(const char *finishTitle, */ void nbgl_useCaseSpinner(const char *text) { - drawStep(SINGLE_STEP, &C_icon_processing, text, NULL, NULL, false); - nbgl_refresh(); + memset(&context, 0, sizeof(UseCaseContext_t)); + context.type = SPINNER_USE_CASE; + context.currentPage = 0; + context.nbPages = 1; + + displaySpinner(text); } void nbgl_useCaseChoice(const nbgl_icon_details_t *icon, From 6e6ca543c9f3e3b0b90e7f38d90bcf6ab8a5903e Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 16:40:35 +0100 Subject: [PATCH 49/53] Optimize and factorize code (cherry picked from commit 4acba6b62580a11769b603341094ed5572ec9163) --- lib_nbgl/src/nbgl_use_case_nanos.c | 225 +++++++++++++---------------- 1 file changed, 103 insertions(+), 122 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index b3d3b3cd9..b6a9476ae 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -158,6 +158,10 @@ static const nbgl_content_t *getContentAtIdx(const nbgl_genericContents_t *gener } if (genericContents->callbackCallNeeded) { + if (content == NULL) { + LOG_DEBUG(USE_CASE_LOGGER, "Invalid content variable\n"); + return NULL; + } // Retrieve content through callback, but first memset the content. memset(content, 0, sizeof(nbgl_content_t)); genericContents->contentGetterCallback(contentIdx, content); @@ -171,15 +175,28 @@ static const nbgl_content_t *getContentAtIdx(const nbgl_genericContents_t *gener // Helper to retrieve the content inside a nbgl_genericContents_t using // either the contentsList or using the contentGetterCallback -static const nbgl_content_t *getContentElemAtIdx(const nbgl_genericContents_t *genericContents, - uint8_t elemIdx, - uint8_t *elemContentIdx, - nbgl_content_t *content) +static const nbgl_content_t *getContentElemAtIdx(uint8_t elemIdx, + uint8_t *elemContentIdx, + nbgl_content_t *content) { - const nbgl_content_t *p_content; - uint8_t nbPages = 0; - uint8_t elemNbPages = 0; + const nbgl_genericContents_t *genericContents = NULL; + const nbgl_content_t *p_content = NULL; + uint8_t nbPages = 0; + uint8_t elemNbPages = 0; + switch (context.type) { + case SETTINGS_USE_CASE: + case HOME_USE_CASE: + case GENERIC_SETTINGS: + genericContents = context.home.settingContents; + break; + case CONTENT_USE_CASE: + case GENERIC_REVIEW_USE_CASE: + genericContents = &context.content.genericContents; + break; + default: + return NULL; + } for (int i = 0; i < genericContents->nbContents; i++) { p_content = getContentAtIdx(genericContents, i, content); elemNbPages = getContentNbElement(p_content); @@ -257,54 +274,39 @@ static void onConfirmReject(void) } } -static void onSettingsAction(void) +static void onSwitchAction(void) { - nbgl_content_t content; - uint8_t elemIdx; - - const nbgl_content_t *p_content = getContentElemAtIdx( - context.home.settingContents, context.currentPage, &elemIdx, &content); + const nbgl_contentSwitch_t *contentSwitch = NULL; + const nbgl_content_t *p_content = NULL; + nbgl_content_t content = {0}; + uint8_t elemIdx; - switch (p_content->type) { - case SWITCHES_LIST: { - const nbgl_contentSwitch_t *contentSwitch = &((const nbgl_contentSwitch_t *) PIC( - p_content->content.switchesList.switches))[elemIdx]; - nbgl_state_t state = (contentSwitch->initState == ON_STATE) ? OFF_STATE : ON_STATE; + p_content = getContentElemAtIdx(context.currentPage, &elemIdx, &content); + if ((p_content == NULL) || (p_content->type != SWITCHES_LIST)) { + return; + } + contentSwitch + = &((const nbgl_contentSwitch_t *) PIC(p_content->content.switchesList.switches))[elemIdx]; + switch (context.type) { + case SETTINGS_USE_CASE: + case HOME_USE_CASE: + case GENERIC_SETTINGS: displaySettingsPage(FORWARD_DIRECTION, true); - if (p_content->contentActionCallback != NULL) { - nbgl_contentActionCallback_t actionCallback = PIC(p_content->contentActionCallback); - actionCallback(contentSwitch->token, state, context.currentPage); - } - break; - } - default: break; - } -} - -static void onContentAction(void) -{ - nbgl_content_t content; - uint8_t elemIdx; - - const nbgl_content_t *p_content = getContentElemAtIdx( - &context.content.genericContents, context.currentPage, &elemIdx, &content); - - switch (p_content->type) { - case SWITCHES_LIST: { - const nbgl_contentSwitch_t *contentSwitch = &((const nbgl_contentSwitch_t *) PIC( - p_content->content.switchesList.switches))[elemIdx]; - nbgl_state_t state = (contentSwitch->initState == ON_STATE) ? OFF_STATE : ON_STATE; + case CONTENT_USE_CASE: + case GENERIC_REVIEW_USE_CASE: displayContent(FORWARD_DIRECTION, true); - if (p_content->contentActionCallback != NULL) { - nbgl_contentActionCallback_t actionCallback = PIC(p_content->contentActionCallback); - actionCallback(contentSwitch->token, state, context.currentPage); - } break; - } default: break; } + if (p_content->contentActionCallback != NULL) { + nbgl_contentActionCallback_t actionCallback = PIC(p_content->contentActionCallback); + actionCallback(contentSwitch->token, 0, context.currentPage); + } + else if (context.content.controlsCallback != NULL) { + context.content.controlsCallback(contentSwitch->token, 0); + } } static void drawStep(nbgl_stepPosition_t pos, @@ -706,6 +708,56 @@ static void displayInfoPage(nbgl_stepPosition_t pos) nbgl_refresh(); } +// function used to get the current page content +static void getContentPage(bool toogle_state, + const char **text, + const char **subText, + const nbgl_icon_details_t **icon) +{ + static char fullText[75]; + uint8_t elemIdx; + nbgl_state_t state = OFF_STATE; + const nbgl_content_t *p_content = NULL; + nbgl_content_t content = {0}; + nbgl_contentSwitch_t *contentSwitch = NULL; + nbgl_contentRadioChoice_t *contentChoices = NULL; + char **names = NULL; + + p_content = getContentElemAtIdx(context.currentPage, &elemIdx, &content); + if (p_content == NULL) { + return; + } + switch (p_content->type) { + case TAG_VALUE_LIST: + getPairData(&p_content->content.tagValueList, elemIdx, text, subText); + break; + case SWITCHES_LIST: + contentSwitch = &( + (nbgl_contentSwitch_t *) PIC(p_content->content.switchesList.switches))[elemIdx]; + *text = contentSwitch->text; + state = contentSwitch->initState; + if (toogle_state) { + state = (state == ON_STATE) ? OFF_STATE : ON_STATE; + } + if (state == ON_STATE) { + snprintf(fullText, sizeof(fullText), "%s\nEnabled", contentSwitch->subText); + } + else { + snprintf(fullText, sizeof(fullText), "%s\nDisabled", contentSwitch->subText); + } + context.stepCallback = onSwitchAction; + *subText = fullText; + break; + case INFOS_LIST: + *text = ((const char *const *) PIC(p_content->content.infosList.infoTypes))[elemIdx]; + *subText + = ((const char *const *) PIC(p_content->content.infosList.infoContents))[elemIdx]; + break; + default: + break; + } +} + // function used to display the current page in settings static void displaySettingsPage(nbgl_stepPosition_t pos, bool toogle_state) { @@ -716,43 +768,7 @@ static void displaySettingsPage(nbgl_stepPosition_t pos, bool toogle_state) context.stepCallback = NULL; if (context.currentPage < (context.nbPages - 1)) { - nbgl_content_t nbgl_content; - uint8_t elemIdx; - - const nbgl_content_t *p_nbgl_content = getContentElemAtIdx( - context.home.settingContents, context.currentPage, &elemIdx, &nbgl_content); - - switch (p_nbgl_content->type) { - case TAG_VALUE_LIST: - getPairData(&p_nbgl_content->content.tagValueList, elemIdx, &text, &subText); - break; - case SWITCHES_LIST: { - const nbgl_contentSwitch_t *contentSwitch = &((const nbgl_contentSwitch_t *) PIC( - p_nbgl_content->content.switchesList.switches))[elemIdx]; - text = contentSwitch->text; - // switch subtext is ignored - nbgl_state_t state = contentSwitch->initState; - if (toogle_state) { - state = (state == ON_STATE) ? OFF_STATE : ON_STATE; - } - if (state == ON_STATE) { - subText = "Enabled"; - } - else { - subText = "Disabled"; - } - context.stepCallback = onSettingsAction; - break; - } - case INFOS_LIST: - text = ((const char *const *) PIC( - p_nbgl_content->content.infosList.infoTypes))[elemIdx]; - subText = ((const char *const *) PIC( - p_nbgl_content->content.infosList.infoContents))[elemIdx]; - break; - default: - break; - } + getContentPage(toogle_state, &text, &subText, &icon); } else { // last page is for quit icon = &C_icon_back_x; @@ -816,8 +832,8 @@ static void startUseCaseInfo(void) static void startUseCaseSettingsAtPage(uint8_t initSettingPage) { - nbgl_content_t content; - const nbgl_content_t *p_content; + nbgl_content_t content = {0}; + const nbgl_content_t *p_content = NULL; if (context.type == 0) { // Not yet init, it is not a GENERIC_SETTINGS @@ -1010,43 +1026,7 @@ static void displayContent(nbgl_stepPosition_t pos, bool toogle_state) context.stepCallback = NULL; if (context.currentPage < (context.nbPages - 1)) { - nbgl_content_t nbgl_content; - uint8_t elemIdx; - - const nbgl_content_t *p_nbgl_content = getContentElemAtIdx( - context.home.settingContents, context.currentPage, &elemIdx, &nbgl_content); - - switch (p_nbgl_content->type) { - case TAG_VALUE_LIST: - getPairData(&p_nbgl_content->content.tagValueList, elemIdx, &text, &subText); - break; - case SWITCHES_LIST: { - const nbgl_contentSwitch_t *contentSwitch = &((const nbgl_contentSwitch_t *) PIC( - p_nbgl_content->content.switchesList.switches))[elemIdx]; - text = contentSwitch->text; - // switch subtext is ignored - nbgl_state_t state = contentSwitch->initState; - if (toogle_state) { - state = (state == ON_STATE) ? OFF_STATE : ON_STATE; - } - if (state == ON_STATE) { - subText = "Enabled"; - } - else { - subText = "Disabled"; - } - context.stepCallback = onContentAction; - break; - } - case INFOS_LIST: - text = ((const char *const *) PIC( - p_nbgl_content->content.infosList.infoTypes))[elemIdx]; - subText = ((const char *const *) PIC( - p_nbgl_content->content.infosList.infoContents))[elemIdx]; - break; - default: - break; - } + getContentPage(toogle_state, &text, &subText, &icon); } else { // last page is for quit if (context.content.rejectText) { @@ -1063,6 +1043,7 @@ static void displayContent(nbgl_stepPosition_t pos, bool toogle_state) } context.stepCallback = context.content.quitCallback; } + drawStep(pos, icon, text, subText, contentCallback, false); nbgl_refresh(); } From 62f63bd141dbae90c5b856f586b9edb54029a989 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Fri, 17 Jan 2025 17:42:00 +0100 Subject: [PATCH 50/53] Add new content types: CENTERED_INFO, INFO_BUTTON, BARS_LIST & CHOICE_LIST (cherry picked from commit c5ccf3236d18e7bf2f3ac13e61f639a660543349) --- lib_nbgl/include/nbgl_flow.h | 4 ++ lib_nbgl/src/nbgl_use_case_nanos.c | 82 +++++++++++++++++++++++++++--- 2 files changed, 80 insertions(+), 6 deletions(-) diff --git a/lib_nbgl/include/nbgl_flow.h b/lib_nbgl/include/nbgl_flow.h index 204361381..3143d7846 100644 --- a/lib_nbgl/include/nbgl_flow.h +++ b/lib_nbgl/include/nbgl_flow.h @@ -58,9 +58,13 @@ typedef struct nbgl_stepDesc_s { typedef struct nbgl_pageContent_s { nbgl_contentType_t type; ///< type of page content in the following union union { + nbgl_contentCenteredInfo_t centeredInfo; ///< @ref CENTERED_INFO type + nbgl_contentInfoButton_t infoButton; ///< @ref INFO_BUTTON type nbgl_contentTagValueList_t tagValueList; ///< @ref TAG_VALUE_LIST type nbgl_contentSwitchesList_t switchesList; ///< @ref SWITCHES_LIST type nbgl_contentInfoList_t infosList; ///< @ref INFOS_LIST type + nbgl_contentRadioChoice_t choicesList; ///< @ref CHOICES_LIST type + nbgl_contentBarsList_t barsList; ///< @ref BARS_LIST type }; } nbgl_pageContent_t; diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index b6a9476ae..249f7e7f0 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -53,6 +53,7 @@ typedef struct ConfirmContext_s { } ConfirmContext_t; typedef struct ContentContext_s { + const char *title; // For CHOICES_LIST nbgl_genericContents_t genericContents; const char *rejectText; nbgl_layoutTouchCallback_t controlsCallback; @@ -135,12 +136,20 @@ static void statusTickerCallback(void); static uint8_t getContentNbElement(const nbgl_content_t *content) { switch (content->type) { + case CENTERED_INFO: + return 1; + case INFO_BUTTON: + return 1; case TAG_VALUE_LIST: return content->content.tagValueList.nbPairs; case SWITCHES_LIST: return content->content.switchesList.nbSwitches; case INFOS_LIST: return content->content.infosList.nbInfos; + case CHOICES_LIST: + return content->content.choicesList.nbChoices; + case BARS_LIST: + return content->content.barsList.nbBars; default: return 0; } @@ -352,7 +361,12 @@ static void drawStep(nbgl_stepPosition_t pos, static bool buttonGenericCallback(nbgl_buttonEvent_t event, nbgl_stepPosition_t *pos) { - uint8_t token = 0; + uint8_t elemIdx; + uint8_t token = 0; + uint8_t index = 0; + const nbgl_content_t *p_content = NULL; + nbgl_content_t content = {0}; + if (event == BUTTON_LEFT_PRESSED) { if (context.currentPage > 0) { context.currentPage--; @@ -380,16 +394,35 @@ static bool buttonGenericCallback(nbgl_buttonEvent_t event, nbgl_stepPosition_t } else if ((context.type == CONTENT_USE_CASE) || (context.type == GENERIC_REVIEW_USE_CASE)) { - if (context.content.controlsCallback != NULL) { - switch (context.content.genericContents.contentsList->type) { + p_content = getContentElemAtIdx(context.currentPage, &elemIdx, &content); + if (p_content != NULL) { + switch (p_content->type) { + case CENTERED_INFO: + // No associated callback + return false; + case INFO_BUTTON: + token = p_content->content.infoButton.buttonToken; + break; case SWITCHES_LIST: - token = context.content.genericContents.contentsList->content - .switchesList.switches->token; + token = p_content->content.switchesList.switches->token; + break; + case BARS_LIST: + token = p_content->content.barsList.tokens[context.currentPage]; + break; + case CHOICES_LIST: + token = p_content->content.choicesList.token; + index = context.currentPage; break; default: break; } - context.content.controlsCallback(token + context.currentPage, 0); + + if ((p_content) && (p_content->contentActionCallback != NULL)) { + p_content->contentActionCallback(token, 0, context.currentPage); + } + else if (context.content.controlsCallback != NULL) { + context.content.controlsCallback(token, index); + } } } } @@ -728,6 +761,15 @@ static void getContentPage(bool toogle_state, return; } switch (p_content->type) { + case CENTERED_INFO: + *text = PIC(p_content->content.centeredInfo.text1); + *subText = PIC(p_content->content.centeredInfo.text2); + break; + case INFO_BUTTON: + *icon = PIC(p_content->content.infoButton.icon); + *text = PIC(p_content->content.infoButton.text); + *subText = PIC(p_content->content.infoButton.buttonText); + break; case TAG_VALUE_LIST: getPairData(&p_content->content.tagValueList, elemIdx, text, subText); break; @@ -753,6 +795,20 @@ static void getContentPage(bool toogle_state, *subText = ((const char *const *) PIC(p_content->content.infosList.infoContents))[elemIdx]; break; + case CHOICES_LIST: + if (context.content.title != NULL) { + *text = PIC(context.content.title); + *subText = PIC(p_content->content.choicesList.names[elemIdx]); + } + else { + contentChoices = (nbgl_contentRadioChoice_t *) PIC(&p_content->content.choicesList); + names = (char **) PIC(contentChoices->names); + *text = (const char *) PIC(names[elemIdx]); + } + break; + case BARS_LIST: + *text = PIC(p_content->content.barsList.barTexts[elemIdx]); + break; default: break; } @@ -1281,6 +1337,12 @@ void nbgl_useCaseNavigableContent(const char *title, contentsList.type = pageContent.type; switch (pageContent.type) { + case CENTERED_INFO: + contentsList.content.centeredInfo = pageContent.centeredInfo; + break; + case INFO_BUTTON: + contentsList.content.infoButton = pageContent.infoButton; + break; case TAG_VALUE_LIST: contentsList.content.tagValueList = pageContent.tagValueList; break; @@ -1290,6 +1352,14 @@ void nbgl_useCaseNavigableContent(const char *title, case INFOS_LIST: contentsList.content.infosList = pageContent.infosList; break; + case CHOICES_LIST: + contentsList.content.choicesList = pageContent.choicesList; + context.content.title = title; + context.currentPage = pageContent.choicesList.initChoice; + break; + case BARS_LIST: + contentsList.content.barsList = pageContent.barsList; + break; default: break; } From cac1d8114c0d36003ea8d3fa42c994d6c04b7cc6 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Mon, 20 Jan 2025 10:59:28 +0100 Subject: [PATCH 51/53] Add Vertical Navigation for CHOICES_LIST & BARS_LIST under compilation flags (cherry picked from commit ab5ef68af8ff5c598d75fe8c3cfb88b494b1ef90) --- lib_nbgl/src/nbgl_use_case_nanos.c | 153 ++++++++++++++++++++++++++--- 1 file changed, 137 insertions(+), 16 deletions(-) diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index 249f7e7f0..c4c44ed50 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -20,6 +20,8 @@ /********************* * DEFINES *********************/ +#define WITH_HORIZONTAL_CHOICES_LIST +#define WITH_HORIZONTAL_BARS_LIST /********************** * TYPEDEFS @@ -53,7 +55,7 @@ typedef struct ConfirmContext_s { } ConfirmContext_t; typedef struct ContentContext_s { - const char *title; // For CHOICES_LIST + const char *title; // For CHOICES_LIST /BARS_LIST nbgl_genericContents_t genericContents; const char *rejectText; nbgl_layoutTouchCallback_t controlsCallback; @@ -219,6 +221,80 @@ static const nbgl_content_t *getContentElemAtIdx(uint8_t elemIdx, return p_content; } +static const char *getChoiceName(uint8_t choiceIndex) +{ + uint8_t elemIdx; + uint8_t nbValues; + const nbgl_content_t *p_content = NULL; + nbgl_content_t content = {0}; + nbgl_contentRadioChoice_t *contentChoices = NULL; + nbgl_contentBarsList_t *contentBars = NULL; + char **names = NULL; + + p_content = getContentElemAtIdx(context.currentPage, &elemIdx, &content); + if (p_content == NULL) { + return NULL; + } + switch (p_content->type) { + case CHOICES_LIST: + contentChoices = (nbgl_contentRadioChoice_t *) PIC(&p_content->content.choicesList); + names = (char **) PIC(contentChoices->names); + nbValues = contentChoices->nbChoices; + break; + case BARS_LIST: + contentBars = ((nbgl_contentBarsList_t *) PIC(&p_content->content.barsList)); + names = (char **) PIC(contentBars->barTexts); + nbValues = contentBars->nbBars; + break; + default: + // Not supported as vertical MenuList + return NULL; + } + if (choiceIndex >= nbValues) { + // Last item is always "Back" button + return "Back"; + } + return (const char *) PIC(names[choiceIndex]); +} + +static void onChoiceSelected(uint8_t choiceIndex) +{ + uint8_t elemIdx; + uint8_t token = 255; + const nbgl_content_t *p_content = NULL; + nbgl_content_t content = {0}; + nbgl_contentRadioChoice_t *contentChoices = NULL; + nbgl_contentBarsList_t *contentBars = NULL; + + p_content = getContentElemAtIdx(context.currentPage, &elemIdx, &content); + if (p_content == NULL) { + return; + } + switch (p_content->type) { + case CHOICES_LIST: + contentChoices = (nbgl_contentRadioChoice_t *) PIC(&p_content->content.choicesList); + if (choiceIndex < contentChoices->nbChoices) { + token = contentChoices->token; + } + break; + case BARS_LIST: + contentBars = ((nbgl_contentBarsList_t *) PIC(&p_content->content.barsList)); + if (choiceIndex < contentBars->nbBars) { + token = contentBars->tokens[choiceIndex]; + } + break; + default: + // Not supported as vertical MenuList + break; + } + if ((token != 255) && (context.content.controlsCallback != NULL)) { + context.content.controlsCallback(token, 0); + } + else if (context.content.quitCallback != NULL) { + context.content.quitCallback(); + } +} + static void getPairData(const nbgl_contentTagValueList_t *tagValueList, uint8_t index, const char **item, @@ -325,12 +401,18 @@ static void drawStep(nbgl_stepPosition_t pos, nbgl_stepButtonCallback_t onActionCallback, bool modal) { - nbgl_step_t newStep = NULL; - nbgl_screenTickerConfiguration_t *p_ticker = NULL; - nbgl_screenTickerConfiguration_t ticker = { - .tickerCallback = PIC(statusTickerCallback), - .tickerIntervale = 0, // not periodic - .tickerValue = 3000 // 3 seconds + uint8_t elemIdx; + nbgl_step_t newStep = NULL; + const nbgl_content_t *p_content = NULL; + nbgl_content_t content = {0}; + nbgl_contentRadioChoice_t *contentChoices = NULL; + nbgl_contentBarsList_t *contentBars = NULL; + nbgl_screenTickerConfiguration_t *p_ticker = NULL; + nbgl_layoutMenuList_t list = {0}; + nbgl_screenTickerConfiguration_t ticker = { + .tickerCallback = PIC(statusTickerCallback), + .tickerIntervale = 0, // not periodic + .tickerValue = 3000 // 3 seconds }; pos |= GET_POS_OF_STEP(context.currentPage, context.nbPages); @@ -341,7 +423,33 @@ static void drawStep(nbgl_stepPosition_t pos, if ((context.type == CONFIRM_USE_CASE) && (context.confirm.currentStep != NULL)) { nbgl_stepRelease(context.confirm.currentStep); } - if (icon == NULL) { + + if (txt == NULL) { + p_content = getContentElemAtIdx(context.currentPage, &elemIdx, &content); + if (p_content) { + switch (p_content->type) { + case CHOICES_LIST: + contentChoices + = ((nbgl_contentRadioChoice_t *) PIC(&p_content->content.choicesList)); + list.nbChoices = contentChoices->nbChoices + 1; // For Back button + list.selectedChoice = contentChoices->initChoice; + list.callback = getChoiceName; + newStep = nbgl_stepDrawMenuList(onChoiceSelected, p_ticker, &list, modal); + break; + case BARS_LIST: + contentBars = ((nbgl_contentBarsList_t *) PIC(&p_content->content.barsList)); + list.nbChoices = contentBars->nbBars + 1; // For Back button + list.selectedChoice = 0; + list.callback = getChoiceName; + newStep = nbgl_stepDrawMenuList(onChoiceSelected, p_ticker, &list, modal); + break; + default: + // Not supported as vertical MenuList + break; + } + } + } + else if (icon == NULL) { newStep = nbgl_stepDrawText( pos, onActionCallback, p_ticker, txt, subTxt, BOLD_TEXT1_INFO, modal); } @@ -747,14 +855,16 @@ static void getContentPage(bool toogle_state, const char **subText, const nbgl_icon_details_t **icon) { - static char fullText[75]; - uint8_t elemIdx; - nbgl_state_t state = OFF_STATE; - const nbgl_content_t *p_content = NULL; - nbgl_content_t content = {0}; - nbgl_contentSwitch_t *contentSwitch = NULL; + static char fullText[75]; + uint8_t elemIdx; + nbgl_state_t state = OFF_STATE; + const nbgl_content_t *p_content = NULL; + nbgl_content_t content = {0}; + nbgl_contentSwitch_t *contentSwitch = NULL; +#ifdef WITH_HORIZONTAL_CHOICES_LIST nbgl_contentRadioChoice_t *contentChoices = NULL; char **names = NULL; +#endif p_content = getContentElemAtIdx(context.currentPage, &elemIdx, &content); if (p_content == NULL) { @@ -796,7 +906,8 @@ static void getContentPage(bool toogle_state, = ((const char *const *) PIC(p_content->content.infosList.infoContents))[elemIdx]; break; case CHOICES_LIST: - if (context.content.title != NULL) { +#ifdef WITH_HORIZONTAL_CHOICES_LIST + if ((context.type == CONTENT_USE_CASE) && (context.content.title != NULL)) { *text = PIC(context.content.title); *subText = PIC(p_content->content.choicesList.names[elemIdx]); } @@ -805,9 +916,18 @@ static void getContentPage(bool toogle_state, names = (char **) PIC(contentChoices->names); *text = (const char *) PIC(names[elemIdx]); } +#endif break; case BARS_LIST: - *text = PIC(p_content->content.barsList.barTexts[elemIdx]); +#ifdef WITH_HORIZONTAL_BARS_LIST + if ((context.type == CONTENT_USE_CASE) && (context.content.title != NULL)) { + *text = PIC(context.content.title); + *subText = PIC(p_content->content.barsList.barTexts[elemIdx]); + } + else { + *text = PIC(p_content->content.barsList.barTexts[elemIdx]); + } +#endif break; default: break; @@ -1359,6 +1479,7 @@ void nbgl_useCaseNavigableContent(const char *title, break; case BARS_LIST: contentsList.content.barsList = pageContent.barsList; + context.content.title = title; break; default: break; From f2d8bf0fd07a7a8fe38ae4d30a2cc5f2425b48c5 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Sat, 18 Jan 2025 11:15:19 +0100 Subject: [PATCH 52/53] Add missing API nbgl_useCaseKeypadDigits & nbgl_useCaseKeypadPIN (cherry picked from commit 9dbe374705412fc30dd19daf1e87985afebd03b8) --- lib_nbgl/include/nbgl_layout.h | 8 + lib_nbgl/include/nbgl_obj.h | 2 +- lib_nbgl/include/nbgl_use_case.h | 16 ++ lib_nbgl/src/nbgl_layout_keypad_nanos.c | 207 ++++++++++++++++-------- lib_nbgl/src/nbgl_use_case_nanos.c | 174 ++++++++++++++++++++ 5 files changed, 342 insertions(+), 65 deletions(-) diff --git a/lib_nbgl/include/nbgl_layout.h b/lib_nbgl/include/nbgl_layout.h index c414ed91a..3a18e93b3 100644 --- a/lib_nbgl/include/nbgl_layout.h +++ b/lib_nbgl/include/nbgl_layout.h @@ -743,6 +743,14 @@ int nbgl_layoutUpdateKeypad(nbgl_layout_t *layout, bool enableBackspace); int nbgl_layoutAddHiddenDigits(nbgl_layout_t *layout, uint8_t nbDigits); int nbgl_layoutUpdateHiddenDigits(nbgl_layout_t *layout, uint8_t index, uint8_t nbActive); +int nbgl_layoutAddKeypadContent(nbgl_layout_t *layout, + bool hidden, + uint8_t nbDigits, + const char *text); +int nbgl_layoutUpdateKeypadContent(nbgl_layout_t *layout, + bool hidden, + uint8_t nbActiveDigits, + const char *text); #endif // HAVE_SE_TOUCH #endif // NBGL_KEYPAD diff --git a/lib_nbgl/include/nbgl_obj.h b/lib_nbgl/include/nbgl_obj.h index 5b204c184..8e95e7781 100644 --- a/lib_nbgl/include/nbgl_obj.h +++ b/lib_nbgl/include/nbgl_obj.h @@ -56,11 +56,11 @@ extern "C" { #else #define KEYPAD_KEY_HEIGHT 104 #endif -#define KEYPAD_MAX_DIGITS 12 #else // HAVE_SE_TOUCH #define KEYPAD_WIDTH 114 #define KEYPAD_HEIGHT 18 #endif // HAVE_SE_TOUCH +#define KEYPAD_MAX_DIGITS 12 #ifdef HAVE_SE_TOUCH // external margin in pixels diff --git a/lib_nbgl/include/nbgl_use_case.h b/lib_nbgl/include/nbgl_use_case.h index 6036079ac..136209aa5 100644 --- a/lib_nbgl/include/nbgl_use_case.h +++ b/lib_nbgl/include/nbgl_use_case.h @@ -545,6 +545,22 @@ void nbgl_useCaseKeypadPIN(const char *title, nbgl_pinValidCallback_t validatePinCallback, nbgl_layoutTouchCallback_t actionCallback); #endif // NBGL_KEYPAD + +#else // HAVE_SE_TOUCH +#ifdef NBGL_KEYPAD +void nbgl_useCaseKeypadDigits(const char *title, + uint8_t minDigits, + uint8_t maxDigits, + bool shuffled, + nbgl_pinValidCallback_t validatePinCallback, + nbgl_callback_t backCallbackk); +void nbgl_useCaseKeypadPIN(const char *title, + uint8_t minDigits, + uint8_t maxDigits, + bool shuffled, + nbgl_pinValidCallback_t validatePinCallback, + nbgl_callback_t backCallback); +#endif // NBGL_KEYPAD #endif // HAVE_SE_TOUCH #ifdef __cplusplus diff --git a/lib_nbgl/src/nbgl_layout_keypad_nanos.c b/lib_nbgl/src/nbgl_layout_keypad_nanos.c index ecc680b88..c1ecc67a1 100644 --- a/lib_nbgl/src/nbgl_layout_keypad_nanos.c +++ b/lib_nbgl/src/nbgl_layout_keypad_nanos.c @@ -160,109 +160,188 @@ int nbgl_layoutUpdateKeypad(nbgl_layout_t *layout, * @return the index of digits set, to use in @ref nbgl_layoutUpdateHiddenDigits() */ int nbgl_layoutAddHiddenDigits(nbgl_layout_t *layout, uint8_t nbDigits) +{ + return nbgl_layoutAddKeypadContent(layout, true, nbDigits, NULL); +} + +/** + * @brief Updates an existing set of hidden digits, with the given configuration + * + * @param layout the current layout + * @param index index returned by @ref nbgl_layoutAddHiddenDigits() + * @param nbActive number of "active" digits (represented by discs instead of circles) + * @return >=0 if OK + */ +int nbgl_layoutUpdateHiddenDigits(nbgl_layout_t *layout, uint8_t index, uint8_t nbActive) +{ + UNUSED(index); + if (nbgl_layoutUpdateKeypadContent(layout, true, nbActive, NULL) < 0) { + return -1; + } + return 0; +} + +/** + * @brief Adds an area with a title and a placeholder for hidden digits on top of a keypad, to + * represent the entered digits as small discs. + * + * @note It must be the only object added in the layout, after the keypad itself + * + * @param layout the current layout + * @param hidden if set to true, digits appear as discs, otherwise as visible digits (given in text + * param) + * @param nbDigits number of digits to be displayed (only used if hidden is true) + * @param text only used if hidden is false + * @return the height of this area, if no error, < 0 otherwise + */ +int nbgl_layoutAddKeypadContent(nbgl_layout_t *layout, + bool hidden, + uint8_t nbDigits, + const char *text) { nbgl_layoutInternal_t *layoutInt = (nbgl_layoutInternal_t *) layout; nbgl_container_t *container; + nbgl_text_area_t *textArea; - LOG_DEBUG(LAYOUT_LOGGER, "nbgl_layoutAddHiddenDigits():\n"); + LOG_DEBUG(LAYOUT_LOGGER, "nbgl_layoutAddKeypadContent():\n"); if (layout == NULL) { return -1; } - // create a container, invisible or bordered - container = (nbgl_container_t *) nbgl_objPoolGet(CONTAINER, layoutInt->layer); - container->nbChildren = nbDigits; - container->children = nbgl_containerPoolGet(container->nbChildren, layoutInt->layer); - // 1 pixel between each icon (knowing that the effective bullets are 8px large) - container->obj.area.width = nbDigits * C_pin_bullet_empty.width + (nbDigits - 1); - container->obj.area.height = C_pin_bullet_empty.height; - // distance from top to digits is fixed to 24 px - container->obj.alignmentMarginY = 24; - container->obj.alignTo = NULL; - container->obj.alignment = TOP_MIDDLE; - - // set this new container as child of the main container - layoutAddObject(layoutInt, (nbgl_obj_t *) container); - - // create children of the container, as images (empty circles) - nbgl_objPoolGetArray(IMAGE, nbDigits, layoutInt->layer, (nbgl_obj_t **) container->children); - for (int i = 0; i < nbDigits; i++) { - nbgl_image_t *image = (nbgl_image_t *) container->children[i]; - image->buffer = &C_pin_bullet_empty; - image->foregroundColor = WHITE; - if (i > 0) { - image->obj.alignment = MID_RIGHT; - image->obj.alignTo = (nbgl_obj_t *) container->children[i - 1]; - image->obj.alignmentMarginX = 1; - } - else { - image->obj.alignment = NO_ALIGNMENT; + if (hidden) { + // create a container, invisible + container = (nbgl_container_t *) nbgl_objPoolGet(CONTAINER, layoutInt->layer); + container->nbChildren = nbDigits; + container->children = nbgl_containerPoolGet(container->nbChildren, layoutInt->layer); + // 1 pixel between each icon (knowing that the effective bullets are 8px large) + container->obj.area.width = nbDigits * C_pin_bullet_empty.width + (nbDigits - 1); + container->obj.area.height = C_pin_bullet_empty.height; + // distance from top to digits is fixed to 24 px + container->obj.alignmentMarginY = 24; + container->obj.alignTo = NULL; + container->obj.alignment = TOP_MIDDLE; + + // set this new container as child of the main container + layoutAddObject(layoutInt, (nbgl_obj_t *) container); + + // create children of the container, as images (empty circles) + nbgl_objPoolGetArray( + IMAGE, nbDigits, layoutInt->layer, (nbgl_obj_t **) container->children); + for (int i = 0; i < nbDigits; i++) { + nbgl_image_t *image = (nbgl_image_t *) container->children[i]; + image->buffer = &C_pin_bullet_empty; + image->foregroundColor = WHITE; + if (i > 0) { + image->obj.alignment = MID_RIGHT; + image->obj.alignTo = (nbgl_obj_t *) container->children[i - 1]; + image->obj.alignmentMarginX = 1; + } + else { + image->obj.alignment = NO_ALIGNMENT; + } } } - // return index of container to be modified later on - return (layoutInt->nbChildren - 1); + else { + // create text area + textArea = (nbgl_text_area_t *) nbgl_objPoolGet(TEXT_AREA, layoutInt->layer); + textArea->textColor = WHITE; + textArea->text = text; + textArea->textAlignment = CENTER; + textArea->fontId = BAGL_FONT_OPEN_SANS_EXTRABOLD_11px_1bpp; + textArea->obj.area.width = AVAILABLE_WIDTH; + textArea->obj.area.height = nbgl_getFontLineHeight(textArea->fontId); + textArea->autoHideLongLine = true; + // distance from top to digits is fixed to 20 px + textArea->obj.alignmentMarginY = 20; + textArea->obj.alignTo = NULL; + textArea->obj.alignment = TOP_MIDDLE; + // set this new text area as child of the main container + layoutAddObject(layoutInt, (nbgl_obj_t *) textArea); + } + + // return 0 + return 0; } /** * @brief Updates an existing set of hidden digits, with the given configuration * * @param layout the current layout - * @param index index returned by @ref nbgl_layoutAddHiddenDigits() - * @param nbActive number of "active" digits (represented by discs instead of circles) + * @param hidden if set to true, digits appear as discs, otherwise as visible digits (given in text + * param) + * @param nbActiveDigits number of "active" digits (represented by discs instead of circles) (only + * used if hidden is true) + * @param text only used if hidden is false + * * @return >=0 if OK */ -int nbgl_layoutUpdateHiddenDigits(nbgl_layout_t *layout, uint8_t index, uint8_t nbActive) +int nbgl_layoutUpdateKeypadContent(nbgl_layout_t *layout, + bool hidden, + uint8_t nbActiveDigits, + const char *text) { nbgl_layoutInternal_t *layoutInt = (nbgl_layoutInternal_t *) layout; nbgl_container_t *container; nbgl_image_t *image; - LOG_DEBUG(LAYOUT_LOGGER, "nbgl_layoutUpdateHiddenDigits(): nbActive = %d\n", nbActive); + LOG_DEBUG(LAYOUT_LOGGER, "nbgl_layoutUpdateHiddenDigits(): nbActive = %d\n", nbActiveDigits); if (layout == NULL) { return -1; } - // get container - container = (nbgl_container_t *) layoutInt->children[index]; - // sanity check - if ((container == NULL) || (container->obj.type != CONTAINER)) { - return -1; - } - if (nbActive > container->nbChildren) { - return -1; - } - if (nbActive == 0) { - // deactivate the first digit - image = (nbgl_image_t *) container->children[0]; - if ((image == NULL) || (image->obj.type != IMAGE)) { + if (hidden) { + // get container (3rd child of main container) + container = (nbgl_container_t *) layoutInt->children[2]; + // sanity check + if ((container == NULL) || (container->obj.type != CONTAINER)) { return -1; } - image->buffer = &C_pin_bullet_empty; - } - else { - image = (nbgl_image_t *) container->children[nbActive - 1]; - if ((image == NULL) || (image->obj.type != IMAGE)) { + if (nbActiveDigits > container->nbChildren) { return -1; } - // if the last "active" is already active, it means that we are decreasing the number of - // active otherwise we are increasing it - if (image->buffer == &C_pin_bullet_filled) { - // all digits are already active - if (nbActive == container->nbChildren) { - return 0; + if (nbActiveDigits == 0) { + // deactivate the first digit + image = (nbgl_image_t *) container->children[0]; + if ((image == NULL) || (image->obj.type != IMAGE)) { + return -1; } - // deactivate the next digit - image = (nbgl_image_t *) container->children[nbActive]; image->buffer = &C_pin_bullet_empty; } else { - image->buffer = &C_pin_bullet_filled; + image = (nbgl_image_t *) container->children[nbActiveDigits - 1]; + if ((image == NULL) || (image->obj.type != IMAGE)) { + return -1; + } + // if the last "active" is already active, it means that we are decreasing the number of + // active otherwise we are increasing it + if (image->buffer == &C_pin_bullet_filled) { + // all digits are already active + if (nbActiveDigits == container->nbChildren) { + return 0; + } + // deactivate the next digit + image = (nbgl_image_t *) container->children[nbActiveDigits]; + image->buffer = &C_pin_bullet_empty; + } + else { + image->buffer = &C_pin_bullet_filled; + } } - } - nbgl_objDraw((nbgl_obj_t *) image); + nbgl_objDraw((nbgl_obj_t *) image); + } + else { + // update main text area (second child of the main container) + nbgl_text_area_t *textArea = (nbgl_text_area_t *) layoutInt->children[2]; + if ((textArea == NULL) || (textArea->obj.type != TEXT_AREA)) { + return -1; + } + textArea->text = text; + nbgl_objDraw((nbgl_obj_t *) textArea); + } return 0; } + #endif // NBGL_KEYPAD #endif // HAVE_SE_TOUCH diff --git a/lib_nbgl/src/nbgl_use_case_nanos.c b/lib_nbgl/src/nbgl_use_case_nanos.c index c4c44ed50..ab30fddfe 100644 --- a/lib_nbgl/src/nbgl_use_case_nanos.c +++ b/lib_nbgl/src/nbgl_use_case_nanos.c @@ -72,6 +72,20 @@ typedef struct HomeContext_s { nbgl_callback_t quitCallback; } HomeContext_t; +#ifdef NBGL_KEYPAD +typedef struct KeypadContext_s { + uint8_t pinEntry[8]; + uint8_t pinLen; + uint8_t pinMinDigits; + uint8_t pinMaxDigits; + nbgl_layout_t *layoutCtx; + bool hidden; + uint8_t keypadIndex; + nbgl_pinValidCallback_t validatePin; + nbgl_callback_t backCallback; +} KeypadContext_t; +#endif + typedef enum { NONE_USE_CASE, SPINNER_USE_CASE, @@ -86,6 +100,7 @@ typedef enum { CHOICE_USE_CASE, STATUS_USE_CASE, CONFIRM_USE_CASE, + KEYPAD_USE_CASE, HOME_USE_CASE, INFO_USE_CASE, SETTINGS_USE_CASE, @@ -105,6 +120,9 @@ typedef struct UseCaseContext_s { ConfirmContext_t confirm; HomeContext_t home; ContentContext_t content; +#ifdef NBGL_KEYPAD + KeypadContext_t keypad; +#endif }; } UseCaseContext_t; @@ -1261,6 +1279,103 @@ static void useCaseReview(ContextType_t type, displayReviewPage(FORWARD_DIRECTION); } +#ifdef NBGL_KEYPAD +static void setPinCodeText(void) +{ + bool enableValidate = false; + bool enableBackspace = true; + + // pin can be validated when min digits is entered + enableValidate = (context.keypad.pinLen >= context.keypad.pinMinDigits); + // backspace is disabled when no digit is entered and back vallback is not provided + enableBackspace = (context.keypad.pinLen > 0) || (context.keypad.backCallback != NULL); + nbgl_layoutUpdateKeypadContent(context.keypad.layoutCtx, + context.keypad.hidden, + context.keypad.pinLen, + (const char *) context.keypad.pinEntry); + nbgl_layoutUpdateKeypad( + context.keypad.layoutCtx, context.keypad.keypadIndex, enableValidate, enableBackspace); + nbgl_layoutDraw(context.keypad.layoutCtx); + nbgl_refresh(); +} + +// called when a key is touched on the keypad +static void keypadCallback(char touchedKey) +{ + switch (touchedKey) { + case BACKSPACE_KEY: + if (context.keypad.pinLen > 0) { + context.keypad.pinLen--; + context.keypad.pinEntry[context.keypad.pinLen] = 0; + } + else if (context.keypad.backCallback != NULL) { + context.keypad.backCallback(); + break; + } + setPinCodeText(); + break; + + case VALIDATE_KEY: + context.keypad.validatePin(context.keypad.pinEntry, context.keypad.pinLen); + break; + + default: + if ((touchedKey >= 0x30) && (touchedKey < 0x40)) { + if (context.keypad.pinLen < context.keypad.pinMaxDigits) { + context.keypad.pinEntry[context.keypad.pinLen] = touchedKey; + context.keypad.pinLen++; + } + setPinCodeText(); + } + break; + } +} + +// called to create a keypad, with either hidden or visible digits +static void keypadGenericUseCase(const char *title, + uint8_t minDigits, + uint8_t maxDigits, + bool shuffled, + bool hidden, + nbgl_pinValidCallback_t validatePinCallback, + nbgl_callback_t backCallback) +{ + nbgl_layoutDescription_t layoutDescription = {0}; + int status = -1; + + // reset the keypad context + memset(&context, 0, sizeof(KeypadContext_t)); + context.type = KEYPAD_USE_CASE; + context.currentPage = 0; + context.nbPages = 1; + context.keypad.validatePin = validatePinCallback; + context.keypad.backCallback = backCallback; + context.keypad.pinMinDigits = minDigits; + context.keypad.pinMaxDigits = maxDigits; + context.keypad.hidden = hidden; + context.keypad.layoutCtx = nbgl_layoutGet(&layoutDescription); + + // add keypad + status = nbgl_layoutAddKeypad(context.keypad.layoutCtx, keypadCallback, title, shuffled); + if (status < 0) { + return; + } + context.keypad.keypadIndex = status; + // add digits + status = nbgl_layoutAddKeypadContent(context.keypad.layoutCtx, hidden, maxDigits, ""); + if (status < 0) { + return; + } + + nbgl_layoutDraw(context.keypad.layoutCtx); + if (context.keypad.backCallback != NULL) { + // force backspace to be visible at first digit, to be used as quit + nbgl_layoutUpdateKeypad(context.keypad.layoutCtx, context.keypad.keypadIndex, false, true); + } + nbgl_refresh(); +} +#endif // NBGL_KEYPAD + /********************** * GLOBAL FUNCTIONS **********************/ @@ -2048,5 +2163,64 @@ void nbgl_useCaseConfirm(const char *message, displayConfirm(FORWARD_DIRECTION); } +#ifdef NBGL_KEYPAD +/** + * @brief draws a standard keypad modal page with visible digits. It contains + * - a navigation bar at the top + * - a title for the pin code + * - a visible digit entry + * - the keypad at the bottom + * + * @note callbacks allow to control the behavior. + * backspace and validation button are shown/hidden automatically + * + * @param title string to set in pin code title + * @param minDigits pin minimum number of digits + * @param maxDigits maximum number of digits to be displayed + * @param shuffled if set to true, digits are shuffled in keypad + * @param validatePinCallback function calledto validate the pin code + * @param backCallback callback called on backspace is "pressed" in first digit + */ +void nbgl_useCaseKeypadDigits(const char *title, + uint8_t minDigits, + uint8_t maxDigits, + bool shuffled, + nbgl_pinValidCallback_t validatePinCallback, + nbgl_callback_t backCallback) +{ + keypadGenericUseCase( + title, minDigits, maxDigits, shuffled, false, validatePinCallback, backCallback); +} + +/** + * @brief draws a standard keypad modal page with hidden digits. It contains + * - a navigation bar at the top + * - a title for the pin code + * - a hidden digit entry + * - the keypad at the bottom + * + * @note callbacks allow to control the behavior. + * backspace and validation button are shown/hidden automatically + * + * @param title string to set in pin code title + * @param minDigits pin minimum number of digits + * @param maxDigits maximum number of digits to be displayed + * @param backToken token used with actionCallback (0 if unused)) + * @param shuffled if set to true, digits are shuffled in keypad + * @param validatePinCallback function calledto validate the pin code + * @param backCallback callback called on backspace is "pressed" in first digit + */ +void nbgl_useCaseKeypadPIN(const char *title, + uint8_t minDigits, + uint8_t maxDigits, + bool shuffled, + nbgl_pinValidCallback_t validatePinCallback, + nbgl_callback_t backCallback) +{ + keypadGenericUseCase( + title, minDigits, maxDigits, shuffled, true, validatePinCallback, backCallback); +} +#endif // NBGL_KEYPAD + #endif // HAVE_SE_TOUCH #endif // NBGL_USE_CASE From d3a6d9347076ded5d1d3e3ed34bf9dbbfa4cbb07 Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Thu, 23 Jan 2025 10:39:07 +0100 Subject: [PATCH 53/53] Update documentation accordingly to new NBGL cases on Nano devices (cherry picked from commit d23e0b9740dd85c2e8ece5d0f79aa09da8beee96) --- doc/Doxyfile | 13 - doc/mainpage.dox | 6 +- lib_nbgl/doc/mainpage_nanos.dox | 15 +- lib_nbgl/doc/nbgl_layout.dox | 20 +- lib_nbgl/doc/nbgl_layout_nanos.dox | 45 +- lib_nbgl/doc/nbgl_page.dox | 2 +- lib_nbgl/doc/nbgl_step.dox | 2 +- lib_nbgl/doc/nbgl_use_case.dox | 114 +-- lib_nbgl/doc/nbgl_use_case_nanos.dox | 666 +++++++++++------- .../doc/resources/UseCase-Nano-About1.png | Bin 19909 -> 0 bytes .../resources/UseCase-Nano-AddressReview.png | Bin 0 -> 150639 bytes .../doc/resources/UseCase-Nano-Choice.png | Bin 0 -> 52175 bytes .../doc/resources/UseCase-Nano-Confirm.png | Bin 0 -> 30741 bytes lib_nbgl/doc/resources/UseCase-Nano-Home.png | Bin 24558 -> 122018 bytes .../doc/resources/UseCase-Nano-Keypad.png | Bin 0 -> 66847 bytes .../resources/UseCase-Nano-Review-Status.png | Bin 0 -> 20717 bytes .../doc/resources/UseCase-Nano-Review-ex.png | Bin 0 -> 43369 bytes .../doc/resources/UseCase-Nano-Review.png | Bin 0 -> 71929 bytes .../doc/resources/UseCase-Nano-Review1.png | Bin 26035 -> 0 bytes .../UseCase-Nano-Settings-Action.png | Bin 0 -> 48233 bytes .../resources/UseCase-Nano-Settings-ex.png | Bin 0 -> 20039 bytes .../doc/resources/UseCase-Nano-Spinner.png | Bin 0 -> 9001 bytes .../doc/resources/UseCase-Nano-Status.png | Bin 0 -> 25051 bytes .../doc/resources/UseCase-Nano-Streaming.png | Bin 0 -> 60433 bytes lib_nbgl/include/nbgl_obj.h | 2 +- lib_nbgl/include/nbgl_types.h | 2 - lib_nbgl/src/nbgl_layout_keypad_nanos.c | 1 - 27 files changed, 535 insertions(+), 353 deletions(-) delete mode 100755 lib_nbgl/doc/resources/UseCase-Nano-About1.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-AddressReview.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Choice.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Confirm.png mode change 100755 => 100644 lib_nbgl/doc/resources/UseCase-Nano-Home.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Keypad.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Review-Status.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Review-ex.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Review.png delete mode 100755 lib_nbgl/doc/resources/UseCase-Nano-Review1.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Settings-Action.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Settings-ex.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Spinner.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Status.png create mode 100644 lib_nbgl/doc/resources/UseCase-Nano-Streaming.png diff --git a/doc/Doxyfile b/doc/Doxyfile index ac9121848..56bc0322c 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -263,12 +263,6 @@ TAB_SIZE = 4 ALIASES = -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all @@ -1182,13 +1176,6 @@ CLANG_DATABASE_PATH = ALPHABETICAL_INDEX = YES -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored diff --git a/doc/mainpage.dox b/doc/mainpage.dox index 5d5943464..2bbc66517 100644 --- a/doc/mainpage.dox +++ b/doc/mainpage.dox @@ -3,7 +3,7 @@ @section mainpage_intro Introduction This documentation describes the different interfaces of Embedded SDK, -for \b Nano X, \b Nano S+ and \b Stax applications development. +for \b Nano X, \b Nano S+ \b Stax and \b Flex applications development. @section ble_presentation BlueTooth Low-Energy Interface @@ -16,7 +16,7 @@ The @subpage cxng_mainpage page contains all information necessary to understand @section nbgl_presentation Screen drawing API The @subpage nbgl_mainpage page contains all information necessary to understand the Graphical Library for -\b Stax, \b NanoX and \b NanoS+ applications development. +\b Stax, \b Flex, \b NanoX and \b NanoS+ applications development. @section nfc_presentation NFC Interface @@ -50,7 +50,7 @@ The @subpage ux_mainpage page contains all information necessary to user the Use @subsection ux_nbgl_presentation User eXperience on Applications using \b NBGL The @subpage ux_nbgl_mainpage page contains all information necessary to user the User eXperience for -\b Stax, \b NanoX and \b NanoS+ applications development using \b NBGL (most recent ones). +\b Stax, \b Flex, \b NanoX and \b NanoS+ applications development using \b NBGL (most recent ones). */ diff --git a/lib_nbgl/doc/mainpage_nanos.dox b/lib_nbgl/doc/mainpage_nanos.dox index 5cb0e4afc..0d4b564a5 100644 --- a/lib_nbgl/doc/mainpage_nanos.dox +++ b/lib_nbgl/doc/mainpage_nanos.dox @@ -1,7 +1,7 @@ #ifndef HAVE_SE_TOUCH -/** @page nbgl_mainpage New BOLOS Graphic API for Nanos +/** @page nbgl_mainpage New BOLOS Graphic API for Nano devices (Nano X and Nano S+) -@section mainpage_intro Introduction +@section nbgl_mainpage_intro Introduction This documentation describes the different interfaces of NBGL, the library that is targeted to be integrated in Nano products (Nano X and Nano S+). @@ -23,15 +23,11 @@ This is the most preferred API level to write an embedded Application. The @subpage nbgl_app_use_case_nanos page contains all information necessary to understand and use \b NBGL Application Use cases API -@subsection nbgl_flow_level_api_1 Flow API -The @subpage nbgl_flow page contains all information necessary to understand -and use \b NBGL Flow API, managing a scenario flow, made of one or several steps - -@subsection nbgl_step_level_api_1 Step API +@subsection nbgl_step_level_api_1 High-Level API The @subpage nbgl_step page contains all information necessary to understand -and use \b NBGL Step API, managing the page(s) of a scenario step +and use \b NBGL High-Level API, using predefined steps -@subsection nbgl_mid_level_api_1 Complex objects (layout) API +@subsection nbgl_mid_level_api_1 Mid-Level API The @subpage nbgl_layout page contains all information necessary to understand and use \b NBGL Mid-Level API, using complex objects @@ -48,6 +44,7 @@ In order to reduce the footprint (RAM+Flash), some features are only activated i Define | Meaning | Default state ------------- | ------------- | ------------- +\b NBGL_STEP | Activate High-Level API | Active in SDK, and in OS \b NBGL_USE_CASE | Activate Use Case API | Active in SDK, not in OS \b NBGL_KEYBOARD | Activate Keyboard object | Active in OS, not in SDK \b NBGL_KEYPAD | Activate Keypad object | Active in OS, not in SDK diff --git a/lib_nbgl/doc/nbgl_layout.dox b/lib_nbgl/doc/nbgl_layout.dox index 608d61b8f..d57f134cb 100644 --- a/lib_nbgl/doc/nbgl_layout.dox +++ b/lib_nbgl/doc/nbgl_layout.dox @@ -50,10 +50,10 @@ For example 1: @code nbgl_layoutDescription_t layoutDescription = { - .modal = false, // not modal (so on plane 0) - .onActionCallback = &myActionCallback, // generic callback for all controls - .onTapText = NULL, // no "tapable" main container - .ticker.callback = NULL // no ticker + .modal = false, // not modal (so on plane 0) + .onActionCallback = &myActionCallback, // generic callback for all controls + .onTapText = NULL, // no "tapable" main container + .ticker.callback = NULL // no ticker }; // create layout nbgl_layout_t *layout = nbgl_layoutGet(&layoutDescription); @@ -63,11 +63,11 @@ For example 2: @code nbgl_layoutDescription_t layoutDescription = { - .modal = false, // not modal (so on plane 0) - .onActionCallback = &myActionCallback, // generic callback for all controls - .onTapText = "Tap to continue", // A "tapable" main container is necessary, with this text - .onTapToken = TAP_TOKEN, // token to be used when main container is touched - .ticker.callback = NULL // no ticker + .modal = false, // not modal (so on plane 0) + .onActionCallback = &myActionCallback, // generic callback for all controls + .onTapText = "Tap to continue", // A "tapable" main container is necessary, with this text + .onTapToken = TAP_TOKEN, // token to be used when main container is touched + .ticker.callback = NULL // no ticker }; /* create layout */ nbgl_layout_t *layout = nbgl_layoutGet(&layoutDescription); @@ -665,7 +665,7 @@ void app_keyboard(void) { Some rare screens require displaying a keypad at the bottom of the page, to enter digits. -The digits to enter are usually a PIN code, so enter or to confirm. +The digits to enter are usually a PIN code, to enter or to confirm. Here are some example of these pages in Bolos UX: diff --git a/lib_nbgl/doc/nbgl_layout_nanos.dox b/lib_nbgl/doc/nbgl_layout_nanos.dox index 7b8b22c46..64531bca2 100644 --- a/lib_nbgl/doc/nbgl_layout_nanos.dox +++ b/lib_nbgl/doc/nbgl_layout_nanos.dox @@ -40,9 +40,9 @@ For example: @code nbgl_layoutDescription_t layoutDescription = { - .modal = false, // not modal (so on plane 0) - .onActionCallback = &myActionCallback, // generic callback for all controls - .ticker.callback = NULL // no ticker + .modal = false, // not modal (so on plane 0) + .onActionCallback = &myActionCallback, // generic callback for all controls + .ticker.callback = NULL // no ticker }; // create layout nbgl_layout_t *layout = nbgl_layoutGet(&layoutDescription); @@ -187,22 +187,22 @@ static void keyboardCallback(char touchedKey) { void app_keyboard(void) { nbgl_layoutDescription_t layoutDescription = { - .modal = false, + .modal = false, .onActionCallback = NULL }; nbgl_layoutKbd_t kbdInfo = { - .callback = keyboardCallback, - .keyMask = 1<<26, // no masked letter but masked backspace - .lettersOnly = true // only letters are allowed + .callback = keyboardCallback, + .keyMask = 1<<26, // no masked letter but masked backspace + .lettersOnly = true // only letters are allowed }; nbgl_layoutCenteredInfo_t centeredInfo = { .text1 = descriptionTxt, .text2 = NULL, - .icon = NULL, + .icon = NULL, .onTop = true }; nbgl_layoutNavigation_t navInfo = { - .direction = HORIZONTAL_NAV, + .direction = HORIZONTAL_NAV, .indication = LEFT_ARROW | RIGHT_ARROW }; int status; @@ -261,19 +261,26 @@ used to modify the active keys of an existing keypad (backspace and validate key @note at creation time, backspace and validate keys are inactive -@subsubsection keypad_sub_section_2 Adding/Updating hidden digits area +@subsubsection keypad_sub_section_2 Adding/Updating keypad content -This object, displayed on top of the keypad, consists in up to 8 discs (plain or empty) corresponding to -hidden entered/not entered digits. +This object consists in: +- an optional title +- either: + - up to 12 discs (invisible or visible) corresponding to hidden entered/not entered digits. + - or up to 12 digits if not hidden The parameters to configure this object are: +- The optional title (NULL if not used) +- A boolean to indicate whether digits are hidden or not - The number of total digits to be displayed (all digits are considered as "not entered") +- The digits to be displayed if not hidden -The API to insert such an object is @ref nbgl_layoutAddHiddenDigits(). +The API to insert such an object is @ref nbgl_layoutAddKeypadContent(). -This function returns a positive integer (if successful) to be used as an index in @ref nbgl_layoutUpdateHiddenDigits() function, -used to modify the number of entered digits. +This function returns a positive integer (if successful). + +The @ref nbgl_layoutUpdateKeypadContent() function can be used to modify the number of entered digits or the digits. @section refresh_layout Refreshing screen @@ -286,7 +293,7 @@ It will only refresh the rectangle part of the screen having changed (with objec @section callbacks Control actions management -Some controls, like a touchable bar, or a choice by radio buttons, can be interacted with thanks to the Touchscreen. +Some controls can be interacted with thanks to the buttons. The developer can subscribe to these events by providing an action callback in @ref nbgl_layoutGet(), with @ref nbgl_layoutTouchCallback_t prototype. @@ -294,10 +301,10 @@ The first parameter (*token*) of this function is a token provided along with th The second parameter (*index*) is only used for some types of complex objects: -- **Navigation bar**: in this case, *index* gives the index of the new active page, when navigating. +- **Bar List choices**: in this case, *index* gives the index of the selected bar. - **Radio button choices**: in this case, *index* gives the index of the selected choice. -- **Switches**: in this case, if *index* is 0 it means OFF, otherwise it means ON. -- **Choice buttons**: in this case, if *index* is 0, it means top-button (choice 1), otherwise it means bottom-buttom (choice 2) +- **Switches**: in this case, *index* is 0: it is up to the Apps to know what to do here. +- **Info buttons**: in this case, *index* is 0 (useless) @subsection release Releasing a layout diff --git a/lib_nbgl/doc/nbgl_page.dox b/lib_nbgl/doc/nbgl_page.dox index bee008ef8..568bb9c5a 100644 --- a/lib_nbgl/doc/nbgl_page.dox +++ b/lib_nbgl/doc/nbgl_page.dox @@ -1,5 +1,5 @@ #ifdef NBGL_PAGE -/** @page nbgl_page Predefined pages API +/** @page nbgl_page Predefined Pages API @section nbgl_page_intro Introduction This chapter describes briefly the high-level API of Advanced BOLOS Graphic Library. diff --git a/lib_nbgl/doc/nbgl_step.dox b/lib_nbgl/doc/nbgl_step.dox index 4b5838878..ebc228391 100644 --- a/lib_nbgl/doc/nbgl_step.dox +++ b/lib_nbgl/doc/nbgl_step.dox @@ -1,5 +1,5 @@ #ifdef NBGL_STEP -/** @page nbgl_step Step API +/** @page nbgl_step Predefined Step API @section nbgl_step_intro Introduction This chapter describes briefly the high-level API of Advanced BOLOS Graphic Library. diff --git a/lib_nbgl/doc/nbgl_use_case.dox b/lib_nbgl/doc/nbgl_use_case.dox index f4a2ec5c2..9fc4e8e5b 100644 --- a/lib_nbgl/doc/nbgl_use_case.dox +++ b/lib_nbgl/doc/nbgl_use_case.dox @@ -182,11 +182,14 @@ Here is the code to display the example picture (and a status page for confirmat @code static void confirmationCallback(void) { // draw a status screen which continues by returning to appMain - nbgl_useCaseStatus("Transaction rejected",false,appMain); + nbgl_useCaseStatus("Transaction rejected", false, appMain); } void onRejectTransaction(void) { - nbgl_useCaseConfirm("Reject transaction?","Yes, Reject","Go back to transaction",confirmationCallback); + nbgl_useCaseConfirm("Reject transaction?", + "Yes, Reject", + "Go back to transaction", + confirmationCallback); } @endcode @@ -216,7 +219,8 @@ void onRejectTransaction(void) { nbgl_useCaseChoice(&C_key_64px, "Delete all credentials?", "This includes all saved\ncredentials from all websites\nand services.", - "Yes, erase","No, don't erase", + "Yes, erase", + "No, don't erase", onChoice); } @endcode @@ -229,12 +233,12 @@ A status is a transient page, without control, to display during a short time, f The @ref nbgl_useCaseStatus() function enables to create such a page, with the following arguments: - a message string to set in middle of page -- a boolean to indicate if true, that the message is drawn in a Ledger style (with corners) -- a quit callback, called when quit timer times out (or the page is "tapped") +- a boolean to indicate if true, that the message is drawn in a Ledger style (with corners) and select the icon +- a quit callback, called when timer times out (or the page is "tapped") -If it's a success status, a "success" tune will be automatically played. +If it's a success status, a *success* tune will be automatically played. -@subsection use_case_review_status Pre-defined status Use Case +@subsection use_case_review_status Pre-defined review status Use Case \image{inline} html UseCase-Review-Status.png "caption" height=300 @@ -242,9 +246,9 @@ Similar as @subpage use_case_status, this is used to display transient page, wit The @ref nbgl_useCaseReviewStatus() function enables to create such a page, with the following arguments: - a type of status (with predefined message) -- a quit callback, called when quit timer times out (or the page is "tapped") +- a quit callback, called when timer times out (or the page is "tapped") -If it's a success status, a "success" tune will be automatically played. +If it's a success status, a *success* tune will be automatically played. @subsection use_case_review Review Use Case @@ -252,13 +256,12 @@ If it's a success status, a "success" tune will be automatically played. In most cases, the developer may know all tag/value pairs of a transaction when it is submitted. -In this case, what we call a "static" review can be used. The number of pages is computed automatically and pages can be navigated forward -and backward. +Thus, the number of pages is computed automatically and pages can be navigated forward and backward. -In case of a tag/value pair too long to be fully displayed, the "more" button will be automatically drawn and its handling +In case of a tag/value pair too long to be fully displayed, the *more* button will be automatically drawn and its handling automatically performed by NBGL by building a detailed modal view. -When the user taps on "Reject" in any page, a confirmation page is automatically drawned to let user confirm that he rejects +When the user taps on *Reject* in any page, a confirmation page is automatically drawned to let user confirm that he rejects the transaction. In this case, the given callback is called and it's up to app's developer to call @ref nbgl_useCaseReviewStatus(), as in case of long-press. @@ -292,15 +295,15 @@ static void onReviewResult(bool confirm) { } } -void staticReview(void) { - // static review, providing the whole list of pairs +void startReview(void) { + // standard review, providing the whole list of pairs nbgl_useCaseReview(TYPE_TRANSACTION, // type of operation - &pairList, // list of tag/value pairs - coinIcon, // icon of the coin - "Review transaction\nto send coin", // title of the first page - NULL, // sub-title of the first page - "Sign transaction to\nsend coin?", // title of the last page - onReviewResult); // callback on result of the review + &pairList, // list of tag/value pairs + coinIcon, // icon of the coin + "Review transaction\nto send coin", // title of the first page + NULL, // sub-title of the first page + "Sign transaction to\nsend coin?", // title of the last page + onReviewResult); // callback on result of the review } @endcode @@ -354,15 +357,15 @@ static nbgl_layoutTagValue_t* getPair(uint8_t index) { return &pair; } -void staticReview(void) { - // static review, providing the whole list of pairs +void startReview(void) { + // standard review, providing the whole list of pairs nbgl_useCaseReview(TYPE_TRANSACTION, // type of operation - &pairList, // list of tag/value pairs - coinIcon, // icon of the coin - "Review transaction\nto send coin", // title of the first page - NULL, // sub-title of the first page - "Sign transaction to\nsend coin?", // title of the last page - onReviewResult); // callback on result of the review + &pairList, // list of tag/value pairs + coinIcon, // icon of the coin + "Review transaction\nto send coin", // title of the first page + NULL, // sub-title of the first page + "Sign transaction to\nsend coin?", // title of the last page + onReviewResult); // callback on result of the review } @endcode @@ -383,13 +386,13 @@ The API to initiate the display of the series of pages is @ref nbgl_useCaseRevie In some cases, the application cannot know all tag/value pairs of a transaction when the review is started. -In this case, what we call a "streaming" review can be used. The pages to display for each "stream are computed automatically and pages can be navigated forward -and backward (only within a "stream" for backward). +In this case, what we call a *streaming* review can be used. The pages to display for each *stream* are computed automatically and pages can be navigated forward +and backward (only within a *stream* for backward). -In case of a tag/value pair too long to be fully displayed, the "more" button will be automatically drawn and its handling +In case of a tag/value pair too long to be fully displayed, the *more* button will be automatically drawn and its handling automatically performed by NBGL by building a detailed modal view. -When the user taps on "Reject" in any page, a confirmation page is automatically drawned to let user confirm that he rejects +When the user taps on *Reject* in any page, a confirmation page is automatically drawned to let user confirm that he rejects the transaction. In this case, the given callback is called and it's up to app's developer to call @ref nbgl_useCaseReviewStatus(), as in case of long-press. @@ -397,7 +400,7 @@ The API to initiate the display of the series of pages is @ref nbgl_useCaseRevie - the type of operation to review (transaction, message or generic operation) - the texts/icon to use in presentation page -- a callback with one boolean parameter. +- a callback with one boolean parameter: - If this parameter is *false*, it means that the transaction is rejected. - If this parameter is *true*, it means that NBGL is waiting for new data, sent with @ref nbgl_useCaseReviewStreamingContinue() or @ref nbgl_useCaseReviewStreamingContinueExt() @@ -405,11 +408,11 @@ As long as there are new tag/value pairs to send, the API to call is either @ref @ref nbgl_useCaseReviewStreamingContinue(), providing: - the list of tag/value pairs (or a callback to get them one by one) -- a callback with one boolean parameter. +- a callback with one boolean parameter: - If this parameter is *false*, it means that the transaction is rejected. - If this parameter is *true*, it means that NBGL is waiting for new data, to be sent with @ref nbgl_useCaseReviewStreamingContinue() or @ref nbgl_useCaseReviewStreamingContinueExt() -When there is no more data to senf, the API to call is either @ref nbgl_useCaseReviewStreamingFinish(), providing: +When there is no more data to send, the API to call is @ref nbgl_useCaseReviewStreamingFinish(), providing: - the title to use for last page (with long-press button) - a callback called when the long press button on last page or reject confirmation is used. The callback's param is *true* for confirmation, *false* for rejection. @@ -448,13 +451,13 @@ static void onTransactionContinue(bool askMore) } } -void staticReview(void) { +void startReview(void) { // initiate the streaming review nbgl_useCaseReviewStreamingStart(TYPE_TRANSACTION, - &C_ic_asset_cardano_64, // icon on first and last page - "Review transaction", // title of the first page - NULL, // sub-title of the first page - onTransactionContinue); // callback to reject or ask more data + &C_ic_asset_cardano_64, // icon on first and last page + "Review transaction", // title of the first page + NULL, // sub-title of the first page + onTransactionContinue); // callback to reject or ask more data } @endcode @@ -653,10 +656,10 @@ static const nbgl_contentTagValueList_t pairList = { // called when either confirm button or reject token is called static void displayAddressCallback(bool confirm) { if (confirm) { - nbgl_useCaseStatus("ADDRESS\nVERIFIED",true,app_fullEthereum); + nbgl_useCaseReviewStatus(STATUS_TYPE_ADDRESS_VERIFIED, app_fullEthereum); } else { - nbgl_useCaseStatus("Address rejected",false,app_fullEthereum); + nbgl_useCaseReviewStatus(STATUS_TYPE_ADDRESS_REJECTED, app_fullEthereum); } } @@ -665,7 +668,8 @@ void app_ethereumVerifyAddress(void) { &pairList myAppIcon, "Verify MyCoin\naddress", - NULL,"Cancel", + NULL, + "Cancel", appMain); } @endcode @@ -674,12 +678,9 @@ void app_ethereumVerifyAddress(void) { \image{inline} html UseCase-Spinner.png "caption" height=300 -When an address needs to be confirmed, it can be displayed in a Address Confirmation Use Case, at first as simple page with -the raw address (as text) and a black button/Footer pair to choose to confirm or reject the address. - -An extra button under the raw address enables to open a modal page to see the address as a QR code. +This Use Case is simply to display a static *waiting page* -The @ref nbgl_useCaseSpinner() function enables to create such a page, with the following parameters: +The @ref nbgl_useCaseSpinner() function enables to create such a page, without any parameters. @subsection use_case_keypad Keypad Use Case @@ -727,13 +728,13 @@ static void pinentry_cb(int token, uint8_t index) { void ui_menu_pinentry_display(unsigned int value) { // Draw the keypad nbgl_useCaseKeypadPIN("Enter User PIN", - 6, - 12, - TOKEN_PIN_ENTRY_BACK, - false, - TUNE_TAP_CASUAL, - validate_pin, - pinentry_cb); + 6, + 12, + TOKEN_PIN_ENTRY_BACK, + false, + TUNE_TAP_CASUAL, + validate_pin, + pinentry_cb); } @endcode @@ -742,6 +743,5 @@ void ui_menu_pinentry_display(unsigned int value) { After having drawn graphic objects in **framebuffer**, all functions of this API automatically refresh the screen. So no need to call @ref nbgl_refresh(). - */ #endif // HAVE_SE_TOUCH diff --git a/lib_nbgl/doc/nbgl_use_case_nanos.dox b/lib_nbgl/doc/nbgl_use_case_nanos.dox index 88b18a20f..734c0f19c 100644 --- a/lib_nbgl/doc/nbgl_use_case_nanos.dox +++ b/lib_nbgl/doc/nbgl_use_case_nanos.dox @@ -15,7 +15,7 @@ A full description of each predefined use-case can be found in this document @section nbgl_use_case_concepts Concepts -This layer uses the Step API described in @ref nbgl_step, but offers to developer more than a single step. +This layer uses the high-level API described in @ref nbgl_step, but offers to developer more than a single step. The goal is to simplify the usage of NBGL, but also to offer a better homogeneity across applications, by pushing developers to use common API for common use-cases. @@ -25,354 +25,548 @@ for end-users, getting more and more familiar with the user experience of applic @subsection nbgl_use_case_example_1 Example 1: transaction review -\image{inline} html UseCase-Nano-Review1.png "caption" width=1000 +\image{inline} html UseCase-Nano-Review-ex.png "caption" width=1000 In this example, a transaction review consists in 5 successive pages, and can be seen as a use-case -@subsection nbgl_use_case_example_2 Example 2: about pages +@subsection nbgl_use_case_example_2 Example 2: Settings pages -\image{inline} html UseCase-Nano-About1.png "caption" width=800 +\image{inline} html UseCase-Nano-Settings-ex.png "caption" width=750 -In this example, the settings/about (accessed from "Settings"/"About" in Home, single level) consists in 4 pages, and can be seen as another use-case. +In this example, the settings (accessed from *Settings* in Home, single level) consists in 3 pages, and can be seen as another use-case. @section nbgl_use_cases Use Cases A few APIs are available to draw typical Use-Cases, such as: -- for Home Screen: - - @ref nbgl_useCaseHome() to draw the home screen of an application (see @subpage use_case_home) -- for Settings: - - @ref nbgl_useCaseSettings() to draw a level of settings pages (see @subpage use_case_settings) -- for most used reviews: - - @ref nbgl_useCaseStaticReview() to draw the pages of a regular review, when all info are available from the beginning (see @subpage use_case_static_review) - - @ref nbgl_useCaseRegularReview() to draw the pages of a regular review (all pages but the cover one) (see @subpage use_case_regular_review) +- For Home Screen & Settings: + - @ref nbgl_useCaseHomeAndSettings() to draw the home page and settings/info pages (see @subpage use_case_home_settings) +- For Individual pages: + - @ref nbgl_useCaseConfirm() to draw a typical confirmation page, for example when rejecting a transaction (see @subpage use_case_confirm) + - @ref nbgl_useCaseChoice() to draw a typical dual choice page (see @subpage use_case_choice) + - @ref nbgl_useCaseStatus() to draw a transient status page, without control, for example when a transaction is successfully signed (see @subpage use_case_status) + - @ref nbgl_useCaseSpinner() to draw an infinite spinner page (see @subpage use_case_spinner) +- For most used reviews: + - @ref nbgl_useCaseReview() to draw the pages of a regular coin transaction review, when all info are available from the beginning (see @subpage use_case_review) + - @ref nbgl_useCaseReviewLight() to draw the pages of a transaction review with a simple button confirmation, when all info are available from the beginning (see @subpage use_case_review_light) + - @ref nbgl_useCaseReviewStreamingStart() to draw the pages of a regular coin transaction review, when all info are not available from the beginning (see @subpage use_case_review_streaming) +- For address verification: + - @ref nbgl_useCaseAddressReview() to draw an address confirmation page, with a possibility to see some extra tag/value pairs (see @subpage use_case_addr_review) +- For keypad: + - @ref nbgl_useCaseKeypadPIN() to draw a default keypad implementation with hidden digits (see @subpage use_case_keypad) + - @ref nbgl_useCaseKeypadDigits() to draw a default keypad implementation, showing digits (see @subpage use_case_keypad) +- For generic navigable content: + - @ref nbgl_useCaseNavigableContent() to draw a level of generic content navigable pages + +@subsection use_case_home_settings Home & Settings screen Use Case + +\image{inline} html UseCase-Nano-Home.png "caption" width=1000 + +Ledger would like all application to have the same layout for home screen and settings/info, so the @ref nbgl_useCaseHomeAndSettings() function enables to +create such a set of page, the configurable parameters being: + +- The application name (appName) +- The application icon (appIcon) +- The tagline, a text under app name (if NULL, it will be " is ready") +- The callback when touching *quit application* button +- The settings pages description +- The info pages description -@subsection use_case_home Home screen Use Case +@code +extern const nbgl_icon_details_t *app_icon; -\image{inline} html UseCase-Nano-Home.png "caption" width=800 +enum { + SWITCH1_TOKEN = FIRST_USER_TOKEN, + SWITCH2_TOKEN +}; -Ledger would like all application to have the same home screen, so the @ref nbgl_useCaseHome() function enables to -create such a page, the only configurable parameters being: +static const nbgl_layoutSwitch_t switches[] = { + {.initState = false, + .text = "Dummy 1", + .subText = "Allow dummy 1\nin transactions", + .token = SWITCH1_TOKEN}, + {.initState = true, + .text = "Dummy 2", + .subText = "Allow dummy 2\nin transactions", + .token = SWITCH2_TOKEN} +}; +static const char *infoTypes[] = {"Version", "Developer"}; +static const char *infoContents[] = {"1.1.0", "Ledger"}; + +// function called in case of action on switches +static void controlsCallback(int token, uint8_t index, int page) { + if (token == SWITCH1_TOKEN) { + if (index == 0) { + // deactivate something related with Dummy1 + } + else { + // activate something related with Dummy1 + } + } + else if (token == SWITCH2_TOKEN) { + if (index == 0) { + // deactivate something related with Dummy2 + } + else { + // activate something related with Dummy2 + } + } +} -- the application name -- the application icon -- the application version -- the tagline, which is the text of the first page (if NULL, it will be the .") -- the callbacks when touching *quit* or *about* buttons -- the type of *about* button (about or settings) +static const nbgl_content_t contentsList = { + .content.switchesList.nbSwitches = 2, + .content.switchesList.switches = switches, + .type = SWITCHES_LIST, + .contentActionCallback = controlsCallback +}; -@code -extern const nbgl_icon_details_t *myAppIcon; +static const nbgl_genericContents_t settingContents = { + .contentsList = &contentsList, + .nbContents = 1 +}; +static const nbgl_contentInfoList_t infosList = { + .nbInfos = 2, + .infoTypes = infoTypes, + .infoContents = infoContents +}; -void onAbout(void) { - // draw settings page here -} void onQuit(void) { // exit app here } void appMain(void) { - nbgl_useCaseHome("MyApp", - &myAppIcon, - "1.0", // App version - NULL, // no tagline - false, // with settings button - onAbout, - onQuit); + nbgl_useCaseHomeAndSettings("NBGL Tests", + app_icon, + NULL, // use default tag line + INIT_HOME_PAGE, // start at home page + &esettingContents, // description of settings + &infosList, // description of app info + NULL, // no action button on home screen + onQuit); // when quitting } @endcode +@subsubsection use_case_home_settings_with_action Home & Settings screen with action button Use Case -@subsection use_case_settings Settings Use Case - -\image{inline} html UseCase-Nano-About1.png "caption" width=800 - -Usually settings (or information) of an application consists in a list of pages, each page containing either: +\image{inline} html UseCase-Nano-Settings-Action.png "caption" width=1000 -- a static information (version, developer) -- a changeable settings (boolean, list of values) +For some rare applications, one may need an action button in the Home screen, to perform either: -The API to initiate the display of the series of pages is @ref nbgl_useCaseSettings(), providing: +- The main action of the Application +- Or an side-action, as to display an address -- the page in which to start -- the number of pages -- a callback called when the "Back" page is double-pressed -- a navigation callback called when left or right buttons are pressed (and also to fill the initial page), to retrieve -the content of the page -- a last callback called when a page is selected (double-pressed) +The \b action argument of @ref nbgl_useCaseHomeAndSettings() can be used for that. This structure (@ref nbgl_homeAction_t) +enables to specify: -Here is the source code to display the example of settings: +- A text +- An optional icon +- A function to be called when the buttons are pressed -@code -typedef struct { - const char *text; ///< main text for the switch - nbgl_state_t initState; ///< initial state of the switch -} Switch_t; - -/********************** - * STATIC VARIABLES - **********************/ -static Switch_t switches[] = { - { - .initState = false, - .text = "Blind signing", - }, - { - .initState = true, - .text = "Debug", - }, - { - .initState = true, - .text = "Nonce", - }, -}; +@subsection use_case_confirm Confirmation Use Case -static bool navCallback(uint8_t page, nbgl_pageContent_t *content) -{ - if (page < 3) { - content->text = switches[page].text; - content->subText = switches[page].initState ? "Enabled" : "Disabled"; - } - else { - return false; - } - return true; -} +\image{inline} html UseCase-Nano-Confirm.png "caption" width=750 -static void actionCallback(uint8_t page) { - switches[page].initState = !switches[page].initState; - nbgl_useCaseSettings(page, 3, app_fullEthereum, navCallback, actionCallback); -} +A confirmation use-case consists in 3 modal pages sequence: -void myAppSettings(void) { - // draw the settings Use Case (3 pages), starting at page 0 - nbgl_useCaseSettings(0, // init page - 3, // number of pages - appMain, // "Back" callback - navCallback, // navigation callback, to get content of pages - actionCallback // action callback, when a page is selected - ); -} -@endcode +- 1st page containing a fixed icon, a configurable message +- 2nd page to confirm (pressing both buttons) +- 3rd page to reject (pressing both buttons) +The @ref nbgl_useCaseConfirm() function enables to create such a page. -@subsection use_case_regular_review Regular Review Use Case +The *callback* argument is called upon confirmation. -\image{inline} html UseCase-Nano-Review1.png "caption" width=1000 +When rejected, this modal screen is simply dismissed, revealing the previous page on background. -Usually transaction/message reviews consist in a sequence of pages, each page containing: +Here is the code to display the example picture (and a status page for confirmation) -- one tag/value pair page (sometimes with a multi-pages value) -- two selectable pages at the end, to accept or reject the transaction +@code +static void confirmationCallback(void) { + // draw a status screen which continues by returning to appMain +} -To navigate between pages, right and left buttons can be pressed. And the last two pages can be selected with a double-press. +void onRejectTransaction(void) { + nbgl_useCaseConfirm("Do you confirm\nThis message?", + "Confirm", + "Cancel", + confirmationCallback); +} +@endcode -The API to initiate the display of the series of pages is @ref nbgl_useCaseRegularReview(), providing: +@subsection use_case_choice Choice Use Case -- the page in which to start (usually 0) -- the number of pages (if unknown, set to 0) -- a navigation callback called when right or left button is pressed, to retrieve -the content of the previous/next page. It is also called to fill the initial page. +\image{inline} html UseCase-Nano-Choice.png "caption" width=800 -Here is the code to display something similar to the example picture: +A choice use-case consists in a 4-page sequence: -@code -// 2 pairs of tag/value to display -static nbgl_layoutTagValue_t pairs[2] = { - { - .item = "Address", - .value = "0xEAEAEAEAEAEAEAEAE" - }, - { - .item = "Amount", - .value = "BOL 0.666" - } -}; +- 1st page containing a configurable icon and a configurable title +- 2nd page containing a configurable message (text and subText) +- 3rd page to confirm, with a configurable message (pressing both buttons) +- 4th page to reject, with a configurable message (preesing both buttons) -static void onApprove(void) { - // confirm transaction +The @ref nbgl_useCaseChoice() function enables to create such a page. - // and go back to main - appMain(); -} +The *callback* argument is called when a choice is done. Its argument is a boolean which is *true* upon confirmation, else *false*. -static void onReject(void) { - // reject transaction +Here is the code to display the example picture - // and go back to main - appMain(); -} - -// called to get the content of the given page -static bool navCallback(uint8_t page, nbgl_pageContent_t *content) { - memset(content, 0, sizeof(nbgl_pageContent_t)); - if (page == 0) { - // the first page is used to display the title of the review - content->text = "Review\ntransaction"; - content->icon = &C_icon_eye; - } - else if (page < 3) { - // the 2 next pages contain the two pairs of tag/values - content->text = pairs[page - 1].item; - content->subText = pairs[page - 1].value; - } - else if (page == 3) { - // this page is for approval - content->text = "Approve"; - content->icon = &C_icon_validate; - content->callback = onApprove; - } - else if (page == 4) { - // this page is for rejection - content->text = "Reject"; - content->icon = &C_icon_crossmark; - content->callback = onReject; +@code +static void onChoice(bool confirm) { + if (confirm) { + // do something } else { - return false; + // do something } - // valid page so return true - return true; } -void startReview(void) { - // review on 3 pages, starting at 0 - nbgl_useCaseRegularReview(0, // start at first page - 5, // number of pages - navCallback); +void onRejectTransaction(void) { + nbgl_useCaseChoice(&C_icon_warning, + "Dummy 2", + "Are you sure to\nallow dummy 2\nin transactions?", + "I understand, confirm", + "Cancel", + onChoice); } @endcode -@subsection use_case_static_review Static Review Use Case +@subsection use_case_status Status Use Case + +\image{inline} html UseCase-Nano-Status.png "caption" width=600 + +A status is a transient page, without control, to display during a short time, for example when a transaction is successfully signed. +The @ref nbgl_useCaseStatus() function enables to create such a page, with the following arguments: + +- A message string to set in middle of page +- A boolean to indicate if true (to determine the icon) +- A quit callback, called when timer times out (or both buttons are pressed) -\image{inline} html UseCase-Nano-Review1.png "caption" width=1000 +@subsection use_case_review_status Pre-defined review status Use Case -In some cases, the developer may know all tag/value pairs of a transaction when it is submitted. -And he may want to use a more standardized transaction review Use Case, with less interaction. +\image{inline} html UseCase-Nano-Review-Status.png "caption" width=600 -In this case, what we call a "static" review can be used. It is similar to a regular review with known number of pages in terms of -presentation and interactions with end-users, but much easier to use for developer. +Similar as @subpage use_case_status, this is used to display transient page, without control, during a short time, for example when a transaction is successfully signed. +The @ref nbgl_useCaseReviewStatus() function enables to create such a page, with the following arguments: -Indeed, in this case, NBGL automatically computes the number of pages, and the pairs to draw in each page. -In case of a tag/value pair too long to be fully displayed, it is split in a multi-pages steps. +- A type of status (with predefined message and icon) +- A quit callback, called when timer times out (or both buttons are pressed) -The API to initiate the display of the series of pages is @ref nbgl_useCaseStaticReview(), providing: +@subsection use_case_review Review Use Case -- the list of tag/value pairs (or a callback to get them one by one) -- the text to use in first page -- an action callback called when a page's content is selectable (double-pressed) -- a callback called when the "accept" (with param equal to \b true) or "reject" (with param equal to \b false) last two pages is selected +\image{inline} html UseCase-Nano-Review.png "caption" height=300 + +In most cases, the developer may know all tag/value pairs of a transaction when it is submitted. + +Thus, the number of pages is computed automatically and pages can be navigated forward and backward. + +@note In case of a tag/value pair too long to be fully displayed, the value is automatically split on successive pages, adding an indication `(n/m)` in the name. + +At the end of the review flow, the user has 2 pages to *Approve* or *Reject* the transaction. +Finally, the given callback is called and it's up to app's developer to call @ref nbgl_useCaseReviewStatus(). + +The API to initiate the display of the series of pages is @ref nbgl_useCaseReview(), providing: + +- The type of operation to review (*transaction*, *message* or generic *operation*) +- The title and icon for the presentation page +- The list of tag/value pairs (or a callback to get them one by one) +- A callback called when the review is *Approved* or *Rejected*. The callback's param is *true* for approval, *false* for rejection. Here is the code to display something similar to example picture: @code -// 2 pairs of tag/value to display -static nbgl_layoutTagValue_t pairs[2] = { - { - .item = "Address", - .value = "0xEAEAEAEAEAEAEAEAE" - }, - { - .item = "Amount", - .value = "BOL 0.666" - } -}; +extern const nbgl_icon_details_t *app_icon; + +// pairs of tag/value to display +static nbgl_layoutTagValue_t pairs[2]; -static nbgl_contentTagValueList_t pairList = { - .nbMaxLinesForValue = 0, +static const nbgl_contentTagValueList_t pairList = { .nbPairs = 2, .pairs = (nbgl_layoutTagValue_t*)pairs }; -// called when "Approve" or "Reject" page is selected (double-press) -static void reviewChoice(bool confirm) { +// called when review is approved or rejected +static void review_choice(bool confirm) { + // display a status page and go back to main if (confirm) { - // confirm transaction + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_SIGNED, appMain); } else { - // reject transaction + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_REJECTED, appMain); } - // go back to main - appMain(); } -void startStaticReview(void) { - // static review, providing the whole list of pairs - nbgl_useCaseStaticReview(&pairList, - &C_icon_eye, - "Review\ntransaction", - "Approve", - "Reject", - reviewChoice); +void startReview(void) { + // Setup data to display + pairs[0].item = "Amount"; + pairs[0].value = "NBT 0.99"; + pairs[1].item = "Address"; + pairs[1].value = "0x1234567890"; + + // standard review, providing the whole list of pairs + nbgl_useCaseReview(TYPE_TRANSACTION, // type of operation + &pairList, // list of tag/value pairs + app_icon, // icon of the coin + "Review transaction\nto send NBT", // title of the first page + NULL, // sub-title of the first page + NULL, // title of the last page + review_choice); // callback on result of the review } @endcode Here is another version of the example code, using a callback mechanism to get tag/value pairs: @code +extern const nbgl_icon_details_t *app_icon; + // common tag/value pair to return static nbgl_layoutTagValue_t pair; static nbgl_layoutTagValue_t* getPair(uint8_t index); -static nbgl_contentTagValueList_t pairList = { - .nbMaxLinesForValue = 0, - .nbPairs = 5, +static const nbgl_contentTagValueList_t pairList = { + .nbPairs = 2, .pairs = NULL, // to indicate that callback should be used .callback = getPair, - .startIndex = 0 }; -// called when "Approve" or "Reject" page is selected (double-press) -static void reviewChoice(bool confirm) { +// called when review is approved or rejected +static void review_choice(bool confirm) { + // display a status page and go back to main if (confirm) { - // confirm transaction + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_SIGNED, appMain); } else { - // reject transaction + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_REJECTED, appMain); } - // go back to main - appMain(); } // function called by NBGL to get the pair indexed by "index" static nbgl_layoutTagValue_t* getPair(uint8_t index) { switch (index) { case 0: - pair.item = "To"; - pair.value = "0x123456"; - break; - case 1: - pair.item = "From"; - pair.value = "0x654321"; - break; - case 2: pair.item = "Amount"; - pair.value = "1.2345 BTC"; + pair.value = "NBT 0.99"; break; - case 3: - pair.item = "Fees"; - pair.value = "0.1 BTC"; + case 1: + pair.item = "Address"; + pair.value = "0x1234567890"; break; } return &pair; } -void startStaticReview(void) { - // static review, providing the description of pairs - nbgl_useCaseStaticReview(&pairList, - &C_icon_eye, - "Review\ntransaction", - "Approve", - "Reject", - reviewChoice); +void startReview(void) { + // standard review, providing the whole list of pairs + nbgl_useCaseReview(TYPE_TRANSACTION, // type of operation + &pairList, // list of tag/value pairs + app_icon, // icon of the coin + "Review transaction\nto send NBT", // title of the first page + NULL, // sub-title of the first page + NULL, // title of the last page + review_choice); // callback on result of the review +} +@endcode + +@subsection use_case_review_light Light review Use Case + +Not really useful on Nano devices, and thus, directly mapped to @subpage use_case_review. + +@subsection use_case_review_streaming Streaming review Use Case + +\image{inline} html UseCase-Nano-Streaming.png "caption" width=1000 + +In some cases, the application cannot know all tag/value pairs of a transaction when the review is started. + +In this case, what we call a *streaming* review can be used. The pages to display for each *stream* are computed automatically +and pages can be navigated forward and backward. + +In case of a tag/value pair too long to be fully displayed, the value is automatically split on +successive pages, adding an indication `(n/m)` in the name. + +At the end of the review flow, the user has 2 pages to *Approve* or *Reject* the transaction. +Finally, the given callback is called and it's up to app's developer to call @ref nbgl_useCaseReviewStatus(). + +The API to initiate the display of the series of pages is @ref nbgl_useCaseReviewStreamingStart(), providing: + +- The type of operation to review (transaction, message or generic operation) +- The title and icon for the presentation page +- A callback with one boolean parameter: + - If this parameter is *false*, it means that the transaction is rejected. + - If this parameter is *true*, it means that NBGL is waiting for new data, sent with @ref nbgl_useCaseReviewStreamingContinue() + +As long as there are new tag/value pairs to send, the API to call is @ref nbgl_useCaseReviewStreamingContinue(), providing: + +- The list of tag/value pairs (or a callback to get them one by one) +- A callback with one boolean parameter: + - If this parameter is *false*, it means that the transaction is rejected. + - If this parameter is *true*, it means that NBGL is waiting for new data, to be sent with @ref nbgl_useCaseReviewStreamingContinue() + +@note Considering *skip* is not available on Nano device, @ref nbgl_useCaseReviewStreamingContinueExt() is useless and directly mapped to @ref nbgl_useCaseReviewStreamingContinue() + +When there is no more data to send, the API to call is @ref nbgl_useCaseReviewStreamingFinish(), providing: + +- A callback called when the review is *Approved* or *Rejected*. The callback's param is *true* for approval, *false* for rejection. + +Here is the code to display something similar to example picture: + +@code +extern const nbgl_icon_details_t *app_icon; + +// called when long press button on last page is long-touched or when reject footer is touched +static void onReviewResult(bool confirm) { + // display a status page and go back to main + if (confirm) { + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_SIGNED, appMain); + } + else { + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_REJECTED, appMain); + } +} + +static void onTransactionContinue(bool askMore) +{ + if (askMore) { + nbgl_contentTagValueList_t pairsToSend; + // try to get more data + if (moreDataToSend(&pairsToSend)) { + nbgl_useCaseReviewStreamingContinue(&pairsToSend, onTransactionContinue); + } + else { + // all data sent, so finish + nbgl_useCaseReviewStreamingFinish("Sign transaction?", // title on last page + onReviewResult); // callback to handle reject/accept + } + } + else { + onReviewResult(false); + } +} + +void startReview(void) { + // initiate the streaming review + nbgl_useCaseReviewStreamingStart(TYPE_TRANSACTION, + app_icon, // icon on first page + "Review transaction\nto send NBT", // title of the first page + NULL, // sub-title + onTransactionContinue); // callback to reject or ask more data +} +@endcode + +@subsection use_case_addr_review Address Review Use Case + +\image{inline} html UseCase-Nano-AddressReview.png "caption" width=1500 + +When an address needs to be confirmed, it can be displayed in a Address Review Use Case. + +After a title page, a second page is displayed with the raw address (as text). + +Moreover, if extra information need to be displayed, in the form of tags/values, they are show in successive pages. + +@note In case of a tag/value pair too long to be fully displayed, the value is automatically split on successive pages, adding an indication `(n/m)` in the name. + + +At the end of the review flow, the user has 2 pages to *Approve* or *Reject* the review. +Finally, the given callback is called and it's up to app's developer to call @ref nbgl_useCaseReviewStatus(). + +The @ref nbgl_useCaseAddressReview() function enables to create such a set of pages, with the following parameters: + +- The address to confirm (NULL terminated string) +- A callback called when the review is *Approved* or *Rejected* +- The optional list of extra tag/value pairs + +Here is the code to display something similar to example picture: + +@code +// 2 pairs of tag/value to display in second page +static nbgl_layoutTagValue_t pairs[2]; + +static const nbgl_contentTagValueList_t pairList = { + .nbPairs = 2, + .pairs = (nbgl_layoutTagValue_t*)pairs +}; + +// called when either confirm button or reject token is called +static void review_choice(bool confirm) { + if (confirm) { + nbgl_useCaseReviewStatus(STATUS_TYPE_ADDRESS_VERIFIED, ui_main); + } + else { + nbgl_useCaseReviewStatus(STATUS_TYPE_ADDRESS_REJECTED, ui_main); + } +} + +void app_ethereumVerifyAddress(void) { + // Setup data to display + pairs[0].item = "Type address"; + pairs[0].value = "dummy type"; + pairs[1].item = "Sub address"; + pairs[1].value = "dummy sub address"; + + // Setup list + pairList.nbMaxLinesForValue = 0; + pairList.nbPairs = 2; + pairList.pairs = pairs; + + nbgl_useCaseAddressReview( + "5A8FgbMkmG2e3J41sBdjvjaBUyz8qHohsQcGtRf63qEUTMBvmA45fpp5pSacMdSg7A3b71RejLzB8EkGbfjp5PELVHCRUaE", + &pairList, + &ICON_APP, + "Verify NBT address", + NULL, + review_choice); } @endcode @subsection use_case_spinner Spinner Use Case -This Use Case is simply to display a static "waiting page" +\image{inline} html UseCase-Nano-Spinner.png "caption" width=300 + +This Use Case is simply to display a static *waiting page* -The @ref nbgl_useCaseSpinner() function enables to create such a page. +The @ref nbgl_useCaseSpinner() function enables to create such a page, without any parameters. + +@subsection use_case_keypad Keypad Use Case + +\image{inline} html UseCase-Nano-Keypad.png "caption" height=350 + +We have here 2 different variants, allowing to \b show or \b hide the entered digits. + +When a pincode is requested, a default keypad can be displayed, with hidden digits. + +The @ref nbgl_useCaseKeypadPIN() function enables to create such page, with the following parameters: + +- A title +- The min and max lengths +- A boolean to request a *shuffled* keypad +- Callbacks for navigation and pin validation + +The other variant, where digits don't need to be hidden is @ref nbgl_useCaseKeypadDigits(); +it takes the same parameters. + +@note The \em backspace and \em validate buttons will be shown or hidden automatically. +@note The \em backspace button is also used as a *cancel* button, when no digits are selected. +@note The max nb of supported digits is \b 12. + +Here is the code to display something similar to example picture: + +@code +static void validate_pin(const uint8_t *pinentry, uint8_t length) { + // Code to validate the entered pin code +} + +static void quit_cb() { + // Back to the main app menu +} + +void ui_menu_pinentry_display(unsigned int value) { + // Draw the keypad + nbgl_useCaseKeypadPIN("PIN Keypad (5555)", + 4, + 4, + false, + validate_pin, + quit_cb); +} +@endcode @section use_case_refresh_page Refreshing screen diff --git a/lib_nbgl/doc/resources/UseCase-Nano-About1.png b/lib_nbgl/doc/resources/UseCase-Nano-About1.png deleted file mode 100755 index 86ffb04429bd03dca9b1bdf4a893be0e0da40beb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19909 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 X%9g)=_2ILtfY-URCTE`LIfVQN8=KmG literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/UseCase-Nano-Choice.png b/lib_nbgl/doc/resources/UseCase-Nano-Choice.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1d32e988b5319a7f95d55118d66c3e5fb0b8b1 GIT binary patch literal 52175 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 Md38jQ?33635AsHL4*&oF literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/UseCase-Nano-Confirm.png b/lib_nbgl/doc/resources/UseCase-Nano-Confirm.png new file mode 100644 index 0000000000000000000000000000000000000000..332c13ac3eee9fac82af2f258581353488e76379 GIT binary patch literal 30741 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≦T(Bk)F;V74DeOQuL~`zZ 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

G4S8f>9x^0&BE!!6R*2nSFen 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 literal 24558 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 z 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 NWt1P3OFen^zW^Cdd{O`a literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/UseCase-Nano-Review-Status.png b/lib_nbgl/doc/resources/UseCase-Nano-Review-Status.png new file mode 100644 index 0000000000000000000000000000000000000000..462cf63e7e9cafb86afaa0b1d3c241684e708046 GIT binary patch literal 20717 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%0DR`5%6DZW4}HVQl5!h@ro%B<{EOS5 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

    0z<{XS@`n*`Ae68km`)McLWWE!8D=#N6FI}Bz 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 literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/UseCase-Nano-Review.png b/lib_nbgl/doc/resources/UseCase-Nano-Review.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d86bdcb73de2917a79b28c4f317de1679145fd GIT binary patch literal 71929 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 z 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 b^!*FQU(>ho?i1$#Kj-v}f6Y8)7ySPK4{L!~ literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/UseCase-Nano-Review1.png b/lib_nbgl/doc/resources/UseCase-Nano-Review1.png deleted file mode 100755 index f0afae8ac56533f76002a0f50399ee87dab41478..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26035 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ྌ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
    txU>p-)_%t?nw%2Swllhk4TN{{v0ey=!Tz8h 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
    W{BGWG~3g)-?PmWA|D7w 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 literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/UseCase-Nano-Status.png b/lib_nbgl/doc/resources/UseCase-Nano-Status.png new file mode 100644 index 0000000000000000000000000000000000000000..e2fc0ce6cb4b0032d5aa7a0449e8099e3b5eb4e9 GIT binary patch literal 25051 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 literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/UseCase-Nano-Streaming.png b/lib_nbgl/doc/resources/UseCase-Nano-Streaming.png new file mode 100644 index 0000000000000000000000000000000000000000..b6df3b5feb6ba5e96246935225f1c2e0bed88f75 GIT binary patch literal 60433 zcmeFacU049w?C?gf-p3ts8mG(MLdoMv%|2%h^)}_AMZRs?B(dq#aouwPcGH7_ z)wWK73g4w~UEqrlxn3HIFIsQF$eFZfx4j!pi z(|oobJI&4;5ChI8zm-v35XE4hYi)*ptc5#yMXsoPZdKmzi|?xTJMC~0TrB2vS1sc{ ztdo4aknS-TAr{u(IM}&=({q}Aj8VI&CEy zb%n6@nTdf#c77cR&du8Dg}a_fF-r2Ug1iuCjf**aC(U#`?~R^ovb>K83@P=O!W;nK zR33A$*}JXdyJ6-Wu{DFz{b<`A-MD7ht zMO9I^8UxRD?7;HXI2znaW?ruqEgXvUAY!g?G1K1OdZ6AGOG*NAU$R@}@I z4|r0=v&y3947<4r(Yl=-Imp8xzMEMB*}**@Ka*$QzgNQ7`0_8O1orwGUl)nmdoSq* zMy=v^nLCW&rE>t>;ec{9J8#c}8<^gj2_dl6PF8j|W1WfVFeW(nPG4stsaeENS7JN( za);x|O!hRNvty>eAimJ95_?>i$yE-4Bg+<89lufc68sU~00p)}O6WNFfGd%2F*%hO zpqIw@D^8YE;7<2<>7O+K|Llpp%)Vb5T+L%Y$38~PGd-me)3D*x!P)!BYK3uWtk z2i=EGUHkU|a$Vuw{t!rl%dX${-b)3id6On{mkG_cf=h2LPD)@$`Xu8QgLgvWvE}a4 z?8ts)#rYkN?KY>8=7Q8?89%Hm2b+)m;r^|*22(K+JC->zmm1oV+<&$U{Xota|MAsn zl|#PrMqhPVkN_-U-qTN|7?}6Y6mVd~)bQGCw?$cBF#|Phi5@P**{0-ZnvaFr6uU2w zx`9}=sXrLDmwZg%RFN)!5%--=2RmIWWmL2K(Z2HRyJ)Ch|Xps>oauC=B zKx2k&ZfruV0C`$!3wXud5`nHUidCA4R}W{cR@8H5BB^nglCFar5U_$zeUBLrUsnuZC*z^|YW;2Ww>Fut z9O3ALCK*rqZlhbv)gS8EfGfK{c>vkYsPAre00$!6_M0mC;@!{AH5I8KNwuB;%y2d@ z)YE(flw8?;4FPYER#Oic_LYDF-VBjME7j9Tm@9%Bzk#(NbDTh;0hN`3Ci`nM5&ka# zz0i(vC4Of75TVc^*((^~wjtkK_j9K__WK%pAC46~K*#w%09HwB@7u~~ka%SPG36UO zkdaY(U(?&d(SsGTiIe9h24k#{Mu#&Og zuaiuW><9ppK-IkIlw4U~ye=2zYOxBkKeX{SdL|jGnkfW{*Y8Ybodpg7?&xVGBhP$o z07GV$v|oao{_n*sYRFW+3i?UwJ>sCty1@QZsO#!7==CgLt4q%>pRP5abacInZ2~YP z#_5`+A^<513W<_F;t$ZI=dLIN4gi~A4TQ1%?Le~rhlu)Hkjy=MgpmDWZ#*my`QjH= zR61+^k>$8xBV;fFB>-#g{>93Dzc2cFQpqt%-`wy|QmlnQo1E3HV;N1m?-@Y20)$YB z`t^x{et3^cax_{lvmbX27@_vZ`oCGQ0}e)5vp=U9A*j?LCag0x07l3_ZcGVm|0xlz zhl^1#yxVmfec&Es;SQ$4aZ9&6VlMy^{hNVF4El0ICml%BaklnzR(|2=`iM3IobuO^ zfe}EF`ar*tYiT|~=E>Udu*25HF8Y^b&u8BW=M;Kr`6>zmR0iMhSm_i)c!JpsRFEw~ z<4iO-P_GISEc*&a%EqXrSao&Y#Z<_@UtR!ilJm8UPvBI~g!>RoPQ?LE#sBi2DVHAZ zcEqQ*XK$nBMEV||7KFs_4!AQzsUN4l7z!A=a9mZp;p?6evosQWz#}F~dGaIxdCZZs zG6oY#Z~6OdZec2Fii9n{>fyZJbEEQr$RAB3dD>Z|2tq6$7R50+h&4D!@%X0zCBH~? zO@!d#3;Df6QD}FO6PsTE8ohW7nZJioLwZ?qA%mxapn5zUj%+j96I_#KDGHex()Q=z zgbG~>*V9y$`l*V3JzS8;j2;8UbW*PYlC|$VIlYqp9o9qe#g|C?8oOZ}4;fBqNc9Lp zWqpmE1N3kL1)d{sWjLy$la}=-eWeD_zXAPBO3Y*eqU(@%HbD}xVCJxy`3698`A(+m$rsH~I) zY{yTl^j2Vc!*>D6(}=Q5b_ENzSxjhX3(8p+U*dfhG1h8wERO^D2d(BRjK*aUXafwk z0FgGW0^Y0t=Psy>uSeKz3#}PHJYZYgl@q1;A(5sd=Ok6SipqwuL_O--ihVKj8A}95(^;hTWc4 zMDX>X3UcQH;hXjCIKkx0YH;)Fhtk`5>G2Zq9&qFM zb1UwS2Nq(~+A1ca7{oI*7<`9sz1Ym!1cC=KVRu&*L5PYsU1CP+0b|z{{%vQ9Exj(iWS(bOq#>uo*ZqmiNXX{*ZND}tJERD zKOT{JE(FQY(w%3-VqO^lvhuhu2U%G6=}im_xgJ@1NlFM?j9z?WV(I2G>Q&_2)DqXD z6gGCPs$nD;EqvMsct81l4|H4s6y)rFsK-PRWA+2a+-ZI$A=1RoT} z*_Iqe+k{vS_~ItHwi1e_x`>66{?Rz`LdWTX)kh^t`+Rd_Kc8T=mOCO7vhdO;t2r}( zfq|P@gu%}8TQ;-k1G$ZqI_>=iez;Z^ZBu=?HgvwQobaYZ_<9H$q23hDgH=lo9*$FV zUikR?bzsjyl!tHwANR(bm1II|<%7UgQe@|Sbr>TKPF?Y<(=$#&Eg^w8--5pbwJp&I zEC2GlJxUWg)k`c4uWH)PhTmm~ud#ixCmj8-=kUIJIXdt~;4``z<|r~88xaTOPF>k^ zX2&aYASoGF_XOKgqA8=U_czatIuVPi#Fpm!BelHx1K#XaZ}j2mQ%tUIKmQ_H0Fv-> zRsvxRa72OOr=Dw1fSv0C3hIcQ7J zlv?82Jb-+T?~iyVZs;h4*j0EtiNIHg;i3vPp@Abu#hBocPAV-BY+Z2Y;&Q#3Z)<=k z9ZI>RhwFwf|FJmA6J}=S(%zyha2CpM-CUoxaPD1=7AEz zGNq)`s}L{Iw%gu*IkQtGSYqSpu|I?fcT0Bixpw77`%UfZGCtGL=NG?%t-O23Z%XQN z>oQzrsqKDSwv{^Hl$4a1RgwSYNvz447-x?P!t%uT3i8XPjzruP_E*Bzar3(0ahFX0P+jARTf!(*tx68OLuUib=(*Dy~X_(sw zd`XX%=PzHQFV=s$HYyx&CO6jtxDYE*9Y*0D!r@(tyIt~lD!SSF?x&IaN~T`ECA_W+ z4!xnd`zGMY{mtYnsWoQ9H6E+lCR<12xj#yiFR1u6eW|$bDz#<)PlhD_($}r6El{4P z?drYS@C=>Y2c1n(xlIu6uGmZG##B9J-Whs<^6F^Db!!xC9wmJL)LIj&d*!aW+iq+i zu00&xX_mA9UJZ!2DSWQ?812O~7UXthOPGppucs%*$D*5zMHNDQg^-qWfrNp5DMLQ1 zegd6V#e`HsHJ;}v+e|wutcMg4S_?Nem};StfBW6B*Jo-$_jrfZdy?K8px@ zmP04y@3c|t8EA#+2b^ngy`o$M)HvlBSL^Dv4lSF%tR8TwifarqxHHkVK3xX zVpH?;CyWNuk9hYiN9Tr`!41-!2_)SST)D^xyiEtZH}nJK;b7jhj|I-w&lc64s*)7k z7T8`f&2^ewVV{e<1Fx8lTkNuE8C`KrFj;*{97=H{BgNa)9GU~VsOk;L>K;~^+tYjw zO7ZZ$JMUoHGvL~ji0+NEb7VZ3C`dvmSQUPHmlaW6V-)rFU1kc8@E$?r(TU^)Tg$l! z;OaV#Wad7j#_x#2JM~sBlXoApPxA?e-&~mzfHlE#t+WJ=G%9ik+&va z_gQ|bEZlpg6Bo5S9jfK_PRqsiQ|LkUgmkr-J%v2|Fv3!ypT+#)N`=)FPGqEj>%tOe zZjCw`b=4{f4lJ1aSAF5ACn3>G29Yy6n#IfYMJk(1B?S)BZE7#bd;E>0OMT)7g zR>xs$Shh4$(>^_1q$Ws4tbHk8YziJ#@0O1z<=Kg;3dhpc-h*)i zu2p?|K#X$Ynk0)A2&s!ivR*R!!VnouC8k1#AK&VU5zaOk8BU$IXp^HzUH>#FOF4m0 z4Lvba1;?gi0xzZr&Db1UE7Wqr{(_&e{9;prFC=G7)F#Yiyoyf`2C1qY*YTtxlwV7S zO=~o~_PRdbQRm~;i{EWC-i|wKIZ+Dur9m(|buv+KwQ_7|{8sYRDkXj2`RogPoI>&g z-!F9f8Q^|d4(ZVfrp$HQ&WB8W00y>2Es)V;yrDA*2(x)-=AO?FZM)S=-QG$2+8r@C zuT(9!9DQNF>V6Bl;QAn7-}|NN>^d#N%20%1ytYGR0CA+Mfy6U(@M_yrGymw{+O~u2 zYOLR<{7Y`OBLyHi?dU!;u7~T2Gag|SPFCd|@05Mt=DMC5I{&6)pknD1zh%eYZ7%ZD!dzI#pK5P4S z3bN%lKO8tlP!XOdI5PBEh0J03ML5;TXw>7(Cy`cV#(k29f9zN?YX5b@I=GqGhM^~&`23D?u6hxv? zucv>{kxH45GYPNM2ju!K&5(ZG4~Mu;X6;M!u_l>vF}Zan%lk;Qg)oSx5#NNqza-5i zW`w0<)M~aro8v^C2~NORKys(!Jvosy zB-0X+l(W32d9lB-tdv1N=KNpN_4F{lNP^6|?s>cr`o~>zMhtaIbqWZdv`XaNna) zk9!W#P^%Ft!9TapzL%t73EoC7qTib{(XF!}C7GeMcb?DXci?Xs)IWWB76e$VnhlCh z^<9N+^WwJ3XXGgZsURby|BL2`VK{m_kKr{Y3q^pp2_D2(Gms~x#c}$y$Bb`-chmFB zv_HyGB0Tfj(^n%yb2A;xL@o5^Gv_aqfviPQqAp`}`(NDgl3SiP5aOdBUjvRAw|8(d zh>uPJ*w;3>c4&LYVUV8QeeBi@I0sjOj4$5e;+&MHne*x;zcrH6lnlffgL5J)1Qk_H zE_FQw@}1x_%g?ahCPW8V@U_XwP*!UYi+Oy?fBE`c8tIrWkJrciOVg<;$mlqb_1(S{ zauy^2#F${jHs!>Hf7Jr~zxfu`(?@$-DKwkm6g(``d3vpKD4jZQK;h}jK;0RtbxILG zXYzX7dgUIbqOo4s{F@$5@lD?&9VsB^XSTiOVh~~k8VI*KeCyM#G92M-7Sg^R{vNlC zK`^YAAeFTPqVk&H#_|pPNqfrg9E|wE{s1I@6U_FEKFQoW$!mCJ-o+x%D;#}m$VF^! zn}6qW(Vo#~Px&A?Nbh9mc4St+)u~iYa1!}5R`HCoW(!2ETf=GZ7td6S8jxvJGwE*E z!+rb1qfJc@xA5_|7pzagU#O(v&oJC#Gs`?UqwBA76kC)5R&78wV;Uw*PF8@RrV}ey zMQ%;XEys;jqJ@to7p@A1_ubM`uvU2&+EdZ#yZT4(iHW3-GJhOAPWy*nPvR6%McR`n z6PZZ^GNXUrJxJG#z0c-=uU(-Pu`td3cUZ6eeL3IUZwhtG?zhqNLF4&}7`4cQlZd)S zpv_}NB}bX8^$om1b!Tf%3Ku$clM^(jE7Nh2T#i#ic`k>?IFOV!IgU5c%kq-2S6ZMXD=fo0 zRp2e9_H$F2EfF0xq^JeiOxGULa+~NEWj9*`(*NenX6y%j!*+q3QW^Y=9`31vhf)7_ zr0dO(F2ZR(C+a&m5Q?-c<&Ep78E(Cqg$w*A*Aq~XmM<}zYa*rkN7q&bV5kNo#QeR% zgMM@5eiXd-dypwOTJBQN0TdFWw!~)?i~!Fi(l80cc|bKACHY3iyaDen82~j)-u&VB z>Lc=NW-}uSocgmWQJBE@CmNhYThK4ufy2|UTtMswPlc$0o$SR{Aa6hZ?KP4i#=22Q zb3LCz_01**)IB;>+*%&llGQB8S(P59DF$eRkuX~ynapR?N#23R6G<)mr>68LE~dOd zvVQ?*Kzn5dF{bz@(gCuMzfR!VJH>q|lFPZJs}}|Btjx+4F3r=uGQ-*g4B0xn7*YKUcq9*mJV5HE(%2REOVAzVaJ0Td-~$~tpdg|m zm5&%Pu#k2Hwev=NE+@c_F~J`)IFRPaaeeH^z&;*f+YT{F=$L|iD!2`Tc_og}N(A`+ z?<)~76Jq@Xpt-bS#PcZdj}mty?@8d!Bn_P8KhEeor2YZuwIk60)PvC8Ztec*+ij)9 zz1tw|aaVD_#chn*YcH7y9dE$cFDKF^m`K?}ASkpnrH+F+tsW%Z9&BX{-T*-It%&l^ zJsN#Q)<1yXA+54wE2CKQz5?z>Zo^eRP!9r-wMyt8mI(Z(n&$s-HBCt*`e9~1sB}TI zgYv#W=b%oP<4-V8b^_BK#kw*rvtyRAoN5!|Du9L7Wp$(uj+K>da8CuM!iLl(hw$3I z*sCaSMPXu8UV$owi}BBF*?DCSN~p?gfB4>U!!_gLTC?2$T9Qf7^_OEIq5vvHc|O|E*Jqs7I-PF-qRopyVv$D;{J)yMcKxV7d6$95Z z137@8`%XG0!v_h=cG<`~ixbcpA%(!cTnEN15$!jr;b2oiZlm|>A4;$x2zD@7^+KMI z;m13RgO2|3+QIK{iu8R34>^o(87l-lOW_CJDV{&lcBNX(9lyK`zO5$W~uhZTic*&Bd3U^IQ(5EMSnDY zS%Wu9kKVcmbSd%X4QR~ByAutqmR{(&)N-M61@Zb3_duve$Y5R%`ciceGZv&e(u_6N z#j15OrCvjb5Bi!U&Apbrj0^O+JoKpO@_W%NN33mGoUjKlt%$A(J|J~=(G$(bW`U?7x8|u z=G_YY3Sp#gRmL^*A(RhnW0VZB-PkHTKA>BBh*u$a*@HNeFw-AWz|7yF9r-L+`0N?6 zjSHO+DF24;Bo4%{1YA!PPw_wV5gX($vWkcv%MBKf60gO*daUSpLS&vQ-o))AE|gGB zo-m6qN@mdTbuQ1tL*SC;$I1hHCl|A@>Z-{l zYYXOFqW*mb1>hmUtM^-T(}0|Fql$c$UQU>*#ffx3c>)0$=RJh+w(RET=d=(I-?=E=#=~XQF zI(Ajrw(@TTId#Kqtjn>ZPyngIvN_OFF1jq~`}2T)AM$|bkZwkpw%ElY`P}8N0ln=o(O`FOW@-m``U!YU&z7tr zy~}elkS>ffEGZOx+gJ>|MltN`!Tx4!wf`7zAQoo3Yv<0LUiFdj(Yud|aU-SmC)WI% z;zt)A@-)R$=O%i>5}QkqI;%`Tl%4mTH85ZE0ZNAJg7j2KmFO5fy4+8QC$BDR5!DT~ z!}N7syNw#mjVq2^ZB63qMtTjL2(KkfogN(^VE4e6N4F9)ou`LFcK)5*BWR_T8@0u| z66;=+WyfGwNG*<8YDJ?f_v7y%%aBDQ*^yn@(OXPb!#+OIJeo@#KB}BK@^;Fy!Bq?9 zM0*z_epS)-bDQsFQd3D&i628JhZ}Xl)NdI?n9$ljyGl=>0beQZa~-QZIkEcKU^6#O z=kphdR7dfmdQPoU8IST+>LNTtLo@jZ{B#pjB1znP1-$4_Z)9lg53KB8B#taek-iAG zrUcC+yxt-}K>In9t*hx$hAqEOS&~2klG=k=`UoB3PpNUZmb7xSW;C{~Pm+yWlc@!j zI1RMykz*%4DI+qA_QWQdX;x50he zKd62)PiUsbW2LBH;aWLM5$EWL{gW60R~y7=RlDeStGmEzM|>hXI(mTIAg)2VOO$Sd z&pM(nluo9pPOb_y$AM>rMuO(``${Xz(h9M%3As`5wP)c4ZMin_FN_nJxO6}{>RbT2 zeOk%hsDIhUUQH6ujn7+ITv(j6;fcSMa)hjCGFUL1rn+!Ts9Byg-e8d70r90alzGIN zgi#(X_N$2PFqC`T_LMoo?En{$R^>mi?w}y#*;huB*~Tojd{1eFRmqJ86STY?TFP=l zWc(9VGC21KG40jSkpSA~&W^2nwPIe+I28Ok@B8 zibU}f!zFZ0e=4}xYnwH8du@I!VAj~Cu?*{Vy#1?c3iGoc0&iuqZ>=^8o?@gt$B0{?UPCD$1=U{6{NA({gTx}(uj^-;D6X3aRYTHYE7Ap6kNyT!&FVE|DTaxs z2>!eeq=`L9a~;O(dTo8!vo$Ac)F7q&7*2=B&7{x?NWmTODc@!}X}TC@ZolZ?QbR1%Mjhr3{#;6o zhX-6JG0OfMlimclv+mB)q&GE@B|5D1*RUzz3xt~_3&Gc3X87;a?PkInfMEdUliu)_ z(0A>V@g&BQ8)UUY4Ma-F{=_mA+(p>Nlt~VfM%ClDF}+F~=)Q-KR@2lVs~zklQq;Dx z_*R(v+VgFZePY$+0eLiyyf4QtHzX4Y($!8%0iP!mA7Q49kw$SCidqNe=WTe z)0cZ=FQ`6vV zC+X`kxJiKdr}F@aEjP+aU5*b|XFY06Y^#AJ!!U6~p*%?b?|VcTL!$NTJp&#-Elo4f_63MR4*B4)qI6DmZDf_h;&ghJ7H7RO{6%N?cH|6;gn>B`hwU zGWnKzgGp8iT<_10jdisuHXe3O7~+Gkz`7f0ubf)Tpo*xA%k&LXk+?v6tP!9S4{?IE zws2x00GE&#pCCV=gbrB>i|rUTWv1usyt{0HFIAZ)y74Usi+$~v()HjXLA=5yWa0(o ze9xO5%)dRU3k2~ke+OMAATr-yL_?#=)OIef&t_GP6uADxz#G|ACuSf23LX-ie?95G zZXpn*+e1duZN}#Eyc+t?OtxuTuVz|K)k zg}$o)0b_lzwtJjcri_S{&Un6zYR|lX&RDJBH=oxXPvPVe!)g+!59PMoEXNFD?%f5} zl-4pwXROh%Lfcy2;sku<@R0Ay&awD4%KiTHwLwf>QXL0S$J1-^Z;ky@2EA(%GBqC1 zvfU)AOcU02;<~2{bG3_+2Z_%?3^$#OI$II%>jHlbNd6^B`j#`C&hMW;Ohp1M_eUFb z()DegQ`znlR;m*7Skfu<;* zm|KfVnx&ciGEcWOdjwU-?4eO@p|ER7vu|rg{o42;DjM9(dJF+*7J@9{ugGxv{pw^` z#21@lz0l#>@#Jb3LO`pR$u1{ZSLS3*)dfz-t;IMxuGW6$A?H^r56+n}GJ3MCGkAGz z6gqVeB4F^Z5sR}2${Hi>DxuXYC)0e)eLUrv()a|ZmySQ=qDlXcrl*FH_O)6xJ*Rnl zji-h1*4KDIH{FJy{P066tuUE%)Rb=OC!W`duMPSUOHLE+#8Vf{M-N02KA+lR#7uH^ zB-p^G+~ys0D0E4y>qq(8hKv=ekB&)e9RO2~Ag;r0<4fD8EN-)1gPXF--ZsL8@OP{$MI{1Rz!$gGt2JsHDSI-t%Ht~d2 z?)z8X!t$TPZY4AV4lvMdlE>VzzB>-A)O(2%dPcub%5$_CzM~uKZ@<#t zpCU+^DK+ZDaSrZK)je+vrHLv{By0k2R^|7amCcs}=x6*l_RTG}rcjAkWe( zdE(7&cxzE?STi5-3lcQ%v&%8|H2|U5=-y0aU&kVhCc+uMXh^h&Y4c(OyW7X^_CtF$ zH;FRkl*CS;yHdA0wyj_7q|xx`0ol=4TS;t>=4Hhz_lJ44-6Gb&#COMIJ)%24SpE&P zKLC+P!tL2z8@OXPJPjS(;S8tz+W;BKYtVumQCab*Xk*Po{!dhJiftER{h`FS@oW2s zg5D+*yKq{sS4NVVhAEp6*8sGc$d=WwgO-j8D|LYlb*H^{xm`6NzJl0UCQ|$UWqi6ojzdBigC{%bn5+vu;9s#tv9Z6$y`vV zCEimF+KIXv4DuIug7Nk{qm9+2O8bKrPK4%y?8VxuWc28`Q`T4&LF-q4@>H2kAP+y2 z_KzFjz_-zZkBj8j6&z%T|3sXrfwnqFcIS8hmp19 z^zyZ|60b%|d~6QRO$35k8ps->`Mk}>ecE;*J!t);Nl?}EgJGZ>Z{Eiq0E2v^)#KL@ z)%UnVYu{bf?;V_ugU1^(>_Q!qJcr|i{lbP{W8-OQi!ANMn8!zh$0ORpf|^%}EAjGC z&8^A1EklQQEBc%;tSe^h2BQJ$BM=taKvbR9Wfh^!zVaSxFK)m3eug+J35({b@x{je z7WUzwP*b1ZPOrh;&5hZH2U?urQ;$?B{VL6;47Ig})}|=MX+}y+1C-Quz-r@od(!$9 z9jaNdH6T|xW3Ld0EJg0bs(*bKFpwQ-ZPL7U{xz74|lB-QZ|D3`L!K}*E%*gl1@nQK+Xnw3`v zk59utgewM*$CNL`80z6bs|0ZM@SU`rLNjXZlU_bkK1g7|i-!+q#Pj2HalMM5<<^rZ zt2Sfdk$4eW`qDf{qx`C^i0>rXG5S5hot8K%CWGig7+XG#4(R42$8~Fyw!3@S%rM^sz>KtVjg7$U9A5z1N;@hsL6et2nGYR> z#f61r2RXQlfLyBi<~gSfZ4n53;pPjkaTRD3PNdv1WVw^=yjs&9=JM(S;@^Qym6GcU zr_;?!B?qcBuPwFNj6N~x-Ai3AVQU1L-v+*nHHmSkrg~UNpQ5=4iunHYSk#NGmtkAU zU-Cv5BAL4neW0V!qdDmuU52gYJR3g;kEv({_MYPrssTyr-F$}d;nALJ{c6N|vWS3o zMW9plih_K6AjngRCkLGa`Mjmu+DwTrf!PMwEBx~LiS=vUL)7IVL$4jCE@i5I4G(V2 z6D#%67`v6wkV`7PLr4j_QcaOnX-H70kh7!6n%se{O%Cn$&DzS8BtN!7A3OB@3Fo6G zD{S?_B2{rE-99kuK)C2+P&ZhhCq!WJf!jXT(xa-@AHTGjc8`1p17Qf;JFXa=B&o z2x{h&t^m{UN+)#?obk_gu~Z9|lr?G&k(#G)SDH|4u`-?8X%2;83&GQpSnX<@6AHcVR`z1-U8M=ZF%5HBQN>Z329_J}!=PJjqGKHXW4 zZg`Ir*J16wZIYHB3M*&#yMrWPwYJ(m&^6&RQFHib&zp`~2wFjMYn#s2b!kjBXMtsh z$Rvl3A0Q4tz5BY>em-V!%*4Jr)qLAirs;ScV?frVm#@L-7qB2^2jae#U*O8b%ZKKj zVMMOThEJ4_&{JPOFg3iJ5F4W-*6((vs!lxgTi@cc6Rauw$}n!}Eq_q;e&bKf-AO)F@qtP61MQFRff^~b#@DZyjG6c= zk>vns%dVLI&C%)m0@sW7NX(y+F13D+4d?!6UbC_n1NU;^58Z?J|GL9E$$z-sL16yO zlcJu|dGoJ5e*Olt14!WMZ7*mgkHuyV@wPA*$KLBwIueSA7i9`2+55gS9)MTky9=#i zW&MPXpb{lMwyTL10t$`r9py@lukjc?nw5!sd4;wIXx<%obn5l}A3dcXFAEwj*RMiv zFU^VF?hA@?23~u)GD_}W-?&|(fw7Uhe^&b6gNGO||F4-BF`!#iL)lt*=L8rBQ(->V zb(n!fI-EeBaha=1yki%ob+)@u3g114*2bmFnv}Rvm5jVW?O};b09hIYWzr?bxx<6 zfrX!~a09Oaw6!_?IYelPw^CBa;Xcd#G}6iviPP^kI{Y}ZhCd8=Z>cZ~qhavI?21lN zgc-Q*GY)Ge%V=3 z0lVw<{S6yb#$~3jq#%Gen#P%3Y0~MZFXW<|1)x4>Pr_v;snuU-6#ybMTXh6rKdHwh zawvehvQ*&mDV=L-qh~UyG;|UIpSUS^l2#Nl7r;+13i-i+rWOOseC#0`Z3~ABV5R)a z^V-ka?OZKu)tuTPk# zfJc=m+>%Q0#^PAy|Y#1@vur3Uf$!NjfPlu0J?I0r-(zy27qLE^Wu(L)`gb4#fz z&p|h2=G3-uv;ovkh$S2DU^=)u6{(rGwp2JD;Nb{dd*T187#+~y4D5y!-zvLr8cCx3R;sqFafWxB8RNOba?(3q_se`S4;}GSai?t*}c#@JydxK zt19nJZ1NfD%$x_FRZfyJlY(2!W1u>UL2NXq77WWH&9wz!V6tQs-@sZElwgF-DeXIC zthMx|xtj0d+)Glb%B|?Ghg`_$1qIo`{tWU;Dxnk~sx=Lo{JszT_08e0a;Nj>z(!W~ z{a{*2GPQue#%mz!)kH-hcIo2WRZrVAQfg&nXnO^Gp8@nj{PM~i_J%(a%o^&hKF1gv z={Vd2qCH640#N|s(B>2Bo?}$r5^{tOp(-|*GkQn_zgA6_noA|z6f1`I`Z7k<>YAA_Dggm3~EG+3BlQ+paF!P8fU8ZLyM zrmGvq1yD zSZk9{)F&5H`ub&-gAe=WA_pQEeR|eCAVyYsi>Fl$`0B4Oes%H{wzr?_n(dC0=BX2e z0$QW)>;JM*7bw(=t(mvcH7b&2eb=*8m%iM824*FEZVb2wvi?F7HJ56G<|kFBvWwE! zRD?iPb?AO>Ch3GDAlM^axZu8Ct#O|P4Bbdqk$k^H0;7e{h3Cm8PN~|^o4+$^C3_FNcJxZm^Jdn ziKMlUevD}g3@sj08PBG*s~y{CD&?E3=5uwrpjm80JxO@?@A})%Wa+F4w@r2BM87zl zAlQ{Zx9~N*E#OC?phFUZHfpoASN#c~T`%W@?MPf}q7W_x9+rKfV4tA;#m6;ww{7RW zGf_jV_Wt@omAW{_dFmfUm55){NXq?gJDpQP{j=?AAZW-`_Jt~c_rrG8s?c47d=sy9 z)?j5=7&esHRaRSK3i{Dbepz>n|Eh1`R6j&}GCLtAXU?3d`8ur*<}-3uN**~ltd1Pq z!VqACDY3vFtPh+7X5w}oXlPi2)dY>H-Q_!UQ%8_O49p+%=)!)Zg?QEu;0>B>Bo>#QcY7Ri=*R@21XJ-$NUxt!rh9=x7YV

    |PQ=Zy;J0AN5N@2&&B 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