Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SPK-TVOne DMX DmxArtNet NetServicesMin OSC PinDetect mRotaryEncoder iniparser mbed spk_oled_ssd1305 filter
Diff: main.cpp
- Revision:
- 71:d6d0ff33cf5b
- Parent:
- 69:cd1c85de3e38
- Child:
- 72:f521154be01f
- Child:
- 74:48890838c9ec
--- a/main.cpp Sun Jul 28 10:31:14 2013 +0000
+++ b/main.cpp Mon Jul 29 12:20:16 2013 +0000
@@ -484,43 +484,56 @@
string sentOK;
char* sentMSGBuffer = "Blend";
+ // Perform unset before set, in case mixMode = mixModeOld
+
+ if (mixModeOld == mixAdditive || reset)
+ {
+ // Turn off Additive Mixing on output
+ if (tvOne.getProcessorType().version == 423)
+ {
+ ok = ok && tvOne.command(0, kTV1WindowIDA, 0x298, 0);
+ }
+ }
if (mixMode == mixAdditive)
{
sentMSGBuffer = "Additive";
// First set B to what you'd expect for additive; it may be left at 100 if optimised blend mixing was previous mixmode.
- ok = tvOne.command(0, kTV1WindowIDB, kTV1FunctionAdjustWindowsMaxFadeLevel, fadeBPercent);
+ ok = ok && tvOne.command(0, kTV1WindowIDB, kTV1FunctionAdjustWindowsMaxFadeLevel, fadeBPercent);
// Then turn on Additive Mixing
if (tvOne.getProcessorType().version == 423)
{
ok = ok && tvOne.command(0, kTV1WindowIDA, 0x298, 1);
}
}
- if (mixModeOld == mixAdditive || reset)
- {
- // Turn off Additive Mixing on output
- if (tvOne.getProcessorType().version == 423)
- {
- ok = tvOne.command(0, kTV1WindowIDA, 0x298, 0);
- }
- }
-
- if (mixMode == mixKeyLeft)
- {
- sentMSGBuffer = "Key L over R";
-
- // Turn on Keyer
- ok = ok && tvOne.command(0, kTV1WindowIDA, kTV1FunctionAdjustKeyerEnable, true);
- }
+
if (mixModeOld == mixKeyLeft || reset)
{
// Turn off Keyer
tvOne.command(0, kTV1WindowIDA, kTV1FunctionAdjustKeyerEnable, false);
}
+ if (mixMode == mixKeyLeft)
+ {
+ sentMSGBuffer = "Key L over R";
+ mixKeyWindow = kTV1WindowIDA;
+
+ // Turn on Keyer
+ ok = ok && tvOne.command(0, kTV1WindowIDA, kTV1FunctionAdjustKeyerEnable, true);
+ }
+
+ if (mixModeOld == mixKeyRight || reset)
+ {
+ // Restore window positions
+ ok = ok && tvOne.command(0, kTV1WindowIDA, kTV1FunctionAdjustWindowsLayerPriority, 0);
+
+ // Turn off Keyer
+ tvOne.command(0, kTV1WindowIDB, kTV1FunctionAdjustKeyerEnable, false); // Checkme: if check for success, returns failure errantly?
+ }
if (mixMode == mixKeyRight)
{
sentMSGBuffer = "Key R over L";
+ mixKeyWindow = kTV1WindowIDB;
// Turn on Keyer
ok = ok && tvOne.command(0, kTV1WindowIDB, kTV1FunctionAdjustKeyerEnable, true);
@@ -529,19 +542,17 @@
// Set window B above window A
ok = ok && tvOne.command(0, kTV1WindowIDB, kTV1FunctionAdjustWindowsLayerPriority, 0);
}
- if (mixModeOld == mixKeyRight || reset)
+
+ if (ok)
{
- // Turn off Keyer
- tvOne.command(0, kTV1WindowIDB, kTV1FunctionAdjustKeyerEnable, false);
-
- // Restore window positions
- ok = ok && tvOne.command(0, kTV1WindowIDA, kTV1FunctionAdjustWindowsLayerPriority, 0);
+ mixModeOld = mixMode;
+ sentOK = "Sent: ";
}
-
- mixModeOld = mixMode;
-
- if (ok) sentOK = "Sent:";
- else sentOK = "Send Error:";
+ else
+ {
+ mixMode = mixModeOld;
+ sentOK = "Send Error: ";
+ }
tvOneStatusMessage.addMessage(sentOK + sentMSGBuffer, kTVOneStatusMessageHoldTime);
}
@@ -742,8 +753,8 @@
mixModeMenu.addMenuItem(SPKMenuItem("Blend", mixBlend));
}
- mixModeMenu.addMenuItem(SPKMenuItem("Key: L over R", mixKeyLeft));
- mixModeMenu.addMenuItem(SPKMenuItem("Key: R over L", mixKeyRight));
+ mixModeMenu.addMenuItem(SPKMenuItem("Key: Left over Right", mixKeyLeft));
+ mixModeMenu.addMenuItem(SPKMenuItem("Key: Right over Left", mixKeyRight));
mixModeMenu.addMenuItem(SPKMenuItem("Key: Tweak key values", &mixModeUpdateKeyMenu));
// Load in presets from settings. Index 0 is the "live" key read from TVOne, so we ignore here.
@@ -1104,6 +1115,12 @@
settings.setEditingKeyerSetValue(SPKSettings::maxU,255);
settings.setEditingKeyerSetValue(SPKSettings::minV,0);
settings.setEditingKeyerSetValue(SPKSettings::maxV,255);
+ tvOne.command(0, mixKeyWindow, kTV1FunctionAdjustKeyerMinY, 0);
+ tvOne.command(0, mixKeyWindow, kTV1FunctionAdjustKeyerMaxY, 255);
+ tvOne.command(0, mixKeyWindow, kTV1FunctionAdjustKeyerMinU, 0);
+ tvOne.command(0, mixKeyWindow, kTV1FunctionAdjustKeyerMaxU, 255);
+ tvOne.command(0, mixKeyWindow, kTV1FunctionAdjustKeyerMinV, 0);
+ tvOne.command(0, mixKeyWindow, kTV1FunctionAdjustKeyerMaxV, 255);
}
actionCount = 3;
@@ -1238,6 +1255,7 @@
// Get back to menu
actionCount = 0;
+ state = 0;
selectedMenu = &mixModeMenu;
screen.clearBufferRow(kMenuLine1);
screen.clearBufferRow(kMenuLine2);
@@ -1403,7 +1421,7 @@
handleTVOneSources();
// Processor can have been power-on saved with a keyer on, lets revert
- actionMixMode();
+ checkTVOneMixStatus();
// Display menu and framing lines
screen.horizLineToBuffer(kMenuLine1*pixInPage - 1);
@@ -1456,8 +1474,8 @@
screen.textToBuffer(selectedMenu->title, kMenuLine1);
screen.textToBuffer(selectedMenu->selectedString(), kMenuLine2);
}
- if (rj45Mode == rj45Ethernet) screen.textToBuffer("RJ45: Ethernet Engaged", kCommsStatusLine);
- if (rj45Mode == rj45DMX) screen.textToBuffer("RJ45: DMX Engaged", kCommsStatusLine);
+ if (rj45Mode == rj45Ethernet) screen.textToBuffer("RJ45: Ethernet Mode", kCommsStatusLine);
+ if (rj45Mode == rj45DMX) screen.textToBuffer("RJ45: DMX Mode", kCommsStatusLine);
}
//// MENU
@@ -1533,7 +1551,7 @@
{
mixMode = mixModeMenuPayload;
- if (mixMode == mixModeOld) tvOneStatusMessage.addMessage("Already active", kTVOneStatusMessageHoldTime);
+ if (mixMode == mixModeOld) tvOneStatusMessage.addMessage("Mix mode already active", kTVOneStatusMessageHoldTime);
}
else
{
@@ -1551,7 +1569,7 @@
tvOne.command(0, kTV1WindowIDA, kTV1FunctionPowerOnPresetStore, 1);
- tvOneStatusMessage.addMessage(ok ? "Loaded: " + settings.keyerParamName(keySetIndex) + " values" : "Send error: keyer values", kTVOneStatusMessageHoldTime, kTVOneStatusMessageHoldTime);
+ tvOneStatusMessage.addMessage(ok ? "Loaded: " + settings.keyerParamName(keySetIndex) + " values" : "Send error: keyer values", kTVOneStatusMessageHoldTime);
}
}
}