25 #ifndef ACE_SEGMENT_LED_MATRIX_DUAL_SHIFT_REGISTER_H
26 #define ACE_SEGMENT_LED_MATRIX_DUAL_SHIFT_REGISTER_H
28 #include "LedMatrixBase.h"
30 class LedMatrixDualShiftRegisterTest_draw;
31 class LedMatrixDualShiftRegisterTest_enableGroup;
32 class LedMatrixDualShiftRegisterTest_disableGroup;
34 namespace ace_segment {
52 uint8_t groupOnPattern,
53 uint8_t elementOnPattern
56 mSpiAdapter(spiAdapter)
67 void draw(uint8_t group, uint8_t elementPattern)
const {
68 uint8_t groupPattern = 0x1 << group;
70 uint8_t actualGroupPattern = (groupPattern ^ mGroupXorMask);
71 uint8_t actualElementPattern = (elementPattern ^ mElementXorMask);
73 mSpiAdapter.transfer16(
74 actualGroupPattern << 8 | actualElementPattern);
75 mPrevElementPattern = elementPattern;
78 void enableGroup(uint8_t group)
const {
79 draw(group, mPrevElementPattern);
82 void disableGroup(uint8_t group)
const {
88 uint8_t actualGroupPattern = 0x00 ^ mGroupXorMask;
89 uint8_t actualElementPattern = 0x00 ^ mElementXorMask;
90 mSpiAdapter.transfer16(
91 actualGroupPattern << 8 | actualElementPattern);
92 mPrevElementPattern = 0x00;
96 friend class ::LedMatrixDualShiftRegisterTest_draw;
97 friend class ::LedMatrixDualShiftRegisterTest_enableGroup;
98 friend class ::LedMatrixDualShiftRegisterTest_disableGroup;
100 const SA& mSpiAdapter;
106 mutable uint8_t mPrevElementPattern;