Merge pull request #731 from dnc40085/dev_wifi_sleep_update

Update function wifi.sleep
This commit is contained in:
Vowstar 2015-11-11 17:10:10 +08:00
commit 63fad194e2
1 changed files with 34 additions and 14 deletions

View File

@ -327,23 +327,23 @@ static int wifi_getphymode( lua_State* L )
//wifi.sleep() //wifi.sleep()
static int wifi_sleep(lua_State* L) static int wifi_sleep(lua_State* L)
{ {
uint8 desired_sleep_state=2; uint8 desired_sleep_state = 2;
sint8 wifi_fpm_do_sleep_return_value = 1;
if(lua_isnumber(L, 1)) if(lua_isnumber(L, 1))
{ {
if(luaL_checknumber(L, 1)==0) if(luaL_checknumber(L, 1) == 0)
{ {
desired_sleep_state=FALSE; desired_sleep_state = 0;
} }
else if(luaL_checknumber(L, 1)==1) else if(luaL_checknumber(L, 1) == 1)
{ {
desired_sleep_state=TRUE; desired_sleep_state = 1;
} }
} }
if (!FLAG_wifi_force_sleep_enabled && desired_sleep_state==1) if (!FLAG_wifi_force_sleep_enabled && desired_sleep_state == 1 )
{ {
FLAG_wifi_force_sleep_enabled=TRUE; uint8 wifi_current_opmode = wifi_get_opmode();
uint8 wifi_current_opmode=wifi_get_opmode(); if (wifi_current_opmode == 1 || wifi_current_opmode == 3 )
if (wifi_current_opmode==1||wifi_current_opmode==3)
{ {
wifi_station_disconnect(); wifi_station_disconnect();
} }
@ -352,17 +352,37 @@ static int wifi_sleep(lua_State* L)
// set force sleep type // set force sleep type
wifi_fpm_set_sleep_type(MODEM_SLEEP_T); wifi_fpm_set_sleep_type(MODEM_SLEEP_T);
wifi_fpm_open(); wifi_fpm_open();
wifi_fpm_do_sleep(FPM_SLEEP_MAX_TIME); wifi_fpm_do_sleep_return_value = wifi_fpm_do_sleep(FPM_SLEEP_MAX_TIME);
if (wifi_fpm_do_sleep_return_value == 0)
{
FLAG_wifi_force_sleep_enabled = TRUE;
}
else
{
wifi_fpm_close();
FLAG_wifi_force_sleep_enabled = FALSE;
}
} }
else if(FLAG_wifi_force_sleep_enabled && desired_sleep_state==0) else if(FLAG_wifi_force_sleep_enabled && desired_sleep_state == 0)
{ {
FLAG_wifi_force_sleep_enabled=FALSE; FLAG_wifi_force_sleep_enabled = FALSE;
// wake up to use WiFi again // wake up to use WiFi again
wifi_fpm_do_wakeup(); wifi_fpm_do_wakeup();
wifi_fpm_close(); wifi_fpm_close();
} }
lua_pushnumber(L, FLAG_wifi_force_sleep_enabled);
return 1; if (desired_sleep_state == 1 && FLAG_wifi_force_sleep_enabled == FALSE)
{
lua_pushnil(L);
lua_pushnumber(L, wifi_fpm_do_sleep_return_value);
}
else
{
lua_pushnumber(L, FLAG_wifi_force_sleep_enabled);
lua_pushnil(L);
}
return 2;
} }
// Lua: mac = wifi.xx.getmac() // Lua: mac = wifi.xx.getmac()