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.size() * 2;
71 uint8_t fullDigits = level / 2;
72 uint8_t partialDigit = level & 0x1;
73 uint8_t numDigits = mPatternWriter.size();
75 mPatternWriter.home();
77 uint8_t pos = mPatternWriter.pos();
78 if (pos >= fullDigits || pos >= numDigits) {
break; }
79 mPatternWriter.writePattern(kPatternLevelLeft | kPatternLevelRight);
81 if (partialDigit && mPatternWriter.pos() < numDigits) {
82 mPatternWriter.writePattern(kPatternLevelLeft);
84 mPatternWriter.clearToEnd();
Emulate a level led module using a left vertical bar and a right vertical bar on each digit.
T_LED_MODULE & ledModule()
Get the underlying LedModule.
uint8_t getMaxLevel() const
Return the maximum level supported by this LED display.
void writeLevel(uint8_t level)
Write out the level bar, 2 levels per digit.
PatternWriter< T_LED_MODULE > & patternWriter()
Get the underlying PatternWriter.
LevelWriter(PatternWriter< T_LED_MODULE > &patternWriter)
Constructor.
Write LED segment patterns to the underlying LedModule.