summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDaniel Campora <daniel@wipy.io>2015-03-25 11:21:44 +0100
committerDaniel Campora <daniel@wipy.io>2015-03-25 15:22:16 +0100
commite15f8198bc9efa85bfb9ec50ce7a0a0166e69989 (patch)
tree5b142032b831358fc78005021de5ce16176e2acd
parent9d3588f2be1abbc905590b3fb82649cc880c96f0 (diff)
downloadmicropython-e15f8198bc9efa85bfb9ec50ce7a0a0166e69989.tar.gz
micropython-e15f8198bc9efa85bfb9ec50ce7a0a0166e69989.zip
cc3200: Keep WLAN enabled during the soft reset.
-rw-r--r--cc3200/mods/pybsleep.h1
-rw-r--r--cc3200/mptask.c59
2 files changed, 29 insertions, 31 deletions
diff --git a/cc3200/mods/pybsleep.h b/cc3200/mods/pybsleep.h
index 08dc4ce4bb..43d06c7fc5 100644
--- a/cc3200/mods/pybsleep.h
+++ b/cc3200/mods/pybsleep.h
@@ -54,6 +54,7 @@ typedef enum {
} pybsleep_wake_reason_t;
typedef void (*WakeUpCB_t)(const mp_obj_t self);
+typedef void (*DeinitCB_t)(const mp_obj_t self);
/******************************************************************************
DECLARE EXPORTED VARIABLES
diff --git a/cc3200/mptask.c b/cc3200/mptask.c
index 2d28df8ccf..b0b44ec5ed 100644
--- a/cc3200/mptask.c
+++ b/cc3200/mptask.c
@@ -98,7 +98,7 @@ static const char fresh_boot_py[] = "# boot.py -- run on boot-up\r\n"
******************************************************************************/
void TASK_Micropython (void *pvParameters) {
- // Initialize the garbage collector with the top of our stack
+ // initialize the garbage collector with the top of our stack
uint32_t sp = gc_helper_get_sp();
gc_collect_init (sp);
bool safeboot = false;
@@ -111,7 +111,7 @@ soft_reset:
// GC init
gc_init(&_boot, &_eheap);
- // Micro Python init
+ // MicroPython init
mp_init();
mp_obj_list_init(mp_sys_path, 0);
mp_obj_list_init(mp_sys_argv, 0);
@@ -131,6 +131,9 @@ soft_reset:
rng_init0();
#endif
+ // we are alive, so let the world know it
+ mperror_enable_heartbeat();
+
// configure stdio uart pins with the correct af
// param 3 ("mode") is DON'T CARE" for AFs others than GPIO
pin_config ((pin_obj_t *)&pin_GPIO1, PIN_MODE_3, 0, PIN_TYPE_STD, PIN_STRENGTH_2MA);
@@ -142,26 +145,28 @@ soft_reset:
};
pyb_stdio_uart = pyb_uart_type.make_new((mp_obj_t)&pyb_uart_type, MP_ARRAY_SIZE(args), 0, args);
- mperror_enable_heartbeat();
+ pybsleep_reset_cause_t rstcause = pybsleep_get_reset_cause();
+ if (rstcause < PYB_SLP_SOFT_RESET) {
+ if (rstcause == PYB_SLP_HIB_RESET) {
+ // when waking up from hibernate we just want
+ // to enable simplelink and leave it as is
+ wlan_first_start();
+ }
+ else {
+ // only if not comming out of hibernate or a soft reset
+ mptask_enter_ap_mode();
+ #ifndef DEBUG
+ safeboot = PRCMIsSafeBootRequested();
+ #endif
+ }
- if (pybsleep_get_reset_cause() < PYB_SLP_HIB_RESET) {
- // only if not comming out of hibernate or a soft reset
- mptask_enter_ap_mode();
- #ifndef DEBUG
- safeboot = PRCMIsSafeBootRequested();
- #endif
- } else {
- // when waking up from hibernate we just want
- // to enable simplelink and leave it as is
- wlan_first_start();
+ // enable telnet and ftp
+ servers_start();
}
// initialize the serial flash file system
mptask_init_sflash_filesystem();
- // enable telnet and ftp servers
- servers_start();
-
// append the SFLASH paths to the system path
mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_SFLASH));
mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_SFLASH_slash_LIB));
@@ -185,14 +190,14 @@ soft_reset:
}
}
- // Now we initialise sub-systems that need configuration from boot.py,
+ // now we initialise sub-systems that need configuration from boot.py,
// or whose initialisation can be safely deferred until after running
// boot.py.
- // At this point everything is fully configured and initialised.
+ // at this point everything is fully configured and initialised.
if (!safeboot) {
- // Run the main script from the current directory.
+ // run the main script from the current directory.
if (pyexec_mode_kind == PYEXEC_MODE_FRIENDLY_REPL) {
const char *main_py;
if (MP_STATE_PORT(pyb_config_main) == MP_OBJ_NULL) {
@@ -214,8 +219,8 @@ soft_reset:
}
}
- // Main script is finished, so now go into REPL mode.
- // The REPL mode can change, or it can request a soft reset.
+ // main script is finished, so now go into REPL mode.
+ // the REPL mode can change, or it can request a soft reset.
for ( ; ; ) {
if (pyexec_mode_kind == PYEXEC_MODE_RAW_REPL) {
if (pyexec_raw_repl() != 0) {
@@ -233,22 +238,14 @@ soft_reset_exit:
// soft reset
pybsleep_signal_soft_reset();
+ printf("WiPy: soft reset\n");
+
sflash_disk_flush();
#if MICROPY_HW_HAS_SDCARD
pybsd_deinit();
#endif
- printf("WiPy: soft reset\n");
-
- // disable wlan
- wlan_stop(SL_STOP_TIMEOUT_LONG);
-
- // de-initialize the stdio uart
- if (pyb_stdio_uart) {
- pyb_uart_deinit(pyb_stdio_uart);
- }
-
goto soft_reset;
}