Fix and support Wi-Fi smart link (esp-touch and air-kiss).
Espressif open-source android and iOs APP, See also https://github.com/espressifapp Note: Must use ESP-TOUCH-V021 in espressif app history.
This commit is contained in:
parent
125d2173d6
commit
fb0e4722b8
|
@ -17,23 +17,48 @@
|
||||||
|
|
||||||
static int wifi_smart_succeed = LUA_NOREF;
|
static int wifi_smart_succeed = LUA_NOREF;
|
||||||
static uint8 getap_output_format=0;
|
static uint8 getap_output_format=0;
|
||||||
|
#if defined( NODE_SMART_OLDSTYLE )
|
||||||
|
#else
|
||||||
|
static lua_State* smart_L = NULL;
|
||||||
|
#endif
|
||||||
static void wifi_smart_succeed_cb(void *arg){
|
static void wifi_smart_succeed_cb(void *arg){
|
||||||
NODE_DBG("wifi_smart_succeed_cb is called.\n");
|
NODE_DBG("wifi_smart_succeed_cb is called.\n");
|
||||||
|
|
||||||
|
#if defined( NODE_SMART_OLDSTYLE )
|
||||||
|
|
||||||
if( !arg )
|
if( !arg )
|
||||||
return;
|
return;
|
||||||
#if 0
|
if(wifi_smart_succeed == LUA_NOREF)
|
||||||
|
return;
|
||||||
|
|
||||||
|
lua_State* L = (lua_State *)arg;
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, wifi_smart_succeed);
|
||||||
|
lua_call(L, 0, 0);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
if( !arg )
|
||||||
|
return;
|
||||||
|
|
||||||
struct station_config *sta_conf = arg;
|
struct station_config *sta_conf = arg;
|
||||||
wifi_station_set_config(sta_conf);
|
wifi_station_set_config(sta_conf);
|
||||||
wifi_station_disconnect();
|
wifi_station_disconnect();
|
||||||
wifi_station_connect();
|
wifi_station_connect();
|
||||||
|
|
||||||
|
if(wifi_smart_succeed != LUA_NOREF)
|
||||||
|
{
|
||||||
|
lua_rawgeti(smart_L, LUA_REGISTRYINDEX, wifi_smart_succeed);
|
||||||
|
|
||||||
|
lua_pushstring(smart_L, sta_conf->ssid);
|
||||||
|
lua_pushstring(smart_L, sta_conf->password);
|
||||||
|
lua_call(smart_L, 2, 0);
|
||||||
|
|
||||||
|
luaL_unref(smart_L, LUA_REGISTRYINDEX, wifi_smart_succeed);
|
||||||
|
wifi_smart_succeed = LUA_NOREF;
|
||||||
|
}
|
||||||
smartconfig_stop();
|
smartconfig_stop();
|
||||||
#endif
|
|
||||||
if(wifi_smart_succeed == LUA_NOREF)
|
#endif // defined( NODE_SMART_OLDSTYLE )
|
||||||
return;
|
|
||||||
lua_State* L = (lua_State *)arg;
|
|
||||||
lua_rawgeti(L, LUA_REGISTRYINDEX, wifi_smart_succeed);
|
|
||||||
lua_call(L, 0, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wifi_scan_succeed = LUA_NOREF;
|
static int wifi_scan_succeed = LUA_NOREF;
|
||||||
|
@ -107,6 +132,9 @@ static void wifi_scan_done(void *arg, STATUS status)
|
||||||
// Lua: smart(type, function succeed_cb)
|
// Lua: smart(type, function succeed_cb)
|
||||||
static int wifi_start_smart( lua_State* L )
|
static int wifi_start_smart( lua_State* L )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#if defined( NODE_SMART_OLDSTYLE )
|
||||||
|
|
||||||
unsigned channel;
|
unsigned channel;
|
||||||
int stack = 1;
|
int stack = 1;
|
||||||
|
|
||||||
|
@ -133,15 +161,49 @@ static int wifi_start_smart( lua_State* L )
|
||||||
}else{
|
}else{
|
||||||
smart_begin(channel, (smart_succeed )wifi_smart_succeed_cb, L);
|
smart_begin(channel, (smart_succeed )wifi_smart_succeed_cb, L);
|
||||||
}
|
}
|
||||||
// smartconfig_start(0, wifi_smart_succeed_cb);
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
if(wifi_get_opmode() != STATION_MODE)
|
||||||
|
{
|
||||||
|
return luaL_error( L, "Smart link only in STATION mode" );
|
||||||
|
}
|
||||||
|
uint8_t smart_type = 0;
|
||||||
|
int stack = 1;
|
||||||
|
smart_L = L;
|
||||||
|
if ( lua_isnumber(L, stack) )
|
||||||
|
{
|
||||||
|
smart_type = lua_tointeger(L, stack);
|
||||||
|
stack++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lua_type(L, stack) == LUA_TFUNCTION || lua_type(L, stack) == LUA_TLIGHTFUNCTION)
|
||||||
|
{
|
||||||
|
lua_pushvalue(L, stack); // copy argument (func) to the top of stack
|
||||||
|
if(wifi_smart_succeed != LUA_NOREF)
|
||||||
|
luaL_unref(L, LUA_REGISTRYINDEX, wifi_smart_succeed);
|
||||||
|
wifi_smart_succeed = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( smart_type > 1 )
|
||||||
|
return luaL_error( L, "wrong arg range" );
|
||||||
|
|
||||||
|
smartconfig_start(smart_type, wifi_smart_succeed_cb);
|
||||||
|
|
||||||
|
#endif // defined( NODE_SMART_OLDSTYLE )
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lua: exit_smart()
|
// Lua: exit_smart()
|
||||||
static int wifi_exit_smart( lua_State* L )
|
static int wifi_exit_smart( lua_State* L )
|
||||||
{
|
{
|
||||||
|
#if defined( NODE_SMART_OLDSTYLE )
|
||||||
smart_end();
|
smart_end();
|
||||||
// smartconfig_stop();
|
#else
|
||||||
|
smartconfig_stop();
|
||||||
|
#endif // defined( NODE_SMART_OLDSTYLE )
|
||||||
|
|
||||||
if(wifi_smart_succeed != LUA_NOREF)
|
if(wifi_smart_succeed != LUA_NOREF)
|
||||||
luaL_unref(L, LUA_REGISTRYINDEX, wifi_smart_succeed);
|
luaL_unref(L, LUA_REGISTRYINDEX, wifi_smart_succeed);
|
||||||
wifi_smart_succeed = LUA_NOREF;
|
wifi_smart_succeed = LUA_NOREF;
|
||||||
|
|
|
@ -5,7 +5,7 @@ MEMORY
|
||||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||||
dram0_0_seg : org = 0x3FFE8000, len = 0x14000
|
dram0_0_seg : org = 0x3FFE8000, len = 0x14000
|
||||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||||
irom0_0_seg : org = 0x40210000, len = 0x60000
|
irom0_0_seg : org = 0x40210000, len = 0x80000
|
||||||
}
|
}
|
||||||
|
|
||||||
PHDRS
|
PHDRS
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue