@@ -243,6 +243,13 @@ struct SetpointLimits
243
243
int16_t UnoccupiedHeatingSetpoint;
244
244
};
245
245
246
+ /* *
247
+ * @brief Reads all the attributes for enforcing setpoint limits
248
+ *
249
+ * @param endpoint The endpoint for the server whose limits are being enforced
250
+ * @param setpointLimits The SetpointLimits to populate
251
+ * @return Success if the limits were read completely, otherwise an error code
252
+ */
246
253
Status getSetpointLimits (EndpointId endpoint, SetpointLimits & setpointLimits)
247
254
{
248
255
uint32_t flags;
@@ -385,8 +392,8 @@ typedef Status (*setpointSetter)(EndpointId endpoint, int16_t value, MarkAttribu
385
392
* @param deadband The deadband to preserve
386
393
* @param setter A function for setting the cooling setpoint
387
394
*/
388
- void ensureCoolSetpointDeadband (EndpointId endpoint, int16_t currentCoolingSetpoint, int16_t newHeatingSetpoint,
389
- int16_t maxCoolingSetpoint, int16_t deadband, setpointSetter setter)
395
+ void ensureCoolingSetpointDeadband (EndpointId endpoint, int16_t currentCoolingSetpoint, int16_t newHeatingSetpoint,
396
+ int16_t maxCoolingSetpoint, int16_t deadband, setpointSetter setter)
390
397
{
391
398
int16_t minValidCoolingSetpoint = newHeatingSetpoint + deadband;
392
399
if (currentCoolingSetpoint >= minValidCoolingSetpoint)
@@ -397,15 +404,15 @@ void ensureCoolSetpointDeadband(EndpointId endpoint, int16_t currentCoolingSetpo
397
404
if (minValidCoolingSetpoint > maxCoolingSetpoint)
398
405
{
399
406
// Adjusting the cool setpoint to preserve the deadband would violate the max cool setpoint
400
- // This should have been caught in checkCoolSetpointDeadband , so log and exit
407
+ // This should have been caught in checkCoolingSetpointDeadband , so log and exit
401
408
ChipLogError (Zcl, " Failed ensuring cooling setpoint deadband" );
402
409
return ;
403
410
}
404
411
// Adjust the cool setpoint to preserve deadband
405
412
auto status = setter (endpoint, minValidCoolingSetpoint, MarkAttributeDirty::kYes );
406
413
if (status != Status::Success)
407
414
{
408
- ChipLogError (Zcl, " Error: ensureCoolSetpointDeadband failed!" );
415
+ ChipLogError (Zcl, " Error: ensureCoolingSetpointDeadband failed!" );
409
416
}
410
417
}
411
418
@@ -420,8 +427,8 @@ void ensureCoolSetpointDeadband(EndpointId endpoint, int16_t currentCoolingSetpo
420
427
* @param deadband The deadband to preserve
421
428
* @param setter A function for setting the heating setpoint
422
429
*/
423
- void ensureHeatSetpointDeadband (EndpointId endpoint, int16_t currentHeatingSetpoint, int16_t newCoolingSetpoint,
424
- int16_t minHeatingSetpoint, int16_t deadband, setpointSetter setter)
430
+ void ensureHeatingSetpointDeadband (EndpointId endpoint, int16_t currentHeatingSetpoint, int16_t newCoolingSetpoint,
431
+ int16_t minHeatingSetpoint, int16_t deadband, setpointSetter setter)
425
432
{
426
433
int16_t maxValidHeatingSetpoint = newCoolingSetpoint - deadband;
427
434
if (currentHeatingSetpoint <= maxValidHeatingSetpoint)
@@ -432,15 +439,15 @@ void ensureHeatSetpointDeadband(EndpointId endpoint, int16_t currentHeatingSetpo
432
439
if (maxValidHeatingSetpoint < minHeatingSetpoint)
433
440
{
434
441
// Adjusting the heating setpoint to preserve the deadband would violate the max cooling setpoint
435
- // This should have been caught in checkHeatSetpointDeadband , so log and exit
442
+ // This should have been caught in checkHeatingSetpointDeadband , so log and exit
436
443
ChipLogError (Zcl, " Failed ensuring heating setpoint deadband" );
437
444
return ;
438
445
}
439
446
// Adjust the heating setpoint to preserve deadband
440
447
auto status = setter (endpoint, maxValidHeatingSetpoint, MarkAttributeDirty::kYes );
441
448
if (status != Status::Success)
442
449
{
443
- ChipLogError (Zcl, " Error: ensureCoolSetpointDeadband failed!" );
450
+ ChipLogError (Zcl, " Error: ensureHeatingSetpointDeadband failed!" );
444
451
}
445
452
}
446
453
@@ -468,22 +475,24 @@ void ensureDeadband(const ConcreteAttributePath & attributePath)
468
475
switch (attributePath.mAttributeId )
469
476
{
470
477
case OccupiedHeatingSetpoint::Id:
471
- ensureCoolSetpointDeadband (endpoint, setpointLimits.OccupiedCoolingSetpoint , setpointLimits.OccupiedHeatingSetpoint ,
472
- setpointLimits.MaxCoolSetpointLimit , setpointLimits.DeadBandTemp , OccupiedCoolingSetpoint::Set);
478
+ ensureCoolingSetpointDeadband (endpoint, setpointLimits.OccupiedCoolingSetpoint , setpointLimits.OccupiedHeatingSetpoint ,
479
+ setpointLimits.MaxCoolSetpointLimit , setpointLimits.DeadBandTemp ,
480
+ OccupiedCoolingSetpoint::Set);
473
481
break ;
474
482
case OccupiedCoolingSetpoint::Id:
475
- ensureHeatSetpointDeadband (endpoint, setpointLimits.OccupiedHeatingSetpoint , setpointLimits.OccupiedCoolingSetpoint ,
476
- setpointLimits.MinHeatSetpointLimit , setpointLimits.DeadBandTemp ,
477
- UnoccupiedHeatingSetpoint ::Set);
483
+ ensureHeatingSetpointDeadband (endpoint, setpointLimits.OccupiedHeatingSetpoint , setpointLimits.OccupiedCoolingSetpoint ,
484
+ setpointLimits.MinHeatSetpointLimit , setpointLimits.DeadBandTemp ,
485
+ OccupiedHeatingSetpoint ::Set);
478
486
break ;
479
487
case UnoccupiedHeatingSetpoint::Id:
480
- ensureCoolSetpointDeadband (endpoint, setpointLimits.UnoccupiedCoolingSetpoint , setpointLimits.UnoccupiedHeatingSetpoint ,
481
- setpointLimits.MaxCoolSetpointLimit , setpointLimits.DeadBandTemp ,
482
- UnoccupiedCoolingSetpoint::Set);
488
+ ensureCoolingSetpointDeadband (endpoint, setpointLimits.UnoccupiedCoolingSetpoint , setpointLimits.UnoccupiedHeatingSetpoint ,
489
+ setpointLimits.MaxCoolSetpointLimit , setpointLimits.DeadBandTemp ,
490
+ UnoccupiedCoolingSetpoint::Set);
483
491
break ;
484
492
case UnoccupiedCoolingSetpoint::Id:
485
- ensureHeatSetpointDeadband (endpoint, setpointLimits.UnoccupiedHeatingSetpoint , setpointLimits.UnoccupiedCoolingSetpoint ,
486
- setpointLimits.MinHeatSetpointLimit , setpointLimits.DeadBandTemp , OccupiedHeatingSetpoint::Set);
493
+ ensureHeatingSetpointDeadband (endpoint, setpointLimits.UnoccupiedHeatingSetpoint , setpointLimits.UnoccupiedCoolingSetpoint ,
494
+ setpointLimits.MinHeatSetpointLimit , setpointLimits.DeadBandTemp ,
495
+ UnoccupiedHeatingSetpoint::Set);
487
496
break ;
488
497
}
489
498
}
0 commit comments