This commit is contained in:
WangQiang 2016-08-16 11:09:37 +00:00
parent c4203186d7
commit 15e1e2fab2
2 changed files with 17 additions and 10 deletions

View File

@ -63,10 +63,14 @@ bool Alarm::GetCfg(byte id, AlarmDataType& data)
int Alarm::CalcNextTime(AlarmDataType& data) int Alarm::CalcNextTime(AlarmDataType& data)
{ {
auto dt = DateTime::Now(); auto dt = DateTime::Now();
if (data.Type.ToByte() & 1 << dt.DayOfWeek()) byte type = data.Type.ToByte();
byte week = dt.DayOfWeek();
if (type & 1 << week)
{ {
} }
return Int_Max; return Int_Max;
} }
@ -94,7 +98,11 @@ byte Alarm::FindAfter()
void Alarm::AlarmTask() void Alarm::AlarmTask()
{ {
// 执行动作 // 获取定时的数据
AlarmDataType data;
if (AfterAlarmId != 0xff)
GetCfg(AfterAlarmId, data);
// 执行动作 DoSomething(data);
// 找到下一个定时器动作的时间 // 找到下一个定时器动作的时间
AfterAlarmId = FindAfter(); AfterAlarmId = FindAfter();
@ -112,4 +120,3 @@ void Alarm::Start()
if (!AlarmTaskId)AlarmTaskId = Sys.AddTask(&Alarm::AlarmTask, this, -1, -1, "AlarmTask"); if (!AlarmTaskId)AlarmTaskId = Sys.AddTask(&Alarm::AlarmTask, this, -1, -1, "AlarmTask");
Sys.SetTask(AlarmTaskId,true); Sys.SetTask(AlarmTaskId,true);
} }

View File

@ -22,7 +22,7 @@ typedef struct:ByteStruct2
byte Thursday : 1; byte Thursday : 1;
byte Friday : 1; byte Friday : 1;
byte Saturday : 1; byte Saturday : 1;
byte Again : 1; byte Repeat : 1;
}AlarmType; }AlarmType;
// 必须设定为1字节对齐否则offsetof会得到错误的位置 // 必须设定为1字节对齐否则offsetof会得到错误的位置
@ -51,9 +51,9 @@ public:
void Start(); void Start();
private: private:
byte AfterAlarmId; // 0xff 无效
uint AlarmTaskId; uint AlarmTaskId;
byte AfterAlarmId; // 0xff 无效
int NextAlarmMs; // 下次闹钟时间 int NextAlarmMs; // 下次闹钟时间
void AlarmTask(); void AlarmTask();
byte FindAfter(); byte FindAfter();