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
6875void 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