25 #ifndef ACE_SEGMENT_WRITER_LEVEL_WRITER_H
26 #define ACE_SEGMENT_WRITER_LEVEL_WRITER_H
29 #include "PatternWriter.h"
31 namespace ace_segment {
34 const uint8_t kPatternLevelLeft = 0b00110000;
37 const uint8_t kPatternLevelRight = 0b00000110;
47 template <
typename T_LED_MODULE>
56 T_LED_MODULE&
ledModule() {
return mPatternWriter.ledModule(); }
66 return mPatternWriter.getNumDigits() * 2;
71 uint8_t fullDigits = level / 2;
72 uint8_t partialDigit = level & 0x1;
73 uint8_t numDigits = mPatternWriter.getNumDigits();
76 while (pos < fullDigits && pos < numDigits) {
77 mPatternWriter.writePatternAt(
78 pos++, kPatternLevelLeft | kPatternLevelRight);
80 if (partialDigit && pos < numDigits) {
81 mPatternWriter.writePatternAt(pos++, kPatternLevelLeft);
83 mPatternWriter.clearToEnd(pos);