优化Sys.RemoveTask,自动把ID清零
This commit is contained in:
parent
5332cbff4a
commit
4b1d56b077
|
@ -350,7 +350,7 @@ Enc28j60::~Enc28j60()
|
||||||
delete _spi;
|
delete _spi;
|
||||||
_spi = NULL;
|
_spi = NULL;
|
||||||
|
|
||||||
if(_ResetTask) Sys.RemoveTask(_ResetTask);
|
Sys.RemoveTask(_ResetTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Enc28j60::Init(Spi* spi, Pin ce, Pin reset)
|
void Enc28j60::Init(Spi* spi, Pin ce, Pin reset)
|
||||||
|
|
|
@ -18,7 +18,7 @@ private:
|
||||||
|
|
||||||
ulong LastTime; // 记录最后一次收到数据的时间,超时重启
|
ulong LastTime; // 记录最后一次收到数据的时间,超时重启
|
||||||
uint ResetPeriod; // 重启间隔,默认6秒
|
uint ResetPeriod; // 重启间隔,默认6秒
|
||||||
int _ResetTask; // 重启任务
|
uint _ResetTask; // 重启任务
|
||||||
public:
|
public:
|
||||||
//byte Mac[6];
|
//byte Mac[6];
|
||||||
MacAddress Mac;
|
MacAddress Mac;
|
||||||
|
|
|
@ -203,15 +203,15 @@ NRF24L01::NRF24L01() { Init(); }
|
||||||
|
|
||||||
void NRF24L01::Init()
|
void NRF24L01::Init()
|
||||||
{
|
{
|
||||||
Power = NULL;
|
Power = NULL;
|
||||||
_spi = NULL;
|
_spi = NULL;
|
||||||
|
|
||||||
// 初始化地址
|
// 初始化地址
|
||||||
memset(Address, 0, ArrayLength(Address));
|
memset(Address, 0, ArrayLength(Address));
|
||||||
memcpy(Address1, (byte*)Sys.ID, ArrayLength(Address1));
|
memcpy(Address1, (byte*)Sys.ID, ArrayLength(Address1));
|
||||||
for(int i=0; i<4; i++) Addr2_5[i] = Address1[0] + i + 1;
|
for(int i=0; i<ArrayLength(Addr2_5); i++) Addr2_5[i] = Address1[0] + i + 1;
|
||||||
Channel = 0; // 默认通道0
|
Channel = 0; // 默认通道0
|
||||||
AddrBits = 0x01;// 默认使能地址0
|
AddrBits = 0x01; // 默认使能地址0
|
||||||
|
|
||||||
Timeout = 50;
|
Timeout = 50;
|
||||||
PayloadWidth= 32;
|
PayloadWidth= 32;
|
||||||
|
@ -227,7 +227,7 @@ void NRF24L01::Init()
|
||||||
_tidOpen = 0;
|
_tidOpen = 0;
|
||||||
_tidRecv = 0;
|
_tidRecv = 0;
|
||||||
|
|
||||||
_Lock = 0;
|
_Lock = 0;
|
||||||
|
|
||||||
LedTx = NULL;
|
LedTx = NULL;
|
||||||
LedRx = NULL;
|
LedRx = NULL;
|
||||||
|
@ -278,16 +278,9 @@ NRF24L01::~NRF24L01()
|
||||||
{
|
{
|
||||||
debug_printf("NRF24L01::~NRF24L01\r\n");
|
debug_printf("NRF24L01::~NRF24L01\r\n");
|
||||||
|
|
||||||
if(_tidOpen)
|
Sys.RemoveTask(_tidOpen);
|
||||||
{
|
Sys.RemoveTask(_tidOpen);
|
||||||
Sys.RemoveTask(_tidOpen);
|
|
||||||
_tidOpen = 0;
|
|
||||||
}
|
|
||||||
if(_tidOpen)
|
|
||||||
{
|
|
||||||
Sys.RemoveTask(_tidOpen);
|
|
||||||
_tidOpen = 0;
|
|
||||||
}
|
|
||||||
Register(NULL);
|
Register(NULL);
|
||||||
|
|
||||||
// 关闭电源
|
// 关闭电源
|
||||||
|
|
|
@ -1139,8 +1139,7 @@ void HardSocket::Register(TransportHandler handler, void* param)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(_tidRecv) Sys.RemoveTask(_tidRecv);
|
Sys.RemoveTask(_tidRecv);
|
||||||
_tidRecv = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1160,8 +1159,7 @@ void TcpClient::Init()
|
||||||
TcpClient::~TcpClient() //: ~HardSockets()
|
TcpClient::~TcpClient() //: ~HardSockets()
|
||||||
{
|
{
|
||||||
HardSocket::~HardSocket();
|
HardSocket::~HardSocket();
|
||||||
if(_tidRodyguard) Sys.RemoveTask(_tidRodyguard);
|
Sys.RemoveTask(_tidRodyguard);
|
||||||
_tidRodyguard = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TcpClient::RodyguardTask(void* param)
|
void TcpClient::RodyguardTask(void* param)
|
||||||
|
|
|
@ -371,7 +371,7 @@ void SerialPort::Register(TransportHandler handler, void* param)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(_taskidRx) Sys.RemoveTask(_taskidRx);
|
Sys.RemoveTask(_taskidRx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
Sys.cpp
11
Sys.cpp
|
@ -114,7 +114,7 @@ bool SysError(uint code)
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
ShowFault(code);
|
ShowFault(code);
|
||||||
|
|
||||||
SerialPort* sp = SerialPort::GetMessagePort();
|
SerialPort* sp = SerialPort::GetMessagePort();
|
||||||
if(sp) sp->Flush();
|
if(sp) sp->Flush();
|
||||||
#endif
|
#endif
|
||||||
|
@ -560,13 +560,16 @@ uint TSys::AddTask(Action func, void* param, Int64 dueTime, Int64 period, string
|
||||||
return Task::Scheduler()->Add(func, param, dueTime, period, name);
|
return Task::Scheduler()->Add(func, param, dueTime, period, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TSys::RemoveTask(uint taskid)
|
void TSys::RemoveTask(uint& taskid)
|
||||||
{
|
{
|
||||||
Task::Scheduler()->Remove(taskid);
|
if(taskid) Task::Scheduler()->Remove(taskid);
|
||||||
|
taskid = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TSys::SetTask(uint taskid, bool enable, int usNextTime)
|
bool TSys::SetTask(uint taskid, bool enable, int usNextTime)
|
||||||
{
|
{
|
||||||
|
if(!taskid) return false;
|
||||||
|
|
||||||
Task* task = Task::Get(taskid);
|
Task* task = Task::Get(taskid);
|
||||||
if(!task) return false;
|
if(!task) return false;
|
||||||
|
|
||||||
|
@ -584,6 +587,8 @@ bool TSys::SetTask(uint taskid, bool enable, int usNextTime)
|
||||||
// 改变任务周期
|
// 改变任务周期
|
||||||
bool TSys::SetTaskPeriod(uint taskid, Int64 period)
|
bool TSys::SetTaskPeriod(uint taskid, Int64 period)
|
||||||
{
|
{
|
||||||
|
if(!taskid) return false;
|
||||||
|
|
||||||
Task* task = Task::Get(taskid);
|
Task* task = Task::Get(taskid);
|
||||||
if(!task) return false;
|
if(!task) return false;
|
||||||
|
|
||||||
|
|
2
Sys.h
2
Sys.h
|
@ -127,7 +127,7 @@ private:
|
||||||
public:
|
public:
|
||||||
// 创建任务,返回任务编号。dueTime首次调度时间us,period调度间隔us,-1表示仅处理一次
|
// 创建任务,返回任务编号。dueTime首次调度时间us,period调度间隔us,-1表示仅处理一次
|
||||||
uint AddTask(Action func, void* param, Int64 dueTime = 0, Int64 period = 0, string name = NULL);
|
uint AddTask(Action func, void* param, Int64 dueTime = 0, Int64 period = 0, string name = NULL);
|
||||||
void RemoveTask(uint taskid);
|
void RemoveTask(uint& taskid);
|
||||||
// 设置任务的开关状态,同时运行指定任务最近一次调度的时间,0表示马上调度
|
// 设置任务的开关状态,同时运行指定任务最近一次调度的时间,0表示马上调度
|
||||||
bool SetTask(uint taskid, bool enable, int usNextTime = -1);
|
bool SetTask(uint taskid, bool enable, int usNextTime = -1);
|
||||||
// 改变任务周期
|
// 改变任务周期
|
||||||
|
|
|
@ -53,11 +53,7 @@ void TinyClient::Open()
|
||||||
|
|
||||||
void TinyClient::Close()
|
void TinyClient::Close()
|
||||||
{
|
{
|
||||||
if(_TaskID)
|
Sys.RemoveTask(_TaskID);
|
||||||
{
|
|
||||||
Sys.RemoveTask(_TaskID);
|
|
||||||
_TaskID = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Control->Received = NULL;
|
Control->Received = NULL;
|
||||||
Control->Param = NULL;
|
Control->Param = NULL;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
class TinyClient
|
class TinyClient
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
int _TaskID;
|
uint _TaskID;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TinyController* Control;
|
TinyController* Control;
|
||||||
|
|
|
@ -188,7 +188,7 @@ TinyController::TinyController() : Controller()
|
||||||
|
|
||||||
TinyController::~TinyController()
|
TinyController::~TinyController()
|
||||||
{
|
{
|
||||||
if(_taskID) Sys.RemoveTask(_taskID);
|
Sys.RemoveTask(_taskID);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TinyController::Open()
|
void TinyController::Open()
|
||||||
|
|
|
@ -51,11 +51,7 @@ void TokenClient::Open()
|
||||||
|
|
||||||
void TokenClient::Close()
|
void TokenClient::Close()
|
||||||
{
|
{
|
||||||
if(_task)
|
Sys.RemoveTask(_task);
|
||||||
{
|
|
||||||
Sys.RemoveTask(_task);
|
|
||||||
_task = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TokenClient::Send(TokenMessage& msg)
|
bool TokenClient::Send(TokenMessage& msg)
|
||||||
|
|
|
@ -178,12 +178,10 @@ void TokenController::Open()
|
||||||
|
|
||||||
void TokenController::Close()
|
void TokenController::Close()
|
||||||
{
|
{
|
||||||
if(!Stat)
|
delete Stat;
|
||||||
{
|
Stat = NULL;
|
||||||
delete Stat;
|
|
||||||
Stat = NULL;
|
Sys.RemoveTask(_taskID);
|
||||||
}
|
|
||||||
if(_taskID) Sys.RemoveTask(_taskID);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送消息,传输口参数为空时向所有传输口发送消息
|
// 发送消息,传输口参数为空时向所有传输口发送消息
|
||||||
|
|
|
@ -87,9 +87,9 @@ public:
|
||||||
|
|
||||||
// 统计
|
// 统计
|
||||||
private:
|
private:
|
||||||
TokenStat* Stat;
|
TokenStat* Stat;
|
||||||
|
|
||||||
int _taskID;
|
uint _taskID;
|
||||||
|
|
||||||
void ShowStat();
|
void ShowStat();
|
||||||
static void StatTask(void* param);
|
static void StatTask(void* param);
|
||||||
|
|
Loading…
Reference in New Issue