升级Zigbee相关功能代码,编译通过,未测试
This commit is contained in:
parent
dcf3321d4a
commit
3a7dd0feb2
|
@ -1,24 +1,65 @@
|
|||
#include "Zigbee.h"
|
||||
|
||||
Zigbee::Zigbee()
|
||||
{
|
||||
_port = NULL;
|
||||
}
|
||||
|
||||
Zigbee::Zigbee(ITransport* port, Pin rst)
|
||||
{
|
||||
assert_param(port);
|
||||
|
||||
_port = port;
|
||||
|
||||
_rst = NULL;
|
||||
if(rst != P0)
|
||||
{
|
||||
_rst = new OutputPort(rst);
|
||||
Rest();
|
||||
}
|
||||
Init(port);
|
||||
}
|
||||
|
||||
Zigbee::~Zigbee()
|
||||
{
|
||||
if(_port) delete _port;
|
||||
delete _port;
|
||||
_port = NULL;
|
||||
|
||||
if(_rst) delete _rst;
|
||||
_rst = NULL;
|
||||
|
||||
/*if(_rst) delete _rst;
|
||||
_rst = NULL;*/
|
||||
}
|
||||
|
||||
void Zigbee::Init(ITransport* port, Pin rst)
|
||||
{
|
||||
assert_ptr(port);
|
||||
|
||||
_port = port;
|
||||
|
||||
//_rst = NULL;
|
||||
if(rst != P0)
|
||||
{
|
||||
//_rst = new OutputPort(rst);
|
||||
_rst.Set(rst);
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
|
||||
void Zigbee::Reset(void)
|
||||
{
|
||||
if(_rst.Empty()) return;
|
||||
|
||||
_rst = true;
|
||||
Sys.Delay(100);
|
||||
_rst = false;
|
||||
Sys.Delay(100);
|
||||
_rst = true;
|
||||
}
|
||||
|
||||
// 注册回调函数
|
||||
void Zigbee::Register(TransportHandler handler, void* param)
|
||||
{
|
||||
ITransport::Register(handler, param);
|
||||
|
||||
if(handler)
|
||||
_port->Register(OnPortReceive, this);
|
||||
else
|
||||
_port->Register(NULL);
|
||||
}
|
||||
|
||||
uint Zigbee::OnPortReceive(ITransport* sender, byte* buf, uint len, void* param)
|
||||
{
|
||||
assert_ptr(param);
|
||||
|
||||
Zigbee* zb = (Zigbee*)param;
|
||||
return zb->OnReceive(buf, len);
|
||||
}
|
||||
|
|
32
Net/Zigbee.h
32
Net/Zigbee.h
|
@ -10,42 +10,28 @@
|
|||
class Zigbee : public ITransport
|
||||
{
|
||||
private:
|
||||
ITransport* _port;
|
||||
OutputPort* _rst;
|
||||
ITransport* _port;
|
||||
OutputPort _rst;
|
||||
|
||||
public:
|
||||
Zigbee();
|
||||
Zigbee(ITransport* port, Pin rst = P0);
|
||||
virtual ~Zigbee();
|
||||
void Init(ITransport* port, Pin rst = P0);
|
||||
|
||||
// 注册回调函数
|
||||
virtual void Register(TransportHandler handler, void* param = NULL)
|
||||
{
|
||||
ITransport::Register(handler, param);
|
||||
|
||||
_port->Register(OnPortReceive, this);
|
||||
}
|
||||
virtual void Register(TransportHandler handler, void* param = NULL);
|
||||
|
||||
virtual void Reset(void);
|
||||
|
||||
virtual void Rest(void)
|
||||
{
|
||||
*_rst=true;
|
||||
Sys.Delay(100);
|
||||
*_rst=false;
|
||||
Sys.Delay(100);
|
||||
*_rst=true;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual bool OnOpen() { return _port->Open(); }
|
||||
virtual void OnClose() { _port->Close(); }
|
||||
|
||||
virtual bool OnWrite(const byte* buf, uint len) { return _port->Write(buf, len); }
|
||||
virtual uint OnRead(byte* buf, uint len) { return _port->Read(buf, len); }
|
||||
|
||||
static uint OnPortReceive(ITransport* sender, byte* buf, uint len, void* param)
|
||||
{
|
||||
Zigbee* zb = (Zigbee*)param;
|
||||
return zb->OnReceive(buf, len);
|
||||
}
|
||||
|
||||
static uint OnPortReceive(ITransport* sender, byte* buf, uint len, void* param);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue