Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
M
micropython
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
card10
micropython
Commits
760a6eca
Commit
760a6eca
authored
10 years ago
by
Daniel Campora
Browse files
Options
Downloads
Patches
Plain Diff
cc3200: Minor refactorings on modwlan and pybsleep.
parent
4be44014
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
cc3200/mods/modwlan.c
+28
-33
28 additions, 33 deletions
cc3200/mods/modwlan.c
cc3200/mods/modwlan.h
+1
-0
1 addition, 0 deletions
cc3200/mods/modwlan.h
cc3200/mods/pybsleep.c
+18
-18
18 additions, 18 deletions
cc3200/mods/pybsleep.c
with
47 additions
and
51 deletions
cc3200/mods/modwlan.c
+
28
−
33
View file @
760a6eca
...
@@ -191,8 +191,7 @@ STATIC void wlan_lpds_callback_disable (mp_obj_t self_in);
...
@@ -191,8 +191,7 @@ STATIC void wlan_lpds_callback_disable (mp_obj_t self_in);
//! \return None
//! \return None
//!
//!
//*****************************************************************************
//*****************************************************************************
void
SimpleLinkWlanEventHandler
(
SlWlanEvent_t
*
pWlanEvent
)
void
SimpleLinkWlanEventHandler
(
SlWlanEvent_t
*
pWlanEvent
)
{
{
if
(
!
pWlanEvent
)
{
if
(
!
pWlanEvent
)
{
return
;
return
;
}
}
...
@@ -249,8 +248,7 @@ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent)
...
@@ -249,8 +248,7 @@ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent)
//! \return None
//! \return None
//!
//!
//*****************************************************************************
//*****************************************************************************
void
SimpleLinkNetAppEventHandler
(
SlNetAppEvent_t
*
pNetAppEvent
)
void
SimpleLinkNetAppEventHandler
(
SlNetAppEvent_t
*
pNetAppEvent
)
{
{
if
(
!
pNetAppEvent
)
{
if
(
!
pNetAppEvent
)
{
return
;
return
;
}
}
...
@@ -295,8 +293,7 @@ void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent)
...
@@ -295,8 +293,7 @@ void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent)
//! \return None
//! \return None
//!
//!
//****************************************************************************
//****************************************************************************
void
SimpleLinkHttpServerCallback
(
SlHttpServerEvent_t
*
pHttpEvent
,
SlHttpServerResponse_t
*
pHttpResponse
)
void
SimpleLinkHttpServerCallback
(
SlHttpServerEvent_t
*
pHttpEvent
,
SlHttpServerResponse_t
*
pHttpResponse
)
{
{
if
(
!
pHttpEvent
)
{
if
(
!
pHttpEvent
)
{
return
;
return
;
}
}
...
@@ -320,8 +317,7 @@ void SimpleLinkHttpServerCallback(SlHttpServerEvent_t *pHttpEvent, SlHttpServerR
...
@@ -320,8 +317,7 @@ void SimpleLinkHttpServerCallback(SlHttpServerEvent_t *pHttpEvent, SlHttpServerR
//! \return None
//! \return None
//!
//!
//*****************************************************************************
//*****************************************************************************
void
SimpleLinkGeneralEventHandler
(
SlDeviceEvent_t
*
pDevEvent
)
void
SimpleLinkGeneralEventHandler
(
SlDeviceEvent_t
*
pDevEvent
)
{
{
if
(
!
pDevEvent
)
{
if
(
!
pDevEvent
)
{
return
;
return
;
}
}
...
@@ -339,8 +335,7 @@ void SimpleLinkGeneralEventHandler(SlDeviceEvent_t *pDevEvent)
...
@@ -339,8 +335,7 @@ void SimpleLinkGeneralEventHandler(SlDeviceEvent_t *pDevEvent)
//! \return None
//! \return None
//!
//!
//*****************************************************************************
//*****************************************************************************
void
SimpleLinkSockEventHandler
(
SlSockEvent_t
*
pSock
)
void
SimpleLinkSockEventHandler
(
SlSockEvent_t
*
pSock
)
{
{
if
(
!
pSock
)
{
if
(
!
pSock
)
{
return
;
return
;
}
}
...
@@ -357,11 +352,11 @@ void SimpleLinkSockEventHandler(SlSockEvent_t *pSock)
...
@@ -357,11 +352,11 @@ void SimpleLinkSockEventHandler(SlSockEvent_t *pSock)
case
SL_SOCKET_ASYNC_EVENT
:
case
SL_SOCKET_ASYNC_EVENT
:
switch
(
pSock
->
socketAsyncEvent
.
SockAsyncData
.
type
)
{
switch
(
pSock
->
socketAsyncEvent
.
SockAsyncData
.
type
)
{
case
SSL_ACCEPT
:
case
SSL_ACCEPT
:
//accept failed due to ssl issue ( tcp pass)
break
;
break
;
case
RX_FRAGMENTATION_TOO_BIG
:
case
RX_FRAGMENTATION_TOO_BIG
:
break
;
break
;
case
OTHER_SIDE_CLOSE_SSL_DATA_NOT_ENCRYPTED
:
case
OTHER_SIDE_CLOSE_SSL_DATA_NOT_ENCRYPTED
:
break
;
default:
default:
break
;
break
;
}
}
...
@@ -512,9 +507,7 @@ void wlan_update(void) {
...
@@ -512,9 +507,7 @@ void wlan_update(void) {
#endif
#endif
}
}
// call this function to disable the complete WLAN subsystem before a system reset
void
wlan_stop
(
uint32_t
timeout
)
{
void
wlan_stop
(
uint32_t
timeout
)
{
if
(
wlan_obj
.
mode
>=
0
)
{
#if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP)
#if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP)
// Stop all other processes using the wlan engine
// Stop all other processes using the wlan engine
if
((
wlan_obj
.
servers_enabled
=
servers_are_enabled
()))
{
if
((
wlan_obj
.
servers_enabled
=
servers_are_enabled
()))
{
...
@@ -522,9 +515,19 @@ void wlan_stop (uint32_t timeout) {
...
@@ -522,9 +515,19 @@ void wlan_stop (uint32_t timeout) {
}
}
#endif
#endif
sl_LockObjLock
(
&
wlan_LockObj
,
SL_OS_WAIT_FOREVER
);
sl_LockObjLock
(
&
wlan_LockObj
,
SL_OS_WAIT_FOREVER
);
sl_Stop
(
timeout
);
wlan_obj
.
mode
=
-
1
;
wlan_obj
.
mode
=
-
1
;
sl_Stop
(
MAX
(
timeout
,
SL_STOP_TIMEOUT
));
}
}
void
wlan_start
(
void
)
{
wlan_obj
.
mode
=
sl_Start
(
0
,
0
,
0
);
sl_LockObjUnlock
(
&
wlan_LockObj
);
#if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP)
// start the servers if they were enabled before
if
(
wlan_obj
.
servers_enabled
)
{
servers_start
();
}
#endif
}
}
void
wlan_get_mac
(
uint8_t
*
macAddress
)
{
void
wlan_get_mac
(
uint8_t
*
macAddress
)
{
...
@@ -554,8 +557,7 @@ STATIC void wlan_initialize_data (void) {
...
@@ -554,8 +557,7 @@ STATIC void wlan_initialize_data (void) {
}
}
STATIC
void
wlan_reenable
(
SlWlanMode_t
mode
)
{
STATIC
void
wlan_reenable
(
SlWlanMode_t
mode
)
{
// Stop and start again
// stop and start again
wlan_obj
.
mode
=
-
1
;
sl_LockObjLock
(
&
wlan_LockObj
,
SL_OS_WAIT_FOREVER
);
sl_LockObjLock
(
&
wlan_LockObj
,
SL_OS_WAIT_FOREVER
);
sl_Stop
(
SL_STOP_TIMEOUT
);
sl_Stop
(
SL_STOP_TIMEOUT
);
wlan_obj
.
mode
=
sl_Start
(
0
,
0
,
0
);
wlan_obj
.
mode
=
sl_Start
(
0
,
0
,
0
);
...
@@ -566,13 +568,11 @@ STATIC void wlan_reenable (SlWlanMode_t mode) {
...
@@ -566,13 +568,11 @@ STATIC void wlan_reenable (SlWlanMode_t mode) {
STATIC
modwlan_Status_t
wlan_do_connect
(
const
char
*
ssid
,
uint32_t
ssid_len
,
const
char
*
bssid
,
uint8_t
sec
,
STATIC
modwlan_Status_t
wlan_do_connect
(
const
char
*
ssid
,
uint32_t
ssid_len
,
const
char
*
bssid
,
uint8_t
sec
,
const
char
*
key
,
uint32_t
key_len
)
{
const
char
*
key
,
uint32_t
key_len
)
{
SlSecParams_t
secParams
;
SlSecParams_t
secParams
;
secParams
.
Key
=
(
_i8
*
)
key
;
secParams
.
Key
=
(
_i8
*
)
key
;
secParams
.
KeyLen
=
((
key
!=
NULL
)
?
key_len
:
0
);
secParams
.
KeyLen
=
((
key
!=
NULL
)
?
key_len
:
0
);
secParams
.
Type
=
sec
;
secParams
.
Type
=
sec
;
if
(
0
==
sl_WlanConnect
((
_i8
*
)
ssid
,
ssid_len
,
(
_u8
*
)
bssid
,
&
secParams
,
NULL
))
{
if
(
0
==
sl_WlanConnect
((
_i8
*
)
ssid
,
ssid_len
,
(
_u8
*
)
bssid
,
&
secParams
,
NULL
))
{
// Wait for the WLAN Event
// Wait for the WLAN Event
uint32_t
waitForConnectionMs
=
0
;
uint32_t
waitForConnectionMs
=
0
;
while
(
!
IS_CONNECTED
(
wlan_obj
.
status
))
{
while
(
!
IS_CONNECTED
(
wlan_obj
.
status
))
{
...
@@ -584,10 +584,8 @@ STATIC modwlan_Status_t wlan_do_connect (const char* ssid, uint32_t ssid_len, co
...
@@ -584,10 +584,8 @@ STATIC modwlan_Status_t wlan_do_connect (const char* ssid, uint32_t ssid_len, co
return
MODWLAN_ERROR_TIMEOUT
;
return
MODWLAN_ERROR_TIMEOUT
;
}
}
}
}
return
MODWLAN_OK
;
return
MODWLAN_OK
;
}
}
return
MODWLAN_ERROR_INVALID_PARAMS
;
return
MODWLAN_ERROR_INVALID_PARAMS
;
}
}
...
@@ -782,8 +780,7 @@ STATIC mp_obj_t wlan_connect(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_
...
@@ -782,8 +780,7 @@ STATIC mp_obj_t wlan_connect(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_
STATIC
MP_DEFINE_CONST_FUN_OBJ_KW
(
wlan_connect_obj
,
1
,
wlan_connect
);
STATIC
MP_DEFINE_CONST_FUN_OBJ_KW
(
wlan_connect_obj
,
1
,
wlan_connect
);
/// \method wlan_disconnect()
/// \method wlan_disconnect()
/// Closes the current WLAN connection
/// Close the current WLAN connection
///
STATIC
mp_obj_t
wlan_disconnect
(
mp_obj_t
self_in
)
{
STATIC
mp_obj_t
wlan_disconnect
(
mp_obj_t
self_in
)
{
sl_WlanDisconnect
();
sl_WlanDisconnect
();
return
mp_const_none
;
return
mp_const_none
;
...
@@ -791,8 +788,7 @@ STATIC mp_obj_t wlan_disconnect(mp_obj_t self_in) {
...
@@ -791,8 +788,7 @@ STATIC mp_obj_t wlan_disconnect(mp_obj_t self_in) {
STATIC
MP_DEFINE_CONST_FUN_OBJ_1
(
wlan_disconnect_obj
,
wlan_disconnect
);
STATIC
MP_DEFINE_CONST_FUN_OBJ_1
(
wlan_disconnect_obj
,
wlan_disconnect
);
/// \method is_connected()
/// \method is_connected()
/// Returns true if connected to the AP and an IP address has been assigned. False otherwise.
/// Return true if connected to the AP and an IP address has been assigned. False otherwise.
///
STATIC
mp_obj_t
wlan_isconnected
(
mp_obj_t
self_in
)
{
STATIC
mp_obj_t
wlan_isconnected
(
mp_obj_t
self_in
)
{
if
(
GET_STATUS_BIT
(
wlan_obj
.
status
,
STATUS_BIT_CONNECTION
)
&&
if
(
GET_STATUS_BIT
(
wlan_obj
.
status
,
STATUS_BIT_CONNECTION
)
&&
GET_STATUS_BIT
(
wlan_obj
.
status
,
STATUS_BIT_IP_ACQUIRED
))
{
GET_STATUS_BIT
(
wlan_obj
.
status
,
STATUS_BIT_IP_ACQUIRED
))
{
...
@@ -803,7 +799,6 @@ STATIC mp_obj_t wlan_isconnected(mp_obj_t self_in) {
...
@@ -803,7 +799,6 @@ STATIC mp_obj_t wlan_isconnected(mp_obj_t self_in) {
STATIC
MP_DEFINE_CONST_FUN_OBJ_1
(
wlan_isconnected_obj
,
wlan_isconnected
);
STATIC
MP_DEFINE_CONST_FUN_OBJ_1
(
wlan_isconnected_obj
,
wlan_isconnected
);
STATIC
mp_obj_t
wlan_ifconfig
(
mp_obj_t
self_in
)
{
STATIC
mp_obj_t
wlan_ifconfig
(
mp_obj_t
self_in
)
{
unsigned
char
len
=
sizeof
(
SlNetCfgIpV4Args_t
);
unsigned
char
len
=
sizeof
(
SlNetCfgIpV4Args_t
);
unsigned
char
dhcpIsOn
;
unsigned
char
dhcpIsOn
;
SlNetCfgIpV4Args_t
ipV4
;
SlNetCfgIpV4Args_t
ipV4
;
...
@@ -870,7 +865,7 @@ STATIC mp_obj_t wlan_urn (uint n_args, const mp_obj_t *args) {
...
@@ -870,7 +865,7 @@ STATIC mp_obj_t wlan_urn (uint n_args, const mp_obj_t *args) {
STATIC
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
wlan_urn_obj
,
1
,
2
,
wlan_urn
);
STATIC
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
wlan_urn_obj
,
1
,
2
,
wlan_urn
);
/// \method wlan_netlist()
/// \method wlan_netlist()
/// Return
s
a list of tuples with all the acces points within range
/// Return a list of tuples with all the acces points within range
STATIC
mp_obj_t
wlan_scan
(
mp_obj_t
self_in
)
{
STATIC
mp_obj_t
wlan_scan
(
mp_obj_t
self_in
)
{
Sl_WlanNetworkEntry_t
wlanEntry
;
Sl_WlanNetworkEntry_t
wlanEntry
;
uint8_t
_index
=
0
;
uint8_t
_index
=
0
;
...
@@ -912,7 +907,7 @@ STATIC mp_obj_t wlan_scan(mp_obj_t self_in) {
...
@@ -912,7 +907,7 @@ STATIC mp_obj_t wlan_scan(mp_obj_t self_in) {
STATIC
MP_DEFINE_CONST_FUN_OBJ_1
(
wlan_scan_obj
,
wlan_scan
);
STATIC
MP_DEFINE_CONST_FUN_OBJ_1
(
wlan_scan_obj
,
wlan_scan
);
/// \method callback(handler, pwrmode)
/// \method callback(handler, pwrmode)
/// Create
s
a callback object associated with WLAN
/// Create a callback object associated with WLAN
/// min num of arguments is 1 (pwrmode)
/// min num of arguments is 1 (pwrmode)
STATIC
mp_obj_t
wlan_callback
(
mp_uint_t
n_args
,
const
mp_obj_t
*
pos_args
,
mp_map_t
*
kw_args
)
{
STATIC
mp_obj_t
wlan_callback
(
mp_uint_t
n_args
,
const
mp_obj_t
*
pos_args
,
mp_map_t
*
kw_args
)
{
mp_arg_val_t
args
[
mpcallback_INIT_NUM_ARGS
];
mp_arg_val_t
args
[
mpcallback_INIT_NUM_ARGS
];
...
...
This diff is collapsed.
Click to expand it.
cc3200/mods/modwlan.h
+
1
−
0
View file @
760a6eca
...
@@ -58,6 +58,7 @@ extern modwlan_Status_t wlan_sl_enable (SlWlanMode_t mode, const char *ssid, uin
...
@@ -58,6 +58,7 @@ extern modwlan_Status_t wlan_sl_enable (SlWlanMode_t mode, const char *ssid, uin
const
char
*
key
,
uint8_t
key_len
,
uint8_t
channel
);
const
char
*
key
,
uint8_t
key_len
,
uint8_t
channel
);
extern
void
wlan_first_start
(
void
);
extern
void
wlan_first_start
(
void
);
extern
void
wlan_stop
(
uint32_t
timeout
);
extern
void
wlan_stop
(
uint32_t
timeout
);
extern
void
wlan_start
(
void
);
extern
void
wlan_get_mac
(
uint8_t
*
macAddress
);
extern
void
wlan_get_mac
(
uint8_t
*
macAddress
);
extern
void
wlan_get_ip
(
uint32_t
*
ip
);
extern
void
wlan_get_ip
(
uint32_t
*
ip
);
...
...
This diff is collapsed.
Click to expand it.
cc3200/mods/pybsleep.c
+
18
−
18
View file @
760a6eca
...
@@ -114,14 +114,14 @@ typedef struct {
...
@@ -114,14 +114,14 @@ typedef struct {
mp_obj_t
timer_lpds_wake_cb
;
mp_obj_t
timer_lpds_wake_cb
;
mp_obj_t
gpio_lpds_wake_cb
;
mp_obj_t
gpio_lpds_wake_cb
;
uint
timer_wake_pwrmode
;
uint
timer_wake_pwrmode
;
}
pybsleep_
wake_cb
_t
;
}
pybsleep_
data
_t
;
/******************************************************************************
/******************************************************************************
DECLARE PRIVATE DATA
DECLARE PRIVATE DATA
******************************************************************************/
******************************************************************************/
STATIC
const
mp_obj_type_t
pybsleep_type
;
STATIC
const
mp_obj_type_t
pybsleep_type
;
STATIC
nvic_reg_store_t
*
nvic_reg_store
;
STATIC
nvic_reg_store_t
*
nvic_reg_store
;
STATIC
pybsleep_
wake_cb
_t
pybsleep_
wake_cb
=
{
NULL
,
NULL
,
NULL
,
0
};
STATIC
pybsleep_
data
_t
pybsleep_
data
=
{
NULL
,
NULL
,
NULL
,
0
};
volatile
arm_cm4_core_regs_t
vault_arm_registers
;
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_reset_cause
=
PYB_SLP_PWRON_RESET
;
...
@@ -211,19 +211,19 @@ void pybsleep_remove (const mp_obj_t obj) {
...
@@ -211,19 +211,19 @@ void pybsleep_remove (const mp_obj_t obj) {
}
}
void
pybsleep_set_wlan_lpds_callback
(
mp_obj_t
cb_obj
)
{
void
pybsleep_set_wlan_lpds_callback
(
mp_obj_t
cb_obj
)
{
pybsleep_
wake_cb
.
wlan_lpds_wake_cb
=
cb_obj
;
pybsleep_
data
.
wlan_lpds_wake_cb
=
cb_obj
;
}
}
void
pybsleep_set_gpio_lpds_callback
(
mp_obj_t
cb_obj
)
{
void
pybsleep_set_gpio_lpds_callback
(
mp_obj_t
cb_obj
)
{
pybsleep_
wake_cb
.
gpio_lpds_wake_cb
=
cb_obj
;
pybsleep_
data
.
gpio_lpds_wake_cb
=
cb_obj
;
}
}
void
pybsleep_set_timer_lpds_callback
(
mp_obj_t
cb_obj
)
{
void
pybsleep_set_timer_lpds_callback
(
mp_obj_t
cb_obj
)
{
pybsleep_
wake_cb
.
timer_lpds_wake_cb
=
cb_obj
;
pybsleep_
data
.
timer_lpds_wake_cb
=
cb_obj
;
}
}
void
pybsleep_configure_timer_wakeup
(
uint
pwrmode
)
{
void
pybsleep_configure_timer_wakeup
(
uint
pwrmode
)
{
pybsleep_
wake_cb
.
timer_wake_pwrmode
=
pwrmode
;
pybsleep_
data
.
timer_wake_pwrmode
=
pwrmode
;
}
}
pybsleep_reset_cause_t
pybsleep_get_reset_cause
(
void
)
{
pybsleep_reset_cause_t
pybsleep_get_reset_cause
(
void
)
{
...
@@ -404,22 +404,22 @@ STATIC void PRCMInterruptHandler (void) {
...
@@ -404,22 +404,22 @@ STATIC void PRCMInterruptHandler (void) {
// reading the interrupt status automatically clears the interrupt
// reading the interrupt status automatically clears the interrupt
if
(
PRCM_INT_SLOW_CLK_CTR
==
MAP_PRCMIntStatus
())
{
if
(
PRCM_INT_SLOW_CLK_CTR
==
MAP_PRCMIntStatus
())
{
// this interrupt is triggered during active mode
// this interrupt is triggered during active mode
mpcallback_handler
(
pybsleep_
wake_cb
.
timer_lpds_wake_cb
);
mpcallback_handler
(
pybsleep_
data
.
timer_lpds_wake_cb
);
}
}
else
{
else
{
// interrupt has been triggered while waking up from LPDS
// interrupt has been triggered while waking up from LPDS
switch
(
MAP_PRCMLPDSWakeupCauseGet
())
{
switch
(
MAP_PRCMLPDSWakeupCauseGet
())
{
case
PRCM_LPDS_HOST_IRQ
:
case
PRCM_LPDS_HOST_IRQ
:
mpcallback_handler
(
pybsleep_
wake_cb
.
wlan_lpds_wake_cb
);
mpcallback_handler
(
pybsleep_
data
.
wlan_lpds_wake_cb
);
break
;
break
;
case
PRCM_LPDS_GPIO
:
case
PRCM_LPDS_GPIO
:
mpcallback_handler
(
pybsleep_
wake_cb
.
gpio_lpds_wake_cb
);
mpcallback_handler
(
pybsleep_
data
.
gpio_lpds_wake_cb
);
break
;
break
;
case
PRCM_LPDS_TIMER
:
case
PRCM_LPDS_TIMER
:
// disable the timer as a wake-up source
// disable the timer as a wake-up source
pybsleep_
wake_cb
.
timer_wake_pwrmode
&=
~
PYB_PWR_MODE_LPDS
;
pybsleep_
data
.
timer_wake_pwrmode
&=
~
PYB_PWR_MODE_LPDS
;
MAP_PRCMLPDSWakeupSourceDisable
(
PRCM_LPDS_TIMER
);
MAP_PRCMLPDSWakeupSourceDisable
(
PRCM_LPDS_TIMER
);
mpcallback_handler
(
pybsleep_
wake_cb
.
timer_lpds_wake_cb
);
mpcallback_handler
(
pybsleep_
data
.
timer_lpds_wake_cb
);
break
;
break
;
default:
default:
break
;
break
;
...
@@ -567,24 +567,24 @@ STATIC mp_obj_t pyb_sleep_suspend (mp_obj_t self_in) {
...
@@ -567,24 +567,24 @@ STATIC mp_obj_t pyb_sleep_suspend (mp_obj_t self_in) {
nlr_buf_t
nlr
;
nlr_buf_t
nlr
;
// check if we should enable timer wake-up
// check if we should enable timer wake-up
if
(
pybsleep_
wake_cb
.
timer_wake_pwrmode
&
PYB_PWR_MODE_LPDS
)
{
if
(
pybsleep_
data
.
timer_wake_pwrmode
&
PYB_PWR_MODE_LPDS
)
{
if
(
!
setup_timer_lpds_wake
())
{
if
(
!
setup_timer_lpds_wake
())
{
// lpds entering is not possible, wait for the forced interrupt and return
// lpds entering is not possible, wait for the forced interrupt and return
pybsleep_
wake_cb
.
timer_wake_pwrmode
&=
~
PYB_PWR_MODE_LPDS
;
pybsleep_
data
.
timer_wake_pwrmode
&=
~
PYB_PWR_MODE_LPDS
;
HAL_Delay
(
FAILED_SLEEP_DELAY_MS
);
HAL_Delay
(
FAILED_SLEEP_DELAY_MS
);
return
mp_const_none
;
return
mp_const_none
;
}
}
}
}
//
check if
we need
to enable
network wake-up
//
do
we need network wake-up
?
if
(
pybsleep_
wake_cb
.
wlan_lpds_wake_cb
)
{
if
(
pybsleep_
data
.
wlan_lpds_wake_cb
)
{
MAP_PRCMLPDSWakeupSourceEnable
(
PRCM_LPDS_HOST_IRQ
);
MAP_PRCMLPDSWakeupSourceEnable
(
PRCM_LPDS_HOST_IRQ
);
}
}
else
{
else
{
MAP_PRCMLPDSWakeupSourceDisable
(
PRCM_LPDS_HOST_IRQ
);
MAP_PRCMLPDSWakeupSourceDisable
(
PRCM_LPDS_HOST_IRQ
);
}
}
// entering and exiting suspend mode must be an atomic operation
// entering and exiting suspend
ed
mode must be an atomic operation
// therefore interrupts need to be disabled
// therefore interrupts need to be disabled
uint
primsk
=
disable_irq
();
uint
primsk
=
disable_irq
();
if
(
nlr_push
(
&
nlr
)
==
0
)
{
if
(
nlr_push
(
&
nlr
)
==
0
)
{
...
@@ -604,10 +604,10 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_sleep_suspend_obj, pyb_sleep_suspend);
...
@@ -604,10 +604,10 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_sleep_suspend_obj, pyb_sleep_suspend);
/// calling this method.
/// calling this method.
STATIC
mp_obj_t
pyb_sleep_hibernate
(
mp_obj_t
self_in
)
{
STATIC
mp_obj_t
pyb_sleep_hibernate
(
mp_obj_t
self_in
)
{
// check if we should enable timer wake-up
// check if we should enable timer wake-up
if
(
pybsleep_
wake_cb
.
timer_wake_pwrmode
&
PYB_PWR_MODE_HIBERNATE
)
{
if
(
pybsleep_
data
.
timer_wake_pwrmode
&
PYB_PWR_MODE_HIBERNATE
)
{
if
(
!
setup_timer_hibernate_wake
())
{
if
(
!
setup_timer_hibernate_wake
())
{
// hibernating is not possible, wait for the forced interrupt and return
// hibernating is not possible, wait for the forced interrupt and return
pybsleep_
wake_cb
.
timer_wake_pwrmode
&=
~
PYB_PWR_MODE_HIBERNATE
;
pybsleep_
data
.
timer_wake_pwrmode
&=
~
PYB_PWR_MODE_HIBERNATE
;
HAL_Delay
(
FAILED_SLEEP_DELAY_MS
);
HAL_Delay
(
FAILED_SLEEP_DELAY_MS
);
return
mp_const_none
;
return
mp_const_none
;
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment