Skip to content

Commit 690024a

Browse files
committed
add apex device
1 parent b48490f commit 690024a

10 files changed

Lines changed: 77 additions & 26 deletions

File tree

app/ui/view.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ void view_spinner_show(const char *text);
134134

135135
void view_review_show_generic(review_type_e reviewKind, const char *title, const char *validate);
136136

137-
#if defined(TARGET_STAX) || defined(TARGET_FLEX)
137+
#if defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)
138138
typedef enum {
139139
EXPERT_MODE = 0,
140140
#ifdef APP_ACCOUNT_MODE_ENABLED
@@ -150,4 +150,4 @@ typedef enum {
150150
} settings_list_e;
151151

152152
void view_set_switch_subtext(settings_list_e switch_id, const char *subtext);
153-
#endif // TARGET_STAX || TARGET_FLEX
153+
#endif // TARGET_STAX || TARGET_FLEX || TARGET_APEX_P

app/ui/view_internal.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
#endif
3535
#define MAX_CHARS_SUBMSG_LINE 2048
3636
#define MAX_CHARS_HEXMESSAGE 160
37-
#elif defined(TARGET_STAX) || defined(TARGET_FLEX)
37+
#elif defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)
3838
#include "nbgl_use_case.h"
3939
#define MAX_LINES_PER_PAGE_REVIEW NB_MAX_LINES_IN_REVIEW
4040
#define MAX_CHARS_PER_KEY_LINE 64
@@ -121,7 +121,7 @@ static const char *shortcut_value = SHORTCUT_VALUE;
121121

122122
// FIXME: Wait to be fixed on SDK:
123123
// https://github.com/LedgerHQ/ledger-secure-sdk/blob/fe169b19c7445f2477c26035a827c22ba9f84964/lib_nbgl/include/nbgl_use_case.h#L59
124-
#if defined(TARGET_STAX) || defined(TARGET_FLEX)
124+
#if defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)
125125
#ifdef NB_MAX_DISPLAYED_PAIRS_IN_REVIEW
126126
#undef NB_MAX_DISPLAYED_PAIRS_IN_REVIEW
127127
#define NB_MAX_DISPLAYED_PAIRS_IN_REVIEW 6
@@ -130,7 +130,7 @@ static const char *shortcut_value = SHORTCUT_VALUE;
130130

131131
typedef struct {
132132
struct {
133-
#if defined(TARGET_STAX) || defined(TARGET_FLEX)
133+
#if defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)
134134
char *key;
135135
char *value;
136136
char keys[NB_MAX_DISPLAYED_PAIRS_IN_REVIEW][MAX_CHARS_PER_KEY_LINE];

app/ui/view_nbgl.c

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
#include "bolos_target.h"
1818

19-
#if defined(TARGET_STAX) || defined(TARGET_FLEX)
19+
#if defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)
2020

2121
#include "actions.h"
2222
#include "app_mode.h"
@@ -40,6 +40,18 @@ zxerr_t account_enabled();
4040
#define VERIFY_TITLE_LABEL_GENERIC "Verify operation"
4141
#define INFO_LIST_SIZE 4
4242
#define SETTING_CONTENTS_NB 1
43+
44+
// Define icon variables based on target platform
45+
#if defined(TARGET_STAX) || defined(TARGET_FLEX)
46+
#define C_IMPORTANT_CIRCLE_ICON C_Important_Circle_64px
47+
#define C_WARNING_ICON C_Warning_64px
48+
#define C_REVIEW_ICON C_Review_64px
49+
#elif defined(TARGET_APEX_P)
50+
#define C_IMPORTANT_CIRCLE_ICON C_Important_Circle_24px
51+
#define C_WARNING_ICON C_Warning_24px
52+
#define C_REVIEW_ICON C_Review_48px
53+
#endif
54+
4355
static const char HOME_TEXT[] =
4456
"This application enables\nsigning transactions on the\n" MENU_MAIN_APP_LINE1 " network";
4557

@@ -83,7 +95,7 @@ static void h_approve_internal(void) { h_approve(review_type); }
8395

8496
#ifdef TARGET_STAX
8597
#define MAX_INFO_LIST_ITEM_PER_PAGE 3
86-
#else // TARGET_FLEX
98+
#else // TARGET_FLEX || TARGET_APEX_P
8799
#define MAX_INFO_LIST_ITEM_PER_PAGE 2
88100
#endif
89101

@@ -175,18 +187,17 @@ void view_custom_error_show(const char *upper, const char *lower) {
175187
MEMZERO(viewdata.value, MAX_CHARS_PER_VALUE1_LINE);
176188
snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", upper);
177189
snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", lower);
178-
179-
nbgl_useCaseChoice(&C_Important_Circle_64px, viewdata.key, viewdata.value, "Ok", "", confirm_error);
190+
nbgl_useCaseChoice(&C_IMPORTANT_CIRCLE_ICON, viewdata.key, viewdata.value, "Ok", "", confirm_error);
180191
}
181192

182193
void view_blindsign_error_show() {
183-
nbgl_useCaseChoice(&C_Warning_64px, "This transaction cannot\nbe clear-signed",
194+
nbgl_useCaseChoice(&C_WARNING_ICON, "This transaction cannot\nbe clear-signed",
184195
"Enable blind signing in the\nsettings to sign this\ntransaction.", "Go to settings",
185196
"Reject Transaction", goto_settings);
186197
}
187198

188199
void view_error_show_impl() {
189-
nbgl_useCaseChoice(&C_Important_Circle_64px, viewdata.key, viewdata.value, "Ok", NULL, confirm_setting);
200+
nbgl_useCaseChoice(&C_IMPORTANT_CIRCLE_ICON, viewdata.key, viewdata.value, "Ok", NULL, confirm_setting);
190201
}
191202

192203
void view_settings_show_impl() {
@@ -402,7 +413,7 @@ static void review_configuration() {
402413
view_error_show();
403414
}
404415

405-
nbgl_useCaseChoice(&C_Important_Circle_64px, viewdata.key, viewdata.value, "Accept", "Reject", confirm_setting);
416+
nbgl_useCaseChoice(&C_IMPORTANT_CIRCLE_ICON, viewdata.key, viewdata.value, "Accept", "Reject", confirm_setting);
406417
}
407418

408419
static void config_useCaseAddressReview() {
@@ -494,13 +505,14 @@ static void config_useCaseMessageReview() {
494505
pairList.callback = update_item_callback;
495506
pairList.startIndex = 0;
496507
if (app_mode_blindsign_required()) {
497-
nbgl_useCaseReviewBlindSigning(TYPE_MESSAGE, &pairList, &C_Review_64px,
508+
nbgl_useCaseReviewBlindSigning(TYPE_MESSAGE, &pairList, &C_REVIEW_ICON,
498509
(intro_message == NULL ? "Review Message" : intro_message), NULL,
499510
"Accept risk and sign message ?", NULL, reviewMessageChoice);
500511
} else {
501-
nbgl_useCaseReview(
502-
TYPE_MESSAGE, &pairList, &C_Review_64px, (intro_message == NULL ? "Review Message" : intro_message), NULL,
503-
(approval_label_buf[0] != '\0' ? approval_label_buf : APPROVE_LABEL_NBGL_MSG), reviewMessageChoice);
512+
nbgl_useCaseReview(TYPE_MESSAGE, &pairList, &C_REVIEW_ICON,
513+
(intro_message == NULL ? "Review Message" : intro_message), intro_submessage,
514+
(approval_label_buf[0] != '\0' ? approval_label_buf : APPROVE_LABEL_NBGL),
515+
reviewMessageChoice);
504516
}
505517
}
506518

dockerized_build.mk

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@ DOCKER_BOLOS_SDKX = NANOX_SDK
3030
DOCKER_BOLOS_SDKS2 = NANOSP_SDK
3131
DOCKER_BOLOS_SDKST = STAX_SDK
3232
DOCKER_BOLOS_SDKFL = FLEX_SDK
33+
DOCKER_BOLOS_SDKAP = APEX_P_SDK
3334

3435
TARGET_S = nanos
3536
TARGET_X = nanox
3637
TARGET_S2 = nanos2
3738
TARGET_ST = stax
3839
TARGET_FL = flex
40+
TARGET_AP = apex_p
3941

4042
# Note: This is not an SSH key, and being public represents no risk
4143
SCP_PUBKEY=049bc79d139c70c83a4b19e8922e5ee3e0080bb14a2e8b0752aa42cda90a1463f689b0fa68c1c0246845c2074787b649d0d8a6c0b97d4607065eee3057bdf16b83
@@ -50,7 +52,7 @@ $(info TESTS_ZEMU_DIR : $(TESTS_ZEMU_DIR))
5052
$(info TESTS_JS_DIR : $(TESTS_JS_DIR))
5153
$(info TESTS_JS_PACKAGE : $(TESTS_JS_PACKAGE))
5254

53-
DOCKER_IMAGE_ZONDAX=zondax/ledger-app-builder:ledger-75354ba1678f81c283e4a7eca09c0524185c6281
55+
DOCKER_IMAGE_ZONDAX=zondax/ledger-app-builder:ledger-ca5b0e8ca6730a7d8ba36bae8942a9a7bb6dc7fb
5456
DOCKER_IMAGE_LEDGER=ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest
5557

5658
ifdef INTERACTIVE
@@ -104,6 +106,7 @@ endif
104106
@$(MAKE) buildS2
105107
@$(MAKE) buildST
106108
@$(MAKE) buildFL
109+
@$(MAKE) buildAP
107110

108111
.PHONY: check_python
109112
check_python:
@@ -143,6 +146,10 @@ build_rustST:
143146
build_rustFL:
144147
$(call run_docker,$(DOCKER_BOLOS_SDKFL),$(TARGET_FL),make -j $(NPROC) rust)
145148

149+
.PHONY: build_rustAP
150+
build_rustAP:
151+
$(call run_docker,$(DOCKER_BOLOS_SDKAP),$(TARGET_AP),make -j $(NPROC) rust)
152+
146153
.PHONY: convert_icon
147154
convert_icon:
148155
@convert $(LEDGER_SRC)/tmp.gif -monochrome -size 16x16 -depth 1 $(LEDGER_SRC)/nanos_icon.gif
@@ -172,6 +179,10 @@ buildST:
172179
buildFL:
173180
$(call run_docker,$(DOCKER_BOLOS_SDKFL),$(TARGET_FL),make -j $(NPROC))
174181

182+
.PHONY: buildAP
183+
buildAP:
184+
$(call run_docker,$(DOCKER_BOLOS_SDKAP),$(TARGET_AP),make -j $(NPROC))
185+
175186
.PHONY: clean_output
176187
clean_output:
177188
@echo "Removing output files"
@@ -208,6 +219,10 @@ shellST:
208219
shellFL:
209220
$(call run_docker,$(DOCKER_BOLOS_SDKFL) -t,$(TARGET_FL),bash)
210221

222+
.PHONY: shellAP
223+
shellAP:
224+
$(call run_docker,$(DOCKER_BOLOS_SDKAP) -t,$(TARGET_AP),bash)
225+
211226
.PHONY: loadS
212227
loadS:
213228
${LEDGER_SRC}/pkg/installer_s.sh load
@@ -236,10 +251,19 @@ deleteST:
236251
loadFL:
237252
${LEDGER_SRC}/pkg/installer_flex.sh load
238253

254+
.PHONY: loadAP
255+
loadAP:
256+
${LEDGER_SRC}/pkg/installer_apex.sh load
257+
239258
.PHONY: deleteFL
240259
deleteFL:
241260
${LEDGER_SRC}/pkg/installer_flex.sh delete
242261

262+
.PHONY: deleteAP
263+
deleteAP:
264+
${LEDGER_SRC}/pkg/installer_apex.sh delete
265+
266+
243267
.PHONY: sizeS
244268
sizeS:
245269
$(CURDIR)/deps/ledger-zxlib/scripts/getSize.py nanos
@@ -260,6 +284,10 @@ sizeST:
260284
sizeFL:
261285
$(CURDIR)/deps/ledger-zxlib/scripts/getSize.py flex
262286

287+
.PHONY: sizeAP
288+
sizeAP:
289+
$(CURDIR)/deps/ledger-zxlib/scripts/getSize.py apex
290+
263291
.PHONY: show_info_recovery_mode
264292
show_info_recovery_mode:
265293
@echo "This command requires a Ledger Nano S in recovery mode. To go into recovery mode, follow:"

include/zxmacros.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extern void explicit_bzero(void *s, size_t n) __THROW __nonnull((1));
5050
#endif
5151

5252
#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || \
53-
defined(TARGET_FLEX)
53+
defined(TARGET_FLEX) || defined(TARGET_APEX_P)
5454
#include "zxmacros_ledger.h"
5555
#else
5656

@@ -100,7 +100,7 @@ void zemu_log_stack(const char *ctx);
100100
}
101101

102102
#if (defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX)) || \
103-
defined(TARGET_FLEX)
103+
defined(TARGET_FLEX) || defined(TARGET_APEX_P)
104104
#if defined(ZEMU_LOGGING)
105105
__Z_INLINE void zemu_log(const char *buf) {
106106
asm volatile(

include/zxmacros_ledger.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#pragma once
1717

1818
#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || \
19-
defined(TARGET_FLEX)
19+
defined(TARGET_FLEX) || defined(TARGET_APEX_P)
2020

2121
#include "cx.h"
2222
#include "os.h"

include/zxmacros_x64.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#pragma once
1717

1818
#if !defined(TARGET_NANOS) && !defined(TARGET_NANOX) && !defined(TARGET_NANOS2) && !defined(TARGET_STAX) && \
19-
!defined(TARGET_FLEX)
19+
!defined(TARGET_FLEX) && !defined(TARGET_APEX_P)
2020

2121
// This macros are kept for backwards compatibility
2222
// the most recent SDK has unified implementations and deprecated the original os_***

makefiles/Makefile.devices

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,14 @@ OUTPUT_ELF ?= $(CURDIR)/output/$(ELF_NAME)_flex.elf
7979
OUTPUT_INSTALLER:= $(CURDIR)/pkg/$(INSTALLER_NAME)_flex.sh
8080
endif
8181
#######################################
82+
ifeq ($(TARGET_NAME),TARGET_APEX_P)
83+
ifeq ($(HAVE_SWAP),1)
84+
HAVE_APPLICATION_FLAG_BOLOS_SETTINGS = 1
85+
HAVE_APPLICATION_FLAG_LIBRARY = 1
86+
else
87+
HAVE_APPLICATION_FLAG_BOLOS_SETTINGS = 1
88+
endif
89+
OUTPUT_ELF ?= $(CURDIR)/output/$(ELF_NAME)_apex_p.elf
90+
OUTPUT_INSTALLER:= $(CURDIR)/pkg/$(INSTALLER_NAME)_apex_p.sh
91+
endif
92+

src/app_mode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ app_mode_temporary_t app_mode_temporary;
3232
uint8_t blindsign_required;
3333

3434
#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || \
35-
defined(TARGET_FLEX)
35+
defined(TARGET_FLEX) || defined(TARGET_APEX_P)
3636
//////////////////////////////////////////////////////////////
3737
//////////////////////////////////////////////////////////////
3838
//////////////////////////////////////////////////////////////

src/zxmacros.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
void handle_stack_overflow() {
2626
zemu_log("!!!!!!!!!!!!!!!!!!!!!! CANARY TRIGGERED!!! STACK OVERFLOW DETECTED\n");
2727
#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || \
28-
defined(TARGET_FLEX)
28+
defined(TARGET_FLEX) || defined(TARGET_APEX_P)
2929
io_seproxyhal_se_reset();
3030
#else
3131
while (1)
@@ -39,14 +39,14 @@ void handle_stack_overflow() {
3939

4040
__Z_UNUSED void check_app_canary() {
4141
#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || \
42-
defined(TARGET_FLEX)
42+
defined(TARGET_FLEX) || defined(TARGET_APEX_P)
4343
if (app_stack_canary != APP_STACK_CANARY_MAGIC) handle_stack_overflow();
4444
check_zondax_canary();
4545
#endif
4646
}
4747

4848
#if defined(ZEMU_LOGGING) && (defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || \
49-
defined(TARGET_STAX) || defined(TARGET_FLEX))
49+
defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P))
5050
void zemu_log_stack(const char *ctx) {
5151
#define STACK_SHIFT 20
5252
void *p = NULL;
@@ -71,7 +71,7 @@ void zemu_log_stack(__Z_UNUSED const char *ctx) {}
7171
#endif
7272

7373
#if defined(ZEMU_LOGGING) && (defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || \
74-
defined(TARGET_STAX) || defined(TARGET_FLEX))
74+
defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P))
7575
void zemu_trace(const char *file, uint32_t line) {
7676
char buf[200];
7777
snprintf(buf, sizeof(buf), "|TRACE| %s:%d\n", file, line);

0 commit comments

Comments
 (0)