FieldTransition.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <GroupStateField.h>
  2. #include <stdint.h>
  3. #include <stddef.h>
  4. #include <Arduino.h>
  5. #include <functional>
  6. #include <Transition.h>
  7. #pragma once
  8. class FieldTransition : public Transition {
  9. public:
  10. class Builder : public Transition::Builder {
  11. public:
  12. Builder(size_t id, uint16_t defaultPeriod, const BulbId& bulbId, TransitionFn callback, GroupStateField field, uint16_t start, uint16_t end);
  13. virtual std::shared_ptr<Transition> _build() const override;
  14. private:
  15. size_t stepSize;
  16. GroupStateField field;
  17. uint16_t start;
  18. uint16_t end;
  19. };
  20. FieldTransition(
  21. size_t id,
  22. const BulbId& bulbId,
  23. GroupStateField field,
  24. uint16_t startValue,
  25. uint16_t endValue,
  26. int16_t stepSize,
  27. size_t period,
  28. TransitionFn callback
  29. );
  30. virtual bool isFinished() override;
  31. private:
  32. const GroupStateField field;
  33. int16_t currentValue;
  34. const int16_t endValue;
  35. const int16_t stepSize;
  36. bool finished;
  37. virtual void step() override;
  38. virtual void childSerialize(JsonObject& json) override;
  39. };