优化Sys.RemoveTask,自动把ID清零
This commit is contained in:
parent
5332cbff4a
commit
4b1d56b077
|
@ -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)
|
||||
|
|
|
@ -18,7 +18,7 @@ private:
|
|||
|
||||
ulong LastTime; // 记录最后一次收到数据的时间,超时重启
|
||||
uint ResetPeriod; // 重启间隔,默认6秒
|
||||
int _ResetTask; // 重启任务
|
||||
uint _ResetTask; // 重启任务
|
||||
public:
|
||||
//byte Mac[6];
|
||||
MacAddress Mac;
|
||||
|
|
|
@ -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; i<ArrayLength(Addr2_5); i++) Addr2_5[i] = Address1[0] + i + 1;
|
||||
Channel = 0; // 默认通道0
|
||||
AddrBits = 0x01; // 默认使能地址0
|
||||
|
||||
Timeout = 50;
|
||||
PayloadWidth= 32;
|
||||
|
@ -227,7 +227,7 @@ void NRF24L01::Init()
|
|||
_tidOpen = 0;
|
||||
_tidRecv = 0;
|
||||
|
||||
_Lock = 0;
|
||||
_Lock = 0;
|
||||
|
||||
LedTx = NULL;
|
||||
LedRx = NULL;
|
||||
|
@ -278,16 +278,9 @@ NRF24L01::~NRF24L01()
|
|||
{
|
||||
debug_printf("NRF24L01::~NRF24L01\r\n");
|
||||
|
||||
if(_tidOpen)
|
||||
{
|
||||
Sys.RemoveTask(_tidOpen);
|
||||
_tidOpen = 0;
|
||||
}
|
||||
if(_tidOpen)
|
||||
{
|
||||
Sys.RemoveTask(_tidOpen);
|
||||
_tidOpen = 0;
|
||||
}
|
||||
Sys.RemoveTask(_tidOpen);
|
||||
Sys.RemoveTask(_tidOpen);
|
||||
|
||||
Register(NULL);
|
||||
|
||||
// 关闭电源
|
||||
|
|
|
@ -1139,8 +1139,7 @@ void HardSocket::Register(TransportHandler handler, void* param)
|
|||
}
|
||||
else
|
||||
{
|
||||
if(_tidRecv) Sys.RemoveTask(_tidRecv);
|
||||
_tidRecv = 0;
|
||||
Sys.RemoveTask(_tidRecv);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1160,8 +1159,7 @@ void TcpClient::Init()
|
|||
TcpClient::~TcpClient() //: ~HardSockets()
|
||||
{
|
||||
HardSocket::~HardSocket();
|
||||
if(_tidRodyguard) Sys.RemoveTask(_tidRodyguard);
|
||||
_tidRodyguard = 0;
|
||||
Sys.RemoveTask(_tidRodyguard);
|
||||
}
|
||||
|
||||
void TcpClient::RodyguardTask(void* param)
|
||||
|
|
|
@ -371,7 +371,7 @@ void SerialPort::Register(TransportHandler handler, void* param)
|
|||
}
|
||||
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
|
||||
ShowFault(code);
|
||||
|
||||
|
||||
SerialPort* sp = SerialPort::GetMessagePort();
|
||||
if(sp) sp->Flush();
|
||||
#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;
|
||||
|
||||
|
|
2
Sys.h
2
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);
|
||||
// 改变任务周期
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
class TinyClient
|
||||
{
|
||||
private:
|
||||
int _TaskID;
|
||||
uint _TaskID;
|
||||
|
||||
public:
|
||||
TinyController* Control;
|
||||
|
|
|
@ -188,7 +188,7 @@ TinyController::TinyController() : Controller()
|
|||
|
||||
TinyController::~TinyController()
|
||||
{
|
||||
if(_taskID) Sys.RemoveTask(_taskID);
|
||||
Sys.RemoveTask(_taskID);
|
||||
}
|
||||
|
||||
void TinyController::Open()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
// 发送消息,传输口参数为空时向所有传输口发送消息
|
||||
|
|
|
@ -87,9 +87,9 @@ public:
|
|||
|
||||
// 统计
|
||||
private:
|
||||
TokenStat* Stat;
|
||||
TokenStat* Stat;
|
||||
|
||||
int _taskID;
|
||||
uint _taskID;
|
||||
|
||||
void ShowStat();
|
||||
static void StatTask(void* param);
|
||||
|
|
Loading…
Reference in New Issue