Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
f54bdecf
Commit
f54bdecf
authored
May 01, 2015
by
Daniel Campora
Browse files
cc3200: Implement Sleep.wake_reason()
parent
71d482df
Changes
6
Hide whitespace changes
Inline
Side-by-side
cc3200/mods/modwlan.c
View file @
f54bdecf
...
...
@@ -380,7 +380,7 @@ void SimpleLinkSockEventHandler(SlSockEvent_t *pSock) {
//*****************************************************************************
__attribute__
((
section
(
".boot"
)))
void
wlan_init
0
(
void
)
{
void
wlan_
pre_
init
(
void
)
{
// create the wlan lock
ASSERT
(
OSI_OK
==
sl_LockObjCreate
(
&
wlan_LockObj
,
"WlanLock"
));
}
...
...
cc3200/mods/modwlan.h
View file @
f54bdecf
...
...
@@ -53,7 +53,7 @@ extern _SlLockObj_t wlan_LockObj;
/******************************************************************************
DECLARE PUBLIC FUNCTIONS
******************************************************************************/
extern
void
wlan_init
0
(
void
);
extern
void
wlan_
pre_
init
(
void
);
extern
modwlan_Status_t
wlan_sl_enable
(
SlWlanMode_t
mode
,
const
char
*
ssid
,
uint8_t
ssid_len
,
uint8_t
sec
,
const
char
*
key
,
uint8_t
key_len
,
uint8_t
channel
);
extern
void
wlan_first_start
(
void
);
...
...
cc3200/mods/pybsleep.c
View file @
f54bdecf
...
...
@@ -123,6 +123,7 @@ STATIC nvic_reg_store_t *nvic_reg_store;
STATIC
pybsleep_data_t
pybsleep_data
=
{
NULL
,
NULL
,
NULL
,
0
};
volatile
arm_cm4_core_regs_t
vault_arm_registers
;
STATIC
pybsleep_reset_cause_t
pybsleep_reset_cause
=
PYB_SLP_PWRON_RESET
;
STATIC
pybsleep_reset_cause_t
pybsleep_wake_reason
=
PYB_SLP_WAKED_PWRON
;
/******************************************************************************
DECLARE PRIVATE FUNCTIONS
...
...
@@ -179,6 +180,17 @@ void pybsleep_init0 (void) {
}
else
{
pybsleep_reset_cause
=
PYB_SLP_HIB_RESET
;
// set the correct wake reason
switch
(
MAP_PRCMHibernateWakeupCauseGet
())
{
case
PRCM_HIB_WAKEUP_CAUSE_SLOW_CLOCK
:
pybsleep_wake_reason
=
PYB_SLP_WAKED_BY_RTC
;
break
;
case
PRCM_HIB_WAKEUP_CAUSE_GPIO
:
pybsleep_wake_reason
=
PYB_SLP_WAKED_BY_GPIO
;
break
;
default:
break
;
}
}
break
;
default:
...
...
@@ -410,15 +422,18 @@ STATIC void PRCMInterruptHandler (void) {
switch
(
MAP_PRCMLPDSWakeupCauseGet
())
{
case
PRCM_LPDS_HOST_IRQ
:
mpcallback_handler
(
pybsleep_data
.
wlan_lpds_wake_cb
);
pybsleep_wake_reason
=
PYB_SLP_WAKED_BY_WLAN
;
break
;
case
PRCM_LPDS_GPIO
:
mpcallback_handler
(
pybsleep_data
.
gpio_lpds_wake_cb
);
pybsleep_wake_reason
=
PYB_SLP_WAKED_BY_GPIO
;
break
;
case
PRCM_LPDS_TIMER
:
// disable the timer as a wake-up source
pybsleep_data
.
timer_wake_pwrmode
&=
~
PYB_PWR_MODE_LPDS
;
MAP_PRCMLPDSWakeupSourceDisable
(
PRCM_LPDS_TIMER
);
mpcallback_handler
(
pybsleep_data
.
timer_lpds_wake_cb
);
pybsleep_wake_reason
=
PYB_SLP_WAKED_BY_RTC
;
break
;
default:
break
;
...
...
@@ -630,7 +645,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_sleep_reset_cause_obj, pyb_sleep_reset_caus
/// \function wake_reason()
/// Returns the wake up reson from ldps or hibernate
STATIC
mp_obj_t
pyb_sleep_wake_reason
(
mp_obj_t
self_in
)
{
return
mp_const_n
on
e
;
return
MP_OBJ_NEW_SMALL_INT
(
pybsleep_wake_reas
on
)
;
}
STATIC
MP_DEFINE_CONST_FUN_OBJ_1
(
pyb_sleep_wake_reason_obj
,
pyb_sleep_wake_reason
);
...
...
@@ -646,13 +661,13 @@ STATIC const mp_map_elem_t pybsleep_locals_dict_table[] = {
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_ACTIVE
),
MP_OBJ_NEW_SMALL_INT
(
PYB_PWR_MODE_ACTIVE
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_SUSPENDED
),
MP_OBJ_NEW_SMALL_INT
(
PYB_PWR_MODE_LPDS
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_HIBERNATING
),
MP_OBJ_NEW_SMALL_INT
(
PYB_PWR_MODE_HIBERNATE
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_P
W
R_ON
_RESET
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_PWRON_RESET
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_P
OWE
R_ON
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_PWRON_RESET
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_HARD_RESET
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_HARD_RESET
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_WDT_RESET
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_WDT_RESET
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_HIB_RESET
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_HIB_RESET
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_SOFT_RESET
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_SOFT_RESET
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_WLAN_WAKE
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_WAKED_BY_WLAN
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_PIN_WAKE
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_WAKED_BY_PI
N
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_PIN_WAKE
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_WAKED_BY_
G
PI
O
)
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_RTC_WAKE
),
MP_OBJ_NEW_SMALL_INT
(
PYB_SLP_WAKED_BY_RTC
)
},
};
...
...
cc3200/mods/pybsleep.h
View file @
f54bdecf
...
...
@@ -42,19 +42,17 @@ typedef enum {
PYB_SLP_HARD_RESET
,
PYB_SLP_WDT_RESET
,
PYB_SLP_HIB_RESET
,
PYB_SLP_SOFT_RESET
,
PYB_SLP_SOFT_RESET
}
pybsleep_reset_cause_t
;
typedef
enum
{
PYB_SLP_WAKED_PWRON
=
0
,
PYB_SLP_WAKED_BY_WLAN
,
PYB_SLP_WAKED_BY_PI
N
,
PYB_SLP_WAKED_BY_
G
PI
O
,
PYB_SLP_WAKED_BY_RTC
}
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
...
...
cc3200/mptask.c
View file @
f54bdecf
...
...
@@ -273,7 +273,7 @@ STATIC void mptask_pre_init (void) {
pybsleep_pre_init
();
// this one allocates mameory for the WLAN semaphore
wlan_init
0
();
wlan_
pre_
init
();
#if MICROPY_HW_HAS_SDCARD
pybsd_init0
();
...
...
cc3200/qstrdefsport.h
View file @
f54bdecf
...
...
@@ -305,7 +305,7 @@ Q(wake_reason)
Q
(
ACTIVE
)
Q
(
SUSPENDED
)
Q
(
HIBERNATING
)
Q
(
P
W
R_ON
_RESET
)
Q
(
P
OWE
R_ON
)
Q
(
HARD_RESET
)
Q
(
WDT_RESET
)
Q
(
HIB_RESET
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment