From 4b1d56b077401b65fcd620122eaba6d3b83cfc86 Mon Sep 17 00:00:00 2001 From: nnhy Date: Mon, 7 Sep 2015 09:07:58 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96Sys.RemoveTask=EF=BC=8C?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=8A=8AID=E6=B8=85=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Drivers/Enc28j60.cpp | 2 +- Drivers/Enc28j60.h | 2 +- Drivers/NRF24L01.cpp | 25 +++++++++---------------- Drivers/W5500.cpp | 6 ++---- SerialPort.cpp | 2 +- Sys.cpp | 11 ++++++++--- Sys.h | 2 +- TinyNet/TinyClient.cpp | 6 +----- TinyNet/TinyClient.h | 2 +- TinyNet/TinyMessage.cpp | 2 +- TokenNet/TokenClient.cpp | 6 +----- TokenNet/TokenMessage.cpp | 10 ++++------ TokenNet/TokenMessage.h | 4 ++-- 13 files changed, 33 insertions(+), 47 deletions(-) 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);