summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2017-02-21 17:28:14 +1100
committerDamien George <damien.p.george@gmail.com>2017-02-21 17:28:14 +1100
commita162832b1ab4dc3035ba4810e65e85ac9a3e1159 (patch)
tree50e968f22cb1450b868fb5f21daa750cc8cf087a
parent26ddd4b6218dfc2033a24a8ea4128c32527fb6c6 (diff)
downloadmicropython-a162832b1ab4dc3035ba4810e65e85ac9a3e1159.tar.gz
micropython-a162832b1ab4dc3035ba4810e65e85ac9a3e1159.zip
cc3200/mods/modwlan: Make multi-threaded a proper compile-time option.
-rw-r--r--cc3200/mods/modwlan.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/cc3200/mods/modwlan.c b/cc3200/mods/modwlan.c
index 8b910b1691..2b89cb7da0 100644
--- a/cc3200/mods/modwlan.c
+++ b/cc3200/mods/modwlan.c
@@ -156,7 +156,9 @@ STATIC const mp_irq_methods_t wlan_irq_methods;
/******************************************************************************
DECLARE PUBLIC DATA
******************************************************************************/
+#ifdef SL_PLATFORM_MULTI_THREADED
OsiLockObj_t wlan_LockObj;
+#endif
/******************************************************************************
DECLARE PRIVATE FUNCTIONS
@@ -391,14 +393,18 @@ void SimpleLinkSockEventHandler(SlSockEvent_t *pSock) {
__attribute__ ((section (".boot")))
void wlan_pre_init (void) {
// create the wlan lock
+ #ifdef SL_PLATFORM_MULTI_THREADED
ASSERT(OSI_OK == sl_LockObjCreate(&wlan_LockObj, "WlanLock"));
+ #endif
}
void wlan_first_start (void) {
if (wlan_obj.mode < 0) {
CLR_STATUS_BIT_ALL(wlan_obj.status);
wlan_obj.mode = sl_Start(0, 0, 0);
+ #ifdef SL_PLATFORM_MULTI_THREADED
sl_LockObjUnlock (&wlan_LockObj);
+ #endif
}
// get the mac address
@@ -507,7 +513,9 @@ void wlan_update(void) {
void wlan_stop (uint32_t timeout) {
wlan_servers_stop();
+ #ifdef SL_PLATFORM_MULTI_THREADED
sl_LockObjLock (&wlan_LockObj, SL_OS_WAIT_FOREVER);
+ #endif
sl_Stop(timeout);
wlan_clear_data();
wlan_obj.mode = -1;
@@ -563,11 +571,15 @@ STATIC void wlan_clear_data (void) {
STATIC void wlan_reenable (SlWlanMode_t mode) {
// stop and start again
+ #ifdef SL_PLATFORM_MULTI_THREADED
sl_LockObjLock (&wlan_LockObj, SL_OS_WAIT_FOREVER);
+ #endif
sl_Stop(SL_STOP_TIMEOUT);
wlan_clear_data();
wlan_obj.mode = sl_Start(0, 0, 0);
+ #ifdef SL_PLATFORM_MULTI_THREADED
sl_LockObjUnlock (&wlan_LockObj);
+ #endif
ASSERT (wlan_obj.mode == mode);
}