Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
09269a64
Commit
09269a64
authored
Mar 17, 2016
by
Terry Ellison
Browse files
Merge pull request #1154 from dnc40085/dev_1065_fix
fix for #1065
parents
30f2c5ca
7def6ec7
Changes
2
Hide whitespace changes
Inline
Side-by-side
app/modules/wifi.c
View file @
09269a64
...
...
@@ -991,117 +991,65 @@ static int wifi_station_status( lua_State* L )
return
1
;
}
/**
* wifi.sta.eventMonStop()
* Description:
* Stop wifi station event monitor
* Syntax:
* wifi.sta.eventMonStop()
* wifi.sta.eventMonStop("unreg all")
* Parameters:
* "unreg all": unregister all previously registered functions
* Returns:
* Nothing.
*
* Example:
--stop wifi event monitor
wifi.sta.eventMonStop()
--stop wifi event monitor and unregister all callbacks
wifi.sta.eventMonStop("unreg all")
*/
static
void
wifi_station_event_mon_stop
(
lua_State
*
L
)
// wifi.sta.eventMonStop()
void
wifi_station_event_mon_stop
(
lua_State
*
L
)
{
os_timer_disarm
(
&
wifi_sta_status_timer
);
if
(
lua_isstring
(
L
,
1
))
{
if
(
c_strcmp
(
luaL_checkstring
(
L
,
1
),
"unreg all"
)
==
0
)
int
i
;
for
(
i
=
0
;
i
<
6
;
i
++
)
{
int
i
;
for
(
i
=
0
;
i
<
6
;
i
++
)
if
(
wifi_status_cb_ref
[
i
]
!=
LUA_NOREF
)
{
if
(
wifi_status_cb_ref
[
i
]
!=
LUA_NOREF
)
{
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
wifi_status_cb_ref
[
i
]);
wifi_status_cb_ref
[
i
]
=
LUA_NOREF
;
}
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
wifi_status_cb_ref
[
i
]);
wifi_status_cb_ref
[
i
]
=
LUA_NOREF
;
}
}
}
return
;
}
static
void
wifi_status_cb
(
int
arg
)
{
if
(
wifi_get_opmode
()
==
2
)
lua_State
*
L
=
lua_getstate
();
if
(
wifi_get_opmode
()
==
SOFTAP_MODE
)
{
os_timer_disarm
(
&
wifi_sta_status_timer
);
return
;
os_timer_disarm
(
&
wifi_sta_status_timer
);
return
;
}
int
wifi_status
=
wifi_station_get_connect_status
();
if
(
wifi_status
!=
prev_wifi_status
)
int
wifi_status
=
wifi_station_get_connect_status
();
if
(
wifi_status
!=
prev_wifi_status
)
{
if
(
wifi_status_cb_ref
[
wifi_status
]
!=
LUA_NOREF
)
{
lua_rawgeti
(
gL
,
LUA_REGISTRYINDEX
,
wifi_status_cb_ref
[
wifi_status
]);
lua_call
(
gL
,
0
,
0
);
}
if
(
wifi_status_cb_ref
[
wifi_status
]
!=
LUA_NOREF
)
{
lua_rawgeti
(
L
,
LUA_REGISTRYINDEX
,
wifi_status_cb_ref
[
wifi_status
]);
lua_pushnumber
(
L
,
prev_wifi_status
);
lua_call
(
L
,
1
,
0
);
}
}
prev_wifi_status
=
wifi_status
;
prev_wifi_status
=
wifi_status
;
}
/**
* wifi.sta.eventMonReg()
* Description:
* Register callback for wifi station status event
* Syntax:
* wifi.sta.eventMonReg(wifi_status, function)
* wifi.sta.eventMonReg(wifi.status, "unreg") //unregister callback
* Parameters:
* wifi_status: wifi status you would like to set callback for
* Valid wifi states:
* wifi.STA_IDLE
* wifi.STA_CONNECTING
* wifi.STA_WRONGPWD
* wifi.STA_APNOTFOUND
* wifi.STA_FAIL
* wifi.STA_GOTIP
* function: function to perform
* "unreg": unregister previously registered function
* Returns:
* Nothing.
*
* Example:
--register callback
wifi.sta.eventMonReg(0, function() print("STATION_IDLE") end)
wifi.sta.eventMonReg(1, function() print("STATION_CONNECTING") end)
wifi.sta.eventMonReg(2, function() print("STATION_WRONG_PASSWORD") end)
wifi.sta.eventMonReg(3, function() print("STATION_NO_AP_FOUND") end)
wifi.sta.eventMonReg(4, function() print("STATION_CONNECT_FAIL") end)
wifi.sta.eventMonReg(5, function() print("STATION_GOT_IP") end)
--unregister callback
wifi.sta.eventMonReg(0, "unreg")
*/
static
int
wifi_station_event_mon_reg
(
lua_State
*
L
)
// wifi.sta.eventMonReg()
int
wifi_station_event_mon_reg
(
lua_State
*
L
)
{
gL
=
L
;
uint8
id
=
luaL_checknumber
(
L
,
1
);
if
(
!
(
id
>=
0
&&
id
<=
5
))
uint8
id
=
(
uint8
)
luaL_checknumber
(
L
,
1
);
if
((
id
>
5
))
// verify user specified a valid wifi status
{
return
luaL_error
(
L
,
"valid wifi status:0-5"
);
return
luaL_error
(
L
,
"valid wifi status:0-5"
);
}
if
(
lua_type
(
L
,
2
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
2
)
==
LUA_TLIGHTFUNCTION
)
if
(
lua_type
(
L
,
2
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
2
)
==
LUA_TLIGHTFUNCTION
)
//check if 2nd item on stack is a function
{
lua_pushvalue
(
L
,
2
);
//
copy argument (func) to the
top of stack
lua_pushvalue
(
L
,
2
);
//
push function to
top of stack
if
(
wifi_status_cb_ref
[
id
]
!=
LUA_NOREF
)
{
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
wifi_status_cb_ref
[
id
]);
}
wifi_status_cb_ref
[
id
]
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
}
else
if
(
c_strcmp
(
luaL_checkstring
(
L
,
2
),
"unreg"
)
==
0
)
else
{
if
(
wifi_status_cb_ref
[
id
]
!=
LUA_NOREF
)
{
...
...
@@ -1113,25 +1061,7 @@ static int wifi_station_event_mon_reg(lua_State* L)
}
/**
* wifi.sta.eventMonStart()
* Description:
* Start wifi station event monitor
* Syntax:
* wifi.sta.eventMonStart()
* wifi.sta.eventMonStart(mS)
* Parameters:
* mS:interval between checks in milliseconds. defaults to 150 mS if not provided
* Returns:
* Nothing.
*
* Example:
--start wifi event monitor with default interval
wifi.sta.eventMonStart()
--start wifi event monitor with 100 mS interval
wifi.sta.eventMonStart(100)
*/
//wifi.sta.eventMonStart()
static
int
wifi_station_event_mon_start
(
lua_State
*
L
)
{
if
(
wifi_get_opmode
()
==
SOFTAP_MODE
)
...
...
docs/en/modules/wifi.md
View file @
09269a64
...
...
@@ -326,19 +326,18 @@ none
Registers callbacks for WiFi station status events.
#### Syntax
-
`wifi.sta.eventMonReg(wifi_status, function([previous_state]))`
-
`wifi.sta.eventMonReg(wifi.status, "unreg")`
-
`wifi.sta.eventMonReg(wifi_status[, function([previous_state])])`
#### Parameters
-
`wifi_status`
WiFi status you would like to set callback for
, one of
:
-
`wifi_status`
WiFi status you would like to set
a
callback for:
-
`wifi.STA_IDLE`
-
`wifi.STA_CONNECTING`
-
`wifi.STA_WRONGPWD`
-
`wifi.STA_APNOTFOUND`
-
`wifi.STA_FAIL`
-
`wifi.STA_GOTIP`
-
`function`
function to perform when event occurs
-
`"unreg"`
unregister previously
register
ed
callback
-
`function`
callback
function to perform when event occurs
-
Note: leaving field blank un
register
s
callback
.
-
`previous_state`
previous wifi_state(0 - 5)
#### Returns
...
...
@@ -364,7 +363,7 @@ wifi.sta.eventMonReg(wifi.STA_CONNECTING, function(previous_State)
end
)
--unregister callback
wifi
.
sta
.
eventMonReg
(
wifi
.
STA_IDLE
,
"unreg"
)
wifi
.
sta
.
eventMonReg
(
wifi
.
STA_IDLE
)
```
#### See also
-
[
`wifi.sta.eventMonStart()`
](
#wifistaeventmonstart
)
...
...
@@ -395,15 +394,16 @@ wifi.sta.eventMonStart(100)
#### See also
-
[
`wifi.sta.eventMonReg()`
](
#wifistaeventmonreg
)
-
[
`wifi.sta.eventMonStop()`
](
#wifistaeventmonstop
)
-
## wifi.sta.eventMonStop()
Stops WiFi station event monitor.
#### Syntax
`wifi.sta.eventMonStop([
"
unreg
all
"
])`
`wifi.sta.eventMonStop([unreg
ister_
all])`
#### Parameters
`"unreg all"`
unregister all previously registered functions
-
`unregister_all`
enter 1 to unregister all previously registered functions.
-
Note: leave blank to leave callbacks registered
#### Returns
`nil`
...
...
@@ -414,7 +414,7 @@ Stops WiFi station event monitor.
wifi
.
sta
.
eventMonStop
()
--stop WiFi event monitor and unregister all callbacks
wifi
.
sta
.
eventMonStop
(
"unreg all"
)
wifi
.
sta
.
eventMonStop
(
1
)
```
#### See also
...
...
Write
Preview
Markdown
is supported
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