From 67887a1a92093685016f4d9d974faf8c29012727 Mon Sep 17 00:00:00 2001 From: ABelliqueux Date: Mon, 26 Apr 2021 13:31:34 +0200 Subject: [PATCH] The first --- README.md | 182 ++++++++++++ gbscc | 840 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1022 insertions(+) create mode 100644 README.md create mode 100755 gbscc diff --git a/README.md b/README.md new file mode 100644 index 0000000..db9967a --- /dev/null +++ b/README.md @@ -0,0 +1,182 @@ +# gbscc - gbscontrol control + +A python command line utility to send commands to a wifi enabled gbs-control over http. + +Your gbscontrol instance has to be reachable over http at `gbscontrol.local` . + +Alternatively, you can edit the `GBSCONTROL_ADDRESS` variable to reflect your network configuration. + +## Usage : + + `gbscc /COMMAND` + +## Available commands : + + Presets : + + Video modes: + + /720P 1280x720 + + /960P 1280x960 + + /1024P 1280x1024 + + /1080P 1920x1080 + + /SD NTSC : 720x480 / PAL : 768x576 + + /15K 15Khz Scale Down + + /PASS Pass Through + + Slots : + + /1 Load Slot 1 + + /2 Load Slot 2 + + /3 Load Slot 3 + + /4 Load Slot 4 + + /5 Load Slot 5 + + /6 Load Slot 6 + + /7 Load Slot 7 + + /8 Load Slot 8 + + /9 Load Slot 9 + + /LOAD Load Custom preset + + /SAVE Save Custom preset + + System : + + /RESET Reset the GBS + + Enhancements: + + /SCNLN 240P Scanlines + + /LINEF Line filter + + /PEAK Peaking + + /STEPR Step response + + /SCNLS Scanline strength + + Preferences: + + /MATCH Matched presets + + /FULLH Full height + + /UPSCL Low Res: Use Upscaling + + /60H Force 60hz + + /ADCCAL ADC calibration + + /FRMTL FrameTime lock + + /SWLCK Switch lock method + + /RGBC RGBHV/Component Toggle + + /MAD Deinterlace motion adaptive + + /BOB Deinterlace bob + + Development: + + /FREEZ Freeze capture + + /MBL Move picture left (memory blank) + + /MBR Move picture right (memory blank) + + /HSL Horizontal Sync Left + + /HSR Horizontal Sync Right + + /INFO Print infos + + /TIMI Get video timings + + /CLKR Cycle Sdram clock speed + + /RSTC Reset chip + + /INVS Invert sync + + /PLLD PLL divider++ + + /DEBG Debug view + + /ADCF ADC filter + + /OVRS Oversampling + + /HTOTU HTotal++ + + /HTOTD HTotal-- + + /SNCHT Resynch HTotal + + /RSTS Reset sync processor + + /SNAP Snap to 50/60hz + + /SNCW Syncwatcher + + /OTA Enable OTA update + + /IFAO IF auto offset + + /SOGL SOG Level -- + + Picture Control: + + Move picture: + + /MVUP Up + + /MVDN Down + + /MVL Left + + /MVR Right + + Scaling: + + /HORZU Horizontal + + + /HORZD Horizontal - + + /VERTU Vertical + + + /VERTD Vertical - + + Border masking: + + /BMHU Horizontal + + + /BMHD Horizontal - + + /BMVU Vertical + + + /BMVD Vertical - + + Gain: + + /GAINU Gain + + + /GAIND Gain - + + /AUTOG Auto Gain Adjust Toggle + diff --git a/gbscc b/gbscc new file mode 100755 index 0000000..0f0143f --- /dev/null +++ b/gbscc @@ -0,0 +1,840 @@ +#!/usr/bin/env python + +# gbscc - gbscontrolcontrol by Schnappy, license GNU General Public License v3.0 +# +# Send commands to a wifi enabled gbs-control instance over http + + +# Adapt to your network ( can be an ip or a hostname ) + +GBSCONTROL_ADDRESS = "gbscontrol.local" + + + +import sys +import http.client + +conn = http.client.HTTPConnection( GBSCONTROL_ADDRESS ) + +context = "" + +command = "" + +def main(): + + global context, command + + arg = sys.argv + + if len(arg) > 1: + + if len(arg) > 2: + + print("More than one argument given !") + + else: + + arg = arg[1] + + else: + + print("No argument given. Type 'gbscc /HELP to see the list of available commands.' ") + + if arg == "-h" or arg == "--help" or arg == "/HELP": + + print( + + "A python command line utility to send commands to a wifi enabled gbs-control over http.\n\n" + + + "Usage : gbscc /COMMAND \n\n" + + + "Available commands :\n\n" + + + "\tPresets :\n\n" + + + "\t\tVideo modes:\n\n" + + + "\t\t /720P 1280x720\n\n" + + + "\t\t /960P 1280x960\n\n" + + + "\t\t /1024P 1280x1024\n\n" + + + "\t\t /1080P 1920x1080\n\n" + + + "\t\t /SD NTSC : 720x480 / PAL : 768x576 \n\n" + + + "\t\t /15K 15Khz Scale Down \n\n" + + + "\t\t /PASS Pass Through \n\n" + + + "\tSlots :\n\n" + + + "\t\t /1 Load Slot 1\n\n" + + + "\t\t /2 Load Slot 2\n\n" + + + "\t\t /3 Load Slot 3\n\n" + + + "\t\t /4 Load Slot 4\n\n" + + + "\t\t /5 Load Slot 5\n\n" + + + "\t\t /6 Load Slot 6\n\n" + + + "\t\t /7 Load Slot 7\n\n" + + + "\t\t /8 Load Slot 8\n\n" + + + "\t\t /9 Load Slot 9\n\n" + + + "\t\t /LOAD Load Custom preset\n\n" + + + "\t\t /SAVE Save Custom preset\n\n" + + + "\tSystem :\n\n" + + + "\t\t /RESET Reset the GBS\n\n" + + + "\tEnhancements:\n\n" + + + "\t\t /SCNLN 240P Scanlines\n\n" + + + "\t\t /LINEF Line filter\n\n" + + + "\t\t /PEAK Peaking\n\n" + + + "\t\t /STEPR Step response\n\n" + + + "\t\t /SCNLS Scanline strength\n\n" + + + "\tPreferences:\n\n" + + + "\t\t /MATCH Matched presets\n\n" + + + "\t\t /FULLH Full height\n\n" + + + "\t\t /UPSCL Low Res: Use Upscaling\n\n" + + + "\t\t /60H Force 60hz\n\n" + + + "\t\t /ADCCAL ADC calibration\n\n" + + + "\t\t /FRMTL FrameTime lock\n\n" + + + "\t\t /SWLCK Switch lock method\n\n" + + + "\t\t /RGBC RGBHV/Component Toggle\n\n" + + + "\t\t /MAD Deinterlace motion adaptive\n\n" + + + "\t\t /BOB Deinterlace bob\n\n" + + + "\tDevelopment:\n\n" + + + "\t\t /FREEZ Freeze capture\n\n" + + + "\t\t /MBL Move picture left (memory blank)\n\n" + + + "\t\t /MBR Move picture right (memory blank)\n\n" + + + "\t\t /HSL Horizontal Sync Left\n\n" + + + "\t\t /HSR Horizontal Sync Right\n\n" + + + "\t\t /INFO Print infos\n\n" + + + "\t\t /TIMI Get video timings\n\n" + + + "\t\t /CLKR Cycle Sdram clock speed\n\n" + + + "\t\t /RSTC Reset chip\n\n" + + + "\t\t /INVS Invert sync\n\n" + + + "\t\t /PLLD PLL divider++\n\n" + + + "\t\t /DEBG Debug view\n\n" + + + "\t\t /ADCF ADC filter\n\n" + + + "\t\t /OVRS Oversampling\n\n" + + + "\t\t /HTOTU HTotal++ \n\n" + + + "\t\t /HTOTD HTotal-- \n\n" + + + "\t\t /SNCHT Resynch HTotal\n\n" + + + "\t\t /RSTS Reset sync processor\n\n" + + + "\t\t /SNAP Snap to 50/60hz\n\n" + + + "\t\t /SNCW Syncwatcher\n\n" + + + "\t\t /OTA Enable OTA update\n\n" + + + "\t\t /IFAO IF auto offset\n\n" + + + "\t\t /SOGL SOG Level --\n\n" + + + "\tPicture Control:\n\n" + + + "\t\tMove picture:\n\n" + + + "\t\t /MVU Up\n\n" + + + "\t\t /MVD Down\n\n" + + + "\t\t /MVL Left\n\n" + + + "\t\t /MVR Right\n\n" + + + "\t\tScaling:\n\n" + + + "\t\t /HORZU Horizontal +\n\n" + + + "\t\t /HORZD Horizontal -\n\n" + + + "\t\t /VERTU Vertical + \n\n" + + + "\t\t /VERTD Vertical -\n\n" + + + "\t\tBorder masking:\n\n" + + + "\t\t /BMHU Horizontal +\n\n" + + + "\t\t /BMHD Horizontal -\n\n" + + + "\t\t /BMVU Vertical +\n\n" + + + "\t\t /BMVD Vertical -\n\n" + + + "\t\tGain:\n\n" + + + "\t\t /GAINU Gain +\n\n" + + + "\t\t /GAIND Gain -\n\n" + + + "\t\t /AUTOG Auto Gain Adjust Toggle\n" + + ) + + # SYSTEM + + if arg == "/REST": + + context = "uc" + + command = "a" + + print("Reset command sent...") + + # PRESETS + + ## Video modes + + if arg == "/960P": + + context = "uc" + + command = "f" + + print("Switching to 1280x960...") + + if arg == "/1024P": + + context = "uc" + + command = "p" + + print("Switching to 1280x1024...") + + if arg == "/720P": + + context = "uc" + + command = "g" + + print("Switching to 1280x720...") + + if arg == "/1080P": + + context = "uc" + + command = "s" + + print("Switching to 1920x1080...") + + if arg == "/SD": + + context = "uc" + + command = "h" + + print("Switching to SD...") + + if arg == "/15K": + + context = "uc" + + command = "L" + + print("Switching to 15Khz Scale down...") + + if arg == "/PASS": + + context = "uc" + + command = "K" + + print("Switching to Pass-through...") + + ## Slots + + if arg == "/1": + + context = "uc" + + command = "b" + + print("Using Slot 1 for preset.") + + if arg == "/2": + + context = "uc" + + command = "c" + + print("Using Slot 2 for preset.") + + if arg == "/3": + + context = "uc" + + command = "d" + + print("Using Slot 3 for preset.") + + if arg == "/4": + + context = "uc" + + command = "j" + + print("Using Slot 4 for preset.") + + if arg == "/5": + + context = "uc" + + command = "k" + + print("Using Slot 5 for preset.") + + if arg == "/6": + + context = "uc" + + command = "G" + + print("Using Slot 6 for preset.") + + if arg == "/7": + + context = "uc" + + command = "H" + + print("Using Slot 7 for preset.") + + if arg == "/8": + + context = "uc" + + command = "I" + + print("Using Slot 8 for preset.") + + if arg == "/9": + + context = "uc" + + command = "J" + + print("Using Slot 9 for preset.") + + if arg == "/SAVE": + + context = "uc" + + command = "3" + + print("Saving preset to selected slot.") + + if arg == "/LOAD": + + context = "uc" + + command = "4" + + print("Loading preset from selected slot.") + + + # ENHANCEMENTS + + + if arg == "/SCNLN": + + context = "uc" + + command = "7" + + print(" 240P Scanlines") + + if arg == "/LINEF": + + context = "uc" + + command = "m" + + print("Line Filter") + + if arg == "/PEAK": + + context = "uc" + + command = "f" + + print("Peaking") + + if arg == "/STEPR": + + context = "uc" + + command = "V" + + print("Step Response") + + if arg == "/SCNLS": + + context = "uc" + + command = "K" + + print("Scanline strength") + + # PREFERENCES + + if arg == "/MATCH": + + context = "uc" + + command = "Z" + + print("Matched presets") + + if arg == "/FULLH": + + context = "uc" + + command = "v" + + print("Full height") + + if arg == "/UPSCL": + + context = "uc" + + command = "x" + + print("Low Res: Use Upscaling") + + if arg == "/60H": + + context = "uc" + + command = "0" + + print("Force 60hz") + + if arg == "/ADCCAL": + + context = "uc" + + command = "w" + + print("ADC calibration") + + if arg == "/FRMTL": + + context = "uc" + + command = "5" + + print("FrameTime lock") + + if arg == "/SWLCK": + + context = "uc" + + command = "i" + + print("Switch lock method") + + if arg == "/RGBC": + + context = "sc" + + command = "L" + + print("RGBHV/Component toggle") + + if arg == "/MAD": + + context = "sc" + + command = "r" + + print("Use motion adaptive deinterlacing") + + if arg == "/BOB": + + context = "sc" + + command = "q" + + print("Use Bob deinterlacing") + + # DEVELOPMENT + + if arg == "/FREEZ": + + context = "uc" + + command = "F" + + print("Freeze Capture") + + if arg == "/MBL": + + context = "sc" + + command = "-" + + print("Move picture left (memory blank)") + + if arg == "/MBR": + + context = "sc" + + command = "+" + + print("Move picture left (memory blank)") + + if arg == "/HSL": + + context = "sc" + + command = "1" + + print("Horizontal Sync Left") + + if arg == "/HSR": + + context = "sc" + + command = "0" + + print("Horizontal Sync Right") + + if arg == "/INFO": + + context = "sc" + + command = "i" + + print("Print infos") + + if arg == "/VTIM": + + context = "sc" + + command = "," + + print("Get video timings") + + if arg == "/CLKR": + + context = "sc" + + command = "l" + + print("Cycle Sdram clock speed") + + if arg == "/RSTC": + + context = "sc" + + command = "q" + + print("Reset chip") + + if arg == "/INVS": + + context = "sc" + + command = "8" + + print("Invert sync") + + if arg == "/PLLD": + + context = "sc" + + command = "n" + + print("MPLL divider ++") + + if arg == "/DEBG": + + context = "sc" + + command = "D" + + print("Debug view") + + if arg == "/ADCF": + + context = "sc" + + command = "F" + + print("ADC filter") + + if arg == "/OVRS": + + context = "sc" + + command = "o" + + print("Oversampling") + + if arg == "/HTOTU": + + context = "sc" + + command = "a" + + print("HTotal ++") + + if arg == "/HTOTD": + + context = "sc" + + command = "A" + + print("HTotal --") + + if arg == "/SNCHT": + + context = "sc" + + command = "." + + print("Resynch HTotal") + + if arg == "/RSTS": + + context = "uc" + + command = "l" + + print("Reset sync processor") + + if arg == "/SNAP": + + context = "sc" + + command = "S" + + print("Snap to 50/60hz") + + if arg == "/SNCW": + + context = "sc" + + command = "m" + + print("Syncwatcher") + + if arg == "/OTA": + + context = "sc" + + command = "c" + + print("Enable OTA update") + + if arg == "/IFAO": + + context = "sc" + + command = "E" + + print("IF auto offset") + + if arg == "/SOGL": + + context = "sc" + + command = "z" + + print("SOG Level --") + + # PICTURE CONTROL + + ## MOVE + + if arg == "/MVU": + + context = "sc" + + command = "*" + + print("Move up") + + if arg == "/MVD": + + context = "sc" + + command = "/" + + print("Move down") + + if arg == "/MVL": + + context = "sc" + + command = "7" + + print("Move left") + + if arg == "/MVR": + + context = "sc" + + command = "6" + + print("Move right") + + ## SCALING + + if arg == "/HORZU": + + context = "sc" + + command = "z" + + print("Horizontal +") + + if arg == "/HORZD": + + context = "sc" + + command = "Horizontal -" + + print("Move down") + + if arg == "/VERTU": + + context = "sc" + + command = "4" + + print("Vertical +") + + if arg == "/VERTD": + + context = "sc" + + command = "5" + + print("Vertical -") + + ## BORDER MASKING + + if arg == "/BMHU": + + context = "sc" + + command = "A" + + print("Border Masking : Horizontal +") + + if arg == "/BMHD": + + context = "sc" + + command = "B" + + print("Border Masking : Horizontal -") + + if arg == "/BMVU": + + context = "sc" + + command = "C" + + print("Border Masking : Vertical +") + + if arg == "/BMVD": + + context = "sc" + + command = "D" + + print("Border Masking : Vertical -") + + ## GAIN + + if arg == "/GAINU": + + context = "sc" + + command = "n" + + print("Vertical -") + + if arg == "/GAIND": + + context = "sc" + + command = "o" + + print("Vertical -") + + if arg == "/VERT-": + + context = "sc" + + command = "T" + + print("Vertical -") + + + # Send the command + + if context and command: + + conn.request( "GET", "/" + context + "?" + command ) + + response = conn.getresponse() + + print(response.reason) + + return 0 + +if __name__ == '__main__': + + sys.exit(main())