@@ -57,6 +57,23 @@ void PatternPlayer::play(PatternPlayer::Info info)
5757 }
5858}
5959
60+ PatternPlayer::Info PatternPlayer::read ()
61+ {
62+ return {
63+ getSyncPattern (),
64+ getResetPattern (),
65+ getIdlePattern (),
66+ getSyncLength (),
67+ getSyncDelay (),
68+ getResetLength (),
69+ getResetTriggerSelect (),
70+ getSyncTriggerSelect (),
71+ false ,
72+ false ,
73+ false
74+ };
75+ }
76+
6077// / Configure has to be called to enable/disable pattern player configuration
6178void PatternPlayer::configure (bool startConfig)
6279{
@@ -74,36 +91,86 @@ void PatternPlayer::setIdlePattern(uint128_t pattern)
7491 mBar ->writeRegister (Cru::Registers::PATPLAYER_IDLE_PATTERN_2.index , uint32_t ((pattern >> 64 ) & 0xffff ));
7592}
7693
94+ uint128_t PatternPlayer::getIdlePattern ()
95+ {
96+ uint128_t pattern = mBar ->readRegister (Cru::Registers::PATPLAYER_IDLE_PATTERN_2.index );
97+ pattern = pattern << 32 | mBar ->readRegister (Cru::Registers::PATPLAYER_IDLE_PATTERN_1.index );
98+ pattern = pattern << 32 | mBar ->readRegister (Cru::Registers::PATPLAYER_IDLE_PATTERN_0.index );
99+ return pattern;
100+ }
101+
77102void PatternPlayer::setSyncPattern (uint128_t pattern)
78103{
79104 mBar ->writeRegister (Cru::Registers::PATPLAYER_SYNC_PATTERN_0.index , uint32_t (pattern & 0xffffffff ));
80105 mBar ->writeRegister (Cru::Registers::PATPLAYER_SYNC_PATTERN_1.index , uint32_t ((pattern >> 32 ) & 0xffffffff ));
81106 mBar ->writeRegister (Cru::Registers::PATPLAYER_SYNC_PATTERN_2.index , uint32_t ((pattern >> 64 ) & 0xffff ));
82107}
83108
109+ uint128_t PatternPlayer::getSyncPattern ()
110+ {
111+ uint128_t pattern = mBar ->readRegister (Cru::Registers::PATPLAYER_SYNC_PATTERN_2.index );
112+ pattern = pattern << 32 | mBar ->readRegister (Cru::Registers::PATPLAYER_SYNC_PATTERN_1.index );
113+ pattern = pattern << 32 | mBar ->readRegister (Cru::Registers::PATPLAYER_SYNC_PATTERN_0.index );
114+ return pattern;
115+ }
116+
84117void PatternPlayer::configureSync (uint32_t length, uint32_t delay)
85118{
86119 mBar ->writeRegister (Cru::Registers::PATPLAYER_SYNC_CNT.index , length + delay);
87120 mBar ->writeRegister (Cru::Registers::PATPLAYER_DELAY_CNT.index , delay);
88121}
89122
123+ uint32_t PatternPlayer::getSyncLength ()
124+ {
125+ return mBar ->readRegister (Cru::Registers::PATPLAYER_SYNC_CNT.index ) -
126+ mBar ->readRegister (Cru::Registers::PATPLAYER_DELAY_CNT.index );
127+ }
128+
129+ uint32_t PatternPlayer::getSyncDelay ()
130+ {
131+ return mBar ->readRegister (Cru::Registers::PATPLAYER_DELAY_CNT.index );
132+ }
133+
90134void PatternPlayer::setResetPattern (uint128_t pattern)
91135{
92136 mBar ->writeRegister (Cru::Registers::PATPLAYER_RESET_PATTERN_0.index , uint32_t (pattern & 0xffffffff ));
93137 mBar ->writeRegister (Cru::Registers::PATPLAYER_RESET_PATTERN_1.index , uint32_t ((pattern >> 32 ) & 0xffffffff ));
94138 mBar ->writeRegister (Cru::Registers::PATPLAYER_RESET_PATTERN_2.index , uint32_t ((pattern >> 64 ) & 0xffff ));
95139}
96140
141+ uint128_t PatternPlayer::getResetPattern ()
142+ {
143+ uint128_t pattern = mBar ->readRegister (Cru::Registers::PATPLAYER_RESET_PATTERN_2.index );
144+ pattern = pattern << 32 | mBar ->readRegister (Cru::Registers::PATPLAYER_RESET_PATTERN_1.index );
145+ pattern = pattern << 32 | mBar ->readRegister (Cru::Registers::PATPLAYER_RESET_PATTERN_0.index );
146+ return pattern;
147+ }
148+
97149void PatternPlayer::configureReset (uint32_t length)
98150{
99151 mBar ->writeRegister (Cru::Registers::PATPLAYER_RESET_CNT.index , length);
100152}
101153
154+ uint32_t PatternPlayer::getResetLength ()
155+ {
156+ return mBar ->readRegister (Cru::Registers::PATPLAYER_RESET_CNT.index );
157+ }
158+
102159void PatternPlayer::selectPatternTrigger (uint32_t syncTrigger, uint32_t resetTrigger)
103160{
104161 mBar ->writeRegister (Cru::Registers::PATPLAYER_TRIGGER_SEL.index , (resetTrigger << 16 ) | syncTrigger);
105162}
106163
164+ uint32_t PatternPlayer::getResetTriggerSelect ()
165+ {
166+ return (mBar ->readRegister (Cru::Registers::PATPLAYER_TRIGGER_SEL.index ) >> 16 );
167+ }
168+
169+ uint32_t PatternPlayer::getSyncTriggerSelect ()
170+ {
171+ return (mBar ->readRegister (Cru::Registers::PATPLAYER_TRIGGER_SEL.index ) & 0xffff );
172+ }
173+
107174/* ** No need to enable configuration for these last 3 ***/
108175void PatternPlayer::enableSyncAtStart (bool enable)
109176{
0 commit comments