25 #ifndef ACE_SEGMENT_LEVEL_WRITER_H
26 #define ACE_SEGMENT_LEVEL_WRITER_H
29 #include "PatternWriter.h"
31 namespace ace_segment {
41 template <
typename T_LED_MODULE>
45 static const uint8_t kLevelLeftPattern = 0b00110000;
47 static const uint8_t kLevelRightPattern = 0b00000110;
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++, kLevelLeftPattern | kLevelRightPattern);
80 if (partialDigit && pos < numDigits) {
81 mPatternWriter.writePatternAt(pos++, kLevelLeftPattern);
83 mPatternWriter.clearToEnd(pos);