@@ -352,20 +352,18 @@ bool CScheduler::AdjustScheduleItem(tScheduleItem *pItem, bool bForceAddDay)
352
352
int roffset = 0 ;
353
353
if (pItem->bUseRandomness )
354
354
{
355
- if ((pItem->timerType == TTYPE_ONTIME) ||
356
- (pItem->timerType == TTYPE_FIXEDDATETIME) ||
357
- (pItem->timerType == TTYPE_WEEKSODD) ||
358
- (pItem->timerType == TTYPE_WEEKSEVEN) ||
359
- (pItem->timerType == TTYPE_MONTHLY) ||
360
- (pItem->timerType == TTYPE_MONTHLY_WD) ||
361
- (pItem->timerType == TTYPE_YEARLY) ||
362
- (pItem->timerType == TTYPE_YEARLY_WD))
363
- roffset = rand () % (nRandomTimerFrame * 2 ) - nRandomTimerFrame;
364
- else
355
+ if ((pItem->timerType == TTYPE_BEFORESUNRISE) ||
356
+ (pItem->timerType == TTYPE_AFTERSUNRISE) ||
357
+ (pItem->timerType == TTYPE_BEFORESUNSET) ||
358
+ (pItem->timerType == TTYPE_AFTERSUNSET))
365
359
roffset = rand () % (nRandomTimerFrame);
360
+ else
361
+ roffset = rand () % (nRandomTimerFrame * 2 ) - nRandomTimerFrame;
366
362
}
367
363
368
364
if ((pItem->timerType == TTYPE_ONTIME) ||
365
+ (pItem->timerType == TTYPE_DAYSODD) ||
366
+ (pItem->timerType == TTYPE_DAYSEVEN) ||
369
367
(pItem->timerType == TTYPE_WEEKSODD) ||
370
368
(pItem->timerType == TTYPE_WEEKSEVEN))
371
369
{
@@ -444,7 +442,7 @@ bool CScheduler::AdjustScheduleItem(tScheduleItem *pItem, bool bForceAddDay)
444
442
ltime.tm_hour = pItem->startHour ;
445
443
ltime.tm_min = pItem->startMin ;
446
444
447
- // pItem->Days: mon=0 .. sat=5 , sun=6
445
+ // pItem->Days: mon=1 .. sat=32 , sun=64
448
446
// convert to : sun=0, mon=1 .. sat=6
449
447
int daynum = (int )log2 (pItem->Days ) + 1 ;
450
448
if (daynum == 7 ) daynum = 0 ;
@@ -504,7 +502,7 @@ bool CScheduler::AdjustScheduleItem(tScheduleItem *pItem, bool bForceAddDay)
504
502
ltime.tm_min = pItem->startMin ;
505
503
ltime.tm_mon = pItem->Month - 1 ;
506
504
507
- // pItem->Days: mon=0 .. sat=5 , sun=6
505
+ // pItem->Days: mon=1 .. sat=32 , sun=64
508
506
// convert to : sun=0, mon=1 .. sat=6
509
507
int daynum = (int )log2 (pItem->Days ) + 1 ;
510
508
if (daynum == 7 ) daynum = 0 ;
@@ -595,6 +593,14 @@ void CScheduler::CheckSchedules()
595
593
{
596
594
bOkToFire = true ;
597
595
}
596
+ else if (itt->timerType == TTYPE_DAYSODD)
597
+ {
598
+ bOkToFire = (ltime.tm_mday % 2 != 0 );
599
+ }
600
+ else if (itt->timerType == TTYPE_DAYSEVEN)
601
+ {
602
+ bOkToFire = (ltime.tm_mday % 2 == 0 );
603
+ }
598
604
else
599
605
{
600
606
if (itt->Days & 0x80 )
0 commit comments