Revert "Merge branch 'master' of http://git.wslink.cn/Embed/SmartOS"
This reverts commita53379c89a
, reversing changes made to7e367ed9aa
. # Conflicts: # Board/Pandora.cpp
This commit is contained in:
parent
be55364584
commit
135a736a9a
151
Board/AP0103.cpp
151
Board/AP0103.cpp
|
@ -19,6 +19,7 @@
|
||||||
#include "App\FlushPort.h"
|
#include "App\FlushPort.h"
|
||||||
|
|
||||||
AP0103* AP0103::Current = nullptr;
|
AP0103* AP0103::Current = nullptr;
|
||||||
|
static TokenClient* Client = nullptr; // 令牌客户端
|
||||||
|
|
||||||
AP0103::AP0103()
|
AP0103::AP0103()
|
||||||
{
|
{
|
||||||
|
@ -28,9 +29,7 @@ AP0103::AP0103()
|
||||||
ButtonPins.Add(PE9);
|
ButtonPins.Add(PE9);
|
||||||
ButtonPins.Add(PA1);
|
ButtonPins.Add(PA1);
|
||||||
|
|
||||||
Host = nullptr;
|
AlarmObj = nullptr;
|
||||||
HostAP = nullptr;
|
|
||||||
Client = nullptr;
|
|
||||||
|
|
||||||
Nrf = nullptr;
|
Nrf = nullptr;
|
||||||
Server = nullptr;
|
Server = nullptr;
|
||||||
|
@ -127,84 +126,68 @@ void AP0103::InitButtons(const Delegate2<InputPort&, bool>& press)
|
||||||
NetworkInterface* AP0103::Create5500()
|
NetworkInterface* AP0103::Create5500()
|
||||||
{
|
{
|
||||||
debug_printf("\r\nW5500::Create \r\n");
|
debug_printf("\r\nW5500::Create \r\n");
|
||||||
|
|
||||||
auto tc = TinyConfig::Create();
|
auto tc = TinyConfig::Create();
|
||||||
W5500 * host = nullptr;
|
W5500 * net = nullptr;
|
||||||
|
|
||||||
if(tc->HardVer >=5)
|
if(tc->HardVer >=5)
|
||||||
host = new W5500(Spi1, PE7, PB2);
|
net = new W5500(Spi1, PE7, PB2);
|
||||||
else
|
else
|
||||||
host = new W5500(Spi1, PE8, PE7);
|
net = new W5500(Spi1, PE8, PE7);
|
||||||
|
if(!net->Open())
|
||||||
|
{
|
||||||
|
delete net;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
return host;
|
net->EnableDNS();
|
||||||
|
net->EnableDHCP();
|
||||||
|
|
||||||
|
return net;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkInterface* AP0103::Create8266(bool apOnly)
|
NetworkInterface* AP0103::Create8266(bool apOnly)
|
||||||
{
|
{
|
||||||
auto host = new Esp8266(COM4, P0, P0);
|
auto esp = new Esp8266(COM4, P0, P0);
|
||||||
|
|
||||||
// 初次需要指定模式 否则为 Wire
|
// 初次需要指定模式 否则为 Wire
|
||||||
bool join = host->SSID && *host->SSID;
|
bool join = esp->SSID && *esp->SSID;
|
||||||
//if (!join) host->Mode = NetworkType::AP;
|
//if (!join) esp->Mode = NetworkType::AP;
|
||||||
if (!join)
|
if (!join)
|
||||||
{
|
{
|
||||||
*host->SSID = "WSWL";
|
*esp->SSID = "WSWL";
|
||||||
*host->Pass = "12345678";
|
*esp->Pass = "12345678";
|
||||||
|
|
||||||
host->Mode = NetworkType::STA_AP;
|
esp->Mode = NetworkType::STA_AP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client->Register("SetWiFi", &Esp8266::SetWiFi, host);
|
if(!esp->Open())
|
||||||
Client->Register("GetWiFi", &Esp8266::GetWiFi, host);
|
{
|
||||||
|
delete esp;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
host->Open();
|
Client->Register("SetWiFi", &Esp8266::SetWiFi, esp);
|
||||||
|
Client->Register("GetWiFi", &Esp8266::GetWiFi, esp);
|
||||||
|
|
||||||
return host;
|
return esp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP0103::InitClient()
|
void AP0103::InitClient()
|
||||||
{
|
{
|
||||||
if (Client) return;
|
if (Client) return;
|
||||||
|
|
||||||
auto tk = TokenConfig::Current;
|
// 初始化令牌网
|
||||||
|
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
||||||
|
|
||||||
// 创建客户端
|
// 创建客户端
|
||||||
auto client = new TokenClient();
|
auto tc = TokenClient::CreateFast(Buffer(Data, Size));
|
||||||
client->Cfg = tk;
|
tc->Cfg = tk;
|
||||||
|
tc->MaxNotActive = 8 * 60 * 1000;
|
||||||
|
|
||||||
// 需要使用本地连接
|
Client = tc;
|
||||||
//client->UseLocal();
|
|
||||||
|
|
||||||
Client = client;
|
InitAlarm();
|
||||||
Client->MaxNotActive = 480000;
|
|
||||||
|
|
||||||
// 重启
|
|
||||||
Client->Register("Gateway/Restart", &TokenClient::InvokeRestart, Client);
|
|
||||||
// 重置
|
|
||||||
Client->Register("Gateway/Reset", &TokenClient::InvokeReset, Client);
|
|
||||||
// 设置远程地址
|
|
||||||
Client->Register("Gateway/SetRemote", &TokenClient::InvokeSetRemote, Client);
|
|
||||||
// 获取远程配置信息
|
|
||||||
Client->Register("Gateway/GetRemote", &TokenClient::InvokeGetRemote, Client);
|
|
||||||
// 获取所有Ivoke命令
|
|
||||||
Client->Register("Api/All", &TokenClient::InvokeGetAllApi, Client);
|
|
||||||
|
|
||||||
if (Data && Size > 0)
|
|
||||||
{
|
|
||||||
auto& ds = Client->Store;
|
|
||||||
ds.Data.Set(Data, Size);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果若干分钟后仍然没有打开令牌客户端,则重启系统
|
|
||||||
Sys.AddTask(
|
|
||||||
[](void* p) {
|
|
||||||
auto& client = *(TokenClient*)p;
|
|
||||||
if (!client.Opened)
|
|
||||||
{
|
|
||||||
debug_printf("联网超时,准备重启系统!\r\n\r\n");
|
|
||||||
Sys.Reboot();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
client, 8 * 60 * 1000, -1, "check connet net");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP0103::Register(int index, IDataPort& dp)
|
void AP0103::Register(int index, IDataPort& dp)
|
||||||
|
@ -215,35 +198,14 @@ void AP0103::Register(int index, IDataPort& dp)
|
||||||
ds.Register(index, dp);
|
ds.Register(index, dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
网络使用流程:
|
|
||||||
|
|
||||||
5500网线检测
|
|
||||||
网线连通
|
|
||||||
启动DHCP/DNS
|
|
||||||
作为Host
|
|
||||||
Host为空 或 AP/STA_AP
|
|
||||||
创建8266,加载配置
|
|
||||||
Host为空
|
|
||||||
作为Host
|
|
||||||
else STA_AP
|
|
||||||
工作模式 = AP
|
|
||||||
|
|
||||||
令牌客户端主通道
|
|
||||||
令牌客户端内网通道
|
|
||||||
*/
|
|
||||||
void OnInitNet(void* param)
|
void OnInitNet(void* param)
|
||||||
{
|
{
|
||||||
auto& bsp = *(AP0103*)param;
|
auto& bsp = *(AP0103*)param;
|
||||||
|
|
||||||
// 检查是否连接网线
|
bsp.Create5500();
|
||||||
auto host = (W5500*)bsp.Create5500();
|
bsp.Create8266(false);
|
||||||
// 软路由的DHCP要求很严格,必须先把自己IP设为0
|
|
||||||
host->IP = IPAddress::Any();
|
Client->Open();
|
||||||
host->Open();
|
|
||||||
host->EnableDNS();
|
|
||||||
host->EnableDHCP();
|
|
||||||
bsp.Host = host;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP0103::InitNet()
|
void AP0103::InitNet()
|
||||||
|
@ -251,6 +213,35 @@ void AP0103::InitNet()
|
||||||
Sys.AddTask(OnInitNet, this, 0, -1, "InitNet");
|
Sys.AddTask(OnInitNet, this, 0, -1, "InitNet");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void OnAlarm(AlarmItem& item)
|
||||||
|
{
|
||||||
|
// 1长度n + 1类型 + 1偏移 + (n-2)数据
|
||||||
|
auto bs = item.GetData();
|
||||||
|
debug_printf("OnAlarm ");
|
||||||
|
bs.Show(true);
|
||||||
|
|
||||||
|
if(bs[1] == 0x06)
|
||||||
|
{
|
||||||
|
auto client = Client;
|
||||||
|
client->Store.Write(bs[2], bs.Sub(3, bs[0] - 2));
|
||||||
|
|
||||||
|
// 主动上报状态
|
||||||
|
client->ReportAsync(bs[2], bs[0] - 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AP0103::InitAlarm()
|
||||||
|
{
|
||||||
|
if (!Client)return;
|
||||||
|
|
||||||
|
if (!AlarmObj) AlarmObj = new Alarm();
|
||||||
|
Client->Register("Policy/AlarmSet", &Alarm::Set, AlarmObj);
|
||||||
|
Client->Register("Policy/AlarmGet", &Alarm::Get, AlarmObj);
|
||||||
|
|
||||||
|
AlarmObj->OnAlarm = OnAlarm;
|
||||||
|
AlarmObj->Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************** Tiny *******************************/
|
/******************************** Tiny *******************************/
|
||||||
|
|
||||||
|
@ -372,7 +363,7 @@ void AP0103::OnLongPress(InputPort* port, bool down)
|
||||||
debug_printf("Press P%c%d Time=%d ms\r\n", _PIN_NAME(port->_Pin), port->PressTime);
|
debug_printf("Press P%c%d Time=%d ms\r\n", _PIN_NAME(port->_Pin), port->PressTime);
|
||||||
|
|
||||||
ushort time = port->PressTime;
|
ushort time = port->PressTime;
|
||||||
auto client = AP0103::Current->Client;
|
auto client = Client;
|
||||||
if (time >= 5000 && time < 10000)
|
if (time >= 5000 && time < 10000)
|
||||||
{
|
{
|
||||||
if(client) client->Reset("按键重置");
|
if(client) client->Reset("按键重置");
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
#include "Net\ITransport.h"
|
#include "Net\ITransport.h"
|
||||||
#include "Net\Socket.h"
|
#include "Net\Socket.h"
|
||||||
|
|
||||||
#include "TokenNet\TokenClient.h"
|
|
||||||
#include "TinyNet\TinyServer.h"
|
#include "TinyNet\TinyServer.h"
|
||||||
#include "TokenNet\GateWay.h"
|
#include "TokenNet\GateWay.h"
|
||||||
|
|
||||||
|
@ -25,17 +24,13 @@ public:
|
||||||
List<OutputPort*> Outputs;
|
List<OutputPort*> Outputs;
|
||||||
List<InputPort*> Inputs;
|
List<InputPort*> Inputs;
|
||||||
|
|
||||||
NetworkInterface* Host; // 网络主机
|
|
||||||
NetworkInterface* HostAP; // 网络主机
|
|
||||||
TokenClient* Client; // 令牌客户端
|
|
||||||
|
|
||||||
ITransport* Nrf; // NRF24L01传输口
|
ITransport* Nrf; // NRF24L01传输口
|
||||||
TinyServer* Server; // TinyServer服务
|
TinyServer* Server; // TinyServer服务
|
||||||
|
|
||||||
Gateway* _GateWay; // 网关
|
Gateway* _GateWay; // 网关
|
||||||
|
|
||||||
// ProxyFactory* ProxyFac; // 透传管理器
|
// ProxyFactory* ProxyFac; // 透传管理器
|
||||||
// Alarm* AlarmObj;
|
Alarm* AlarmObj;
|
||||||
|
|
||||||
AP0103();
|
AP0103();
|
||||||
|
|
||||||
|
@ -56,6 +51,7 @@ public:
|
||||||
|
|
||||||
void InitClient();
|
void InitClient();
|
||||||
void InitNet();
|
void InitNet();
|
||||||
|
void InitAlarm();
|
||||||
|
|
||||||
// 打开NRF24L01
|
// 打开NRF24L01
|
||||||
ITransport* Create2401();
|
ITransport* Create2401();
|
||||||
|
|
153
Board/AP0104.cpp
153
Board/AP0104.cpp
|
@ -19,6 +19,7 @@
|
||||||
#include "App\FlushPort.h"
|
#include "App\FlushPort.h"
|
||||||
|
|
||||||
AP0104* AP0104::Current = nullptr;
|
AP0104* AP0104::Current = nullptr;
|
||||||
|
static TokenClient* Client = nullptr; // 令牌客户端
|
||||||
|
|
||||||
AP0104::AP0104()
|
AP0104::AP0104()
|
||||||
{
|
{
|
||||||
|
@ -28,9 +29,7 @@ AP0104::AP0104()
|
||||||
ButtonPins.Add(PE9);
|
ButtonPins.Add(PE9);
|
||||||
ButtonPins.Add(PA1);
|
ButtonPins.Add(PA1);
|
||||||
|
|
||||||
Host = nullptr;
|
AlarmObj = nullptr;
|
||||||
HostAP = nullptr;
|
|
||||||
Client = nullptr;
|
|
||||||
|
|
||||||
Nrf = nullptr;
|
Nrf = nullptr;
|
||||||
Server = nullptr;
|
Server = nullptr;
|
||||||
|
@ -128,66 +127,61 @@ NetworkInterface* AP0104::Create5500()
|
||||||
{
|
{
|
||||||
debug_printf("\r\nW5500::Create \r\n");
|
debug_printf("\r\nW5500::Create \r\n");
|
||||||
|
|
||||||
auto host = new W5500(Spi1, PE7, PB2);
|
auto net = new W5500(Spi1, PE7, PB2);
|
||||||
|
if(!net->Open())
|
||||||
|
{
|
||||||
|
delete net;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
return host;
|
net->EnableDNS();
|
||||||
|
net->EnableDHCP();
|
||||||
|
|
||||||
|
return net;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkInterface* AP0104::Create8266(bool apOnly)
|
NetworkInterface* AP0104::Create8266(bool apOnly)
|
||||||
{
|
{
|
||||||
auto host = new Esp8266(COM4, P0, P0);
|
auto esp = new Esp8266(COM4, P0, P0);
|
||||||
|
|
||||||
// 初次需要指定模式 否则为 Wire
|
// 初次需要指定模式 否则为 Wire
|
||||||
bool join = host->SSID && *host->SSID;
|
bool join = esp->SSID && *esp->SSID;
|
||||||
//if (!join) host->Mode = NetworkType::AP;
|
//if (!join) esp->Mode = NetworkType::AP;
|
||||||
if (!join)
|
if (!join)
|
||||||
{
|
{
|
||||||
*host->SSID = "WSWL";
|
*esp->SSID = "WSWL";
|
||||||
*host->Pass = "12345678";
|
*esp->Pass = "12345678";
|
||||||
|
|
||||||
host->Mode = NetworkType::STA_AP;
|
esp->Mode = NetworkType::STA_AP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client->Register("SetWiFi", &Esp8266::SetWiFi, host);
|
if(!esp->Open())
|
||||||
Client->Register("GetWiFi", &Esp8266::GetWiFi, host);
|
{
|
||||||
|
delete esp;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
host->Open();
|
Client->Register("SetWiFi", &Esp8266::SetWiFi, esp);
|
||||||
|
Client->Register("GetWiFi", &Esp8266::GetWiFi, esp);
|
||||||
|
|
||||||
return host;
|
return esp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP0104::InitClient()
|
void AP0104::InitClient()
|
||||||
{
|
{
|
||||||
if (Client) return;
|
if (Client) return;
|
||||||
|
|
||||||
auto tk = TokenConfig::Current;
|
// 初始化令牌网
|
||||||
|
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
||||||
|
|
||||||
// 创建客户端
|
// 创建客户端
|
||||||
auto client = new TokenClient();
|
auto tc = TokenClient::CreateFast(Buffer(Data, Size));
|
||||||
client->Cfg = tk;
|
tc->Cfg = tk;
|
||||||
|
tc->MaxNotActive = 8 * 60 * 1000;
|
||||||
|
|
||||||
// 需要使用本地连接
|
Client = tc;
|
||||||
//client->UseLocal();
|
|
||||||
|
|
||||||
Client = client;
|
InitAlarm();
|
||||||
Client->MaxNotActive = 480000;
|
|
||||||
|
|
||||||
// 重启
|
|
||||||
Client->Register("Gateway/Restart", &TokenClient::InvokeRestart, Client);
|
|
||||||
// 重置
|
|
||||||
Client->Register("Gateway/Reset", &TokenClient::InvokeReset, Client);
|
|
||||||
// 设置远程地址
|
|
||||||
Client->Register("Gateway/SetRemote", &TokenClient::InvokeSetRemote, Client);
|
|
||||||
// 获取远程配置信息
|
|
||||||
Client->Register("Gateway/GetRemote", &TokenClient::InvokeGetRemote, Client);
|
|
||||||
// 获取所有Ivoke命令
|
|
||||||
Client->Register("Api/All", &TokenClient::InvokeGetAllApi, Client);
|
|
||||||
|
|
||||||
if (Data && Size > 0)
|
|
||||||
{
|
|
||||||
auto& ds = Client->Store;
|
|
||||||
ds.Data.Set(Data, Size);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP0104::Register(int index, IDataPort& dp)
|
void AP0104::Register(int index, IDataPort& dp)
|
||||||
|
@ -198,56 +192,14 @@ void AP0104::Register(int index, IDataPort& dp)
|
||||||
ds.Register(index, dp);
|
ds.Register(index, dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
网络使用流程:
|
|
||||||
|
|
||||||
5500网线检测
|
|
||||||
网线连通
|
|
||||||
启动DHCP/DNS
|
|
||||||
作为Host
|
|
||||||
Host为空 或 AP/STA_AP
|
|
||||||
创建8266,加载配置
|
|
||||||
Host为空
|
|
||||||
作为Host
|
|
||||||
else STA_AP
|
|
||||||
工作模式 = AP
|
|
||||||
|
|
||||||
令牌客户端主通道
|
|
||||||
令牌客户端内网通道
|
|
||||||
*/
|
|
||||||
void OnInitNet(void* param)
|
void OnInitNet(void* param)
|
||||||
{
|
{
|
||||||
auto& bsp = *(AP0104*)param;
|
auto& bsp = *(AP0104*)param;
|
||||||
|
|
||||||
// 检查是否连接网线
|
bsp.Create5500();
|
||||||
auto host = (W5500*)bsp.Create5500();
|
bsp.Create8266(false);
|
||||||
// 软路由的DHCP要求很严格,必须先把自己IP设为0
|
|
||||||
host->IP = IPAddress::Any();
|
|
||||||
if (host->Open())
|
|
||||||
{
|
|
||||||
host->EnableDNS();
|
|
||||||
host->EnableDHCP();
|
|
||||||
bsp.Host = host;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delete host;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 没有接网线,需要完整WiFi通道
|
Client->Open();
|
||||||
if (!bsp.Host)
|
|
||||||
{
|
|
||||||
auto esp = (WiFiInterface*)bsp.Create8266(false);
|
|
||||||
if (esp)
|
|
||||||
{
|
|
||||||
// 未组网时,主机留空,仅保留AP主机
|
|
||||||
bool join = esp->SSID && *esp->SSID;
|
|
||||||
if (join && esp->IsStation())
|
|
||||||
bsp.Host = esp;
|
|
||||||
else
|
|
||||||
bsp.HostAP = esp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP0104::InitNet()
|
void AP0104::InitNet()
|
||||||
|
@ -255,6 +207,35 @@ void AP0104::InitNet()
|
||||||
Sys.AddTask(OnInitNet, this, 0, -1, "InitNet");
|
Sys.AddTask(OnInitNet, this, 0, -1, "InitNet");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void OnAlarm(AlarmItem& item)
|
||||||
|
{
|
||||||
|
// 1长度n + 1类型 + 1偏移 + (n-2)数据
|
||||||
|
auto bs = item.GetData();
|
||||||
|
debug_printf("OnAlarm ");
|
||||||
|
bs.Show(true);
|
||||||
|
|
||||||
|
if(bs[1] == 0x06)
|
||||||
|
{
|
||||||
|
auto client = Client;
|
||||||
|
client->Store.Write(bs[2], bs.Sub(3, bs[0] - 2));
|
||||||
|
|
||||||
|
// 主动上报状态
|
||||||
|
client->ReportAsync(bs[2], bs[0] - 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AP0104::InitAlarm()
|
||||||
|
{
|
||||||
|
if (!Client)return;
|
||||||
|
|
||||||
|
if (!AlarmObj) AlarmObj = new Alarm();
|
||||||
|
Client->Register("Policy/AlarmSet", &Alarm::Set, AlarmObj);
|
||||||
|
Client->Register("Policy/AlarmGet", &Alarm::Get, AlarmObj);
|
||||||
|
|
||||||
|
AlarmObj->OnAlarm = OnAlarm;
|
||||||
|
AlarmObj->Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************** Tiny *******************************/
|
/******************************** Tiny *******************************/
|
||||||
|
|
||||||
|
@ -374,7 +355,7 @@ void AP0104::OnLongPress(InputPort* port, bool down)
|
||||||
debug_printf("Press P%c%d Time=%d ms\r\n", _PIN_NAME(port->_Pin), port->PressTime);
|
debug_printf("Press P%c%d Time=%d ms\r\n", _PIN_NAME(port->_Pin), port->PressTime);
|
||||||
|
|
||||||
ushort time = port->PressTime;
|
ushort time = port->PressTime;
|
||||||
auto client = AP0104::Current->Client;
|
auto client = Client;
|
||||||
if (time >= 5000 && time < 10000)
|
if (time >= 5000 && time < 10000)
|
||||||
{
|
{
|
||||||
if(client) client->Reset("按键重置");
|
if(client) client->Reset("按键重置");
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
#include "Net\ITransport.h"
|
#include "Net\ITransport.h"
|
||||||
#include "Net\Socket.h"
|
#include "Net\Socket.h"
|
||||||
|
|
||||||
#include "TokenNet\TokenClient.h"
|
|
||||||
#include "TinyNet\TinyServer.h"
|
#include "TinyNet\TinyServer.h"
|
||||||
#include "TokenNet\GateWay.h"
|
#include "TokenNet\GateWay.h"
|
||||||
|
|
||||||
|
@ -25,17 +24,13 @@ public:
|
||||||
List<OutputPort*> Outputs;
|
List<OutputPort*> Outputs;
|
||||||
List<InputPort*> Inputs;
|
List<InputPort*> Inputs;
|
||||||
|
|
||||||
NetworkInterface* Host; // 网络主机
|
|
||||||
NetworkInterface* HostAP; // 网络主机
|
|
||||||
TokenClient* Client; // 令牌客户端
|
|
||||||
|
|
||||||
ITransport* Nrf; // NRF24L01传输口
|
ITransport* Nrf; // NRF24L01传输口
|
||||||
TinyServer* Server; // TinyServer服务
|
TinyServer* Server; // TinyServer服务
|
||||||
|
|
||||||
Gateway* _GateWay; // 网关
|
Gateway* _GateWay; // 网关
|
||||||
|
|
||||||
// ProxyFactory* ProxyFac; // 透传管理器
|
// ProxyFactory* ProxyFac; // 透传管理器
|
||||||
// Alarm* AlarmObj;
|
Alarm* AlarmObj;
|
||||||
|
|
||||||
AP0104();
|
AP0104();
|
||||||
// 设置系统参数
|
// 设置系统参数
|
||||||
|
@ -55,6 +50,7 @@ public:
|
||||||
|
|
||||||
void InitClient();
|
void InitClient();
|
||||||
void InitNet();
|
void InitNet();
|
||||||
|
void InitAlarm();
|
||||||
|
|
||||||
// 打开NRF24L01
|
// 打开NRF24L01
|
||||||
ITransport* Create2401();
|
ITransport* Create2401();
|
||||||
|
|
|
@ -28,8 +28,7 @@ AP0801::AP0801()
|
||||||
LedPins.Add(PE15);
|
LedPins.Add(PE15);
|
||||||
ButtonPins.Add(PE13);
|
ButtonPins.Add(PE13);
|
||||||
ButtonPins.Add(PE14);
|
ButtonPins.Add(PE14);
|
||||||
Host = nullptr;
|
|
||||||
HostAP = nullptr;
|
|
||||||
Client = nullptr;
|
Client = nullptr;
|
||||||
ProxyFac = nullptr;
|
ProxyFac = nullptr;
|
||||||
AlarmObj = nullptr;
|
AlarmObj = nullptr;
|
||||||
|
@ -130,9 +129,6 @@ NetworkInterface* AP0801::Create5500()
|
||||||
debug_printf("\r\nW5500::Create \r\n");
|
debug_printf("\r\nW5500::Create \r\n");
|
||||||
|
|
||||||
auto net = new W5500(Spi2, PE1, PD13);
|
auto net = new W5500(Spi2, PE1, PD13);
|
||||||
// 必须先把自己IP设为0,否则本地IP段与路由器不一致时将得不到分配
|
|
||||||
//net->IP = IPAddress::Any();
|
|
||||||
|
|
||||||
if(!net->Open())
|
if(!net->Open())
|
||||||
{
|
{
|
||||||
delete net;
|
delete net;
|
||||||
|
@ -184,33 +180,13 @@ void AP0801::InitClient()
|
||||||
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
||||||
|
|
||||||
// 创建客户端
|
// 创建客户端
|
||||||
auto tc = new TokenClient();
|
auto tc = TokenClient::CreateFast(Buffer(Data, Size));
|
||||||
tc->Cfg = tk;
|
tc->Cfg = tk;
|
||||||
|
tc->MaxNotActive = 8 * 60 * 1000;
|
||||||
|
|
||||||
Client = tc;
|
Client = tc;
|
||||||
|
|
||||||
tc->MaxNotActive = 480000;
|
|
||||||
InitAlarm();
|
InitAlarm();
|
||||||
// 重启
|
|
||||||
tc->Register("Gateway/Restart", &TokenClient::InvokeRestart, tc);
|
|
||||||
// 重置
|
|
||||||
tc->Register("Gateway/Reset", &TokenClient::InvokeReset, tc);
|
|
||||||
// 设置远程地址
|
|
||||||
tc->Register("Gateway/SetRemote", &TokenClient::InvokeSetRemote, tc);
|
|
||||||
// 获取远程配置信息
|
|
||||||
tc->Register("Gateway/GetRemote", &TokenClient::InvokeGetRemote, tc);
|
|
||||||
// 获取所有Invoke命令
|
|
||||||
tc->Register("Api/All", &TokenClient::InvokeGetAllApi, tc);
|
|
||||||
|
|
||||||
if (Data && Size > 0)
|
|
||||||
{
|
|
||||||
auto& ds = tc->Store;
|
|
||||||
ds.Data.Set(Data, Size);
|
|
||||||
}
|
|
||||||
|
|
||||||
tc->UseLocal();
|
|
||||||
|
|
||||||
//tc->Open();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP0801::Register(uint offset, IDataPort& dp)
|
void AP0801::Register(uint offset, IDataPort& dp)
|
||||||
|
@ -289,7 +265,7 @@ void AP0801::InitAlarm()
|
||||||
{
|
{
|
||||||
if (!Client)return;
|
if (!Client)return;
|
||||||
|
|
||||||
if (!AlarmObj)AlarmObj = new Alarm();
|
if (!AlarmObj) AlarmObj = new Alarm();
|
||||||
Client->Register("Policy/AlarmSet", &Alarm::Set, AlarmObj);
|
Client->Register("Policy/AlarmSet", &Alarm::Set, AlarmObj);
|
||||||
Client->Register("Policy/AlarmGet", &Alarm::Get, AlarmObj);
|
Client->Register("Policy/AlarmGet", &Alarm::Get, AlarmObj);
|
||||||
|
|
||||||
|
@ -380,32 +356,6 @@ void AP0801::OnLongPress(InputPort* port, bool down)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
网络使用流程:
|
|
||||||
|
|
||||||
5500网线检测
|
|
||||||
网线连通
|
|
||||||
启动DHCP
|
|
||||||
作为Host
|
|
||||||
Host为空 或 AP/STA_AP
|
|
||||||
创建8266,加载配置
|
|
||||||
Host为空
|
|
||||||
作为Host
|
|
||||||
else STA_AP
|
|
||||||
工作模式 = AP
|
|
||||||
打开8266
|
|
||||||
STA/STA_AP
|
|
||||||
SSID != null
|
|
||||||
JoinWiFi
|
|
||||||
else
|
|
||||||
工作模式 = AP
|
|
||||||
AP/STA_AP
|
|
||||||
SetAP
|
|
||||||
|
|
||||||
令牌客户端主通道
|
|
||||||
令牌客户端内网通道
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
NRF24L01+ (SPI3) | W5500 (SPI2) | TOUCH (SPI3)
|
NRF24L01+ (SPI3) | W5500 (SPI2) | TOUCH (SPI3)
|
||||||
NSS | NSS | PD6 NSS
|
NSS | NSS | PD6 NSS
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
#include "Net\ITransport.h"
|
#include "Net\ITransport.h"
|
||||||
#include "Net\Socket.h"
|
#include "Net\Socket.h"
|
||||||
|
|
||||||
//#include "TokenNet\TokenClient.h"
|
|
||||||
//#include "Message\ProxyFactory.h"
|
|
||||||
#include "App\Alarm.h"
|
#include "App\Alarm.h"
|
||||||
|
|
||||||
// 阿波罗0801/0802
|
// 阿波罗0801/0802
|
||||||
|
@ -21,8 +19,6 @@ public:
|
||||||
List<OutputPort*> Outputs;
|
List<OutputPort*> Outputs;
|
||||||
List<InputPort*> Inputs;
|
List<InputPort*> Inputs;
|
||||||
|
|
||||||
NetworkInterface* Host; // 网络主机
|
|
||||||
NetworkInterface* HostAP; // 网络主机
|
|
||||||
Alarm* AlarmObj;
|
Alarm* AlarmObj;
|
||||||
|
|
||||||
AP0801();
|
AP0801();
|
||||||
|
@ -43,7 +39,6 @@ public:
|
||||||
|
|
||||||
void InitLeds();
|
void InitLeds();
|
||||||
void InitButtons(const Delegate2<InputPort&, bool>& press);
|
void InitButtons(const Delegate2<InputPort&, bool>& press);
|
||||||
// void InitPort();
|
|
||||||
|
|
||||||
// 打开以太网W5500
|
// 打开以太网W5500
|
||||||
NetworkInterface* Create5500();
|
NetworkInterface* Create5500();
|
||||||
|
|
148
Board/AP0802.cpp
148
Board/AP0802.cpp
|
@ -20,8 +20,6 @@ static TokenClient* Client = nullptr; // 令牌客户端
|
||||||
|
|
||||||
AP0802::AP0802()
|
AP0802::AP0802()
|
||||||
{
|
{
|
||||||
Host = nullptr;
|
|
||||||
HostAP = nullptr;
|
|
||||||
Client = nullptr;
|
Client = nullptr;
|
||||||
|
|
||||||
Data = nullptr;
|
Data = nullptr;
|
||||||
|
@ -162,33 +160,45 @@ NetworkInterface* AP0802::Create5500()
|
||||||
{
|
{
|
||||||
debug_printf("\r\nW5500::Create \r\n");
|
debug_printf("\r\nW5500::Create \r\n");
|
||||||
|
|
||||||
auto host = new W5500(Spi2, PE1, PD13);
|
auto net = new W5500(Spi2, PE1, PD13);
|
||||||
|
if(!net->Open())
|
||||||
|
{
|
||||||
|
delete net;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
return host;
|
net->EnableDNS();
|
||||||
|
net->EnableDHCP();
|
||||||
|
|
||||||
|
return net;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkInterface* AP0802::Create8266(bool apOnly)
|
NetworkInterface* AP0802::Create8266(bool apOnly)
|
||||||
{
|
{
|
||||||
auto host = new Esp8266(COM4, PE0, PD3);
|
auto esp = new Esp8266(COM4, PE0, PD3);
|
||||||
|
|
||||||
// 初次需要指定模式 否则为 Wire
|
// 初次需要指定模式 否则为 Wire
|
||||||
bool join = host->SSID && *host->SSID;
|
bool join = esp->SSID && *esp->SSID;
|
||||||
//if (!join) host->Mode = NetworkType::AP;
|
//if (!join) esp->Mode = NetworkType::AP;
|
||||||
if (!join)
|
if (!join)
|
||||||
{
|
{
|
||||||
*host->SSID = "WSWL";
|
*esp->SSID = "WSWL";
|
||||||
*host->Pass = "12345678";
|
*esp->Pass = "12345678";
|
||||||
|
|
||||||
host->Mode = NetworkType::STA_AP;
|
esp->Mode = NetworkType::STA_AP;
|
||||||
host->WorkMode = NetworkType::STA_AP;
|
esp->WorkMode = NetworkType::STA_AP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client->Register("SetWiFi", &Esp8266::SetWiFi, host);
|
if(!esp->Open())
|
||||||
Client->Register("GetWiFi", &Esp8266::GetWiFi, host);
|
{
|
||||||
|
delete esp;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
host->Open();
|
Client->Register("SetWiFi", &Esp8266::SetWiFi, esp);
|
||||||
|
Client->Register("GetWiFi", &Esp8266::GetWiFi, esp);
|
||||||
|
|
||||||
return host;
|
return esp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************** Token ********************************/
|
/******************************** Token ********************************/
|
||||||
|
@ -197,35 +207,17 @@ void AP0802::InitClient()
|
||||||
{
|
{
|
||||||
if (Client) return;
|
if (Client) return;
|
||||||
|
|
||||||
auto tk = TokenConfig::Current;
|
// 初始化令牌网
|
||||||
|
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
||||||
|
|
||||||
// 创建客户端
|
// 创建客户端
|
||||||
auto client = new TokenClient();
|
auto tc = TokenClient::CreateFast(Buffer(Data, Size));
|
||||||
client->Cfg = tk;
|
tc->Cfg = tk;
|
||||||
|
tc->MaxNotActive = 8 * 60 * 1000;
|
||||||
|
|
||||||
|
Client = tc;
|
||||||
|
|
||||||
// 需要使用本地连接
|
|
||||||
//client->UseLocal();
|
|
||||||
//配置闹钟
|
|
||||||
InitAlarm();
|
InitAlarm();
|
||||||
|
|
||||||
Client = client;
|
|
||||||
Client->MaxNotActive = 480000;
|
|
||||||
// 重启
|
|
||||||
Client->Register("Gateway/Restart", &TokenClient::InvokeRestart, Client);
|
|
||||||
// 重置
|
|
||||||
Client->Register("Gateway/Reset", &TokenClient::InvokeReset, Client);
|
|
||||||
// 设置远程地址
|
|
||||||
Client->Register("Gateway/SetRemote", &TokenClient::InvokeSetRemote, Client);
|
|
||||||
// 获取远程配置信息
|
|
||||||
Client->Register("Gateway/GetRemote", &TokenClient::InvokeGetRemote, Client);
|
|
||||||
// 获取所有Ivoke命令
|
|
||||||
Client->Register("Api/All", &TokenClient::InvokeGetAllApi, Client);
|
|
||||||
|
|
||||||
if (Data && Size > 0)
|
|
||||||
{
|
|
||||||
auto& ds = Client->Store;
|
|
||||||
ds.Data.Set(Data, Size);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP0802::Register(int index, IDataPort& dp)
|
void AP0802::Register(int index, IDataPort& dp)
|
||||||
|
@ -236,56 +228,14 @@ void AP0802::Register(int index, IDataPort& dp)
|
||||||
ds.Register(index, dp);
|
ds.Register(index, dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
网络使用流程:
|
|
||||||
|
|
||||||
5500网线检测
|
|
||||||
网线连通
|
|
||||||
启动DHCP/DNS
|
|
||||||
作为Host
|
|
||||||
Host为空 或 AP/STA_AP
|
|
||||||
创建8266,加载配置
|
|
||||||
Host为空
|
|
||||||
作为Host
|
|
||||||
else STA_AP
|
|
||||||
工作模式 = AP
|
|
||||||
|
|
||||||
令牌客户端主通道
|
|
||||||
令牌客户端内网通道
|
|
||||||
*/
|
|
||||||
void OnInitNet(void* param)
|
void OnInitNet(void* param)
|
||||||
{
|
{
|
||||||
auto& bsp = *(AP0802*)param;
|
auto& bsp = *(AP0802*)param;
|
||||||
|
|
||||||
// 检查是否连接网线
|
bsp.Create5500();
|
||||||
auto host = (W5500*)bsp.Create5500();
|
bsp.Create8266(false);
|
||||||
// 软路由的DHCP要求很严格,必须先把自己IP设为0
|
|
||||||
host->IP = IPAddress::Any();
|
|
||||||
if (host->Open())
|
|
||||||
{
|
|
||||||
host->EnableDNS();
|
|
||||||
host->EnableDHCP();
|
|
||||||
bsp.Host = host;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delete host;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 没有接网线,需要完整WiFi通道
|
Client->Open();
|
||||||
if (!bsp.Host)
|
|
||||||
{
|
|
||||||
auto esp = (WiFiInterface*)bsp.Create8266(false);
|
|
||||||
if (esp)
|
|
||||||
{
|
|
||||||
// 未组网时,主机留空,仅保留AP主机
|
|
||||||
bool join = esp->SSID && *esp->SSID;
|
|
||||||
if (join && esp->IsStation())
|
|
||||||
bsp.Host = esp;
|
|
||||||
else
|
|
||||||
bsp.HostAP = esp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP0802::InitNet()
|
void AP0802::InitNet()
|
||||||
|
@ -375,32 +325,6 @@ void AP0802::OnLongPress(InputPort* port, bool down)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
网络使用流程:
|
|
||||||
|
|
||||||
5500网线检测
|
|
||||||
网线连通
|
|
||||||
启动DHCP
|
|
||||||
作为Host
|
|
||||||
Host为空 或 AP/STA_AP
|
|
||||||
创建8266,加载配置
|
|
||||||
Host为空
|
|
||||||
作为Host
|
|
||||||
else STA_AP
|
|
||||||
工作模式 = AP
|
|
||||||
打开8266
|
|
||||||
STA/STA_AP
|
|
||||||
SSID != null
|
|
||||||
JoinWiFi
|
|
||||||
else
|
|
||||||
工作模式 = AP
|
|
||||||
AP/STA_AP
|
|
||||||
SetAP
|
|
||||||
|
|
||||||
令牌客户端主通道
|
|
||||||
令牌客户端内网通道
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
NRF24L01+ (SPI3) | W5500 (SPI2)
|
NRF24L01+ (SPI3) | W5500 (SPI2)
|
||||||
NSS | NSS
|
NSS | NSS
|
||||||
|
|
|
@ -25,8 +25,6 @@ public:
|
||||||
List<OutputPort*> Outputs;
|
List<OutputPort*> Outputs;
|
||||||
List<InputPort*> Inputs;
|
List<InputPort*> Inputs;
|
||||||
|
|
||||||
NetworkInterface* Host; // 网络主机
|
|
||||||
NetworkInterface* HostAP; // 网络主机
|
|
||||||
byte HardwareVer;
|
byte HardwareVer;
|
||||||
|
|
||||||
AP0802();
|
AP0802();
|
||||||
|
|
|
@ -94,29 +94,33 @@ void IOK026X::InitLeds()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkInterface* IOK026X::CreateNet()
|
NetworkInterface* IOK026X::Create8266()
|
||||||
{
|
{
|
||||||
auto host = new Esp8266(COM2, PB2, PA1);
|
auto esp = new Esp8266(COM2, PB2, PA1);
|
||||||
|
|
||||||
// 初次需要指定模式 否则为 Wire
|
// 初次需要指定模式 否则为 Wire
|
||||||
bool join = host->SSID && *host->SSID;
|
bool join = esp->SSID && *esp->SSID;
|
||||||
//if (!join) host->Mode = NetworkType::AP;
|
//if (!join) esp->Mode = NetworkType::AP;
|
||||||
|
|
||||||
if (!join)
|
if (!join)
|
||||||
{
|
{
|
||||||
*host->SSID = "WSWL";
|
*esp->SSID = "WSWL";
|
||||||
*host->Pass = "12345678";
|
*esp->Pass = "12345678";
|
||||||
|
|
||||||
host->Mode = NetworkType::STA_AP;
|
esp->Mode = NetworkType::STA_AP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client->Register("SetWiFi", &Esp8266::SetWiFi, host);
|
if(!esp->Open())
|
||||||
Client->Register("GetWiFi", &Esp8266::GetWiFi, host);
|
{
|
||||||
Client->Register("GetAPs", &Esp8266::GetAPs, host);
|
delete esp;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
host->Open();
|
Client->Register("SetWiFi", &Esp8266::SetWiFi, esp);
|
||||||
|
Client->Register("GetWiFi", &Esp8266::GetWiFi, esp);
|
||||||
|
Client->Register("GetAPs", &Esp8266::GetAPs, esp);
|
||||||
|
|
||||||
return host;
|
return esp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************** Token ********************************/
|
/******************************** Token ********************************/
|
||||||
|
@ -125,43 +129,17 @@ void IOK026X::InitClient()
|
||||||
{
|
{
|
||||||
if (Client) return;
|
if (Client) return;
|
||||||
|
|
||||||
auto tk = TokenConfig::Current;
|
// 初始化令牌网
|
||||||
|
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
||||||
|
|
||||||
// 创建客户端
|
// 创建客户端
|
||||||
auto client = new TokenClient();
|
auto tc = TokenClient::CreateFast(Buffer(Data, Size));
|
||||||
client->Cfg = tk;
|
tc->Cfg = tk;
|
||||||
|
tc->MaxNotActive = 8 * 60 * 1000;
|
||||||
|
|
||||||
Client = client;
|
Client = tc;
|
||||||
Client->MaxNotActive = 480000;
|
|
||||||
// 重启
|
|
||||||
Client->Register("Gateway/Restart", &TokenClient::InvokeRestart, Client);
|
|
||||||
// 重置
|
|
||||||
Client->Register("Gateway/Reset", &TokenClient::InvokeReset, Client);
|
|
||||||
// 获取所有Ivoke命令
|
|
||||||
Client->Register("Api/All", &TokenClient::InvokeGetAllApi, Client);
|
|
||||||
|
|
||||||
if (Data && Size > 0)
|
InitAlarm();
|
||||||
{
|
|
||||||
auto& ds = Client->Store;
|
|
||||||
ds.Data.Set(Data, Size);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果若干分钟后仍然没有打开令牌客户端,则重启系统
|
|
||||||
Sys.AddTask(
|
|
||||||
[](void* p) {
|
|
||||||
auto & bsp = *(IOK026X*)p;
|
|
||||||
auto & client = *bsp.Client;
|
|
||||||
if (!client.Opened)
|
|
||||||
{
|
|
||||||
debug_printf("联网超时,准备重启Esp!\r\n\r\n");
|
|
||||||
// Sys.Reboot();
|
|
||||||
auto port = dynamic_cast<Esp8266*>(bsp.Host);
|
|
||||||
port->Close();
|
|
||||||
Sys.Sleep(1000);
|
|
||||||
port->Open();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
this, 8 * 60 * 1000, -1, "联网检查");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IOK026X::Register(int index, IDataPort& dp)
|
void IOK026X::Register(int index, IDataPort& dp)
|
||||||
|
@ -174,7 +152,7 @@ void IOK026X::Register(int index, IDataPort& dp)
|
||||||
|
|
||||||
void IOK026X::InitNet()
|
void IOK026X::InitNet()
|
||||||
{
|
{
|
||||||
Host = CreateNet();
|
Host = Create8266();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OnAlarm(AlarmItem& item)
|
static void OnAlarm(AlarmItem& item)
|
||||||
|
|
|
@ -35,7 +35,7 @@ public:
|
||||||
|
|
||||||
byte LedStat(byte showmode);
|
byte LedStat(byte showmode);
|
||||||
|
|
||||||
NetworkInterface* CreateNet();
|
NetworkInterface* Create8266();
|
||||||
|
|
||||||
void InitClient();
|
void InitClient();
|
||||||
void InitNet();
|
void InitNet();
|
||||||
|
|
|
@ -95,27 +95,30 @@ void IOK027X::InitLeds()
|
||||||
|
|
||||||
NetworkInterface* IOK027X::Create8266(Pin power)
|
NetworkInterface* IOK027X::Create8266(Pin power)
|
||||||
{
|
{
|
||||||
auto host = new Esp8266(COM2, power, PA1);
|
auto esp = new Esp8266(COM2, power, PA1);
|
||||||
// 初次需要指定模式 否则为 Wire
|
// 初次需要指定模式 否则为 Wire
|
||||||
//auto host = new Esp8266(COM4, PE2, PD3);
|
bool join = esp->SSID && *esp->SSID;
|
||||||
bool join = host->SSID && *host->SSID;
|
//if (!join) esp->Mode = NetworkType::AP;
|
||||||
//if (!join) host->Mode = NetworkType::AP;
|
|
||||||
|
|
||||||
if (!join)
|
if (!join)
|
||||||
{
|
{
|
||||||
*host->SSID = "WSWL";
|
*esp->SSID = "WSWL";
|
||||||
*host->Pass = "12345678";
|
*esp->Pass = "12345678";
|
||||||
|
|
||||||
host->Mode = NetworkType::STA_AP;
|
esp->Mode = NetworkType::STA_AP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client->Register("SetWiFi", &Esp8266::SetWiFi, host);
|
if(!esp->Open())
|
||||||
Client->Register("GetWiFi", &Esp8266::GetWiFi, host);
|
{
|
||||||
Client->Register("GetAPs", &Esp8266::GetAPs, host);
|
delete esp;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
host->Open();
|
Client->Register("SetWiFi", &Esp8266::SetWiFi, esp);
|
||||||
|
Client->Register("GetWiFi", &Esp8266::GetWiFi, esp);
|
||||||
|
Client->Register("GetAPs", &Esp8266::GetAPs, esp);
|
||||||
|
|
||||||
return host;
|
return esp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************** Token ********************************/
|
/******************************** Token ********************************/
|
||||||
|
@ -124,26 +127,17 @@ void IOK027X::InitClient()
|
||||||
{
|
{
|
||||||
if (Client) return;
|
if (Client) return;
|
||||||
|
|
||||||
auto tk = TokenConfig::Current;
|
// 初始化令牌网
|
||||||
|
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
||||||
|
|
||||||
// 创建客户端
|
// 创建客户端
|
||||||
auto client = new TokenClient();
|
auto tc = TokenClient::CreateFast(Buffer(Data, Size));
|
||||||
client->Cfg = tk;
|
tc->Cfg = tk;
|
||||||
|
tc->MaxNotActive = 8 * 60 * 1000;
|
||||||
|
|
||||||
Client = client;
|
Client = tc;
|
||||||
Client->MaxNotActive = 480000;
|
|
||||||
// 重启
|
|
||||||
Client->Register("Gateway/Restart", &TokenClient::InvokeRestart, Client);
|
|
||||||
// 重置
|
|
||||||
Client->Register("Gateway/Reset", &TokenClient::InvokeReset, Client);
|
|
||||||
// 获取所有Ivoke命令
|
|
||||||
Client->Register("Api/All", &TokenClient::InvokeGetAllApi, Client);
|
|
||||||
|
|
||||||
if (Data && Size > 0)
|
InitAlarm();
|
||||||
{
|
|
||||||
auto& ds = Client->Store;
|
|
||||||
ds.Data.Set(Data, Size);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IOK027X::Register(int index, IDataPort& dp)
|
void IOK027X::Register(int index, IDataPort& dp)
|
||||||
|
|
|
@ -116,27 +116,27 @@ void IOK0612::InitButtons(const Delegate2<InputPort&, bool>& press)
|
||||||
|
|
||||||
NetworkInterface* IOK0612::Create8266()
|
NetworkInterface* IOK0612::Create8266()
|
||||||
{
|
{
|
||||||
// auto host = new Esp8266(COM2, PB2, PA1); // 触摸开关的
|
// auto esp = new Esp8266(COM2, PB2, PA1); // 触摸开关的
|
||||||
auto host = new Esp8266(COM2, PB12, PA1);
|
auto esp = new Esp8266(COM2, PB12, PA1);
|
||||||
|
|
||||||
// 初次需要指定模式 否则为 Wire
|
// 初次需要指定模式 否则为 Wire
|
||||||
bool join = host->SSID && *host->SSID;
|
bool join = esp->SSID && *esp->SSID;
|
||||||
//if (!join) host->Mode = NetworkType::AP;
|
//if (!join) esp->Mode = NetworkType::AP;
|
||||||
|
|
||||||
if (!join)
|
if (!join)
|
||||||
{
|
{
|
||||||
*host->SSID = "WSWL";
|
*esp->SSID = "WSWL";
|
||||||
*host->Pass = "12345678";
|
*esp->Pass = "12345678";
|
||||||
|
|
||||||
host->Mode = NetworkType::STA_AP;
|
esp->Mode = NetworkType::STA_AP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client->Register("SetWiFi", &Esp8266::SetWiFi, host);
|
Client->Register("SetWiFi", &Esp8266::SetWiFi, esp);
|
||||||
Client->Register("GetWiFi", &Esp8266::GetWiFi, host);
|
Client->Register("GetWiFi", &Esp8266::GetWiFi, esp);
|
||||||
|
|
||||||
host->Open();
|
esp->Open();
|
||||||
|
|
||||||
return host;
|
return esp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************** Token ********************************/
|
/******************************** Token ********************************/
|
||||||
|
@ -145,32 +145,17 @@ void IOK0612::InitClient()
|
||||||
{
|
{
|
||||||
if (Client) return;
|
if (Client) return;
|
||||||
|
|
||||||
auto tk = TokenConfig::Current;
|
// 初始化令牌网
|
||||||
|
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
||||||
|
|
||||||
// 创建客户端
|
// 创建客户端
|
||||||
auto client = new TokenClient();
|
auto tc = TokenClient::CreateFast(Buffer(Data, Size));
|
||||||
client->Cfg = tk;
|
tc->Cfg = tk;
|
||||||
|
tc->MaxNotActive = 8 * 60 * 1000;
|
||||||
|
|
||||||
Client = client;
|
Client = tc;
|
||||||
Client->MaxNotActive = 480000;
|
|
||||||
// 重启
|
|
||||||
Client->Register("Gateway/Restart", &TokenClient::InvokeRestart, Client);
|
|
||||||
// 重置
|
|
||||||
Client->Register("Gateway/Reset", &TokenClient::InvokeReset, Client);
|
|
||||||
// 设置远程地址
|
|
||||||
Client->Register("Gateway/SetRemote", &TokenClient::InvokeSetRemote, Client);
|
|
||||||
// 获取远程配置信息
|
|
||||||
Client->Register("Gateway/GetRemote", &TokenClient::InvokeGetRemote, Client);
|
|
||||||
// 获取所有Ivoke命令
|
|
||||||
Client->Register("Api/All", &TokenClient::InvokeGetAllApi, Client);
|
|
||||||
|
|
||||||
InitAlarm();
|
InitAlarm();
|
||||||
|
|
||||||
if (Data && Size > 0)
|
|
||||||
{
|
|
||||||
auto& ds = Client->Store;
|
|
||||||
ds.Data.Set(Data, Size);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IOK0612::Register(int index, IDataPort& dp)
|
void IOK0612::Register(int index, IDataPort& dp)
|
||||||
|
|
|
@ -116,27 +116,31 @@ void NH3_0317::InitButtons(const Delegate2<InputPort&, bool>& press)
|
||||||
|
|
||||||
NetworkInterface* NH3_0317::Create8266()
|
NetworkInterface* NH3_0317::Create8266()
|
||||||
{
|
{
|
||||||
// auto host = new Esp8266(COM2, PB2, PA1); // 触摸开关的
|
// auto esp = new Esp8266(COM2, PB2, PA1); // 触摸开关的
|
||||||
auto host = new Esp8266(COM3, P0, PA5);
|
auto esp = new Esp8266(COM3, P0, PA5);
|
||||||
|
|
||||||
// 初次需要指定模式 否则为 Wire
|
// 初次需要指定模式 否则为 Wire
|
||||||
bool join = host->SSID && *host->SSID;
|
bool join = esp->SSID && *esp->SSID;
|
||||||
//if (!join) host->Mode = NetworkType::AP;
|
//if (!join) esp->Mode = NetworkType::AP;
|
||||||
|
|
||||||
if (!join)
|
if (!join)
|
||||||
{
|
{
|
||||||
*host->SSID = "WSWL";
|
*esp->SSID = "WSWL";
|
||||||
*host->Pass = "12345678";
|
*esp->Pass = "12345678";
|
||||||
|
|
||||||
host->Mode = NetworkType::STA_AP;
|
esp->Mode = NetworkType::STA_AP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client->Register("SetWiFi", &Esp8266::SetWiFi, host);
|
if(!esp->Open())
|
||||||
Client->Register("GetWiFi", &Esp8266::GetWiFi, host);
|
{
|
||||||
|
delete esp;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
host->Open();
|
Client->Register("SetWiFi", &Esp8266::SetWiFi, esp);
|
||||||
|
Client->Register("GetWiFi", &Esp8266::GetWiFi, esp);
|
||||||
|
|
||||||
return host;
|
return esp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************** Token ********************************/
|
/******************************** Token ********************************/
|
||||||
|
@ -151,30 +155,17 @@ void NH3_0317::InitClient()
|
||||||
{
|
{
|
||||||
if (Client) return;
|
if (Client) return;
|
||||||
|
|
||||||
auto tk = TokenConfig::Current;
|
// 初始化令牌网
|
||||||
|
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
||||||
|
|
||||||
// 创建客户端
|
// 创建客户端
|
||||||
auto client = new TokenClient();
|
auto tc = TokenClient::CreateFast(Buffer(Data, Size));
|
||||||
client->Cfg = tk;
|
tc->Cfg = tk;
|
||||||
client->UseLocal();
|
tc->MaxNotActive = 8 * 60 * 1000;
|
||||||
Client = client;
|
|
||||||
Client->MaxNotActive = 480000;
|
|
||||||
// 重启
|
|
||||||
Client->Register("Gateway/Restart", &TokenClient::InvokeRestart, Client);
|
|
||||||
// 重置
|
|
||||||
Client->Register("Gateway/Reset", &TokenClient::InvokeReset, Client);
|
|
||||||
// 设置远程地址
|
|
||||||
Client->Register("Gateway/SetRemote", &TokenClient::InvokeSetRemote, Client);
|
|
||||||
// 获取远程配置信息
|
|
||||||
Client->Register("Gateway/GetRemote", &TokenClient::InvokeGetRemote, Client);
|
|
||||||
// 获取所有Ivoke命令
|
|
||||||
Client->Register("Api/All", &TokenClient::InvokeGetAllApi, Client);
|
|
||||||
|
|
||||||
if (Data && Size > 0)
|
Client = tc;
|
||||||
{
|
|
||||||
auto& ds = Client->Store;
|
InitAlarm();
|
||||||
ds.Data.Set(Data, Size);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NH3_0317::Register(int index, IDataPort& dp)
|
void NH3_0317::Register(int index, IDataPort& dp)
|
||||||
|
|
|
@ -13,16 +13,16 @@
|
||||||
#include "Device\RTC.h"
|
#include "Device\RTC.h"
|
||||||
|
|
||||||
PA0903* PA0903::Current = nullptr;
|
PA0903* PA0903::Current = nullptr;
|
||||||
|
static TokenClient* Client = nullptr; // 令牌客户端
|
||||||
|
|
||||||
PA0903::PA0903()
|
PA0903::PA0903()
|
||||||
{
|
{
|
||||||
LedPins.Add(PB1);
|
LedPins.Add(PB1);
|
||||||
LedPins.Add(PB14);
|
LedPins.Add(PB14);
|
||||||
|
|
||||||
Host = nullptr;
|
Client = nullptr;
|
||||||
Client = nullptr;
|
ProxyFac = nullptr;
|
||||||
ProxyFac = nullptr;
|
AlarmObj = nullptr;
|
||||||
AlarmObj = nullptr;
|
|
||||||
|
|
||||||
Data = nullptr;
|
Data = nullptr;
|
||||||
Size = 0;
|
Size = 0;
|
||||||
|
@ -90,33 +90,45 @@ NetworkInterface* PA0903::Create5500()
|
||||||
{
|
{
|
||||||
debug_printf("\r\nW5500::Create \r\n");
|
debug_printf("\r\nW5500::Create \r\n");
|
||||||
|
|
||||||
auto host = new W5500(Spi1, PA8, PA0);
|
auto net = new W5500(Spi1, PA8, PA0);
|
||||||
|
if(!net->Open())
|
||||||
|
{
|
||||||
|
delete net;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
return host;
|
net->EnableDNS();
|
||||||
|
net->EnableDHCP();
|
||||||
|
|
||||||
|
return net;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkInterface* PA0903::Create8266()
|
NetworkInterface* PA0903::Create8266()
|
||||||
{
|
{
|
||||||
auto host = new Esp8266(COM4, PE2, PD3);
|
auto esp = new Esp8266(COM4, PE2, PD3);
|
||||||
// 初次需要指定模式 否则为 Wire
|
// 初次需要指定模式 否则为 Wire
|
||||||
bool join = host->SSID && *host->SSID;
|
bool join = esp->SSID && *esp->SSID;
|
||||||
// host->Mode = NetworkType::Station;
|
// esp->Mode = NetworkType::Station;
|
||||||
// if (!join) host->Mode = NetworkType::AP;
|
// if (!join) esp->Mode = NetworkType::AP;
|
||||||
if (!join)
|
if (!join)
|
||||||
{
|
{
|
||||||
*host->SSID = "WSWL";
|
*esp->SSID = "WSWL";
|
||||||
*host->Pass = "12345678";
|
*esp->Pass = "12345678";
|
||||||
|
|
||||||
host->Mode = NetworkType::STA_AP;
|
esp->Mode = NetworkType::STA_AP;
|
||||||
host->WorkMode = NetworkType::STA_AP;
|
esp->WorkMode = NetworkType::STA_AP;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Sys.AddTask(SetWiFiTask, this, 0, -1, "SetWiFi");
|
if(!esp->Open())
|
||||||
Client->Register("SetWiFi", &Esp8266::SetWiFi, host);
|
{
|
||||||
Client->Register("GetWiFi", &Esp8266::GetWiFi, host);
|
delete esp;
|
||||||
host->Open();
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
return host;
|
Client->Register("SetWiFi", &Esp8266::SetWiFi, esp);
|
||||||
|
Client->Register("GetWiFi", &Esp8266::GetWiFi, esp);
|
||||||
|
|
||||||
|
return esp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************** Token ********************************/
|
/******************************** Token ********************************/
|
||||||
|
@ -125,25 +137,17 @@ void PA0903::InitClient()
|
||||||
{
|
{
|
||||||
if (Client) return;
|
if (Client) return;
|
||||||
|
|
||||||
auto tk = TokenConfig::Current;
|
// 初始化令牌网
|
||||||
|
auto tk = TokenConfig::Create("smart.wslink.cn", NetType::Udp, 33333, 3377);
|
||||||
|
|
||||||
// 创建客户端
|
// 创建客户端
|
||||||
auto client = new TokenClient();
|
auto tc = TokenClient::CreateFast(Buffer(Data, Size));
|
||||||
client->Cfg = tk;
|
tc->Cfg = tk;
|
||||||
|
tc->MaxNotActive = 8 * 60 * 1000;
|
||||||
|
|
||||||
Client = client;
|
Client = tc;
|
||||||
|
|
||||||
InitAlarm();
|
InitAlarm();
|
||||||
// 重启
|
|
||||||
Client->Register("Gateway/Restart", &TokenClient::InvokeRestart, Client);
|
|
||||||
// 重置
|
|
||||||
Client->Register("Gateway/Reset", &TokenClient::InvokeReset, Client);
|
|
||||||
// 设置远程地址
|
|
||||||
Client->Register("Gateway/SetRemote", &TokenClient::InvokeSetRemote, Client);
|
|
||||||
// 获取远程配置信息
|
|
||||||
Client->Register("Gateway/GetRemote", &TokenClient::InvokeGetRemote, Client);
|
|
||||||
// 获取所有Ivoke命令
|
|
||||||
Client->Register("Api/All", &TokenClient::InvokeGetAllApi, Client);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PA0903::Register(int index, IDataPort& dp)
|
void PA0903::Register(int index, IDataPort& dp)
|
||||||
|
@ -154,22 +158,20 @@ void PA0903::Register(int index, IDataPort& dp)
|
||||||
ds.Register(index, dp);
|
ds.Register(index, dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
//void OnInitNet(void* param)
|
void OnInitNet(void* param)
|
||||||
//{
|
{
|
||||||
// auto& bsp = *(PA0903*)param;
|
auto& bsp = *(PA0903*)param;
|
||||||
//
|
|
||||||
// /*// 检查是否连接网线
|
bsp.Create5500();
|
||||||
// auto host = (W5500*)bsp.Create5500();
|
bsp.Create8266();
|
||||||
// // 软路由的DHCP要求很严格,必须先把自己IP设为0
|
|
||||||
// host->IP = IPAddress::Any();
|
Client->Open();
|
||||||
//
|
}
|
||||||
// host->EnableDNS();
|
|
||||||
// host->EnableDHCP();
|
void PA0903::InitNet()
|
||||||
// bsp.Host = host;*/
|
{
|
||||||
//
|
Sys.AddTask(OnInitNet, this, 0, -1, "InitNet");
|
||||||
//
|
}
|
||||||
//
|
|
||||||
//}
|
|
||||||
|
|
||||||
void PA0903::InitProxy()
|
void PA0903::InitProxy()
|
||||||
{
|
{
|
||||||
|
@ -196,7 +198,7 @@ static void OnAlarm(AlarmItem& item)
|
||||||
|
|
||||||
if (bs[1] == 0x06)
|
if (bs[1] == 0x06)
|
||||||
{
|
{
|
||||||
auto client = PA0903::Current->Client;
|
auto client = Client;
|
||||||
client->Store.Write(bs[2], bs.Sub(3, bs[0] - 2));
|
client->Store.Write(bs[2], bs.Sub(3, bs[0] - 2));
|
||||||
|
|
||||||
// 主动上报状态
|
// 主动上报状态
|
||||||
|
@ -216,13 +218,6 @@ void PA0903::InitAlarm()
|
||||||
AlarmObj->Start();
|
AlarmObj->Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PA0903::InitNet()
|
|
||||||
{
|
|
||||||
Create5500();
|
|
||||||
Create8266();
|
|
||||||
Client->Open();
|
|
||||||
}
|
|
||||||
|
|
||||||
void PA0903::Restore()
|
void PA0903::Restore()
|
||||||
{
|
{
|
||||||
if (Client) Client->Reset("按键重置");
|
if (Client) Client->Reset("按键重置");
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
#include "Net\Socket.h"
|
#include "Net\Socket.h"
|
||||||
|
|
||||||
#include "Device\RTC.h"
|
#include "Device\RTC.h"
|
||||||
#include "TokenNet\TokenClient.h"
|
|
||||||
#include "Message\ProxyFactory.h"
|
#include "Message\ProxyFactory.h"
|
||||||
#include "App\Alarm.h"
|
#include "App\Alarm.h"
|
||||||
|
|
||||||
|
@ -23,9 +22,6 @@ public:
|
||||||
List<OutputPort*> Outputs;
|
List<OutputPort*> Outputs;
|
||||||
List<InputPort*> Inputs;
|
List<InputPort*> Inputs;
|
||||||
|
|
||||||
NetworkInterface* Host; // 网络主机
|
|
||||||
//NetworkInterface* HostAP; // 网络主机
|
|
||||||
TokenClient* Client; // 令牌客户端
|
|
||||||
ProxyFactory* ProxyFac; // 透传管理器
|
ProxyFactory* ProxyFac; // 透传管理器
|
||||||
Alarm* AlarmObj;
|
Alarm* AlarmObj;
|
||||||
|
|
||||||
|
|
|
@ -365,9 +365,7 @@ void W5500::Init(Spi* spi, Pin irq, Pin rst)
|
||||||
Irq.Pull = InputPort::UP;
|
Irq.Pull = InputPort::UP;
|
||||||
//Irq.Mode = InputPort::Rising;
|
//Irq.Mode = InputPort::Rising;
|
||||||
Irq.HardEvent = true;
|
Irq.HardEvent = true;
|
||||||
//Irq.Set(irq);
|
|
||||||
Irq.Init(irq, true);
|
Irq.Init(irq, true);
|
||||||
//if(!Irq.Register(OnIRQ, this)) Irq.HardEvent = false;
|
|
||||||
Irq.Press.Bind(&W5500::OnIRQ, this);
|
Irq.Press.Bind(&W5500::OnIRQ, this);
|
||||||
Irq.UsePress();
|
Irq.UsePress();
|
||||||
}
|
}
|
||||||
|
@ -507,7 +505,7 @@ bool W5500::OnLink(uint retry)
|
||||||
// 为解决芯片有时候无法接收数据的问题,需要守护任务辅助
|
// 为解决芯片有时候无法接收数据的问题,需要守护任务辅助
|
||||||
if(!TaskID)
|
if(!TaskID)
|
||||||
{
|
{
|
||||||
int time = (Irq.Empty() || !Irq.HardEvent) ? 10 : 500;
|
int time = (Irq.Empty() || !Irq.HardEvent) ? 10 : -1;
|
||||||
TaskID = Sys.AddTask([](void* p){ ((W5500*)p)->OnIRQ(); }, this, time, time, "W5500中断");
|
TaskID = Sys.AddTask([](void* p){ ((W5500*)p)->OnIRQ(); }, this, time, time, "W5500中断");
|
||||||
auto task = Task::Get(TaskID);
|
auto task = Task::Get(TaskID);
|
||||||
task->MaxDeepth = 2; // 以太网允许重入,因为有时候在接收里面等待下一次接收
|
task->MaxDeepth = 2; // 以太网允许重入,因为有时候在接收里面等待下一次接收
|
||||||
|
|
|
@ -193,7 +193,7 @@ void TokenClient::CheckNet()
|
||||||
// 在该接口上创建控制器
|
// 在该接口上创建控制器
|
||||||
if(!flag)
|
if(!flag)
|
||||||
{
|
{
|
||||||
debug_printf("TokenClient::CheckNet %s 创建本地监听\r\n", nis[k]->Name);
|
debug_printf("TokenClient::CheckNet %s 创建本地监听 ", nis[k]->Name);
|
||||||
|
|
||||||
NetUri uri(NetType::Udp, IPAddress::Broadcast(), Cfg->Port);
|
NetUri uri(NetType::Udp, IPAddress::Broadcast(), Cfg->Port);
|
||||||
auto ctrl = AddControl(*this, nis[k], uri, Cfg->Port);
|
auto ctrl = AddControl(*this, nis[k], uri, Cfg->Port);
|
||||||
|
@ -201,6 +201,12 @@ void TokenClient::CheckNet()
|
||||||
{
|
{
|
||||||
ctrl->Received = _LocalReceive;
|
ctrl->Received = _LocalReceive;
|
||||||
ctrl->Open();
|
ctrl->Open();
|
||||||
|
|
||||||
|
debug_printf("成功\r\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
debug_printf("失败\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1121,6 +1127,29 @@ void TokenClient::Register(cstring action, InvokeHandler handler, void* param)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 快速建立令牌客户端,注册默认Api
|
||||||
|
TokenClient* TokenClient::CreateFast(const Buffer& store)
|
||||||
|
{
|
||||||
|
auto tc = new TokenClient();
|
||||||
|
|
||||||
|
// 重启
|
||||||
|
tc->Register("Gateway/Restart", &TokenClient::InvokeRestart, tc);
|
||||||
|
// 重置
|
||||||
|
tc->Register("Gateway/Reset", &TokenClient::InvokeReset, tc);
|
||||||
|
// 设置远程地址
|
||||||
|
tc->Register("Gateway/SetRemote", &TokenClient::InvokeSetRemote, tc);
|
||||||
|
// 获取远程配置信息
|
||||||
|
tc->Register("Gateway/GetRemote", &TokenClient::InvokeGetRemote, tc);
|
||||||
|
// 获取所有Invoke命令
|
||||||
|
tc->Register("Api/All", &TokenClient::InvokeGetAllApi, tc);
|
||||||
|
|
||||||
|
if(store.Length()) tc->Store.Data.Set(store.GetBuffer(), store.Length());
|
||||||
|
|
||||||
|
tc->UseLocal();
|
||||||
|
|
||||||
|
return tc;
|
||||||
|
}
|
||||||
|
|
||||||
bool TokenClient::InvokeRestart(void * param, const Pair& args, Stream& result)
|
bool TokenClient::InvokeRestart(void * param, const Pair& args, Stream& result)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -91,12 +91,15 @@ public:
|
||||||
|
|
||||||
static TokenClient* Current;
|
static TokenClient* Current;
|
||||||
|
|
||||||
|
// 快速建立令牌客户端,注册默认Api
|
||||||
|
static TokenClient* CreateFast(const Buffer& store);
|
||||||
|
|
||||||
// 重启,重置
|
// 重启,重置
|
||||||
static bool InvokeRestart(void * param, const Pair& args, Stream& result);
|
static bool InvokeRestart(void * param, const Pair& args, Stream& result);
|
||||||
static bool InvokeReset(void * param, const Pair& args, Stream& result);
|
static bool InvokeReset(void * param, const Pair& args, Stream& result);
|
||||||
//设置远程服务器地址
|
// 设置远程服务器地址
|
||||||
static bool InvokeSetRemote(void * param, const Pair& args, Stream& result);
|
static bool InvokeSetRemote(void * param, const Pair& args, Stream& result);
|
||||||
//获取远程服务器地址
|
// 获取远程服务器地址
|
||||||
static bool InvokeGetRemote(void * param, const Pair& args, Stream& result);
|
static bool InvokeGetRemote(void * param, const Pair& args, Stream& result);
|
||||||
// 获取所有API
|
// 获取所有API
|
||||||
static bool InvokeGetAllApi(void * param, const Pair& args, Stream& result);
|
static bool InvokeGetAllApi(void * param, const Pair& args, Stream& result);
|
||||||
|
|
Loading…
Reference in New Issue