diff --git a/Drivers/Enc28j60.cpp b/Drivers/Enc28j60.cpp index 0d262872..d0555dc1 100644 --- a/Drivers/Enc28j60.cpp +++ b/Drivers/Enc28j60.cpp @@ -350,7 +350,7 @@ Enc28j60::~Enc28j60() delete _spi; _spi = NULL; - if(_ResetTask) Sys.RemoveTask(_ResetTask); + Sys.RemoveTask(_ResetTask); } void Enc28j60::Init(Spi* spi, Pin ce, Pin reset) diff --git a/Drivers/Enc28j60.h b/Drivers/Enc28j60.h index 40071832..45aeef6c 100644 --- a/Drivers/Enc28j60.h +++ b/Drivers/Enc28j60.h @@ -18,7 +18,7 @@ private: ulong LastTime; // 记录最后一次收到数据的时间,超时重启 uint ResetPeriod; // 重启间隔,默认6秒 - int _ResetTask; // 重启任务 + uint _ResetTask; // 重启任务 public: //byte Mac[6]; MacAddress Mac; diff --git a/Drivers/NRF24L01.cpp b/Drivers/NRF24L01.cpp index 3c85b8b0..46bb20ed 100644 --- a/Drivers/NRF24L01.cpp +++ b/Drivers/NRF24L01.cpp @@ -203,15 +203,15 @@ NRF24L01::NRF24L01() { Init(); } void NRF24L01::Init() { - Power = NULL; - _spi = NULL; + Power = NULL; + _spi = NULL; // 初始化地址 memset(Address, 0, ArrayLength(Address)); memcpy(Address1, (byte*)Sys.ID, ArrayLength(Address1)); - for(int i=0; i<4; i++) Addr2_5[i] = Address1[0] + i + 1; - Channel = 0; // 默认通道0 - AddrBits = 0x01;// 默认使能地址0 + for(int i=0; iFlush(); #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); } -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) { + if(!taskid) return false; + Task* task = Task::Get(taskid); if(!task) return false; @@ -584,6 +587,8 @@ bool TSys::SetTask(uint taskid, bool enable, int usNextTime) // 改变任务周期 bool TSys::SetTaskPeriod(uint taskid, Int64 period) { + if(!taskid) return false; + Task* task = Task::Get(taskid); if(!task) return false; diff --git a/Sys.h b/Sys.h index 37acb2c8..72a40a8d 100644 --- a/Sys.h +++ b/Sys.h @@ -127,7 +127,7 @@ private: public: // 创建任务,返回任务编号。dueTime首次调度时间us,period调度间隔us,-1表示仅处理一次 uint AddTask(Action func, void* param, Int64 dueTime = 0, Int64 period = 0, string name = NULL); - void RemoveTask(uint taskid); + void RemoveTask(uint& taskid); // 设置任务的开关状态,同时运行指定任务最近一次调度的时间,0表示马上调度 bool SetTask(uint taskid, bool enable, int usNextTime = -1); // 改变任务周期 diff --git a/TinyNet/TinyClient.cpp b/TinyNet/TinyClient.cpp index 40e2920b..af266f37 100644 --- a/TinyNet/TinyClient.cpp +++ b/TinyNet/TinyClient.cpp @@ -53,11 +53,7 @@ void TinyClient::Open() void TinyClient::Close() { - if(_TaskID) - { - Sys.RemoveTask(_TaskID); - _TaskID = 0; - } + Sys.RemoveTask(_TaskID); Control->Received = NULL; Control->Param = NULL; diff --git a/TinyNet/TinyClient.h b/TinyNet/TinyClient.h index d34d676d..388c8ec5 100644 --- a/TinyNet/TinyClient.h +++ b/TinyNet/TinyClient.h @@ -11,7 +11,7 @@ class TinyClient { private: - int _TaskID; + uint _TaskID; public: TinyController* Control; diff --git a/TinyNet/TinyMessage.cpp b/TinyNet/TinyMessage.cpp index a9de4813..602fd403 100644 --- a/TinyNet/TinyMessage.cpp +++ b/TinyNet/TinyMessage.cpp @@ -188,7 +188,7 @@ TinyController::TinyController() : Controller() TinyController::~TinyController() { - if(_taskID) Sys.RemoveTask(_taskID); + Sys.RemoveTask(_taskID); } void TinyController::Open() diff --git a/TokenNet/TokenClient.cpp b/TokenNet/TokenClient.cpp index 5bfab2a4..571885d3 100644 --- a/TokenNet/TokenClient.cpp +++ b/TokenNet/TokenClient.cpp @@ -51,11 +51,7 @@ void TokenClient::Open() void TokenClient::Close() { - if(_task) - { - Sys.RemoveTask(_task); - _task = 0; - } + Sys.RemoveTask(_task); } bool TokenClient::Send(TokenMessage& msg) diff --git a/TokenNet/TokenMessage.cpp b/TokenNet/TokenMessage.cpp index 1368272e..9c213d33 100644 --- a/TokenNet/TokenMessage.cpp +++ b/TokenNet/TokenMessage.cpp @@ -178,12 +178,10 @@ void TokenController::Open() void TokenController::Close() { - if(!Stat) - { - delete Stat; - Stat = NULL; - } - if(_taskID) Sys.RemoveTask(_taskID); + delete Stat; + Stat = NULL; + + Sys.RemoveTask(_taskID); } // 发送消息,传输口参数为空时向所有传输口发送消息 diff --git a/TokenNet/TokenMessage.h b/TokenNet/TokenMessage.h index 2a95da79..ef5b4f89 100644 --- a/TokenNet/TokenMessage.h +++ b/TokenNet/TokenMessage.h @@ -87,9 +87,9 @@ public: // 统计 private: - TokenStat* Stat; + TokenStat* Stat; - int _taskID; + uint _taskID; void ShowStat(); static void StatTask(void* param);