Skip to content

Commit 5d3d596

Browse files
authored
Update TallyManager for Safe Mode support
Added support for Safe Mode to prevent SDI Shield initialization when active.
1 parent 7a328d8 commit 5d3d596

1 file changed

Lines changed: 25 additions & 4 deletions

File tree

‎Arduino/TallyManager.cpp‎

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
/*
22
* TallyManager.cpp
33
* Tally management implementation
4-
* Version 3.6
4+
* Version 3.7
55
*
66
* O(n) mapping with n=10 is fast enough and saves 256 bytes of RAM
7+
* Safe Mode support: SDI Shield not initialized when in safe mode
78
*/
89

910
#include "TallyManager.h"
11+
#include "SafeMode.h"
1012
#include <BMDSDIControl.h>
1113

1214
// Static variable initialization
@@ -27,8 +29,13 @@ bool TallyManager::begin() {
2729
bool dummyCCU;
2830
StorageManager::loadOverrides(_overrideTally, dummyCCU);
2931

30-
sdiTallyControl.begin();
31-
sdiTallyControl.setOverride(_overrideTally);
32+
// Only initialize SDI shield if NOT in safe mode
33+
if (!SafeMode::isActive()) {
34+
sdiTallyControl.begin();
35+
sdiTallyControl.setOverride(_overrideTally);
36+
} else {
37+
Serial.println(F("[Tally] SDI Shield SKIPPED (Safe Mode)"));
38+
}
3239

3340
cacheInitialized = false;
3441

@@ -67,7 +74,11 @@ void TallyManager::setMapping(byte inputIndex, byte inputNumber, byte cameraId)
6774

6875
void TallyManager::setOverride(bool enabled) {
6976
_overrideTally = enabled;
70-
sdiTallyControl.setOverride(_overrideTally);
77+
78+
// Only touch SDI shield if NOT in safe mode
79+
if (!SafeMode::isActive()) {
80+
sdiTallyControl.setOverride(_overrideTally);
81+
}
7182

7283
bool currentTally, currentCCU;
7384
StorageManager::loadOverrides(currentTally, currentCCU);
@@ -105,6 +116,11 @@ void TallyManager::setTallyState(byte camera, char state) {
105116
return;
106117
}
107118

119+
// Skip SDI output in safe mode
120+
if (SafeMode::isActive()) {
121+
return;
122+
}
123+
108124
bool program = (state == '1');
109125
bool preview = (state == '2');
110126

@@ -126,6 +142,11 @@ void TallyManager::setTallyStates(bool states[MAX_CAMERAS + 1][2]) {
126142
return;
127143
}
128144

145+
// Skip SDI output in safe mode
146+
if (SafeMode::isActive()) {
147+
return;
148+
}
149+
129150
// First time: send all
130151
if (!cacheInitialized) {
131152
Serial.println(F("[T] Init"));

0 commit comments

Comments
 (0)