97 lines
1.4 KiB
C++
97 lines
1.4 KiB
C++
#include "ShunCom.h"
|
|
|
|
ShunCom::ShunCom()
|
|
{
|
|
Led = NULL;
|
|
}
|
|
|
|
void ShunCom::Init(ITransport* port, Pin rst)
|
|
{
|
|
assert_ptr(port);
|
|
|
|
Set(port);
|
|
MaxSize = 82;
|
|
|
|
if(rst != P0) Reset.Set(rst);
|
|
}
|
|
|
|
bool ShunCom::OnOpen()
|
|
{
|
|
Power.Open();
|
|
Sleep.Open();
|
|
Config.Open();
|
|
|
|
Power = true;
|
|
Sleep = false;
|
|
Config = false;
|
|
|
|
Reset.Open();
|
|
Reset = true;
|
|
/*Sys.Delay(100);
|
|
Reset = false;
|
|
Sys.Delay(100);
|
|
Reset = true;*/
|
|
|
|
Port->MinSize = MinSize;
|
|
|
|
return PackPort::OnOpen();
|
|
}
|
|
|
|
void ShunCom::OnClose()
|
|
{
|
|
Power.Close();
|
|
Sleep.Close();
|
|
Config.Close();
|
|
|
|
Reset.Close();
|
|
|
|
PackPort::OnClose();
|
|
}
|
|
|
|
void ShunCom::ShowConfig()
|
|
{
|
|
if(!Open()) return;
|
|
|
|
Config = true;
|
|
Sys.Sleep(3000);
|
|
|
|
byte buf[] = { 0xFE, 0x00, 0x21, 0x15, 0x34 };
|
|
Write(CArray(buf));
|
|
|
|
Sys.Sleep(300);
|
|
|
|
ByteArray rs;
|
|
Read(rs);
|
|
rs.Show(true);
|
|
}
|
|
|
|
// 模块进入低功耗模式时需要处理的事情
|
|
void ShunCom::ChangePower(int level)
|
|
{
|
|
Reset = false;
|
|
|
|
Power = false;
|
|
Sleep = false;
|
|
Config = false;
|
|
|
|
//Power* pwr = dynamic_cast<Power*>(Port);
|
|
//if(pwr) pwr->ChangePower(level);
|
|
PackPort::OnClose();
|
|
}
|
|
|
|
bool ShunCom::OnWrite(const Array& bs)
|
|
{
|
|
//Led = !Led;
|
|
|
|
return PackPort::OnWrite(bs);
|
|
}
|
|
|
|
// 引发数据到达事件
|
|
uint ShunCom::OnReceive(Array& bs, void* param)
|
|
{
|
|
//Led = !Led;
|
|
if(Led) Led->Write(1000);
|
|
|
|
return ITransport::OnReceive(bs, param);
|
|
}
|