快速创建W5500
This commit is contained in:
parent
f77a1659ca
commit
75c07b7d8a
|
@ -28,8 +28,8 @@ static FlushPort* CreateFlushPort(OutputPort* led)
|
|||
|
||||
AP0801::AP0801()
|
||||
{
|
||||
EthernetLed = nullptr;
|
||||
WirelessLed = nullptr;
|
||||
EthernetLed = P0;
|
||||
WirelessLed = P0;
|
||||
|
||||
Host = nullptr;
|
||||
HostAP = nullptr;
|
||||
|
@ -113,10 +113,10 @@ void OnNetReady(AP0801& ap, ISocketHost& host)
|
|||
|
||||
ISocketHost* AP0801::Open5500()
|
||||
{
|
||||
IDataPort* led = nullptr;
|
||||
if(EthernetLed) led = CreateFlushPort(EthernetLed);
|
||||
debug_printf("\r\nW5500::Create \r\n");
|
||||
|
||||
auto host = (W5500*)Create5500(Spi2, PE1, PD13, led);
|
||||
auto host = new W5500(Spi2, PE1, PD13);
|
||||
host->SetLed(EthernetLed);
|
||||
host->NetReady = Delegate<ISocketHost&>(OnNetReady, this);
|
||||
if(host->Open()) return host;
|
||||
|
||||
|
@ -125,19 +125,6 @@ ISocketHost* AP0801::Open5500()
|
|||
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)
|
||||
{
|
||||
auto ap = (AP0801*)param;
|
||||
|
@ -151,7 +138,7 @@ ISocketHost* AP0801::Open8266(bool apOnly)
|
|||
{
|
||||
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;
|
||||
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
class AP0801
|
||||
{
|
||||
public:
|
||||
OutputPort Leds[2];
|
||||
Pin Leds[2];
|
||||
InputPort Buttons[2];
|
||||
|
||||
OutputPort* EthernetLed; // 以太网指示灯
|
||||
OutputPort* WirelessLed; // 无线指示灯
|
||||
Pin EthernetLed; // 以太网指示灯
|
||||
Pin WirelessLed; // 无线指示灯
|
||||
|
||||
ISocketHost* Host; // 网络主机
|
||||
ISocketHost* HostAP; // 网络主机
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
#include "TTime.h"
|
||||
#include "Task.h"
|
||||
|
||||
#include "App\FlushPort.h"
|
||||
|
||||
#define NET_DEBUG DEBUG
|
||||
//#define NET_DEBUG 0
|
||||
#if NET_DEBUG
|
||||
|
@ -211,6 +213,14 @@ W5500::W5500(Spi* spi, Pin irq, Pin 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()
|
||||
{
|
||||
Close();
|
||||
|
@ -267,6 +277,17 @@ void W5500::Init(Spi* spi, Pin irq, Pin rst)
|
|||
_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()
|
||||
{
|
||||
if(Opened) return true;
|
||||
|
|
|
@ -22,12 +22,14 @@ public:
|
|||
|
||||
// 构造
|
||||
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();
|
||||
|
||||
// 初始化
|
||||
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 Close();
|
||||
|
|
Loading…
Reference in New Issue