@@ -417,7 +417,6 @@ void ThermostatAttrAccess::BeginAtomicWrite(CommandHandler * commandObj, const C
417
417
// Add to the maximum timeout
418
418
maximumTimeout += attributeTimeout.value ();
419
419
}
420
-
421
420
break ;
422
421
}
423
422
}
@@ -509,14 +508,6 @@ void ThermostatAttrAccess::CommitAtomicWrite(CommandHandler * commandObj, const
509
508
{
510
509
case Presets::Id:
511
510
statusCode = PrecommitPresets (endpoint);
512
- if (statusCode == Status::Success)
513
- {
514
- CHIP_ERROR err = delegate->CommitPendingPresets ();
515
- if (err != CHIP_NO_ERROR)
516
- {
517
- statusCode = Status::InvalidInState;
518
- }
519
- }
520
511
break ;
521
512
case Schedules::Id:
522
513
statusCode = Status::Success;
@@ -532,6 +523,35 @@ void ThermostatAttrAccess::CommitAtomicWrite(CommandHandler * commandObj, const
532
523
}
533
524
}
534
525
526
+ if (status == Status::Success)
527
+ {
528
+ for (size_t i = 0 ; i < attributeStatuses.AllocatedSize (); ++i)
529
+ {
530
+ auto & attributeStatus = attributeStatuses[i];
531
+ auto statusCode = Status::Success;
532
+ switch (attributeStatus.attributeID )
533
+ {
534
+ case Presets::Id:
535
+ CHIP_ERROR err = delegate->CommitPendingPresets ();
536
+ if (err != CHIP_NO_ERROR)
537
+ {
538
+ statusCode = Status::InvalidInState;
539
+ }
540
+ break ;
541
+ case Schedules::Id:
542
+ break ;
543
+ default :
544
+ commandObj->AddStatus (commandPath, Status::InvalidInState);
545
+ return ;
546
+ }
547
+ attributeStatus.statusCode = to_underlying (statusCode);
548
+ if (statusCode != Status::Success)
549
+ {
550
+ status = Status::Failure;
551
+ }
552
+ }
553
+ }
554
+
535
555
ResetAtomicWrite (endpoint);
536
556
SendAtomicResponse (commandObj, commandPath, status, attributeStatuses);
537
557
}
0 commit comments