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:
42:b1c2524aee99
Parent:
41:00d1cd3b2af2
--- a/main.cpp	Sun Dec 02 01:08:34 2012 +0000
+++ b/main.cpp	Sun Dec 02 13:39:26 2012 +0000
@@ -175,6 +175,8 @@
 int commsMode = commsNone;
 
 SPKMenu advancedMenu;
+SPKMenu advancedMenuHDCP;
+SPKMenu advancedMenuEDID;
 enum { advancedHDCPOn, advancedHDCPOff, advancedEDIDPassthrough, advancedEDIDInternal, advancedTestSources, advancedConformProcessor, advancedConformUploadProcessor, advancedLoadDefaults, advancedSetResolutions };
 
 // RJ45 Comms
@@ -685,17 +687,21 @@
     commsMenu.title = "Network Mode";
     setCommsMenuItems();
     
-    advancedMenu.title = "Troubleshooting"; 
-    advancedMenu.addMenuItem(SPKMenuItem("HDCP Off", advancedHDCPOff));
-    advancedMenu.addMenuItem(SPKMenuItem("HDCP On", advancedHDCPOn));
-    advancedMenu.addMenuItem(SPKMenuItem("EDID Passthrough", advancedEDIDPassthrough));
-    advancedMenu.addMenuItem(SPKMenuItem("EDID Internal", advancedEDIDInternal));
+    advancedMenu.title = "Troubleshooting";
+    advancedMenu.addMenuItem(advancedMenuHDCP));
+    advancedMenu.addMenuItem(advancedMenuEDID));
     advancedMenu.addMenuItem(SPKMenuItem("Test Processor Sources", advancedTestSources));
     advancedMenu.addMenuItem(SPKMenuItem("Revert Processor", advancedConformProcessor));
     if (settingsAreCustom) advancedMenu.addMenuItem(SPKMenuItem("Revert Controller", advancedLoadDefaults));
     advancedMenu.addMenuItem(SPKMenuItem("Conform Processor", advancedConformUploadProcessor));
     advancedMenu.addMenuItem(SPKMenuItem("Back to Main Menu", &mainMenu));
     
+    advancedMenuHDCP.title = "HDCP - Can block output";
+    advancedMenuHDCP.addMenuItem(SPKMenuItem("[title overridden]", &advancedMenu, true));
+
+    advancedMenuEDID.title = "EDID - Laptop Resolutions";
+    advancedMenuEDID.addMenuItem(SPKMenuItem("[title overridden]", &advancedMenu, true));
+    
     mainMenu.title = "Main Menu";
     mainMenu.addMenuItem(SPKMenuItem(mixModeMenu.title, &mixModeMenu));
     mainMenu.addMenuItem(SPKMenuItem(resolutionMenu.title, &resolutionMenu));
@@ -1070,6 +1076,41 @@
                                                                                             settings.editingKeyerSetValue(SPKSettings::maxV));
                     screen.textToBuffer(paramLine, kMenuLine2);
                 }
+                else if (selectedMenu == &advancedMenuHDCP)
+                {
+                    int32_t payloadOutput = -1;
+                    tvOne.readCommand(0, kTV1WindowIDA, kTV1FunctionAdjustOutputsHDCPStatus, &payloadOutput);
+                    
+                    int32_t payloadA = -1;
+                    tvOne.readCommand(0, kTV1WindowIDA, kTV1FunctionAdjustSourceHDCPStatus, &payloadA);
+                    
+                    int32_t payloadB = -1;
+                    tvOne.readCommand(0, kTV1WindowIDB, kTV1FunctionAdjustSourceHDCPStatus, &payloadB);
+                    
+                    char* current;
+                    char* changeTo;
+                    
+                    if (payloadOutput == payloadA == payloadB == 0) 
+                    {
+                        current = "Off";
+                        changeTo = "On";
+                    }
+                    else if ((payloadOutput == payloadA == payloadB == 1)
+                    {
+                        current = "Off";
+                        changeTo = "On";
+                    }
+                    else
+                    {
+                        current = "Mixed";
+                        changeTo = "Off";
+                    }
+                    
+                    char paramLine[kStringBufferLength];
+                    screen.clearBufferRow(kMenuLine2);
+                    snprintf(paramLine, kStringBufferLength, "%s. Set: [%s/Cancel]?", );
+                    screen.textToBuffer(paramLine, kMenuLine2);
+                }
             }
             // With that out of the way, we should be actioning a specific menu's payload?
             else if (selectedMenu == &resolutionMenu)