This commit is contained in:
parent
c4203186d7
commit
15e1e2fab2
|
@ -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();
|
||||||
|
@ -102,7 +110,7 @@ void Alarm::AlarmTask()
|
||||||
{
|
{
|
||||||
Sys.SetTask(AlarmTaskId, true, NextAlarmMs);
|
Sys.SetTask(AlarmTaskId, true, NextAlarmMs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sys.SetTask(AlarmTaskId, false);
|
Sys.SetTask(AlarmTaskId, false);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
App/Alarm.h
10
App/Alarm.h
|
@ -13,7 +13,7 @@ public:
|
||||||
byte ToByte() { return *(byte*)this; }
|
byte ToByte() { return *(byte*)this; }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct:ByteStruct2
|
typedef struct : ByteStruct2
|
||||||
{
|
{
|
||||||
byte Sunday : 1;
|
byte Sunday : 1;
|
||||||
byte Monday : 1;
|
byte Monday : 1;
|
||||||
|
@ -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会得到错误的位置
|
||||||
|
@ -31,7 +31,7 @@ typedef struct:ByteStruct2
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
byte Enable;
|
byte Enable;
|
||||||
AlarmType Type;
|
AlarmType Type;
|
||||||
byte Hour;
|
byte Hour;
|
||||||
byte Minutes;
|
byte Minutes;
|
||||||
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue