快速创建W5500
This commit is contained in:
parent
f77a1659ca
commit
75c07b7d8a
|
@ -28,8 +28,8 @@ static FlushPort* CreateFlushPort(OutputPort* led)
|
||||||
|
|
||||||
AP0801::AP0801()
|
AP0801::AP0801()
|
||||||
{
|
{
|
||||||
EthernetLed = nullptr;
|
EthernetLed = P0;
|
||||||
WirelessLed = nullptr;
|
WirelessLed = P0;
|
||||||
|
|
||||||
Host = nullptr;
|
Host = nullptr;
|
||||||
HostAP = nullptr;
|
HostAP = nullptr;
|
||||||
|
@ -113,10 +113,10 @@ void OnNetReady(AP0801& ap, ISocketHost& host)
|
||||||
|
|
||||||
ISocketHost* AP0801::Open5500()
|
ISocketHost* AP0801::Open5500()
|
||||||
{
|
{
|
||||||
IDataPort* led = nullptr;
|
debug_printf("\r\nW5500::Create \r\n");
|
||||||
if(EthernetLed) led = CreateFlushPort(EthernetLed);
|
|
||||||
|
|
||||||
auto host = (W5500*)Create5500(Spi2, PE1, PD13, led);
|
auto host = new W5500(Spi2, PE1, PD13);
|
||||||
|
host->SetLed(EthernetLed);
|
||||||
host->NetReady = Delegate<ISocketHost&>(OnNetReady, this);
|
host->NetReady = Delegate<ISocketHost&>(OnNetReady, this);
|
||||||
if(host->Open()) return host;
|
if(host->Open()) return host;
|
||||||
|
|
||||||
|
@ -125,19 +125,6 @@ ISocketHost* AP0801::Open5500()
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
ISocketHost* AP0801::Create5500(SPI spi, Pin irq, Pin rst, IDataPort* led)
|
|
||||||
{
|
|
||||||
debug_printf("\r\nW5500::Create \r\n");
|
|
||||||
|
|
||||||
auto spi_ = new Spi(spi, 36000000);
|
|
||||||
|
|
||||||
auto net = new W5500();
|
|
||||||
net->LoadConfig();
|
|
||||||
net->Init(spi_, irq, rst);
|
|
||||||
|
|
||||||
return net;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void SetWiFiTask(void* param)
|
static void SetWiFiTask(void* param)
|
||||||
{
|
{
|
||||||
auto ap = (AP0801*)param;
|
auto ap = (AP0801*)param;
|
||||||
|
@ -151,7 +138,7 @@ ISocketHost* AP0801::Open8266(bool apOnly)
|
||||||
{
|
{
|
||||||
auto host = (Esp8266*)Create8266(COM4, PE2, PD3);
|
auto host = (Esp8266*)Create8266(COM4, PE2, PD3);
|
||||||
|
|
||||||
if(WirelessLed) host->Led = CreateFlushPort(WirelessLed);
|
//if(WirelessLed) host->Led = CreateFlushPort(WirelessLed);
|
||||||
|
|
||||||
if(apOnly) host->WorkMode = SocketMode::AP;
|
if(apOnly) host->WorkMode = SocketMode::AP;
|
||||||
|
|
||||||
|
|
|
@ -10,11 +10,11 @@
|
||||||
class AP0801
|
class AP0801
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OutputPort Leds[2];
|
Pin Leds[2];
|
||||||
InputPort Buttons[2];
|
InputPort Buttons[2];
|
||||||
|
|
||||||
OutputPort* EthernetLed; // 以太网指示灯
|
Pin EthernetLed; // 以太网指示灯
|
||||||
OutputPort* WirelessLed; // 无线指示灯
|
Pin WirelessLed; // 无线指示灯
|
||||||
|
|
||||||
ISocketHost* Host; // 网络主机
|
ISocketHost* Host; // 网络主机
|
||||||
ISocketHost* HostAP; // 网络主机
|
ISocketHost* HostAP; // 网络主机
|
||||||
|
@ -24,7 +24,7 @@ public:
|
||||||
|
|
||||||
// 设置系统参数
|
// 设置系统参数
|
||||||
void Setup(ushort code, cstring name, COM message = COM1, int baudRate = 0);
|
void Setup(ushort code, cstring name, COM message = COM1, int baudRate = 0);
|
||||||
|
|
||||||
// 设置数据区
|
// 设置数据区
|
||||||
void* SetData(void* data, int size);
|
void* SetData(void* data, int size);
|
||||||
void Register(int index, IDataPort* dps, int count);
|
void Register(int index, IDataPort* dps, int count);
|
||||||
|
@ -42,7 +42,7 @@ public:
|
||||||
void CreateClient();
|
void CreateClient();
|
||||||
void OpenClient();
|
void OpenClient();
|
||||||
ISocket* AddControl(ISocketHost& host, const NetUri& uri);
|
ISocket* AddControl(ISocketHost& host, const NetUri& uri);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void* Data;
|
void* Data;
|
||||||
int Size;
|
int Size;
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
#include "TTime.h"
|
#include "TTime.h"
|
||||||
#include "Task.h"
|
#include "Task.h"
|
||||||
|
|
||||||
|
#include "App\FlushPort.h"
|
||||||
|
|
||||||
#define NET_DEBUG DEBUG
|
#define NET_DEBUG DEBUG
|
||||||
//#define NET_DEBUG 0
|
//#define NET_DEBUG 0
|
||||||
#if NET_DEBUG
|
#if NET_DEBUG
|
||||||
|
@ -211,6 +213,14 @@ W5500::W5500(Spi* spi, Pin irq, Pin rst)
|
||||||
Init(spi, irq, rst);
|
Init(spi, irq, rst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
W5500::W5500(SPI spi, Pin irq, Pin rst)
|
||||||
|
{
|
||||||
|
auto spi_ = new Spi(spi, 36000000);
|
||||||
|
|
||||||
|
LoadConfig();
|
||||||
|
Init(spi_, irq, rst);
|
||||||
|
}
|
||||||
|
|
||||||
W5500::~W5500()
|
W5500::~W5500()
|
||||||
{
|
{
|
||||||
Close();
|
Close();
|
||||||
|
@ -267,6 +277,17 @@ void W5500::Init(Spi* spi, Pin irq, Pin rst)
|
||||||
_spi = spi;
|
_spi = spi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void W5500::SetLed(Pin led)
|
||||||
|
{
|
||||||
|
if(led != P0)
|
||||||
|
{
|
||||||
|
auto fp = new FlushPort();
|
||||||
|
fp->Port = new OutputPort(led);
|
||||||
|
fp->Start();
|
||||||
|
Led = fp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool W5500::Open()
|
bool W5500::Open()
|
||||||
{
|
{
|
||||||
if(Opened) return true;
|
if(Opened) return true;
|
||||||
|
|
|
@ -22,12 +22,14 @@ public:
|
||||||
|
|
||||||
// 构造
|
// 构造
|
||||||
W5500();
|
W5500();
|
||||||
W5500(Spi* spi, Pin irq = P0, Pin rst = P0); // 必须具备复位引脚 否则寄存器不能读
|
W5500(Spi* spi, Pin irq, Pin rst);
|
||||||
|
W5500(SPI spi, Pin irq, Pin rst);
|
||||||
virtual ~W5500();
|
virtual ~W5500();
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
void Init();
|
void Init();
|
||||||
void Init(Spi* spi, Pin irq = P0, Pin rst = P0); // 必须给出 rst 控制引脚
|
void Init(Spi* spi, Pin irq, Pin rst);
|
||||||
|
void SetLed(Pin led);
|
||||||
|
|
||||||
bool Open();
|
bool Open();
|
||||||
bool Close();
|
bool Close();
|
||||||
|
|
Loading…
Reference in New Issue