Skip to content
This repository was archived by the owner on Oct 28, 2023. It is now read-only.

Commit 2ad714a

Browse files
committed
Add safe-mode variable
1 parent 1348972 commit 2ad714a

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

esp32/main.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include "esp_system.h"
3636
#include "esp_task.h"
3737
#include "soc/cpu.h"
38+
#include "rom/rtc.h"
3839

3940
#include "sha2017_ota.h"
4041
#include "esprtcmem.h"
@@ -56,6 +57,7 @@
5657
#include "badge_base.h"
5758
#include "badge_first_run.h"
5859
#include <badge_input.h>
60+
#include <badge_button.h>
5961
#include <badge.h>
6062

6163
// MicroPython runs as a task under FreeRTOS
@@ -64,11 +66,15 @@
6466
#define MP_TASK_STACK_LEN (MP_TASK_STACK_SIZE / sizeof(StackType_t))
6567
#define MP_TASK_HEAP_SIZE (88 * 1024)
6668

69+
//define BUTTON_SAFE_MODE ((1 << BADGE_BUTTON_A) || (1 << BADGE_BUTTON_B))
70+
#define BUTTON_SAFE_MODE ((1 << BADGE_BUTTON_START))
71+
6772
STATIC StaticTask_t mp_task_tcb;
6873
STATIC StackType_t mp_task_stack[MP_TASK_STACK_LEN] __attribute__((aligned (8)));
6974
STATIC uint8_t mp_task_heap[MP_TASK_HEAP_SIZE];
7075

7176
extern uint32_t reset_cause;
77+
extern bool in_safe_mode;
7278

7379
void mp_task(void *pvParameter) {
7480
volatile uint32_t sp = (uint32_t)get_sp();
@@ -176,6 +182,13 @@ void app_main(void) {
176182
}
177183

178184
} else {
185+
uint32_t reset_cause = rtc_get_reset_reason(0);
186+
if (reset_cause != DEEPSLEEP_RESET) {
187+
badge_init();
188+
if ((badge_input_button_state & BUTTON_SAFE_MODE) == BUTTON_SAFE_MODE) {
189+
in_safe_mode = true;
190+
}
191+
}
179192
xTaskCreateStaticPinnedToCore(mp_task, "mp_task", MP_TASK_STACK_LEN, NULL, MP_TASK_PRIORITY,
180193
&mp_task_stack[0], &mp_task_tcb, 0);
181194
}

esp32/modbadge.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,11 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(badge_mpr121_get_touch_info_obj, badge_mpr121_g
242242
#endif // I2C_MPR121_ADDR
243243

244244

245+
bool in_safe_mode = false;
246+
STATIC mp_obj_t badge_safe_mode() {
247+
return mp_obj_new_bool(in_safe_mode);
248+
}
249+
STATIC MP_DEFINE_CONST_FUN_OBJ_0(badge_safe_mode_obj, badge_safe_mode);
245250
// E-Ink (badge_eink.h)
246251

247252
STATIC mp_obj_t badge_eink_init_() {
@@ -682,6 +687,8 @@ STATIC const mp_rom_map_elem_t badge_module_globals_table[] = {
682687
{MP_OBJ_NEW_QSTR(MP_QSTR_unmount_sdcard), (mp_obj_t)&badge_unmount_sdcard_obj},
683688
{MP_OBJ_NEW_QSTR(MP_QSTR_mount_bpp), (mp_obj_t)&badge_mount_bpp_obj},
684689

690+
{MP_OBJ_NEW_QSTR(MP_QSTR_safe_mode), (mp_obj_t)&badge_safe_mode_obj},
691+
685692
};
686693

687694
STATIC MP_DEFINE_CONST_DICT(badge_module_globals, badge_module_globals_table);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy