The codebase to run the *spark d-fuser controller www.sparkav.co.uk/dvimixer

Dependencies:   SPK-TVOne DMX DmxArtNet NetServicesMin OSC PinDetect mRotaryEncoder iniparser mbed spk_oled_ssd1305 filter

Revision:
12:c270870bdd23
Parent:
11:0783cfbeb746
Child:
13:3796bde6ba8f
--- a/main.cpp	Mon Aug 27 15:10:23 2012 +0000
+++ b/main.cpp	Tue Aug 28 15:41:51 2012 +0000
@@ -145,11 +145,14 @@
 SPKMenuOfMenus mainMenu;
 SPKMenuPayload resolutionMenu;
 SPKMenuPayload mixModeMenu;
+SPKMenuPayload advancedMenu;
+
 enum { blend, additive, key }; // additive will require custom TVOne firmware.
 int mixMode = blend;
 SPKMenuPayload commsMenu;
 enum { commsNone, commsOSC, commsArtNet, commsDMXIn, commsDMXOut};
 int commsMode = commsNone;
+enum { advancedHDCPOn, advancedHDCPOff };
 
 // RJ45 Comms
 enum { rj45Ethernet = 0, rj45DMX = 1}; // These values from circuit
@@ -340,10 +343,14 @@
     commsMenu.addMenuItem("DMX In", commsDMXIn, 0);
     commsMenu.addMenuItem("DMX Out", commsDMXOut, 0);
 
+    advancedMenu.title = "Processor Advanced"; 
+    advancedMenu.addMenuItem("HDCP Off", advancedHDCPOff, 0);
+
     mainMenu.title = "Main Menu";
     mainMenu.addMenuItem(&mixModeMenu);
     mainMenu.addMenuItem(&resolutionMenu);
     mainMenu.addMenuItem(&commsMenu);
+    mainMenu.addMenuItem(&advancedMenu);
     
     selectedMenu = &mainMenu;
     lastSelectedMenu = &mainMenu;    
@@ -353,16 +360,9 @@
     fadeAPO.period(0.001);
     fadeBPO.period(0.001);
     
-    // TVOne setup
-    
-    bool ok = true;
+    // TODO: Test for TVOne connectivity here and display in status line
     
-    // horrid, horrid HDCP
-    ok = tvOne.setHDCPOff();
-
-    std::string sendOK = ok ? "Sent: HDCP Off" : "Send Error: HDCP Off";
-
-    // display menu and framing lines
+    // Display menu and framing lines
     screen.horizLineToBuffer(kMenuLine1*pixInPage - 1);
     screen.clearBufferRow(kMenuLine1);
     screen.textToBuffer(selectedMenu->title, kMenuLine1);
@@ -373,7 +373,6 @@
     screen.clearBufferRow(kCommsStatusLine);
     screen.textToBuffer(commsMenu.selectedString(), kCommsStatusLine);
     screen.clearBufferRow(kTVOneStatusLine);
-    screen.textToBuffer(sendOK, kTVOneStatusLine);
     screen.sendBuffer();
 
 
@@ -624,6 +623,20 @@
                 screen.clearBufferRow(kCommsStatusLine);
                 screen.textToBuffer(commsTypeString + commsStatus.str(), kCommsStatusLine);
             }
+            else if (selectedMenu == &advancedMenu)
+            {
+                if (advancedMenu.selectedPayload1() == advancedHDCPOff)
+                {
+                    bool ok = false;
+                    
+                    ok = tvOne.setHDCPOff();
+                    
+                    std::string sendOK = ok ? "Sent: HDCP Off" : "Send Error: HDCP Off";
+                    
+                    screen.clearBufferRow(kTVOneStatusLine);
+                    screen.textToBuffer(sendOK, kTVOneStatusLine);
+                }
+            }
             else
             {
                 if (debug) { debug->printf("Warning: No action identified"); }