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
Diff: main.cpp
- 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)