diff --git a/gp2040ce_bintools/storage.py b/gp2040ce_bintools/storage.py index 961fb66..a0e8604 100644 --- a/gp2040ce_bintools/storage.py +++ b/gp2040ce_bintools/storage.py @@ -11,9 +11,9 @@ from gp2040ce_bintools.pico import get_bootsel_endpoints, read logger = logging.getLogger(__name__) -STORAGE_BINARY_LOCATION = 0x1FE000 -STORAGE_MEMORY_ADDRESS = 0x101FE000 -STORAGE_SIZE = 8192 +STORAGE_BINARY_LOCATION = 0x1FC000 +STORAGE_MEMORY_ADDRESS = 0x101FC000 +STORAGE_SIZE = 16384 FOOTER_SIZE = 12 FOOTER_MAGIC = b'\x65\xe3\xf1\xd2' @@ -232,7 +232,7 @@ def visualize(): group.add_argument('--usb', action='store_true', help="retrieve the config from a Pico board connected over USB " "and in BOOTSEL mode") group.add_argument('--filename', help=".bin file of a GP2040-CE board's storage section, bytes " - "101FE000-10200000, or of a GP2040-CE's whole board dump " + "101FC000-10200000, or of a GP2040-CE's whole board dump " "if --whole-board is specified") args, _ = parser.parse_known_args() diff --git a/tests/conftest.py b/tests/conftest.py index 22df89f..2fa1057 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -28,7 +28,7 @@ def firmware_binary(): @pytest.fixture def storage_dump(): - """Read in a test storage dump file (101FE000-10200000) of a GP2040-CE board.""" + """Read in a test storage dump file (101FC000-10200000) of a GP2040-CE board.""" filename = os.path.join(HERE, 'test-files', 'test-storage-area.bin') with open(filename, 'rb') as file: content = file.read() diff --git a/tests/test-files/pb2-files/config_pb2.py b/tests/test-files/pb2-files/config_pb2.py index 32ed870..21bf0fd 100644 --- a/tests/test-files/pb2-files/config_pb2.py +++ b/tests/test-files/pb2-files/config_pb2.py @@ -15,7 +15,7 @@ import nanopb_pb2 as nanopb__pb2 import enums_pb2 as enums__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x63onfig.proto\x1a\x0cnanopb.proto\x1a\x0b\x65nums.proto\"\xf1\x01\n\x0eGamepadOptions\x12\x1d\n\tinputMode\x18\x01 \x01(\x0e\x32\n.InputMode\x12\x1b\n\x08\x64padMode\x18\x02 \x01(\x0e\x32\t.DpadMode\x12\x1b\n\x08socdMode\x18\x03 \x01(\x0e\x32\t.SOCDMode\x12\x13\n\x0binvertXAxis\x18\x04 \x01(\x08\x12\x13\n\x0binvertYAxis\x18\x05 \x01(\x08\x12\x1b\n\x13switchTpShareForDs4\x18\x06 \x01(\x08\x12\x13\n\x0blockHotkeys\x18\x07 \x01(\x08\x12\x13\n\x0b\x66ourWayMode\x18\x08 \x01(\x08\x12\x15\n\rprofileNumber\x18\t \x01(\r\"\x8a\x03\n\x0fKeyboardMapping\x12\x11\n\tkeyDpadUp\x18\x01 \x01(\r\x12\x13\n\x0bkeyDpadDown\x18\x02 \x01(\r\x12\x13\n\x0bkeyDpadLeft\x18\x03 \x01(\r\x12\x14\n\x0ckeyDpadRight\x18\x04 \x01(\r\x12\x13\n\x0bkeyButtonB1\x18\x05 \x01(\r\x12\x13\n\x0bkeyButtonB2\x18\x06 \x01(\r\x12\x13\n\x0bkeyButtonB3\x18\x07 \x01(\r\x12\x13\n\x0bkeyButtonB4\x18\x08 \x01(\r\x12\x13\n\x0bkeyButtonL1\x18\t \x01(\r\x12\x13\n\x0bkeyButtonR1\x18\n \x01(\r\x12\x13\n\x0bkeyButtonL2\x18\x0b \x01(\r\x12\x13\n\x0bkeyButtonR2\x18\x0c \x01(\r\x12\x13\n\x0bkeyButtonS1\x18\r \x01(\r\x12\x13\n\x0bkeyButtonS2\x18\x0e \x01(\r\x12\x13\n\x0bkeyButtonL3\x18\x0f \x01(\r\x12\x13\n\x0bkeyButtonR3\x18\x10 \x01(\r\x12\x13\n\x0bkeyButtonA1\x18\x11 \x01(\r\x12\x13\n\x0bkeyButtonA2\x18\x12 \x01(\r\"e\n\x0bHotkeyEntry\x12\x10\n\x08\x64padMask\x18\x01 \x01(\r\x12\x1e\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\x0e.GamepadHotkey\x12\x13\n\x0b\x62uttonsMask\x18\x03 \x01(\r\x12\x0f\n\x07\x61uxMask\x18\x04 \x01(\r\"\x8f\x03\n\rHotkeyOptions\x12\x1e\n\x08hotkey01\x18\x01 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey02\x18\x02 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey03\x18\x03 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey04\x18\x04 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey05\x18\x05 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey06\x18\x06 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey07\x18\x07 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey08\x18\x08 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey09\x18\t \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey10\x18\n \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey11\x18\x0b \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey12\x18\x0c \x01(\x0b\x32\x0c.HotkeyEntry\"4\n\x12\x46orcedSetupOptions\x12\x1e\n\x04mode\x18\x01 \x01(\x0e\x32\x10.ForcedSetupMode\"g\n\x18\x42uttonLayoutParamsCommon\x12\x0e\n\x06startX\x18\x01 \x01(\x05\x12\x0e\n\x06startY\x18\x02 \x01(\x05\x12\x14\n\x0c\x62uttonRadius\x18\x03 \x01(\x05\x12\x15\n\rbuttonPadding\x18\x04 \x01(\x05\"b\n\x16\x42uttonLayoutParamsLeft\x12\x1d\n\x06layout\x18\x01 \x01(\x0e\x32\r.ButtonLayout\x12)\n\x06\x63ommon\x18\x02 \x01(\x0b\x32\x19.ButtonLayoutParamsCommon\"h\n\x17\x42uttonLayoutParamsRight\x12\"\n\x06layout\x18\x01 \x01(\x0e\x32\x12.ButtonLayoutRight\x12)\n\x06\x63ommon\x18\x02 \x01(\x0b\x32\x19.ButtonLayoutParamsCommon\"w\n\x19\x42uttonLayoutCustomOptions\x12+\n\nparamsLeft\x18\x01 \x01(\x0b\x32\x17.ButtonLayoutParamsLeft\x12-\n\x0bparamsRight\x18\x02 \x01(\x0b\x32\x18.ButtonLayoutParamsRight\"\x9b\x03\n\x0bPinMappings\x12\x11\n\tpinDpadUp\x18\x01 \x01(\x05\x12\x13\n\x0bpinDpadDown\x18\x02 \x01(\x05\x12\x13\n\x0bpinDpadLeft\x18\x03 \x01(\x05\x12\x14\n\x0cpinDpadRight\x18\x04 \x01(\x05\x12\x13\n\x0bpinButtonB1\x18\x05 \x01(\x05\x12\x13\n\x0bpinButtonB2\x18\x06 \x01(\x05\x12\x13\n\x0bpinButtonB3\x18\x07 \x01(\x05\x12\x13\n\x0bpinButtonB4\x18\x08 \x01(\x05\x12\x13\n\x0bpinButtonL1\x18\t \x01(\x05\x12\x13\n\x0bpinButtonR1\x18\n \x01(\x05\x12\x13\n\x0bpinButtonL2\x18\x0b \x01(\x05\x12\x13\n\x0bpinButtonR2\x18\x0c \x01(\x05\x12\x13\n\x0bpinButtonS1\x18\r \x01(\x05\x12\x13\n\x0bpinButtonS2\x18\x0e \x01(\x05\x12\x13\n\x0bpinButtonL3\x18\x0f \x01(\x05\x12\x13\n\x0bpinButtonR3\x18\x10 \x01(\x05\x12\x13\n\x0bpinButtonA1\x18\x11 \x01(\x05\x12\x13\n\x0bpinButtonA2\x18\x12 \x01(\x05\x12\x13\n\x0bpinButtonFn\x18\x13 \x01(\x05\"\xc0\x01\n\x16\x41lternativePinMappings\x12\x13\n\x0bpinButtonB1\x18\x01 \x01(\x05\x12\x13\n\x0bpinButtonB2\x18\x02 \x01(\x05\x12\x13\n\x0bpinButtonB3\x18\x03 \x01(\x05\x12\x13\n\x0bpinButtonB4\x18\x04 \x01(\x05\x12\x13\n\x0bpinButtonL1\x18\x05 \x01(\x05\x12\x13\n\x0bpinButtonR1\x18\x06 \x01(\x05\x12\x13\n\x0bpinButtonL2\x18\x07 \x01(\x05\x12\x13\n\x0bpinButtonR2\x18\x08 \x01(\x05\"P\n\x0eProfileOptions\x12>\n\x16\x61lternativePinMappings\x18\x01 \x03(\x0b\x32\x17.AlternativePinMappingsB\x05\x92?\x02\x10\x03\"\xd6\x03\n\x0e\x44isplayOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08i2cBlock\x18\x02 \x01(\x05\x12\x11\n\ti2cSDAPin\x18\x03 \x01(\x05\x12\x11\n\ti2cSCLPin\x18\x04 \x01(\x05\x12\x12\n\ni2cAddress\x18\x05 \x01(\x05\x12\x10\n\x08i2cSpeed\x18\x06 \x01(\x05\x12#\n\x0c\x62uttonLayout\x18\x07 \x01(\x0e\x32\r.ButtonLayout\x12-\n\x11\x62uttonLayoutRight\x18\x08 \x01(\x0e\x32\x12.ButtonLayoutRight\x12=\n\x19\x62uttonLayoutCustomOptions\x18\t \x01(\x0b\x32\x1a.ButtonLayoutCustomOptions\x12\x1f\n\nsplashMode\x18\n \x01(\x0e\x32\x0b.SplashMode\x12#\n\x0csplashChoice\x18\x0b \x01(\x0e\x32\r.SplashChoice\x12\x16\n\x0esplashDuration\x18\x0c \x01(\x05\x12\x1b\n\x0bsplashImage\x18\r \x01(\x0c\x42\x06\x92?\x03\x08\x80\x08\x12\x0c\n\x04size\x18\x0e \x01(\x05\x12\x0c\n\x04\x66lip\x18\x0f \x01(\x05\x12\x0e\n\x06invert\x18\x10 \x01(\x08\x12\x1b\n\x13\x64isplaySaverTimeout\x18\x11 \x01(\x05\"\xe0\x04\n\nLEDOptions\x12\x0f\n\x07\x64\x61taPin\x18\x01 \x01(\x05\x12#\n\tledFormat\x18\x02 \x01(\x0e\x32\x10.LEDFormat_Proto\x12 \n\tledLayout\x18\x03 \x01(\x0e\x32\r.ButtonLayout\x12\x15\n\rledsPerButton\x18\x04 \x01(\r\x12\x19\n\x11\x62rightnessMaximum\x18\x05 \x01(\r\x12\x17\n\x0f\x62rightnessSteps\x18\x06 \x01(\r\x12\x0f\n\x07indexUp\x18\x07 \x01(\x05\x12\x11\n\tindexDown\x18\x08 \x01(\x05\x12\x11\n\tindexLeft\x18\t \x01(\x05\x12\x12\n\nindexRight\x18\n \x01(\x05\x12\x0f\n\x07indexB1\x18\x0b \x01(\x05\x12\x0f\n\x07indexB2\x18\x0c \x01(\x05\x12\x0f\n\x07indexB3\x18\r \x01(\x05\x12\x0f\n\x07indexB4\x18\x0e \x01(\x05\x12\x0f\n\x07indexL1\x18\x0f \x01(\x05\x12\x0f\n\x07indexR1\x18\x10 \x01(\x05\x12\x0f\n\x07indexL2\x18\x11 \x01(\x05\x12\x0f\n\x07indexR2\x18\x12 \x01(\x05\x12\x0f\n\x07indexS1\x18\x13 \x01(\x05\x12\x0f\n\x07indexS2\x18\x14 \x01(\x05\x12\x0f\n\x07indexL3\x18\x15 \x01(\x05\x12\x0f\n\x07indexR3\x18\x16 \x01(\x05\x12\x0f\n\x07indexA1\x18\x17 \x01(\x05\x12\x0f\n\x07indexA2\x18\x18 \x01(\x05\x12\x1b\n\x08pledType\x18\x19 \x01(\x0e\x32\t.PLEDType\x12\x10\n\x08pledPin1\x18\x1a \x01(\x05\x12\x10\n\x08pledPin2\x18\x1b \x01(\x05\x12\x10\n\x08pledPin3\x18\x1c \x01(\x05\x12\x10\n\x08pledPin4\x18\x1d \x01(\x05\x12\x11\n\tpledColor\x18\x1e \x01(\r\"\xa2\t\n\x16\x41nimationOptions_Proto\x12\x1a\n\x12\x62\x61seAnimationIndex\x18\x01 \x01(\r\x12\x12\n\nbrightness\x18\x02 \x01(\r\x12\x18\n\x10staticColorIndex\x18\x03 \x01(\r\x12\x18\n\x10\x62uttonColorIndex\x18\x04 \x01(\r\x12\x16\n\x0e\x63haseCycleTime\x18\x05 \x01(\x05\x12\x18\n\x10rainbowCycleTime\x18\x06 \x01(\x05\x12\x12\n\nthemeIndex\x18\x07 \x01(\r\x12\x16\n\x0ehasCustomTheme\x18\x08 \x01(\x08\x12\x15\n\rcustomThemeUp\x18\t \x01(\r\x12\x17\n\x0f\x63ustomThemeDown\x18\n \x01(\r\x12\x17\n\x0f\x63ustomThemeLeft\x18\x0b \x01(\r\x12\x18\n\x10\x63ustomThemeRight\x18\x0c \x01(\r\x12\x15\n\rcustomThemeB1\x18\r \x01(\r\x12\x15\n\rcustomThemeB2\x18\x0e \x01(\r\x12\x15\n\rcustomThemeB3\x18\x0f \x01(\r\x12\x15\n\rcustomThemeB4\x18\x10 \x01(\r\x12\x15\n\rcustomThemeL1\x18\x11 \x01(\r\x12\x15\n\rcustomThemeR1\x18\x12 \x01(\r\x12\x15\n\rcustomThemeL2\x18\x13 \x01(\r\x12\x15\n\rcustomThemeR2\x18\x14 \x01(\r\x12\x15\n\rcustomThemeS1\x18\x15 \x01(\r\x12\x15\n\rcustomThemeS2\x18\x16 \x01(\r\x12\x15\n\rcustomThemeL3\x18\x17 \x01(\r\x12\x15\n\rcustomThemeR3\x18\x18 \x01(\r\x12\x15\n\rcustomThemeA1\x18\x19 \x01(\r\x12\x15\n\rcustomThemeA2\x18\x1a \x01(\r\x12\x1c\n\x14\x63ustomThemeUpPressed\x18\x1b \x01(\r\x12\x1e\n\x16\x63ustomThemeDownPressed\x18\x1c \x01(\r\x12\x1e\n\x16\x63ustomThemeLeftPressed\x18\x1d \x01(\r\x12\x1f\n\x17\x63ustomThemeRightPressed\x18\x1e \x01(\r\x12\x1c\n\x14\x63ustomThemeB1Pressed\x18\x1f \x01(\r\x12\x1c\n\x14\x63ustomThemeB2Pressed\x18 \x01(\r\x12\x1c\n\x14\x63ustomThemeB3Pressed\x18! \x01(\r\x12\x1c\n\x14\x63ustomThemeB4Pressed\x18\" \x01(\r\x12\x1c\n\x14\x63ustomThemeL1Pressed\x18# \x01(\r\x12\x1c\n\x14\x63ustomThemeR1Pressed\x18$ \x01(\r\x12\x1c\n\x14\x63ustomThemeL2Pressed\x18% \x01(\r\x12\x1c\n\x14\x63ustomThemeR2Pressed\x18& \x01(\r\x12\x1c\n\x14\x63ustomThemeS1Pressed\x18\' \x01(\r\x12\x1c\n\x14\x63ustomThemeS2Pressed\x18( \x01(\r\x12\x1c\n\x14\x63ustomThemeL3Pressed\x18) \x01(\r\x12\x1c\n\x14\x63ustomThemeR3Pressed\x18* \x01(\r\x12\x1c\n\x14\x63ustomThemeA1Pressed\x18+ \x01(\r\x12\x1c\n\x14\x63ustomThemeA2Pressed\x18, \x01(\r\":\n\x14\x42ootselButtonOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\tbuttonMap\x18\x02 \x01(\r\"C\n\x11OnBoardLedOptions\x12\x1d\n\x04mode\x18\x01 \x01(\x0e\x32\x0f.OnBoardLedMode\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\"\x83\x01\n\rAnalogOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x15\n\ranalogAdcPinX\x18\x02 \x01(\x05\x12\x15\n\ranalogAdcPinY\x18\x03 \x01(\x05\x12\x1a\n\x12\x66orced_circularity\x18\x04 \x01(\x08\x12\x17\n\x0f\x61nalog_deadzone\x18\x05 \x01(\r\"\xbe\x03\n\x0cTurboOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\tbuttonPin\x18\x02 \x01(\x05\x12\x0e\n\x06ledPin\x18\x03 \x01(\x05\x12\x11\n\tshotCount\x18\x04 \x01(\r\x12\x14\n\x0cshmupDialPin\x18\x05 \x01(\x05\x12\x18\n\x10shmupModeEnabled\x18\x06 \x01(\x08\x12\x16\n\x0eshmupAlwaysOn1\x18\x07 \x01(\r\x12\x16\n\x0eshmupAlwaysOn2\x18\x08 \x01(\r\x12\x16\n\x0eshmupAlwaysOn3\x18\t \x01(\r\x12\x16\n\x0eshmupAlwaysOn4\x18\n \x01(\r\x12\x14\n\x0cshmupBtn1Pin\x18\x0b \x01(\x05\x12\x14\n\x0cshmupBtn2Pin\x18\x0c \x01(\x05\x12\x14\n\x0cshmupBtn3Pin\x18\r \x01(\x05\x12\x14\n\x0cshmupBtn4Pin\x18\x0e \x01(\x05\x12\x15\n\rshmupBtnMask1\x18\x0f \x01(\r\x12\x15\n\rshmupBtnMask2\x18\x10 \x01(\r\x12\x15\n\rshmupBtnMask3\x18\x11 \x01(\r\x12\x15\n\rshmupBtnMask4\x18\x12 \x01(\r\x12#\n\x0cshmupMixMode\x18\x13 \x01(\x0e\x32\r.ShmupMixMode\">\n\rSliderOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\r\n\x05pinLS\x18\x02 \x01(\x05\x12\r\n\x05pinRS\x18\x03 \x01(\x05\"\x9c\x01\n\x11SOCDSliderOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0e\n\x06pinOne\x18\x02 \x01(\x05\x12\x0e\n\x06pinTwo\x18\x03 \x01(\x05\x12\x1e\n\x0bmodeDefault\x18\x04 \x01(\x0e\x32\t.SOCDMode\x12\x1a\n\x07modeOne\x18\x05 \x01(\x0e\x32\t.SOCDMode\x12\x1a\n\x07modeTwo\x18\x06 \x01(\x0e\x32\t.SOCDMode\"\x93\x01\n\x0eReverseOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\tbuttonPin\x18\x02 \x01(\x05\x12\x0e\n\x06ledPin\x18\x03 \x01(\x05\x12\x10\n\x08\x61\x63tionUp\x18\x04 \x01(\r\x12\x12\n\nactionDown\x18\x05 \x01(\r\x12\x12\n\nactionLeft\x18\x06 \x01(\r\x12\x13\n\x0b\x61\x63tionRight\x18\x07 \x01(\r\"\x85\x01\n\x14\x41nalogADS1219Options\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08i2cBlock\x18\x02 \x01(\x05\x12\x11\n\ti2cSDAPin\x18\x03 \x01(\x05\x12\x11\n\ti2cSCLPin\x18\x04 \x01(\x05\x12\x12\n\ni2cAddress\x18\x05 \x01(\x05\x12\x10\n\x08i2cSpeed\x18\x06 \x01(\x05\"\xb3\x01\n\x16\x44ualDirectionalOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\r\n\x05upPin\x18\x02 \x01(\x05\x12\x0f\n\x07\x64ownPin\x18\x03 \x01(\x05\x12\x0f\n\x07leftPin\x18\x04 \x01(\x05\x12\x10\n\x08rightPin\x18\x05 \x01(\x05\x12\x1b\n\x08\x64padMode\x18\x06 \x01(\x0e\x32\t.DpadMode\x12\x13\n\x0b\x63ombineMode\x18\x07 \x01(\r\x12\x13\n\x0b\x66ourWayMode\x18\x08 \x01(\x08\"\xf6\x02\n\x0bTiltOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08tilt1Pin\x18\x02 \x01(\x05\x12\x10\n\x08tilt2Pin\x18\x03 \x01(\x05\x12\x17\n\x0ftiltFunctionPin\x18\x04 \x01(\x05\x12\x1b\n\x13tiltLeftAnalogUpPin\x18\x05 \x01(\x05\x12\x1d\n\x15tiltLeftAnalogDownPin\x18\x06 \x01(\x05\x12\x1d\n\x15tiltLeftAnalogLeftPin\x18\x07 \x01(\x05\x12\x1e\n\x16tiltLeftAnalogRightPin\x18\x08 \x01(\x05\x12\x1c\n\x14tiltRightAnalogUpPin\x18\t \x01(\x05\x12\x1e\n\x16tiltRightAnalogDownPin\x18\n \x01(\x05\x12\x1e\n\x16tiltRightAnalogLeftPin\x18\x0b \x01(\x05\x12\x1f\n\x17tiltRightAnalogRightPin\x18\x0c \x01(\x05\x12\x1f\n\x0ctiltSOCDMode\x18\r \x01(\x0e\x32\t.SOCDMode\"=\n\rBuzzerOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03pin\x18\x02 \x01(\x05\x12\x0e\n\x06volume\x18\x03 \x01(\r\"E\n\x12\x45xtraButtonOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03pin\x18\x02 \x01(\x05\x12\x11\n\tbuttonMap\x18\x03 \x01(\r\"6\n\x13PlayerNumberOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0e\n\x06number\x18\x02 \x01(\r\"\x98\x02\n\nPS4Options\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x15\n\x06serial\x18\x02 \x01(\x0c\x42\x05\x92?\x02\x08\x10\x12\x19\n\tsignature\x18\x03 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x02\x12\x14\n\x04rsaN\x18\x04 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x02\x12\x13\n\x04rsaE\x18\x05 \x01(\x0c\x42\x05\x92?\x02\x08\x04\x12\x14\n\x04rsaD\x18\x06 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x02\x12\x14\n\x04rsaP\x18\x07 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x14\n\x04rsaQ\x18\x08 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x15\n\x05rsaDP\x18\t \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x15\n\x05rsaDQ\x18\n \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x15\n\x05rsaQP\x18\x0b \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x15\n\x05rsaRN\x18\x0c \x01(\x0c\x42\x06\x92?\x03\x08\x80\x02\"g\n\nWiiOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08i2cBlock\x18\x02 \x01(\x05\x12\x11\n\ti2cSDAPin\x18\x03 \x01(\x05\x12\x11\n\ti2cSCLPin\x18\x04 \x01(\x05\x12\x10\n\x08i2cSpeed\x18\x05 \x01(\x05\"S\n\x0bSNESOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08\x63lockPin\x18\x02 \x01(\x05\x12\x10\n\x08latchPin\x18\x03 \x01(\x05\x12\x0f\n\x07\x64\x61taPin\x18\x04 \x01(\x05\"[\n\x13KeyboardHostOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08pinDplus\x18\x02 \x01(\x05\x12!\n\x07mapping\x18\x03 \x01(\x0b\x32\x10.KeyboardMapping\"\x94\x01\n\x10\x46ocusModeOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03pin\x18\x02 \x01(\x05\x12\x16\n\x0e\x62uttonLockMask\x18\x03 \x01(\x05\x12\x17\n\x0foledLockEnabled\x18\x04 \x01(\x08\x12\x16\n\x0ergbLockEnabled\x18\x05 \x01(\x08\x12\x19\n\x11\x62uttonLockEnabled\x18\x06 \x01(\x08\"\xa6\x06\n\x0c\x41\x64\x64onOptions\x12\x33\n\x14\x62ootselButtonOptions\x18\x01 \x01(\x0b\x32\x15.BootselButtonOptions\x12-\n\x11onBoardLedOptions\x18\x02 \x01(\x0b\x32\x12.OnBoardLedOptions\x12%\n\ranalogOptions\x18\x03 \x01(\x0b\x32\x0e.AnalogOptions\x12#\n\x0cturboOptions\x18\x04 \x01(\x0b\x32\r.TurboOptions\x12%\n\rsliderOptions\x18\x05 \x01(\x0b\x32\x0e.SliderOptions\x12\'\n\x0ereverseOptions\x18\x06 \x01(\x0b\x32\x0f.ReverseOptions\x12\x33\n\x14\x61nalogADS1219Options\x18\x07 \x01(\x0b\x32\x15.AnalogADS1219Options\x12\x37\n\x16\x64ualDirectionalOptions\x18\x08 \x01(\x0b\x32\x17.DualDirectionalOptions\x12%\n\rbuzzerOptions\x18\t \x01(\x0b\x32\x0e.BuzzerOptions\x12/\n\x12\x65xtraButtonOptions\x18\n \x01(\x0b\x32\x13.ExtraButtonOptions\x12\x31\n\x13playerNumberOptions\x18\x0b \x01(\x0b\x32\x14.PlayerNumberOptions\x12\'\n\nps4Options\x18\x0c \x01(\x0b\x32\x0b.PS4OptionsB\x06\x92?\x03\xf0\x01\x01\x12\x1f\n\nwiiOptions\x18\r \x01(\x0b\x32\x0b.WiiOptions\x12-\n\x11socdSliderOptions\x18\x0e \x01(\x0b\x32\x12.SOCDSliderOptions\x12!\n\x0bsnesOptions\x18\x0f \x01(\x0b\x32\x0c.SNESOptions\x12+\n\x10\x66ocusModeOptions\x18\x10 \x01(\x0b\x32\x11.FocusModeOptions\x12\x31\n\x13keyboardHostOptions\x18\x11 \x01(\x0b\x32\x14.KeyboardHostOptions\x12!\n\x0btiltOptions\x18\x12 \x01(\x0b\x32\x0c.TiltOptions\"\xbf\x03\n\x06\x43onfig\x12\x1b\n\x0c\x62oardVersion\x18\x01 \x01(\tB\x05\x92?\x02p\x1f\x12\'\n\x0egamepadOptions\x18\x02 \x01(\x0b\x32\x0f.GamepadOptions\x12%\n\rhotkeyOptions\x18\x03 \x01(\x0b\x32\x0e.HotkeyOptions\x12!\n\x0bpinMappings\x18\x04 \x01(\x0b\x32\x0c.PinMappings\x12)\n\x0fkeyboardMapping\x18\x05 \x01(\x0b\x32\x10.KeyboardMapping\x12\'\n\x0e\x64isplayOptions\x18\x06 \x01(\x0b\x32\x0f.DisplayOptions\x12\x1f\n\nledOptions\x18\x07 \x01(\x0b\x32\x0b.LEDOptions\x12\x31\n\x10\x61nimationOptions\x18\x08 \x01(\x0b\x32\x17.AnimationOptions_Proto\x12#\n\x0c\x61\x64\x64onOptions\x18\t \x01(\x0b\x32\r.AddonOptions\x12/\n\x12\x66orcedSetupOptions\x18\n \x01(\x0b\x32\x13.ForcedSetupOptions\x12\'\n\x0eprofileOptions\x18\x0b \x01(\x0b\x32\x0f.ProfileOptions') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x63onfig.proto\x1a\x0cnanopb.proto\x1a\x0b\x65nums.proto\"\xa0\x02\n\x0eGamepadOptions\x12\x1d\n\tinputMode\x18\x01 \x01(\x0e\x32\n.InputMode\x12\x1b\n\x08\x64padMode\x18\x02 \x01(\x0e\x32\t.DpadMode\x12\x1b\n\x08socdMode\x18\x03 \x01(\x0e\x32\t.SOCDMode\x12\x13\n\x0binvertXAxis\x18\x04 \x01(\x08\x12\x13\n\x0binvertYAxis\x18\x05 \x01(\x08\x12\x1b\n\x13switchTpShareForDs4\x18\x06 \x01(\x08\x12\x13\n\x0blockHotkeys\x18\x07 \x01(\x08\x12\x13\n\x0b\x66ourWayMode\x18\x08 \x01(\x08\x12\x15\n\rprofileNumber\x18\t \x01(\r\x12-\n\x11ps4ControllerType\x18\n \x01(\x0e\x32\x12.PS4ControllerType\"\x8a\x03\n\x0fKeyboardMapping\x12\x11\n\tkeyDpadUp\x18\x01 \x01(\r\x12\x13\n\x0bkeyDpadDown\x18\x02 \x01(\r\x12\x13\n\x0bkeyDpadLeft\x18\x03 \x01(\r\x12\x14\n\x0ckeyDpadRight\x18\x04 \x01(\r\x12\x13\n\x0bkeyButtonB1\x18\x05 \x01(\r\x12\x13\n\x0bkeyButtonB2\x18\x06 \x01(\r\x12\x13\n\x0bkeyButtonB3\x18\x07 \x01(\r\x12\x13\n\x0bkeyButtonB4\x18\x08 \x01(\r\x12\x13\n\x0bkeyButtonL1\x18\t \x01(\r\x12\x13\n\x0bkeyButtonR1\x18\n \x01(\r\x12\x13\n\x0bkeyButtonL2\x18\x0b \x01(\r\x12\x13\n\x0bkeyButtonR2\x18\x0c \x01(\r\x12\x13\n\x0bkeyButtonS1\x18\r \x01(\r\x12\x13\n\x0bkeyButtonS2\x18\x0e \x01(\r\x12\x13\n\x0bkeyButtonL3\x18\x0f \x01(\r\x12\x13\n\x0bkeyButtonR3\x18\x10 \x01(\r\x12\x13\n\x0bkeyButtonA1\x18\x11 \x01(\r\x12\x13\n\x0bkeyButtonA2\x18\x12 \x01(\r\"e\n\x0bHotkeyEntry\x12\x10\n\x08\x64padMask\x18\x01 \x01(\r\x12\x1e\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\x0e.GamepadHotkey\x12\x13\n\x0b\x62uttonsMask\x18\x03 \x01(\r\x12\x0f\n\x07\x61uxMask\x18\x04 \x01(\r\"\x8f\x03\n\rHotkeyOptions\x12\x1e\n\x08hotkey01\x18\x01 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey02\x18\x02 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey03\x18\x03 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey04\x18\x04 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey05\x18\x05 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey06\x18\x06 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey07\x18\x07 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey08\x18\x08 \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey09\x18\t \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey10\x18\n \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey11\x18\x0b \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey12\x18\x0c \x01(\x0b\x32\x0c.HotkeyEntry\"4\n\x12\x46orcedSetupOptions\x12\x1e\n\x04mode\x18\x01 \x01(\x0e\x32\x10.ForcedSetupMode\"g\n\x18\x42uttonLayoutParamsCommon\x12\x0e\n\x06startX\x18\x01 \x01(\x05\x12\x0e\n\x06startY\x18\x02 \x01(\x05\x12\x14\n\x0c\x62uttonRadius\x18\x03 \x01(\x05\x12\x15\n\rbuttonPadding\x18\x04 \x01(\x05\"b\n\x16\x42uttonLayoutParamsLeft\x12\x1d\n\x06layout\x18\x01 \x01(\x0e\x32\r.ButtonLayout\x12)\n\x06\x63ommon\x18\x02 \x01(\x0b\x32\x19.ButtonLayoutParamsCommon\"h\n\x17\x42uttonLayoutParamsRight\x12\"\n\x06layout\x18\x01 \x01(\x0e\x32\x12.ButtonLayoutRight\x12)\n\x06\x63ommon\x18\x02 \x01(\x0b\x32\x19.ButtonLayoutParamsCommon\"w\n\x19\x42uttonLayoutCustomOptions\x12+\n\nparamsLeft\x18\x01 \x01(\x0b\x32\x17.ButtonLayoutParamsLeft\x12-\n\x0bparamsRight\x18\x02 \x01(\x0b\x32\x18.ButtonLayoutParamsRight\"\x9b\x03\n\x0bPinMappings\x12\x11\n\tpinDpadUp\x18\x01 \x01(\x05\x12\x13\n\x0bpinDpadDown\x18\x02 \x01(\x05\x12\x13\n\x0bpinDpadLeft\x18\x03 \x01(\x05\x12\x14\n\x0cpinDpadRight\x18\x04 \x01(\x05\x12\x13\n\x0bpinButtonB1\x18\x05 \x01(\x05\x12\x13\n\x0bpinButtonB2\x18\x06 \x01(\x05\x12\x13\n\x0bpinButtonB3\x18\x07 \x01(\x05\x12\x13\n\x0bpinButtonB4\x18\x08 \x01(\x05\x12\x13\n\x0bpinButtonL1\x18\t \x01(\x05\x12\x13\n\x0bpinButtonR1\x18\n \x01(\x05\x12\x13\n\x0bpinButtonL2\x18\x0b \x01(\x05\x12\x13\n\x0bpinButtonR2\x18\x0c \x01(\x05\x12\x13\n\x0bpinButtonS1\x18\r \x01(\x05\x12\x13\n\x0bpinButtonS2\x18\x0e \x01(\x05\x12\x13\n\x0bpinButtonL3\x18\x0f \x01(\x05\x12\x13\n\x0bpinButtonR3\x18\x10 \x01(\x05\x12\x13\n\x0bpinButtonA1\x18\x11 \x01(\x05\x12\x13\n\x0bpinButtonA2\x18\x12 \x01(\x05\x12\x13\n\x0bpinButtonFn\x18\x13 \x01(\x05\"\xd6\x06\n\x0cGpioMappings\x12\x1a\n\x05pin00\x18\x01 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin01\x18\x02 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin02\x18\x03 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin03\x18\x04 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin04\x18\x05 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin05\x18\x06 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin06\x18\x07 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin07\x18\x08 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin08\x18\t \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin09\x18\n \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin10\x18\x0b \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin11\x18\x0c \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin12\x18\r \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin13\x18\x0e \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin14\x18\x0f \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin15\x18\x10 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin16\x18\x11 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin17\x18\x12 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin18\x18\x13 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin19\x18\x14 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin20\x18\x15 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin21\x18\x16 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin22\x18\x17 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin23\x18\x18 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin24\x18\x19 \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin25\x18\x1a \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin26\x18\x1b \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin27\x18\x1c \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin28\x18\x1d \x01(\x0e\x32\x0b.GpioAction\x12\x1a\n\x05pin29\x18\x1e \x01(\x0e\x32\x0b.GpioAction\"\x93\x02\n\x16\x41lternativePinMappings\x12\x13\n\x0bpinButtonB1\x18\x01 \x01(\x05\x12\x13\n\x0bpinButtonB2\x18\x02 \x01(\x05\x12\x13\n\x0bpinButtonB3\x18\x03 \x01(\x05\x12\x13\n\x0bpinButtonB4\x18\x04 \x01(\x05\x12\x13\n\x0bpinButtonL1\x18\x05 \x01(\x05\x12\x13\n\x0bpinButtonR1\x18\x06 \x01(\x05\x12\x13\n\x0bpinButtonL2\x18\x07 \x01(\x05\x12\x13\n\x0bpinButtonR2\x18\x08 \x01(\x05\x12\x11\n\tpinDpadUp\x18\t \x01(\x05\x12\x13\n\x0bpinDpadDown\x18\n \x01(\x05\x12\x13\n\x0bpinDpadLeft\x18\x0b \x01(\x05\x12\x14\n\x0cpinDpadRight\x18\x0c \x01(\x05\"P\n\x0eProfileOptions\x12>\n\x16\x61lternativePinMappings\x18\x01 \x03(\x0b\x32\x17.AlternativePinMappingsB\x05\x92?\x02\x10\x03\"\xf4\x03\n\x0e\x44isplayOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08i2cBlock\x18\x02 \x01(\x05\x12\x11\n\ti2cSDAPin\x18\x03 \x01(\x05\x12\x11\n\ti2cSCLPin\x18\x04 \x01(\x05\x12\x12\n\ni2cAddress\x18\x05 \x01(\x05\x12\x10\n\x08i2cSpeed\x18\x06 \x01(\x05\x12#\n\x0c\x62uttonLayout\x18\x07 \x01(\x0e\x32\r.ButtonLayout\x12-\n\x11\x62uttonLayoutRight\x18\x08 \x01(\x0e\x32\x12.ButtonLayoutRight\x12=\n\x19\x62uttonLayoutCustomOptions\x18\t \x01(\x0b\x32\x1a.ButtonLayoutCustomOptions\x12\x1f\n\nsplashMode\x18\n \x01(\x0e\x32\x0b.SplashMode\x12#\n\x0csplashChoice\x18\x0b \x01(\x0e\x32\r.SplashChoice\x12\x16\n\x0esplashDuration\x18\x0c \x01(\x05\x12\x1b\n\x0bsplashImage\x18\r \x01(\x0c\x42\x06\x92?\x03\x08\x80\x08\x12\x0c\n\x04size\x18\x0e \x01(\x05\x12\x0c\n\x04\x66lip\x18\x0f \x01(\x05\x12\x0e\n\x06invert\x18\x10 \x01(\x08\x12\x1b\n\x13\x64isplaySaverTimeout\x18\x11 \x01(\x05\x12\x1c\n\x14turnOffWhenSuspended\x18\x12 \x01(\x08\"\xfe\x04\n\nLEDOptions\x12\x0f\n\x07\x64\x61taPin\x18\x01 \x01(\x05\x12#\n\tledFormat\x18\x02 \x01(\x0e\x32\x10.LEDFormat_Proto\x12 \n\tledLayout\x18\x03 \x01(\x0e\x32\r.ButtonLayout\x12\x15\n\rledsPerButton\x18\x04 \x01(\r\x12\x19\n\x11\x62rightnessMaximum\x18\x05 \x01(\r\x12\x17\n\x0f\x62rightnessSteps\x18\x06 \x01(\r\x12\x0f\n\x07indexUp\x18\x07 \x01(\x05\x12\x11\n\tindexDown\x18\x08 \x01(\x05\x12\x11\n\tindexLeft\x18\t \x01(\x05\x12\x12\n\nindexRight\x18\n \x01(\x05\x12\x0f\n\x07indexB1\x18\x0b \x01(\x05\x12\x0f\n\x07indexB2\x18\x0c \x01(\x05\x12\x0f\n\x07indexB3\x18\r \x01(\x05\x12\x0f\n\x07indexB4\x18\x0e \x01(\x05\x12\x0f\n\x07indexL1\x18\x0f \x01(\x05\x12\x0f\n\x07indexR1\x18\x10 \x01(\x05\x12\x0f\n\x07indexL2\x18\x11 \x01(\x05\x12\x0f\n\x07indexR2\x18\x12 \x01(\x05\x12\x0f\n\x07indexS1\x18\x13 \x01(\x05\x12\x0f\n\x07indexS2\x18\x14 \x01(\x05\x12\x0f\n\x07indexL3\x18\x15 \x01(\x05\x12\x0f\n\x07indexR3\x18\x16 \x01(\x05\x12\x0f\n\x07indexA1\x18\x17 \x01(\x05\x12\x0f\n\x07indexA2\x18\x18 \x01(\x05\x12\x1b\n\x08pledType\x18\x19 \x01(\x0e\x32\t.PLEDType\x12\x10\n\x08pledPin1\x18\x1a \x01(\x05\x12\x10\n\x08pledPin2\x18\x1b \x01(\x05\x12\x10\n\x08pledPin3\x18\x1c \x01(\x05\x12\x10\n\x08pledPin4\x18\x1d \x01(\x05\x12\x11\n\tpledColor\x18\x1e \x01(\r\x12\x1c\n\x14turnOffWhenSuspended\x18\x1f \x01(\x08\"\xa2\t\n\x16\x41nimationOptions_Proto\x12\x1a\n\x12\x62\x61seAnimationIndex\x18\x01 \x01(\r\x12\x12\n\nbrightness\x18\x02 \x01(\r\x12\x18\n\x10staticColorIndex\x18\x03 \x01(\r\x12\x18\n\x10\x62uttonColorIndex\x18\x04 \x01(\r\x12\x16\n\x0e\x63haseCycleTime\x18\x05 \x01(\x05\x12\x18\n\x10rainbowCycleTime\x18\x06 \x01(\x05\x12\x12\n\nthemeIndex\x18\x07 \x01(\r\x12\x16\n\x0ehasCustomTheme\x18\x08 \x01(\x08\x12\x15\n\rcustomThemeUp\x18\t \x01(\r\x12\x17\n\x0f\x63ustomThemeDown\x18\n \x01(\r\x12\x17\n\x0f\x63ustomThemeLeft\x18\x0b \x01(\r\x12\x18\n\x10\x63ustomThemeRight\x18\x0c \x01(\r\x12\x15\n\rcustomThemeB1\x18\r \x01(\r\x12\x15\n\rcustomThemeB2\x18\x0e \x01(\r\x12\x15\n\rcustomThemeB3\x18\x0f \x01(\r\x12\x15\n\rcustomThemeB4\x18\x10 \x01(\r\x12\x15\n\rcustomThemeL1\x18\x11 \x01(\r\x12\x15\n\rcustomThemeR1\x18\x12 \x01(\r\x12\x15\n\rcustomThemeL2\x18\x13 \x01(\r\x12\x15\n\rcustomThemeR2\x18\x14 \x01(\r\x12\x15\n\rcustomThemeS1\x18\x15 \x01(\r\x12\x15\n\rcustomThemeS2\x18\x16 \x01(\r\x12\x15\n\rcustomThemeL3\x18\x17 \x01(\r\x12\x15\n\rcustomThemeR3\x18\x18 \x01(\r\x12\x15\n\rcustomThemeA1\x18\x19 \x01(\r\x12\x15\n\rcustomThemeA2\x18\x1a \x01(\r\x12\x1c\n\x14\x63ustomThemeUpPressed\x18\x1b \x01(\r\x12\x1e\n\x16\x63ustomThemeDownPressed\x18\x1c \x01(\r\x12\x1e\n\x16\x63ustomThemeLeftPressed\x18\x1d \x01(\r\x12\x1f\n\x17\x63ustomThemeRightPressed\x18\x1e \x01(\r\x12\x1c\n\x14\x63ustomThemeB1Pressed\x18\x1f \x01(\r\x12\x1c\n\x14\x63ustomThemeB2Pressed\x18 \x01(\r\x12\x1c\n\x14\x63ustomThemeB3Pressed\x18! \x01(\r\x12\x1c\n\x14\x63ustomThemeB4Pressed\x18\" \x01(\r\x12\x1c\n\x14\x63ustomThemeL1Pressed\x18# \x01(\r\x12\x1c\n\x14\x63ustomThemeR1Pressed\x18$ \x01(\r\x12\x1c\n\x14\x63ustomThemeL2Pressed\x18% \x01(\r\x12\x1c\n\x14\x63ustomThemeR2Pressed\x18& \x01(\r\x12\x1c\n\x14\x63ustomThemeS1Pressed\x18\' \x01(\r\x12\x1c\n\x14\x63ustomThemeS2Pressed\x18( \x01(\r\x12\x1c\n\x14\x63ustomThemeL3Pressed\x18) \x01(\r\x12\x1c\n\x14\x63ustomThemeR3Pressed\x18* \x01(\r\x12\x1c\n\x14\x63ustomThemeA1Pressed\x18+ \x01(\r\x12\x1c\n\x14\x63ustomThemeA2Pressed\x18, \x01(\r\":\n\x14\x42ootselButtonOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\tbuttonMap\x18\x02 \x01(\r\"C\n\x11OnBoardLedOptions\x12\x1d\n\x04mode\x18\x01 \x01(\x0e\x32\x0f.OnBoardLedMode\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\"\xe1\x02\n\rAnalogOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x16\n\x0e\x61nalogAdc1PinX\x18\x02 \x01(\x05\x12\x16\n\x0e\x61nalogAdc1PinY\x18\x03 \x01(\x05\x12\x1a\n\x12\x66orced_circularity\x18\x04 \x01(\x08\x12\x17\n\x0f\x61nalog_deadzone\x18\x05 \x01(\r\x12\x16\n\x0e\x61nalogAdc2PinX\x18\x06 \x01(\x05\x12\x16\n\x0e\x61nalogAdc2PinY\x18\x07 \x01(\x05\x12!\n\x0e\x61nalogAdc1Mode\x18\x08 \x01(\x0e\x32\t.DpadMode\x12!\n\x0e\x61nalogAdc2Mode\x18\t \x01(\x0e\x32\t.DpadMode\x12%\n\x10\x61nalogAdc1Invert\x18\n \x01(\x0e\x32\x0b.InvertMode\x12%\n\x10\x61nalogAdc2Invert\x18\x0b \x01(\x0e\x32\x0b.InvertMode\x12\x16\n\x0e\x61uto_calibrate\x18\x0c \x01(\x08\"\xbe\x03\n\x0cTurboOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\tbuttonPin\x18\x02 \x01(\x05\x12\x0e\n\x06ledPin\x18\x03 \x01(\x05\x12\x11\n\tshotCount\x18\x04 \x01(\r\x12\x14\n\x0cshmupDialPin\x18\x05 \x01(\x05\x12\x18\n\x10shmupModeEnabled\x18\x06 \x01(\x08\x12\x16\n\x0eshmupAlwaysOn1\x18\x07 \x01(\r\x12\x16\n\x0eshmupAlwaysOn2\x18\x08 \x01(\r\x12\x16\n\x0eshmupAlwaysOn3\x18\t \x01(\r\x12\x16\n\x0eshmupAlwaysOn4\x18\n \x01(\r\x12\x14\n\x0cshmupBtn1Pin\x18\x0b \x01(\x05\x12\x14\n\x0cshmupBtn2Pin\x18\x0c \x01(\x05\x12\x14\n\x0cshmupBtn3Pin\x18\r \x01(\x05\x12\x14\n\x0cshmupBtn4Pin\x18\x0e \x01(\x05\x12\x15\n\rshmupBtnMask1\x18\x0f \x01(\r\x12\x15\n\rshmupBtnMask2\x18\x10 \x01(\r\x12\x15\n\rshmupBtnMask3\x18\x11 \x01(\r\x12\x15\n\rshmupBtnMask4\x18\x12 \x01(\r\x12#\n\x0cshmupMixMode\x18\x13 \x01(\x0e\x32\r.ShmupMixMode\"\xcc\x01\n\rSliderOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x16\x64\x65precatedPinSliderOne\x18\x02 \x01(\x05\x12\x1e\n\x16\x64\x65precatedPinSliderTwo\x18\x03 \x01(\x05\x12$\n\x11\x64\x65precatedModeOne\x18\x04 \x01(\x0e\x32\t.DpadMode\x12$\n\x11\x64\x65precatedModeTwo\x18\x05 \x01(\x0e\x32\t.DpadMode\x12\x1e\n\x0bmodeDefault\x18\x06 \x01(\x0e\x32\t.DpadMode\"\xc4\x01\n\x11SOCDSliderOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x18\n\x10\x64\x65precatedPinOne\x18\x02 \x01(\x05\x12\x18\n\x10\x64\x65precatedPinTwo\x18\x03 \x01(\x05\x12\x1e\n\x0bmodeDefault\x18\x04 \x01(\x0e\x32\t.SOCDMode\x12$\n\x11\x64\x65precatedModeOne\x18\x05 \x01(\x0e\x32\t.SOCDMode\x12$\n\x11\x64\x65precatedModeTwo\x18\x06 \x01(\x0e\x32\t.SOCDMode\"\x93\x01\n\x0eReverseOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\tbuttonPin\x18\x02 \x01(\x05\x12\x0e\n\x06ledPin\x18\x03 \x01(\x05\x12\x10\n\x08\x61\x63tionUp\x18\x04 \x01(\r\x12\x12\n\nactionDown\x18\x05 \x01(\r\x12\x12\n\nactionLeft\x18\x06 \x01(\r\x12\x13\n\x0b\x61\x63tionRight\x18\x07 \x01(\r\"\x85\x01\n\x14\x41nalogADS1219Options\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08i2cBlock\x18\x02 \x01(\x05\x12\x11\n\ti2cSDAPin\x18\x03 \x01(\x05\x12\x11\n\ti2cSCLPin\x18\x04 \x01(\x05\x12\x12\n\ni2cAddress\x18\x05 \x01(\x05\x12\x10\n\x08i2cSpeed\x18\x06 \x01(\x05\"\xdb\x01\n\x16\x44ualDirectionalOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x17\n\x0f\x64\x65precatedUpPin\x18\x02 \x01(\x05\x12\x19\n\x11\x64\x65precatedDownPin\x18\x03 \x01(\x05\x12\x19\n\x11\x64\x65precatedLeftPin\x18\x04 \x01(\x05\x12\x1a\n\x12\x64\x65precatedRightPin\x18\x05 \x01(\x05\x12\x1b\n\x08\x64padMode\x18\x06 \x01(\x0e\x32\t.DpadMode\x12\x13\n\x0b\x63ombineMode\x18\x07 \x01(\r\x12\x13\n\x0b\x66ourWayMode\x18\x08 \x01(\x08\"\xd4\x04\n\x0bTiltOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08tilt1Pin\x18\x02 \x01(\x05\x12\x10\n\x08tilt2Pin\x18\x03 \x01(\x05\x12!\n\x19\x64\x65precatedTiltFunctionPin\x18\x04 \x01(\x05\x12\x1b\n\x13tiltLeftAnalogUpPin\x18\x05 \x01(\x05\x12\x1d\n\x15tiltLeftAnalogDownPin\x18\x06 \x01(\x05\x12\x1d\n\x15tiltLeftAnalogLeftPin\x18\x07 \x01(\x05\x12\x1e\n\x16tiltLeftAnalogRightPin\x18\x08 \x01(\x05\x12\x1c\n\x14tiltRightAnalogUpPin\x18\t \x01(\x05\x12\x1e\n\x16tiltRightAnalogDownPin\x18\n \x01(\x05\x12\x1e\n\x16tiltRightAnalogLeftPin\x18\x0b \x01(\x05\x12\x1f\n\x17tiltRightAnalogRightPin\x18\x0c \x01(\x05\x12\x1f\n\x0ctiltSOCDMode\x18\r \x01(\x0e\x32\t.SOCDMode\x12\x18\n\x10\x66\x61\x63torTilt1LeftX\x18\x0e \x01(\x05\x12\x18\n\x10\x66\x61\x63torTilt1LeftY\x18\x0f \x01(\x05\x12\x19\n\x11\x66\x61\x63torTilt1RightX\x18\x10 \x01(\x05\x12\x19\n\x11\x66\x61\x63torTilt1RightY\x18\x11 \x01(\x05\x12\x18\n\x10\x66\x61\x63torTilt2LeftX\x18\x12 \x01(\x05\x12\x18\n\x10\x66\x61\x63torTilt2LeftY\x18\x13 \x01(\x05\x12\x19\n\x11\x66\x61\x63torTilt2RightX\x18\x14 \x01(\x05\x12\x19\n\x11\x66\x61\x63torTilt2RightY\x18\x15 \x01(\x05\"=\n\rBuzzerOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03pin\x18\x02 \x01(\x05\x12\x0e\n\x06volume\x18\x03 \x01(\r\"E\n\x12\x45xtraButtonOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03pin\x18\x02 \x01(\x05\x12\x11\n\tbuttonMap\x18\x03 \x01(\r\"6\n\x13PlayerNumberOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0e\n\x06number\x18\x02 \x01(\r\"\x98\x02\n\nPS4Options\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x15\n\x06serial\x18\x02 \x01(\x0c\x42\x05\x92?\x02\x08\x10\x12\x19\n\tsignature\x18\x03 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x02\x12\x14\n\x04rsaN\x18\x04 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x02\x12\x13\n\x04rsaE\x18\x05 \x01(\x0c\x42\x05\x92?\x02\x08\x04\x12\x14\n\x04rsaD\x18\x06 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x02\x12\x14\n\x04rsaP\x18\x07 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x14\n\x04rsaQ\x18\x08 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x15\n\x05rsaDP\x18\t \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x15\n\x05rsaDQ\x18\n \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x15\n\x05rsaQP\x18\x0b \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\x12\x15\n\x05rsaRN\x18\x0c \x01(\x0c\x42\x06\x92?\x03\x08\x80\x02\"H\n\x14PSPassthroughOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08pinDplus\x18\x02 \x01(\x05\x12\r\n\x05pin5V\x18\x03 \x01(\x05\"\xcb\x11\n\nWiiOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08i2cBlock\x18\x02 \x01(\x05\x12\x11\n\ti2cSDAPin\x18\x03 \x01(\x05\x12\x11\n\ti2cSCLPin\x18\x04 \x01(\x05\x12\x10\n\x08i2cSpeed\x18\x05 \x01(\x05\x12\x32\n\x0b\x63ontrollers\x18\x06 \x01(\x0b\x32\x1d.WiiOptions.ControllerOptions\x1a\x42\n\nAnalogAxis\x12\x10\n\x08\x61xisType\x18\x01 \x01(\x05\x12\x10\n\x08minRange\x18\x02 \x01(\x05\x12\x10\n\x08maxRange\x18\x03 \x01(\x05\x1aT\n\x0cStickOptions\x12!\n\x01x\x18\x01 \x01(\x0b\x32\x16.WiiOptions.AnalogAxis\x12!\n\x01y\x18\x02 \x01(\x0b\x32\x16.WiiOptions.AnalogAxis\x1a[\n\x0eNunchukOptions\x12\x0f\n\x07\x62uttonC\x18\x01 \x01(\x05\x12\x0f\n\x07\x62uttonZ\x18\x02 \x01(\x05\x12\'\n\x05stick\x18\x03 \x01(\x0b\x32\x18.WiiOptions.StickOptions\x1a\xdc\x03\n\x0e\x43lassicOptions\x12\x0f\n\x07\x62uttonA\x18\x01 \x01(\x05\x12\x0f\n\x07\x62uttonB\x18\x02 \x01(\x05\x12\x0f\n\x07\x62uttonX\x18\x03 \x01(\x05\x12\x0f\n\x07\x62uttonY\x18\x04 \x01(\x05\x12\x0f\n\x07\x62uttonL\x18\x05 \x01(\x05\x12\x10\n\x08\x62uttonZL\x18\x06 \x01(\x05\x12\x0f\n\x07\x62uttonR\x18\x07 \x01(\x05\x12\x10\n\x08\x62uttonZR\x18\x08 \x01(\x05\x12\x13\n\x0b\x62uttonMinus\x18\t \x01(\x05\x12\x12\n\nbuttonPlus\x18\n \x01(\x05\x12\x12\n\nbuttonHome\x18\x0b \x01(\x05\x12\x10\n\x08\x62uttonUp\x18\x0c \x01(\x05\x12\x12\n\nbuttonDown\x18\r \x01(\x05\x12\x12\n\nbuttonLeft\x18\x0e \x01(\x05\x12\x13\n\x0b\x62uttonRight\x18\x0f \x01(\x05\x12,\n\nrightStick\x18\x11 \x01(\x0b\x32\x18.WiiOptions.StickOptions\x12+\n\tleftStick\x18\x10 \x01(\x0b\x32\x18.WiiOptions.StickOptions\x12+\n\x0bleftTrigger\x18\x12 \x01(\x0b\x32\x16.WiiOptions.AnalogAxis\x12,\n\x0crightTrigger\x18\x13 \x01(\x0b\x32\x16.WiiOptions.AnalogAxis\x1al\n\x0cTaikoOptions\x12\x15\n\rbuttonKatLeft\x18\x01 \x01(\x05\x12\x16\n\x0e\x62uttonKatRight\x18\x02 \x01(\x05\x12\x15\n\rbuttonDonLeft\x18\x03 \x01(\x05\x12\x16\n\x0e\x62uttonDonRight\x18\x04 \x01(\x05\x1a\xad\x02\n\rGuitarOptions\x12\x11\n\tbuttonRed\x18\x01 \x01(\x05\x12\x13\n\x0b\x62uttonGreen\x18\x02 \x01(\x05\x12\x14\n\x0c\x62uttonYellow\x18\x03 \x01(\x05\x12\x12\n\nbuttonBlue\x18\x04 \x01(\x05\x12\x14\n\x0c\x62uttonOrange\x18\x05 \x01(\x05\x12\x13\n\x0b\x62uttonPedal\x18\x06 \x01(\x05\x12\x13\n\x0b\x62uttonMinus\x18\x07 \x01(\x05\x12\x12\n\nbuttonPlus\x18\x08 \x01(\x05\x12\x0f\n\x07strumUp\x18\t \x01(\x05\x12\x11\n\tstrumDown\x18\n \x01(\x05\x12\'\n\x05stick\x18\x0b \x01(\x0b\x32\x18.WiiOptions.StickOptions\x12)\n\twhammyBar\x18\x0c \x01(\x0b\x32\x16.WiiOptions.AnalogAxis\x1a\xdc\x01\n\x0b\x44rumOptions\x12\x11\n\tbuttonRed\x18\x01 \x01(\x05\x12\x13\n\x0b\x62uttonGreen\x18\x02 \x01(\x05\x12\x14\n\x0c\x62uttonYellow\x18\x03 \x01(\x05\x12\x12\n\nbuttonBlue\x18\x04 \x01(\x05\x12\x14\n\x0c\x62uttonOrange\x18\x05 \x01(\x05\x12\x13\n\x0b\x62uttonPedal\x18\x06 \x01(\x05\x12\x13\n\x0b\x62uttonMinus\x18\x07 \x01(\x05\x12\x12\n\nbuttonPlus\x18\x08 \x01(\x05\x12\'\n\x05stick\x18\t \x01(\x0b\x32\x18.WiiOptions.StickOptions\x1a\xbe\x03\n\x10TurntableOptions\x12\x15\n\rbuttonLeftRed\x18\x01 \x01(\x05\x12\x17\n\x0f\x62uttonLeftGreen\x18\x02 \x01(\x05\x12\x16\n\x0e\x62uttonLeftBlue\x18\x03 \x01(\x05\x12\x16\n\x0e\x62uttonRightRed\x18\x04 \x01(\x05\x12\x18\n\x10\x62uttonRightGreen\x18\x05 \x01(\x05\x12\x17\n\x0f\x62uttonRightBlue\x18\x06 \x01(\x05\x12\x13\n\x0b\x62uttonMinus\x18\x07 \x01(\x05\x12\x12\n\nbuttonPlus\x18\x08 \x01(\x05\x12\x16\n\x0e\x62uttonEuphoria\x18\t \x01(\x05\x12\'\n\x05stick\x18\n \x01(\x0b\x32\x18.WiiOptions.StickOptions\x12-\n\rleftTurntable\x18\x0b \x01(\x0b\x32\x16.WiiOptions.AnalogAxis\x12.\n\x0erightTurntable\x18\x0c \x01(\x0b\x32\x16.WiiOptions.AnalogAxis\x12\'\n\x07\x65\x66\x66\x65\x63ts\x18\r \x01(\x0b\x32\x16.WiiOptions.AnalogAxis\x12%\n\x05\x66\x61\x64\x65r\x18\x0e \x01(\x0b\x32\x16.WiiOptions.AnalogAxis\x1a\x99\x02\n\x11\x43ontrollerOptions\x12+\n\x07nunchuk\x18\x01 \x01(\x0b\x32\x1a.WiiOptions.NunchukOptions\x12+\n\x07\x63lassic\x18\x02 \x01(\x0b\x32\x1a.WiiOptions.ClassicOptions\x12\'\n\x05taiko\x18\x03 \x01(\x0b\x32\x18.WiiOptions.TaikoOptions\x12)\n\x06guitar\x18\x04 \x01(\x0b\x32\x19.WiiOptions.GuitarOptions\x12%\n\x04\x64rum\x18\x05 \x01(\x0b\x32\x17.WiiOptions.DrumOptions\x12/\n\tturntable\x18\x06 \x01(\x0b\x32\x1c.WiiOptions.TurntableOptions\"S\n\x0bSNESOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08\x63lockPin\x18\x02 \x01(\x05\x12\x10\n\x08latchPin\x18\x03 \x01(\x05\x12\x0f\n\x07\x64\x61taPin\x18\x04 \x01(\x05\"j\n\x13KeyboardHostOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08pinDplus\x18\x02 \x01(\x05\x12!\n\x07mapping\x18\x03 \x01(\x0b\x32\x10.KeyboardMapping\x12\r\n\x05pin5V\x18\x04 \x01(\x05\"\xae\x01\n\x10\x46ocusModeOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03pin\x18\x02 \x01(\x05\x12\x16\n\x0e\x62uttonLockMask\x18\x03 \x01(\x05\x12\x17\n\x0foledLockEnabled\x18\x04 \x01(\x08\x12\x16\n\x0ergbLockEnabled\x18\x05 \x01(\x08\x12\x19\n\x11\x62uttonLockEnabled\x18\x06 \x01(\x08\x12\x18\n\x10macroLockEnabled\x18\x07 \x01(\x08\"K\n\nMacroInput\x12\x12\n\nbuttonMask\x18\x01 \x01(\r\x12\x10\n\x08\x64uration\x18\x02 \x01(\r\x12\x17\n\x0cwaitDuration\x18\x03 \x01(\r:\x01\x30\"\xa4\x02\n\x05Macro\x12\x1d\n\tmacroType\x18\x01 \x01(\x0e\x32\n.MacroType\x12\x19\n\nmacroLabel\x18\x02 \x01(\tB\x05\x92?\x02p@\x12\'\n\x0bmacroInputs\x18\x03 \x03(\x0b\x32\x0b.MacroInputB\x05\x92?\x02\x10\x1e\x12\x0f\n\x07\x65nabled\x18\x04 \x01(\x08\x12\x1d\n\x15useMacroTriggerButton\x18\x05 \x01(\x08\x12\x1b\n\x0fmacroTriggerPin\x18\x06 \x01(\x05:\x02-1\x12\x1a\n\x12macroTriggerButton\x18\x07 \x01(\r\x12\x17\n\texclusive\x18\x08 \x01(\x08:\x04true\x12\x1b\n\rinterruptible\x18\t \x01(\x08:\x04true\x12\x19\n\nshowFrames\x18\n \x01(\x08:\x05\x66\x61lse\"l\n\x0cMacroOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03pin\x18\x02 \x01(\x05\x12\x1c\n\x14macroBoardLedEnabled\x18\x04 \x01(\x08\x12 \n\tmacroList\x18\x03 \x03(\x0b\x32\x06.MacroB\x05\x92?\x02\x10\x06\"\x8a\x07\n\x0c\x41\x64\x64onOptions\x12\x33\n\x14\x62ootselButtonOptions\x18\x01 \x01(\x0b\x32\x15.BootselButtonOptions\x12-\n\x11onBoardLedOptions\x18\x02 \x01(\x0b\x32\x12.OnBoardLedOptions\x12%\n\ranalogOptions\x18\x03 \x01(\x0b\x32\x0e.AnalogOptions\x12#\n\x0cturboOptions\x18\x04 \x01(\x0b\x32\r.TurboOptions\x12%\n\rsliderOptions\x18\x05 \x01(\x0b\x32\x0e.SliderOptions\x12\'\n\x0ereverseOptions\x18\x06 \x01(\x0b\x32\x0f.ReverseOptions\x12\x33\n\x14\x61nalogADS1219Options\x18\x07 \x01(\x0b\x32\x15.AnalogADS1219Options\x12\x37\n\x16\x64ualDirectionalOptions\x18\x08 \x01(\x0b\x32\x17.DualDirectionalOptions\x12%\n\rbuzzerOptions\x18\t \x01(\x0b\x32\x0e.BuzzerOptions\x12\x39\n\x1c\x64\x65precatedExtraButtonOptions\x18\n \x01(\x0b\x32\x13.ExtraButtonOptions\x12\x31\n\x13playerNumberOptions\x18\x0b \x01(\x0b\x32\x14.PlayerNumberOptions\x12\'\n\nps4Options\x18\x0c \x01(\x0b\x32\x0b.PS4OptionsB\x06\x92?\x03\xf0\x01\x01\x12\x1f\n\nwiiOptions\x18\r \x01(\x0b\x32\x0b.WiiOptions\x12-\n\x11socdSliderOptions\x18\x0e \x01(\x0b\x32\x12.SOCDSliderOptions\x12!\n\x0bsnesOptions\x18\x0f \x01(\x0b\x32\x0c.SNESOptions\x12+\n\x10\x66ocusModeOptions\x18\x10 \x01(\x0b\x32\x11.FocusModeOptions\x12\x31\n\x13keyboardHostOptions\x18\x11 \x01(\x0b\x32\x14.KeyboardHostOptions\x12!\n\x0btiltOptions\x18\x12 \x01(\x0b\x32\x0c.TiltOptions\x12\x33\n\x14psPassthroughOptions\x18\x13 \x01(\x0b\x32\x15.PSPassthroughOptions\x12#\n\x0cmacroOptions\x18\x14 \x01(\x0b\x32\r.MacroOptions\"W\n\x10MigrationHistory\x12\x1e\n\x0fhotkeysMigrated\x18\x01 \x01(\x08:\x05\x66\x61lse\x12#\n\x14gpioMappingsMigrated\x18\x02 \x01(\x08:\x05\x66\x61lse\"\xb1\x04\n\x06\x43onfig\x12\x1b\n\x0c\x62oardVersion\x18\x01 \x01(\tB\x05\x92?\x02p\x1f\x12\'\n\x0egamepadOptions\x18\x02 \x01(\x0b\x32\x0f.GamepadOptions\x12%\n\rhotkeyOptions\x18\x03 \x01(\x0b\x32\x0e.HotkeyOptions\x12+\n\x15\x64\x65precatedPinMappings\x18\x04 \x01(\x0b\x32\x0c.PinMappings\x12)\n\x0fkeyboardMapping\x18\x05 \x01(\x0b\x32\x10.KeyboardMapping\x12\'\n\x0e\x64isplayOptions\x18\x06 \x01(\x0b\x32\x0f.DisplayOptions\x12\x1f\n\nledOptions\x18\x07 \x01(\x0b\x32\x0b.LEDOptions\x12\x31\n\x10\x61nimationOptions\x18\x08 \x01(\x0b\x32\x17.AnimationOptions_Proto\x12#\n\x0c\x61\x64\x64onOptions\x18\t \x01(\x0b\x32\r.AddonOptions\x12/\n\x12\x66orcedSetupOptions\x18\n \x01(\x0b\x32\x13.ForcedSetupOptions\x12\'\n\x0eprofileOptions\x18\x0b \x01(\x0b\x32\x0f.ProfileOptions\x12\x1a\n\x0b\x62oardConfig\x18\x0c \x01(\tB\x05\x92?\x02p?\x12#\n\x0cgpioMappings\x18\r \x01(\x0b\x32\r.GpioMappings\x12%\n\nmigrations\x18\x0e \x01(\x0b\x32\x11.MigrationHistory') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'config_pb2', globals()) @@ -48,78 +48,116 @@ if _descriptor._USE_C_DESCRIPTORS == False: _PS4OPTIONS.fields_by_name['rsaQP']._serialized_options = b'\222?\003\010\200\001' _PS4OPTIONS.fields_by_name['rsaRN']._options = None _PS4OPTIONS.fields_by_name['rsaRN']._serialized_options = b'\222?\003\010\200\002' + _MACRO.fields_by_name['macroLabel']._options = None + _MACRO.fields_by_name['macroLabel']._serialized_options = b'\222?\002p@' + _MACRO.fields_by_name['macroInputs']._options = None + _MACRO.fields_by_name['macroInputs']._serialized_options = b'\222?\002\020\036' + _MACROOPTIONS.fields_by_name['macroList']._options = None + _MACROOPTIONS.fields_by_name['macroList']._serialized_options = b'\222?\002\020\006' _ADDONOPTIONS.fields_by_name['ps4Options']._options = None _ADDONOPTIONS.fields_by_name['ps4Options']._serialized_options = b'\222?\003\360\001\001' _CONFIG.fields_by_name['boardVersion']._options = None _CONFIG.fields_by_name['boardVersion']._serialized_options = b'\222?\002p\037' + _CONFIG.fields_by_name['boardConfig']._options = None + _CONFIG.fields_by_name['boardConfig']._serialized_options = b'\222?\002p?' _GAMEPADOPTIONS._serialized_start=44 - _GAMEPADOPTIONS._serialized_end=285 - _KEYBOARDMAPPING._serialized_start=288 - _KEYBOARDMAPPING._serialized_end=682 - _HOTKEYENTRY._serialized_start=684 - _HOTKEYENTRY._serialized_end=785 - _HOTKEYOPTIONS._serialized_start=788 - _HOTKEYOPTIONS._serialized_end=1187 - _FORCEDSETUPOPTIONS._serialized_start=1189 - _FORCEDSETUPOPTIONS._serialized_end=1241 - _BUTTONLAYOUTPARAMSCOMMON._serialized_start=1243 - _BUTTONLAYOUTPARAMSCOMMON._serialized_end=1346 - _BUTTONLAYOUTPARAMSLEFT._serialized_start=1348 - _BUTTONLAYOUTPARAMSLEFT._serialized_end=1446 - _BUTTONLAYOUTPARAMSRIGHT._serialized_start=1448 - _BUTTONLAYOUTPARAMSRIGHT._serialized_end=1552 - _BUTTONLAYOUTCUSTOMOPTIONS._serialized_start=1554 - _BUTTONLAYOUTCUSTOMOPTIONS._serialized_end=1673 - _PINMAPPINGS._serialized_start=1676 - _PINMAPPINGS._serialized_end=2087 - _ALTERNATIVEPINMAPPINGS._serialized_start=2090 - _ALTERNATIVEPINMAPPINGS._serialized_end=2282 - _PROFILEOPTIONS._serialized_start=2284 - _PROFILEOPTIONS._serialized_end=2364 - _DISPLAYOPTIONS._serialized_start=2367 - _DISPLAYOPTIONS._serialized_end=2837 - _LEDOPTIONS._serialized_start=2840 - _LEDOPTIONS._serialized_end=3448 - _ANIMATIONOPTIONS_PROTO._serialized_start=3451 - _ANIMATIONOPTIONS_PROTO._serialized_end=4637 - _BOOTSELBUTTONOPTIONS._serialized_start=4639 - _BOOTSELBUTTONOPTIONS._serialized_end=4697 - _ONBOARDLEDOPTIONS._serialized_start=4699 - _ONBOARDLEDOPTIONS._serialized_end=4766 - _ANALOGOPTIONS._serialized_start=4769 - _ANALOGOPTIONS._serialized_end=4900 - _TURBOOPTIONS._serialized_start=4903 - _TURBOOPTIONS._serialized_end=5349 - _SLIDEROPTIONS._serialized_start=5351 - _SLIDEROPTIONS._serialized_end=5413 - _SOCDSLIDEROPTIONS._serialized_start=5416 - _SOCDSLIDEROPTIONS._serialized_end=5572 - _REVERSEOPTIONS._serialized_start=5575 - _REVERSEOPTIONS._serialized_end=5722 - _ANALOGADS1219OPTIONS._serialized_start=5725 - _ANALOGADS1219OPTIONS._serialized_end=5858 - _DUALDIRECTIONALOPTIONS._serialized_start=5861 - _DUALDIRECTIONALOPTIONS._serialized_end=6040 - _TILTOPTIONS._serialized_start=6043 - _TILTOPTIONS._serialized_end=6417 - _BUZZEROPTIONS._serialized_start=6419 - _BUZZEROPTIONS._serialized_end=6480 - _EXTRABUTTONOPTIONS._serialized_start=6482 - _EXTRABUTTONOPTIONS._serialized_end=6551 - _PLAYERNUMBEROPTIONS._serialized_start=6553 - _PLAYERNUMBEROPTIONS._serialized_end=6607 - _PS4OPTIONS._serialized_start=6610 - _PS4OPTIONS._serialized_end=6890 - _WIIOPTIONS._serialized_start=6892 - _WIIOPTIONS._serialized_end=6995 - _SNESOPTIONS._serialized_start=6997 - _SNESOPTIONS._serialized_end=7080 - _KEYBOARDHOSTOPTIONS._serialized_start=7082 - _KEYBOARDHOSTOPTIONS._serialized_end=7173 - _FOCUSMODEOPTIONS._serialized_start=7176 - _FOCUSMODEOPTIONS._serialized_end=7324 - _ADDONOPTIONS._serialized_start=7327 - _ADDONOPTIONS._serialized_end=8133 - _CONFIG._serialized_start=8136 - _CONFIG._serialized_end=8583 + _GAMEPADOPTIONS._serialized_end=332 + _KEYBOARDMAPPING._serialized_start=335 + _KEYBOARDMAPPING._serialized_end=729 + _HOTKEYENTRY._serialized_start=731 + _HOTKEYENTRY._serialized_end=832 + _HOTKEYOPTIONS._serialized_start=835 + _HOTKEYOPTIONS._serialized_end=1234 + _FORCEDSETUPOPTIONS._serialized_start=1236 + _FORCEDSETUPOPTIONS._serialized_end=1288 + _BUTTONLAYOUTPARAMSCOMMON._serialized_start=1290 + _BUTTONLAYOUTPARAMSCOMMON._serialized_end=1393 + _BUTTONLAYOUTPARAMSLEFT._serialized_start=1395 + _BUTTONLAYOUTPARAMSLEFT._serialized_end=1493 + _BUTTONLAYOUTPARAMSRIGHT._serialized_start=1495 + _BUTTONLAYOUTPARAMSRIGHT._serialized_end=1599 + _BUTTONLAYOUTCUSTOMOPTIONS._serialized_start=1601 + _BUTTONLAYOUTCUSTOMOPTIONS._serialized_end=1720 + _PINMAPPINGS._serialized_start=1723 + _PINMAPPINGS._serialized_end=2134 + _GPIOMAPPINGS._serialized_start=2137 + _GPIOMAPPINGS._serialized_end=2991 + _ALTERNATIVEPINMAPPINGS._serialized_start=2994 + _ALTERNATIVEPINMAPPINGS._serialized_end=3269 + _PROFILEOPTIONS._serialized_start=3271 + _PROFILEOPTIONS._serialized_end=3351 + _DISPLAYOPTIONS._serialized_start=3354 + _DISPLAYOPTIONS._serialized_end=3854 + _LEDOPTIONS._serialized_start=3857 + _LEDOPTIONS._serialized_end=4495 + _ANIMATIONOPTIONS_PROTO._serialized_start=4498 + _ANIMATIONOPTIONS_PROTO._serialized_end=5684 + _BOOTSELBUTTONOPTIONS._serialized_start=5686 + _BOOTSELBUTTONOPTIONS._serialized_end=5744 + _ONBOARDLEDOPTIONS._serialized_start=5746 + _ONBOARDLEDOPTIONS._serialized_end=5813 + _ANALOGOPTIONS._serialized_start=5816 + _ANALOGOPTIONS._serialized_end=6169 + _TURBOOPTIONS._serialized_start=6172 + _TURBOOPTIONS._serialized_end=6618 + _SLIDEROPTIONS._serialized_start=6621 + _SLIDEROPTIONS._serialized_end=6825 + _SOCDSLIDEROPTIONS._serialized_start=6828 + _SOCDSLIDEROPTIONS._serialized_end=7024 + _REVERSEOPTIONS._serialized_start=7027 + _REVERSEOPTIONS._serialized_end=7174 + _ANALOGADS1219OPTIONS._serialized_start=7177 + _ANALOGADS1219OPTIONS._serialized_end=7310 + _DUALDIRECTIONALOPTIONS._serialized_start=7313 + _DUALDIRECTIONALOPTIONS._serialized_end=7532 + _TILTOPTIONS._serialized_start=7535 + _TILTOPTIONS._serialized_end=8131 + _BUZZEROPTIONS._serialized_start=8133 + _BUZZEROPTIONS._serialized_end=8194 + _EXTRABUTTONOPTIONS._serialized_start=8196 + _EXTRABUTTONOPTIONS._serialized_end=8265 + _PLAYERNUMBEROPTIONS._serialized_start=8267 + _PLAYERNUMBEROPTIONS._serialized_end=8321 + _PS4OPTIONS._serialized_start=8324 + _PS4OPTIONS._serialized_end=8604 + _PSPASSTHROUGHOPTIONS._serialized_start=8606 + _PSPASSTHROUGHOPTIONS._serialized_end=8678 + _WIIOPTIONS._serialized_start=8681 + _WIIOPTIONS._serialized_end=10932 + _WIIOPTIONS_ANALOGAXIS._serialized_start=8838 + _WIIOPTIONS_ANALOGAXIS._serialized_end=8904 + _WIIOPTIONS_STICKOPTIONS._serialized_start=8906 + _WIIOPTIONS_STICKOPTIONS._serialized_end=8990 + _WIIOPTIONS_NUNCHUKOPTIONS._serialized_start=8992 + _WIIOPTIONS_NUNCHUKOPTIONS._serialized_end=9083 + _WIIOPTIONS_CLASSICOPTIONS._serialized_start=9086 + _WIIOPTIONS_CLASSICOPTIONS._serialized_end=9562 + _WIIOPTIONS_TAIKOOPTIONS._serialized_start=9564 + _WIIOPTIONS_TAIKOOPTIONS._serialized_end=9672 + _WIIOPTIONS_GUITAROPTIONS._serialized_start=9675 + _WIIOPTIONS_GUITAROPTIONS._serialized_end=9976 + _WIIOPTIONS_DRUMOPTIONS._serialized_start=9979 + _WIIOPTIONS_DRUMOPTIONS._serialized_end=10199 + _WIIOPTIONS_TURNTABLEOPTIONS._serialized_start=10202 + _WIIOPTIONS_TURNTABLEOPTIONS._serialized_end=10648 + _WIIOPTIONS_CONTROLLEROPTIONS._serialized_start=10651 + _WIIOPTIONS_CONTROLLEROPTIONS._serialized_end=10932 + _SNESOPTIONS._serialized_start=10934 + _SNESOPTIONS._serialized_end=11017 + _KEYBOARDHOSTOPTIONS._serialized_start=11019 + _KEYBOARDHOSTOPTIONS._serialized_end=11125 + _FOCUSMODEOPTIONS._serialized_start=11128 + _FOCUSMODEOPTIONS._serialized_end=11302 + _MACROINPUT._serialized_start=11304 + _MACROINPUT._serialized_end=11379 + _MACRO._serialized_start=11382 + _MACRO._serialized_end=11674 + _MACROOPTIONS._serialized_start=11676 + _MACROOPTIONS._serialized_end=11784 + _ADDONOPTIONS._serialized_start=11787 + _ADDONOPTIONS._serialized_end=12693 + _MIGRATIONHISTORY._serialized_start=12695 + _MIGRATIONHISTORY._serialized_end=12782 + _CONFIG._serialized_start=12785 + _CONFIG._serialized_end=13346 # @@protoc_insertion_point(module_scope) diff --git a/tests/test-files/pb2-files/enums_pb2.py b/tests/test-files/pb2-files/enums_pb2.py index 0defe21..d59f04a 100644 --- a/tests/test-files/pb2-files/enums_pb2.py +++ b/tests/test-files/pb2-files/enums_pb2.py @@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default() import nanopb_pb2 as nanopb__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0b\x65nums.proto\x1a\x0cnanopb.proto*\xa1\x03\n\x0c\x42uttonLayout\x12\x17\n\x13\x42UTTON_LAYOUT_STICK\x10\x00\x12\x1b\n\x17\x42UTTON_LAYOUT_STICKLESS\x10\x01\x12 \n\x1c\x42UTTON_LAYOUT_BUTTONS_ANGLED\x10\x02\x12\x1f\n\x1b\x42UTTON_LAYOUT_BUTTONS_BASIC\x10\x03\x12!\n\x1d\x42UTTON_LAYOUT_KEYBOARD_ANGLED\x10\x04\x12\x1b\n\x17\x42UTTON_LAYOUT_KEYBOARDA\x10\x05\x12\x1b\n\x17\x42UTTON_LAYOUT_DANCEPADA\x10\x06\x12\x1c\n\x18\x42UTTON_LAYOUT_TWINSTICKA\x10\x07\x12\x18\n\x14\x42UTTON_LAYOUT_BLANKA\x10\x08\x12\x16\n\x12\x42UTTON_LAYOUT_VLXA\x10\t\x12\"\n\x1e\x42UTTON_LAYOUT_FIGHTBOARD_STICK\x10\n\x12%\n!BUTTON_LAYOUT_FIGHTBOARD_MIRRORED\x10\x0b\x12\x19\n\x15\x42UTTON_LAYOUT_CUSTOMA\x10\x0c\x1a\x05\x92?\x02 \x00*\x82\x04\n\x11\x42uttonLayoutRight\x12\x18\n\x14\x42UTTON_LAYOUT_ARCADE\x10\x00\x12\x1c\n\x18\x42UTTON_LAYOUT_STICKLESSB\x10\x01\x12!\n\x1d\x42UTTON_LAYOUT_BUTTONS_ANGLEDB\x10\x02\x12\x18\n\x14\x42UTTON_LAYOUT_VEWLIX\x10\x03\x12\x19\n\x15\x42UTTON_LAYOUT_VEWLIX7\x10\x04\x12\x18\n\x14\x42UTTON_LAYOUT_CAPCOM\x10\x05\x12\x19\n\x15\x42UTTON_LAYOUT_CAPCOM6\x10\x06\x12\x18\n\x14\x42UTTON_LAYOUT_SEGA2P\x10\x07\x12\x17\n\x13\x42UTTON_LAYOUT_NOIR8\x10\x08\x12\x1b\n\x17\x42UTTON_LAYOUT_KEYBOARDB\x10\t\x12\x1b\n\x17\x42UTTON_LAYOUT_DANCEPADB\x10\n\x12\x1c\n\x18\x42UTTON_LAYOUT_TWINSTICKB\x10\x0b\x12\x18\n\x14\x42UTTON_LAYOUT_BLANKB\x10\x0c\x12\x16\n\x12\x42UTTON_LAYOUT_VLXB\x10\r\x12\x1c\n\x18\x42UTTON_LAYOUT_FIGHTBOARD\x10\x0e\x12+\n\'BUTTON_LAYOUT_FIGHTBOARD_STICK_MIRRORED\x10\x0f\x12\x19\n\x15\x42UTTON_LAYOUT_CUSTOMB\x10\x10\x1a\x05\x92?\x02 \x00*y\n\nSplashMode\x12\x16\n\x12SPLASH_MODE_STATIC\x10\x00\x12\x17\n\x13SPLASH_MODE_CLOSEIN\x10\x01\x12\x1d\n\x19SPLASH_MODE_CLOSEINCUSTOM\x10\x02\x12\x14\n\x10SPLASH_MODE_NONE\x10\x03\x1a\x05\x92?\x02 \x00*\xa0\x01\n\x0cSplashChoice\x12\x16\n\x12SPLASH_CHOICE_MAIN\x10\x00\x12\x13\n\x0fSPLASH_CHOICE_X\x10\x01\x12\x13\n\x0fSPLASH_CHOICE_Y\x10\x02\x12\x13\n\x0fSPLASH_CHOICE_Z\x10\x03\x12\x18\n\x14SPLASH_CHOICE_CUSTOM\x10\x04\x12\x18\n\x14SPLASH_CHOICE_LEGACY\x10\x05\x1a\x05\x92?\x02 \x00*z\n\x0eOnBoardLedMode\x12\x19\n\x15ON_BOARD_LED_MODE_OFF\x10\x00\x12$\n ON_BOARD_LED_MODE_MODE_INDICATOR\x10\x01\x12 \n\x1cON_BOARD_LED_MODE_INPUT_TEST\x10\x02\x1a\x05\x92?\x02 \x00*\x99\x01\n\tInputMode\x12\x15\n\x11INPUT_MODE_XINPUT\x10\x00\x12\x15\n\x11INPUT_MODE_SWITCH\x10\x01\x12\x12\n\x0eINPUT_MODE_HID\x10\x02\x12\x17\n\x13INPUT_MODE_KEYBOARD\x10\x03\x12\x12\n\x0eINPUT_MODE_PS4\x10\x04\x12\x16\n\x11INPUT_MODE_CONFIG\x10\xff\x01\x1a\x05\x92?\x02 \x00*_\n\x08\x44padMode\x12\x15\n\x11\x44PAD_MODE_DIGITAL\x10\x00\x12\x19\n\x15\x44PAD_MODE_LEFT_ANALOG\x10\x01\x12\x1a\n\x16\x44PAD_MODE_RIGHT_ANALOG\x10\x02\x1a\x05\x92?\x02 \x00*\xa2\x01\n\x08SOCDMode\x12\x19\n\x15SOCD_MODE_UP_PRIORITY\x10\x00\x12\x15\n\x11SOCD_MODE_NEUTRAL\x10\x01\x12#\n\x1fSOCD_MODE_SECOND_INPUT_PRIORITY\x10\x02\x12\"\n\x1eSOCD_MODE_FIRST_INPUT_PRIORITY\x10\x03\x12\x14\n\x10SOCD_MODE_BYPASS\x10\x04\x1a\x05\x92?\x02 \x00*\x95\x04\n\rGamepadHotkey\x12\x0f\n\x0bHOTKEY_NONE\x10\x00\x12\x17\n\x13HOTKEY_DPAD_DIGITAL\x10\x01\x12\x1b\n\x17HOTKEY_DPAD_LEFT_ANALOG\x10\x02\x12\x1c\n\x18HOTKEY_DPAD_RIGHT_ANALOG\x10\x03\x12\x16\n\x12HOTKEY_HOME_BUTTON\x10\x04\x12\x19\n\x15HOTKEY_CAPTURE_BUTTON\x10\x05\x12\x1b\n\x17HOTKEY_SOCD_UP_PRIORITY\x10\x06\x12\x17\n\x13HOTKEY_SOCD_NEUTRAL\x10\x07\x12\x1a\n\x16HOTKEY_SOCD_LAST_INPUT\x10\x08\x12\x18\n\x14HOTKEY_INVERT_X_AXIS\x10\t\x12\x18\n\x14HOTKEY_INVERT_Y_AXIS\x10\n\x12\x1b\n\x17HOTKEY_SOCD_FIRST_INPUT\x10\x0b\x12\x16\n\x12HOTKEY_SOCD_BYPASS\x10\x0c\x12\x1c\n\x18HOTKEY_TOGGLE_4_WAY_MODE\x10\r\x12 \n\x1cHOTKEY_TOGGLE_DDI_4_WAY_MODE\x10\x0e\x12\x19\n\x15HOTKEY_LOAD_PROFILE_1\x10\x0f\x12\x19\n\x15HOTKEY_LOAD_PROFILE_2\x10\x10\x12\x19\n\x15HOTKEY_LOAD_PROFILE_3\x10\x11\x12\x19\n\x15HOTKEY_LOAD_PROFILE_4\x10\x12\x1a\x05\x92?\x02 \x00*c\n\x0fLEDFormat_Proto\x12\x12\n\x0eLED_FORMAT_GRB\x10\x00\x12\x12\n\x0eLED_FORMAT_RGB\x10\x01\x12\x13\n\x0fLED_FORMAT_GRBW\x10\x02\x12\x13\n\x0fLED_FORMAT_RGBW\x10\x03*\\\n\x0cShmupMixMode\x12!\n\x1dSHMUP_MIX_MODE_TURBO_PRIORITY\x10\x00\x12\"\n\x1eSHMUP_MIX_MODE_CHARGE_PRIORITY\x10\x01\x1a\x05\x92?\x02 \x00*T\n\x08PLEDType\x12\x1b\n\x0ePLED_TYPE_NONE\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x11\n\rPLED_TYPE_PWM\x10\x00\x12\x11\n\rPLED_TYPE_RGB\x10\x01\x1a\x05\x92?\x02 \x00*\xa3\x01\n\x0f\x46orcedSetupMode\x12\x19\n\x15\x46ORCED_SETUP_MODE_OFF\x10\x00\x12&\n\"FORCED_SETUP_MODE_LOCK_MODE_SWITCH\x10\x01\x12%\n!FORCED_SETUP_MODE_LOCK_WEB_CONFIG\x10\x02\x12\x1f\n\x1b\x46ORCED_SETUP_MODE_LOCK_BOTH\x10\x03\x1a\x05\x92?\x02 \x00') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0b\x65nums.proto\x1a\x0cnanopb.proto*\xc3\x03\n\x0c\x42uttonLayout\x12\x17\n\x13\x42UTTON_LAYOUT_STICK\x10\x00\x12\x1b\n\x17\x42UTTON_LAYOUT_STICKLESS\x10\x01\x12 \n\x1c\x42UTTON_LAYOUT_BUTTONS_ANGLED\x10\x02\x12\x1f\n\x1b\x42UTTON_LAYOUT_BUTTONS_BASIC\x10\x03\x12!\n\x1d\x42UTTON_LAYOUT_KEYBOARD_ANGLED\x10\x04\x12\x1b\n\x17\x42UTTON_LAYOUT_KEYBOARDA\x10\x05\x12\x1b\n\x17\x42UTTON_LAYOUT_DANCEPADA\x10\x06\x12\x1c\n\x18\x42UTTON_LAYOUT_TWINSTICKA\x10\x07\x12\x18\n\x14\x42UTTON_LAYOUT_BLANKA\x10\x08\x12\x16\n\x12\x42UTTON_LAYOUT_VLXA\x10\t\x12\"\n\x1e\x42UTTON_LAYOUT_FIGHTBOARD_STICK\x10\n\x12%\n!BUTTON_LAYOUT_FIGHTBOARD_MIRRORED\x10\x0b\x12\x19\n\x15\x42UTTON_LAYOUT_CUSTOMA\x10\x0c\x12 \n\x1c\x42UTTON_LAYOUT_OPENCORE0WASDA\x10\r\x1a\x05\x92?\x02 \x00*\xd9\x04\n\x11\x42uttonLayoutRight\x12\x18\n\x14\x42UTTON_LAYOUT_ARCADE\x10\x00\x12\x1c\n\x18\x42UTTON_LAYOUT_STICKLESSB\x10\x01\x12!\n\x1d\x42UTTON_LAYOUT_BUTTONS_ANGLEDB\x10\x02\x12\x18\n\x14\x42UTTON_LAYOUT_VEWLIX\x10\x03\x12\x19\n\x15\x42UTTON_LAYOUT_VEWLIX7\x10\x04\x12\x18\n\x14\x42UTTON_LAYOUT_CAPCOM\x10\x05\x12\x19\n\x15\x42UTTON_LAYOUT_CAPCOM6\x10\x06\x12\x18\n\x14\x42UTTON_LAYOUT_SEGA2P\x10\x07\x12\x17\n\x13\x42UTTON_LAYOUT_NOIR8\x10\x08\x12\x1b\n\x17\x42UTTON_LAYOUT_KEYBOARDB\x10\t\x12\x1b\n\x17\x42UTTON_LAYOUT_DANCEPADB\x10\n\x12\x1c\n\x18\x42UTTON_LAYOUT_TWINSTICKB\x10\x0b\x12\x18\n\x14\x42UTTON_LAYOUT_BLANKB\x10\x0c\x12\x16\n\x12\x42UTTON_LAYOUT_VLXB\x10\r\x12\x1c\n\x18\x42UTTON_LAYOUT_FIGHTBOARD\x10\x0e\x12+\n\'BUTTON_LAYOUT_FIGHTBOARD_STICK_MIRRORED\x10\x0f\x12\x19\n\x15\x42UTTON_LAYOUT_CUSTOMB\x10\x10\x12\x1c\n\x18\x42UTTON_LAYOUT_KEYBOARD8B\x10\x11\x12 \n\x1c\x42UTTON_LAYOUT_OPENCORE0WASDB\x10\x12\x12\x15\n\x11\x42UTTON_LAYOUT_BSS\x10\x63\x1a\x05\x92?\x02 \x00*y\n\nSplashMode\x12\x16\n\x12SPLASH_MODE_STATIC\x10\x00\x12\x17\n\x13SPLASH_MODE_CLOSEIN\x10\x01\x12\x1d\n\x19SPLASH_MODE_CLOSEINCUSTOM\x10\x02\x12\x14\n\x10SPLASH_MODE_NONE\x10\x03\x1a\x05\x92?\x02 \x00*\xa0\x01\n\x0cSplashChoice\x12\x16\n\x12SPLASH_CHOICE_MAIN\x10\x00\x12\x13\n\x0fSPLASH_CHOICE_X\x10\x01\x12\x13\n\x0fSPLASH_CHOICE_Y\x10\x02\x12\x13\n\x0fSPLASH_CHOICE_Z\x10\x03\x12\x18\n\x14SPLASH_CHOICE_CUSTOM\x10\x04\x12\x18\n\x14SPLASH_CHOICE_LEGACY\x10\x05\x1a\x05\x92?\x02 \x00*\x99\x01\n\x0eOnBoardLedMode\x12\x19\n\x15ON_BOARD_LED_MODE_OFF\x10\x00\x12$\n ON_BOARD_LED_MODE_MODE_INDICATOR\x10\x01\x12 \n\x1cON_BOARD_LED_MODE_INPUT_TEST\x10\x02\x12\x1d\n\x19ON_BOARD_LED_MODE_PS_AUTH\x10\x03\x1a\x05\x92?\x02 \x00*\x99\x01\n\tInputMode\x12\x15\n\x11INPUT_MODE_XINPUT\x10\x00\x12\x15\n\x11INPUT_MODE_SWITCH\x10\x01\x12\x12\n\x0eINPUT_MODE_HID\x10\x02\x12\x17\n\x13INPUT_MODE_KEYBOARD\x10\x03\x12\x12\n\x0eINPUT_MODE_PS4\x10\x04\x12\x16\n\x11INPUT_MODE_CONFIG\x10\xff\x01\x1a\x05\x92?\x02 \x00*_\n\x08\x44padMode\x12\x15\n\x11\x44PAD_MODE_DIGITAL\x10\x00\x12\x19\n\x15\x44PAD_MODE_LEFT_ANALOG\x10\x01\x12\x1a\n\x16\x44PAD_MODE_RIGHT_ANALOG\x10\x02\x1a\x05\x92?\x02 \x00*O\n\nInvertMode\x12\x0f\n\x0bINVERT_NONE\x10\x00\x12\x0c\n\x08INVERT_X\x10\x01\x12\x0c\n\x08INVERT_Y\x10\x02\x12\r\n\tINVERT_XY\x10\x03\x1a\x05\x92?\x02 \x00*\xa2\x01\n\x08SOCDMode\x12\x19\n\x15SOCD_MODE_UP_PRIORITY\x10\x00\x12\x15\n\x11SOCD_MODE_NEUTRAL\x10\x01\x12#\n\x1fSOCD_MODE_SECOND_INPUT_PRIORITY\x10\x02\x12\"\n\x1eSOCD_MODE_FIRST_INPUT_PRIORITY\x10\x03\x12\x14\n\x10SOCD_MODE_BYPASS\x10\x04\x1a\x05\x92?\x02 \x00*\xbc\x06\n\nGpioAction\x12\x11\n\x04NONE\x10\xf6\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x15\n\x08RESERVED\x10\xfb\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x15\n\x11\x41SSIGNED_TO_ADDON\x10\x00\x12\x13\n\x0f\x42UTTON_PRESS_UP\x10\x01\x12\x15\n\x11\x42UTTON_PRESS_DOWN\x10\x02\x12\x15\n\x11\x42UTTON_PRESS_LEFT\x10\x03\x12\x16\n\x12\x42UTTON_PRESS_RIGHT\x10\x04\x12\x13\n\x0f\x42UTTON_PRESS_B1\x10\x05\x12\x13\n\x0f\x42UTTON_PRESS_B2\x10\x06\x12\x13\n\x0f\x42UTTON_PRESS_B3\x10\x07\x12\x13\n\x0f\x42UTTON_PRESS_B4\x10\x08\x12\x13\n\x0f\x42UTTON_PRESS_L1\x10\t\x12\x13\n\x0f\x42UTTON_PRESS_R1\x10\n\x12\x13\n\x0f\x42UTTON_PRESS_L2\x10\x0b\x12\x13\n\x0f\x42UTTON_PRESS_R2\x10\x0c\x12\x13\n\x0f\x42UTTON_PRESS_S1\x10\r\x12\x13\n\x0f\x42UTTON_PRESS_S2\x10\x0e\x12\x13\n\x0f\x42UTTON_PRESS_A1\x10\x0f\x12\x13\n\x0f\x42UTTON_PRESS_A2\x10\x10\x12\x13\n\x0f\x42UTTON_PRESS_L3\x10\x11\x12\x13\n\x0f\x42UTTON_PRESS_R3\x10\x12\x12\x13\n\x0f\x42UTTON_PRESS_FN\x10\x13\x12\x17\n\x13\x42UTTON_PRESS_DDI_UP\x10\x14\x12\x19\n\x15\x42UTTON_PRESS_DDI_DOWN\x10\x15\x12\x19\n\x15\x42UTTON_PRESS_DDI_LEFT\x10\x16\x12\x1a\n\x16\x42UTTON_PRESS_DDI_RIGHT\x10\x17\x12\x16\n\x12SUSTAIN_DP_MODE_DP\x10\x18\x12\x16\n\x12SUSTAIN_DP_MODE_LS\x10\x19\x12\x16\n\x12SUSTAIN_DP_MODE_RS\x10\x1a\x12\x1d\n\x19SUSTAIN_SOCD_MODE_UP_PRIO\x10\x1b\x12\x1d\n\x19SUSTAIN_SOCD_MODE_NEUTRAL\x10\x1c\x12 \n\x1cSUSTAIN_SOCD_MODE_SECOND_WIN\x10\x1d\x12\x1f\n\x1bSUSTAIN_SOCD_MODE_FIRST_WIN\x10\x1e\x12\x1c\n\x18SUSTAIN_SOCD_MODE_BYPASS\x10\x1f\x1a\x05\x92?\x02 \x00*\xf8\x04\n\rGamepadHotkey\x12\x0f\n\x0bHOTKEY_NONE\x10\x00\x12\x17\n\x13HOTKEY_DPAD_DIGITAL\x10\x01\x12\x1b\n\x17HOTKEY_DPAD_LEFT_ANALOG\x10\x02\x12\x1c\n\x18HOTKEY_DPAD_RIGHT_ANALOG\x10\x03\x12\x16\n\x12HOTKEY_HOME_BUTTON\x10\x04\x12\x19\n\x15HOTKEY_CAPTURE_BUTTON\x10\x05\x12\x1b\n\x17HOTKEY_SOCD_UP_PRIORITY\x10\x06\x12\x17\n\x13HOTKEY_SOCD_NEUTRAL\x10\x07\x12\x1a\n\x16HOTKEY_SOCD_LAST_INPUT\x10\x08\x12\x18\n\x14HOTKEY_INVERT_X_AXIS\x10\t\x12\x18\n\x14HOTKEY_INVERT_Y_AXIS\x10\n\x12\x1b\n\x17HOTKEY_SOCD_FIRST_INPUT\x10\x0b\x12\x16\n\x12HOTKEY_SOCD_BYPASS\x10\x0c\x12\x1c\n\x18HOTKEY_TOGGLE_4_WAY_MODE\x10\r\x12 \n\x1cHOTKEY_TOGGLE_DDI_4_WAY_MODE\x10\x0e\x12\x19\n\x15HOTKEY_LOAD_PROFILE_1\x10\x0f\x12\x19\n\x15HOTKEY_LOAD_PROFILE_2\x10\x10\x12\x19\n\x15HOTKEY_LOAD_PROFILE_3\x10\x11\x12\x19\n\x15HOTKEY_LOAD_PROFILE_4\x10\x12\x12\x14\n\x10HOTKEY_L3_BUTTON\x10\x13\x12\x14\n\x10HOTKEY_R3_BUTTON\x10\x14\x12\x1a\n\x16HOTKEY_TOUCHPAD_BUTTON\x10\x15\x12\x19\n\x15HOTKEY_REBOOT_DEFAULT\x10\x16\x1a\x05\x92?\x02 \x00*c\n\x0fLEDFormat_Proto\x12\x12\n\x0eLED_FORMAT_GRB\x10\x00\x12\x12\n\x0eLED_FORMAT_RGB\x10\x01\x12\x13\n\x0fLED_FORMAT_GRBW\x10\x02\x12\x13\n\x0fLED_FORMAT_RGBW\x10\x03*\\\n\x0cShmupMixMode\x12!\n\x1dSHMUP_MIX_MODE_TURBO_PRIORITY\x10\x00\x12\"\n\x1eSHMUP_MIX_MODE_CHARGE_PRIORITY\x10\x01\x1a\x05\x92?\x02 \x00*T\n\x08PLEDType\x12\x1b\n\x0ePLED_TYPE_NONE\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x11\n\rPLED_TYPE_PWM\x10\x00\x12\x11\n\rPLED_TYPE_RGB\x10\x01\x1a\x05\x92?\x02 \x00*\xa3\x01\n\x0f\x46orcedSetupMode\x12\x19\n\x15\x46ORCED_SETUP_MODE_OFF\x10\x00\x12&\n\"FORCED_SETUP_MODE_LOCK_MODE_SWITCH\x10\x01\x12%\n!FORCED_SETUP_MODE_LOCK_WEB_CONFIG\x10\x02\x12\x1f\n\x1b\x46ORCED_SETUP_MODE_LOCK_BOTH\x10\x03\x1a\x05\x92?\x02 \x00*C\n\x11PS4ControllerType\x12\x12\n\x0ePS4_CONTROLLER\x10\x00\x12\x13\n\x0fPS4_ARCADESTICK\x10\x07\x1a\x05\x92?\x02 \x00*C\n\tMacroType\x12\x0c\n\x08ON_PRESS\x10\x01\x12\x12\n\x0eON_HOLD_REPEAT\x10\x02\x12\r\n\tON_TOGGLE\x10\x03\x1a\x05\x92?\x02 \x00') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'enums_pb2', globals()) @@ -35,8 +35,12 @@ if _descriptor._USE_C_DESCRIPTORS == False: _INPUTMODE._serialized_options = b'\222?\002 \000' _DPADMODE._options = None _DPADMODE._serialized_options = b'\222?\002 \000' + _INVERTMODE._options = None + _INVERTMODE._serialized_options = b'\222?\002 \000' _SOCDMODE._options = None _SOCDMODE._serialized_options = b'\222?\002 \000' + _GPIOACTION._options = None + _GPIOACTION._serialized_options = b'\222?\002 \000' _GAMEPADHOTKEY._options = None _GAMEPADHOTKEY._serialized_options = b'\222?\002 \000' _SHMUPMIXMODE._options = None @@ -45,30 +49,42 @@ if _descriptor._USE_C_DESCRIPTORS == False: _PLEDTYPE._serialized_options = b'\222?\002 \000' _FORCEDSETUPMODE._options = None _FORCEDSETUPMODE._serialized_options = b'\222?\002 \000' + _PS4CONTROLLERTYPE._options = None + _PS4CONTROLLERTYPE._serialized_options = b'\222?\002 \000' + _MACROTYPE._options = None + _MACROTYPE._serialized_options = b'\222?\002 \000' _BUTTONLAYOUT._serialized_start=30 - _BUTTONLAYOUT._serialized_end=447 - _BUTTONLAYOUTRIGHT._serialized_start=450 - _BUTTONLAYOUTRIGHT._serialized_end=964 - _SPLASHMODE._serialized_start=966 - _SPLASHMODE._serialized_end=1087 - _SPLASHCHOICE._serialized_start=1090 - _SPLASHCHOICE._serialized_end=1250 - _ONBOARDLEDMODE._serialized_start=1252 - _ONBOARDLEDMODE._serialized_end=1374 - _INPUTMODE._serialized_start=1377 - _INPUTMODE._serialized_end=1530 - _DPADMODE._serialized_start=1532 - _DPADMODE._serialized_end=1627 - _SOCDMODE._serialized_start=1630 - _SOCDMODE._serialized_end=1792 - _GAMEPADHOTKEY._serialized_start=1795 - _GAMEPADHOTKEY._serialized_end=2328 - _LEDFORMAT_PROTO._serialized_start=2330 - _LEDFORMAT_PROTO._serialized_end=2429 - _SHMUPMIXMODE._serialized_start=2431 - _SHMUPMIXMODE._serialized_end=2523 - _PLEDTYPE._serialized_start=2525 - _PLEDTYPE._serialized_end=2609 - _FORCEDSETUPMODE._serialized_start=2612 - _FORCEDSETUPMODE._serialized_end=2775 + _BUTTONLAYOUT._serialized_end=481 + _BUTTONLAYOUTRIGHT._serialized_start=484 + _BUTTONLAYOUTRIGHT._serialized_end=1085 + _SPLASHMODE._serialized_start=1087 + _SPLASHMODE._serialized_end=1208 + _SPLASHCHOICE._serialized_start=1211 + _SPLASHCHOICE._serialized_end=1371 + _ONBOARDLEDMODE._serialized_start=1374 + _ONBOARDLEDMODE._serialized_end=1527 + _INPUTMODE._serialized_start=1530 + _INPUTMODE._serialized_end=1683 + _DPADMODE._serialized_start=1685 + _DPADMODE._serialized_end=1780 + _INVERTMODE._serialized_start=1782 + _INVERTMODE._serialized_end=1861 + _SOCDMODE._serialized_start=1864 + _SOCDMODE._serialized_end=2026 + _GPIOACTION._serialized_start=2029 + _GPIOACTION._serialized_end=2857 + _GAMEPADHOTKEY._serialized_start=2860 + _GAMEPADHOTKEY._serialized_end=3492 + _LEDFORMAT_PROTO._serialized_start=3494 + _LEDFORMAT_PROTO._serialized_end=3593 + _SHMUPMIXMODE._serialized_start=3595 + _SHMUPMIXMODE._serialized_end=3687 + _PLEDTYPE._serialized_start=3689 + _PLEDTYPE._serialized_end=3773 + _FORCEDSETUPMODE._serialized_start=3776 + _FORCEDSETUPMODE._serialized_end=3939 + _PS4CONTROLLERTYPE._serialized_start=3941 + _PS4CONTROLLERTYPE._serialized_end=4008 + _MACROTYPE._serialized_start=4010 + _MACROTYPE._serialized_end=4077 # @@protoc_insertion_point(module_scope) diff --git a/tests/test-files/proto-files/config.proto b/tests/test-files/proto-files/config.proto index 5274ec8..e82b3b6 100644 --- a/tests/test-files/proto-files/config.proto +++ b/tests/test-files/proto-files/config.proto @@ -14,6 +14,7 @@ message GamepadOptions optional bool lockHotkeys = 7; optional bool fourWayMode = 8; optional uint32 profileNumber = 9; + optional PS4ControllerType ps4ControllerType = 10; } message KeyboardMapping @@ -116,6 +117,40 @@ message PinMappings optional int32 pinButtonFn = 19; } +message GpioMappings +{ + optional GpioAction pin00 = 1; + optional GpioAction pin01 = 2; + optional GpioAction pin02 = 3; + optional GpioAction pin03 = 4; + optional GpioAction pin04 = 5; + optional GpioAction pin05 = 6; + optional GpioAction pin06 = 7; + optional GpioAction pin07 = 8; + optional GpioAction pin08 = 9; + optional GpioAction pin09 = 10; + optional GpioAction pin10 = 11; + optional GpioAction pin11 = 12; + optional GpioAction pin12 = 13; + optional GpioAction pin13 = 14; + optional GpioAction pin14 = 15; + optional GpioAction pin15 = 16; + optional GpioAction pin16 = 17; + optional GpioAction pin17 = 18; + optional GpioAction pin18 = 19; + optional GpioAction pin19 = 20; + optional GpioAction pin20 = 21; + optional GpioAction pin21 = 22; + optional GpioAction pin22 = 23; + optional GpioAction pin23 = 24; + optional GpioAction pin24 = 25; + optional GpioAction pin25 = 26; + optional GpioAction pin26 = 27; + optional GpioAction pin27 = 28; + optional GpioAction pin28 = 29; + optional GpioAction pin29 = 30; +} + message AlternativePinMappings { @@ -127,6 +162,10 @@ message AlternativePinMappings optional int32 pinButtonR1 = 6; optional int32 pinButtonL2 = 7; optional int32 pinButtonR2 = 8; + optional int32 pinDpadUp = 9; + optional int32 pinDpadDown = 10; + optional int32 pinDpadLeft = 11; + optional int32 pinDpadRight = 12; } @@ -159,6 +198,7 @@ message DisplayOptions optional bool invert = 16; optional int32 displaySaverTimeout = 17; + optional bool turnOffWhenSuspended = 18; } message LEDOptions @@ -195,6 +235,8 @@ message LEDOptions optional int32 pledPin3 = 28; optional int32 pledPin4 = 29; optional uint32 pledColor = 30; + + optional bool turnOffWhenSuspended = 31; }; // This has to be kept in sync with AnimationOptions in AnimationStation.hpp @@ -263,10 +305,17 @@ message AnalogOptions { optional bool enabled = 1; - optional int32 analogAdcPinX = 2; - optional int32 analogAdcPinY = 3; + optional int32 analogAdc1PinX = 2; + optional int32 analogAdc1PinY = 3; optional bool forced_circularity = 4; optional uint32 analog_deadzone = 5; + optional int32 analogAdc2PinX = 6; + optional int32 analogAdc2PinY = 7; + optional DpadMode analogAdc1Mode = 8; + optional DpadMode analogAdc2Mode = 9; + optional InvertMode analogAdc1Invert = 10; + optional InvertMode analogAdc2Invert = 11; + optional bool auto_calibrate = 12; } message TurboOptions @@ -298,20 +347,23 @@ message SliderOptions { optional bool enabled = 1; - optional int32 pinLS = 2; - optional int32 pinRS = 3; + optional int32 deprecatedPinSliderOne = 2; + optional int32 deprecatedPinSliderTwo = 3; + optional DpadMode deprecatedModeOne = 4; + optional DpadMode deprecatedModeTwo = 5; + optional DpadMode modeDefault = 6; } message SOCDSliderOptions { optional bool enabled = 1; - optional int32 pinOne = 2; - optional int32 pinTwo = 3; + optional int32 deprecatedPinOne = 2; + optional int32 deprecatedPinTwo = 3; optional SOCDMode modeDefault = 4; - optional SOCDMode modeOne = 5; - optional SOCDMode modeTwo = 6; + optional SOCDMode deprecatedModeOne = 5; + optional SOCDMode deprecatedModeTwo = 6; } message ReverseOptions @@ -342,10 +394,10 @@ message DualDirectionalOptions { optional bool enabled = 1; - optional int32 upPin = 2; - optional int32 downPin = 3; - optional int32 leftPin = 4; - optional int32 rightPin = 5; + optional int32 deprecatedUpPin = 2; + optional int32 deprecatedDownPin = 3; + optional int32 deprecatedLeftPin = 4; + optional int32 deprecatedRightPin = 5; optional DpadMode dpadMode = 6; optional uint32 combineMode = 7; @@ -358,7 +410,7 @@ message TiltOptions optional int32 tilt1Pin = 2; optional int32 tilt2Pin = 3; - optional int32 tiltFunctionPin = 4; + optional int32 deprecatedTiltFunctionPin = 4; optional int32 tiltLeftAnalogUpPin = 5; optional int32 tiltLeftAnalogDownPin = 6; optional int32 tiltLeftAnalogLeftPin = 7; @@ -369,6 +421,15 @@ message TiltOptions optional int32 tiltRightAnalogRightPin = 12; optional SOCDMode tiltSOCDMode = 13; + + optional int32 factorTilt1LeftX = 14; + optional int32 factorTilt1LeftY = 15; + optional int32 factorTilt1RightX = 16; + optional int32 factorTilt1RightY = 17; + optional int32 factorTilt2LeftX = 18; + optional int32 factorTilt2LeftY = 19; + optional int32 factorTilt2RightX = 20; + optional int32 factorTilt2RightY = 21; } message BuzzerOptions @@ -409,13 +470,130 @@ message PS4Options optional bytes rsaRN = 12 [(nanopb).max_size = 256]; } +message PSPassthroughOptions +{ + optional bool enabled = 1; + optional int32 pinDplus = 2; + optional int32 pin5V = 3; +} + message WiiOptions { + message AnalogAxis + { + optional int32 axisType = 1; + optional int32 minRange = 2; + optional int32 maxRange = 3; + } + + message StickOptions + { + optional AnalogAxis x = 1; + optional AnalogAxis y = 2; + } + + message NunchukOptions + { + optional int32 buttonC = 1; + optional int32 buttonZ = 2; + optional StickOptions stick = 3; + } + + message ClassicOptions + { + optional int32 buttonA = 1; + optional int32 buttonB = 2; + optional int32 buttonX = 3; + optional int32 buttonY = 4; + optional int32 buttonL = 5; + optional int32 buttonZL = 6; + optional int32 buttonR = 7; + optional int32 buttonZR = 8; + optional int32 buttonMinus = 9; + optional int32 buttonPlus = 10; + optional int32 buttonHome = 11; + optional int32 buttonUp = 12; + optional int32 buttonDown = 13; + optional int32 buttonLeft = 14; + optional int32 buttonRight = 15; + optional StickOptions rightStick = 17; + optional StickOptions leftStick = 16; + optional AnalogAxis leftTrigger = 18; + optional AnalogAxis rightTrigger = 19; + } + + message TaikoOptions + { + optional int32 buttonKatLeft = 1; + optional int32 buttonKatRight = 2; + optional int32 buttonDonLeft = 3; + optional int32 buttonDonRight = 4; + } + + message GuitarOptions + { + optional int32 buttonRed = 1; + optional int32 buttonGreen = 2; + optional int32 buttonYellow = 3; + optional int32 buttonBlue = 4; + optional int32 buttonOrange = 5; + optional int32 buttonPedal = 6; + optional int32 buttonMinus = 7; + optional int32 buttonPlus = 8; + optional int32 strumUp = 9; + optional int32 strumDown = 10; + optional StickOptions stick = 11; + optional AnalogAxis whammyBar = 12; + } + + message DrumOptions + { + optional int32 buttonRed = 1; + optional int32 buttonGreen = 2; + optional int32 buttonYellow = 3; + optional int32 buttonBlue = 4; + optional int32 buttonOrange = 5; + optional int32 buttonPedal = 6; + optional int32 buttonMinus = 7; + optional int32 buttonPlus = 8; + optional StickOptions stick = 9; + } + + message TurntableOptions + { + optional int32 buttonLeftRed = 1; + optional int32 buttonLeftGreen = 2; + optional int32 buttonLeftBlue = 3; + optional int32 buttonRightRed = 4; + optional int32 buttonRightGreen = 5; + optional int32 buttonRightBlue = 6; + optional int32 buttonMinus = 7; + optional int32 buttonPlus = 8; + optional int32 buttonEuphoria = 9; + optional StickOptions stick = 10; + optional AnalogAxis leftTurntable = 11; + optional AnalogAxis rightTurntable = 12; + optional AnalogAxis effects = 13; + optional AnalogAxis fader = 14; + } + + message ControllerOptions + { + optional NunchukOptions nunchuk = 1; + optional ClassicOptions classic = 2; + optional TaikoOptions taiko = 3; + optional GuitarOptions guitar = 4; + optional DrumOptions drum = 5; + optional TurntableOptions turntable = 6; + } + optional bool enabled = 1; optional int32 i2cBlock = 2; optional int32 i2cSDAPin = 3; optional int32 i2cSCLPin = 4; optional int32 i2cSpeed = 5; + + optional ControllerOptions controllers = 6; } message SNESOptions @@ -431,6 +609,7 @@ message KeyboardHostOptions optional bool enabled = 1; optional int32 pinDplus = 2; optional KeyboardMapping mapping = 3; + optional int32 pin5V = 4; } message FocusModeOptions @@ -441,6 +620,36 @@ message FocusModeOptions optional bool oledLockEnabled = 4; optional bool rgbLockEnabled = 5; optional bool buttonLockEnabled = 6; + optional bool macroLockEnabled = 7; +} + +message MacroInput +{ + optional uint32 buttonMask = 1; + optional uint32 duration = 2; + optional uint32 waitDuration = 3 [default = 0]; +} + +message Macro +{ + optional MacroType macroType = 1; + optional string macroLabel = 2 [(nanopb).max_length = 64]; + repeated MacroInput macroInputs = 3 [(nanopb).max_count = 30]; + optional bool enabled = 4; + optional bool useMacroTriggerButton = 5; + optional int32 macroTriggerPin = 6 [default = -1]; + optional uint32 macroTriggerButton = 7; + optional bool exclusive = 8 [default = true]; + optional bool interruptible = 9 [default = true]; + optional bool showFrames = 10 [default = false]; +} + +message MacroOptions +{ + optional bool enabled = 1; + optional int32 pin = 2; + optional bool macroBoardLedEnabled = 4; + repeated Macro macroList = 3 [(nanopb).max_count = 6]; } message AddonOptions @@ -454,7 +663,7 @@ message AddonOptions optional AnalogADS1219Options analogADS1219Options = 7; optional DualDirectionalOptions dualDirectionalOptions = 8; optional BuzzerOptions buzzerOptions = 9; - optional ExtraButtonOptions extraButtonOptions = 10; + optional ExtraButtonOptions deprecatedExtraButtonOptions = 10; optional PlayerNumberOptions playerNumberOptions = 11; optional PS4Options ps4Options = 12 [(nanopb).disallow_export = true]; optional WiiOptions wiiOptions = 13; @@ -463,6 +672,14 @@ message AddonOptions optional FocusModeOptions focusModeOptions = 16; optional KeyboardHostOptions keyboardHostOptions = 17; optional TiltOptions tiltOptions = 18; + optional PSPassthroughOptions psPassthroughOptions = 19; + optional MacroOptions macroOptions = 20; +} + +message MigrationHistory +{ + optional bool hotkeysMigrated = 1 [default = false]; + optional bool gpioMappingsMigrated = 2 [default = false]; } message Config @@ -471,7 +688,7 @@ message Config optional GamepadOptions gamepadOptions = 2; optional HotkeyOptions hotkeyOptions = 3; - optional PinMappings pinMappings = 4; + optional PinMappings deprecatedPinMappings = 4; optional KeyboardMapping keyboardMapping = 5; optional DisplayOptions displayOptions = 6; optional LEDOptions ledOptions = 7; @@ -479,4 +696,8 @@ message Config optional AddonOptions addonOptions = 9; optional ForcedSetupOptions forcedSetupOptions = 10; optional ProfileOptions profileOptions = 11; + + optional string boardConfig = 12 [(nanopb).max_length = 63]; + optional GpioMappings gpioMappings = 13; + optional MigrationHistory migrations = 14; } diff --git a/tests/test-files/proto-files/enums.proto b/tests/test-files/proto-files/enums.proto index 83eb5a3..8a76837 100644 --- a/tests/test-files/proto-files/enums.proto +++ b/tests/test-files/proto-files/enums.proto @@ -19,6 +19,7 @@ enum ButtonLayout BUTTON_LAYOUT_FIGHTBOARD_STICK = 10; BUTTON_LAYOUT_FIGHTBOARD_MIRRORED = 11; BUTTON_LAYOUT_CUSTOMA = 12; + BUTTON_LAYOUT_OPENCORE0WASDA = 13; } enum ButtonLayoutRight @@ -42,6 +43,9 @@ enum ButtonLayoutRight BUTTON_LAYOUT_FIGHTBOARD = 14; BUTTON_LAYOUT_FIGHTBOARD_STICK_MIRRORED = 15; BUTTON_LAYOUT_CUSTOMB = 16; + BUTTON_LAYOUT_KEYBOARD8B = 17; + BUTTON_LAYOUT_OPENCORE0WASDB = 18; + BUTTON_LAYOUT_BSS = 99; } enum SplashMode @@ -73,6 +77,7 @@ enum OnBoardLedMode ON_BOARD_LED_MODE_OFF = 0; ON_BOARD_LED_MODE_MODE_INDICATOR = 1; ON_BOARD_LED_MODE_INPUT_TEST = 2; + ON_BOARD_LED_MODE_PS_AUTH = 3; } enum InputMode @@ -96,6 +101,16 @@ enum DpadMode DPAD_MODE_RIGHT_ANALOG = 2; } +enum InvertMode +{ + option (nanopb_enumopt).long_names = false; + + INVERT_NONE = 0; + INVERT_X = 1; + INVERT_Y = 2; + INVERT_XY = 3; +} + enum SOCDMode { option (nanopb_enumopt).long_names = false; @@ -107,6 +122,48 @@ enum SOCDMode SOCD_MODE_BYPASS = 4; // U+D=UD, L+R=LR (No cleaning applied) } +enum GpioAction +{ + option (nanopb_enumopt).long_names = false; + + // the lowest value is the default, which should be NONE; + // reserving some numbers in case we need more not-mapped type values + NONE = -10; + RESERVED = -5; + ASSIGNED_TO_ADDON = 0; + BUTTON_PRESS_UP = 1; + BUTTON_PRESS_DOWN = 2; + BUTTON_PRESS_LEFT = 3; + BUTTON_PRESS_RIGHT = 4; + BUTTON_PRESS_B1 = 5; + BUTTON_PRESS_B2 = 6; + BUTTON_PRESS_B3 = 7; + BUTTON_PRESS_B4 = 8; + BUTTON_PRESS_L1 = 9; + BUTTON_PRESS_R1 = 10; + BUTTON_PRESS_L2 = 11; + BUTTON_PRESS_R2 = 12; + BUTTON_PRESS_S1 = 13; + BUTTON_PRESS_S2 = 14; + BUTTON_PRESS_A1 = 15; + BUTTON_PRESS_A2 = 16; + BUTTON_PRESS_L3 = 17; + BUTTON_PRESS_R3 = 18; + BUTTON_PRESS_FN = 19; + BUTTON_PRESS_DDI_UP = 20; + BUTTON_PRESS_DDI_DOWN = 21; + BUTTON_PRESS_DDI_LEFT = 22; + BUTTON_PRESS_DDI_RIGHT = 23; + SUSTAIN_DP_MODE_DP = 24; + SUSTAIN_DP_MODE_LS = 25; + SUSTAIN_DP_MODE_RS = 26; + SUSTAIN_SOCD_MODE_UP_PRIO = 27; + SUSTAIN_SOCD_MODE_NEUTRAL = 28; + SUSTAIN_SOCD_MODE_SECOND_WIN = 29; + SUSTAIN_SOCD_MODE_FIRST_WIN = 30; + SUSTAIN_SOCD_MODE_BYPASS = 31; +} + enum GamepadHotkey { option (nanopb_enumopt).long_names = false; @@ -130,6 +187,10 @@ enum GamepadHotkey HOTKEY_LOAD_PROFILE_2 = 16; HOTKEY_LOAD_PROFILE_3 = 17; HOTKEY_LOAD_PROFILE_4 = 18; + HOTKEY_L3_BUTTON = 19; + HOTKEY_R3_BUTTON = 20; + HOTKEY_TOUCHPAD_BUTTON = 21; + HOTKEY_REBOOT_DEFAULT = 22; } // This has to be kept in sync with LEDFormat in NeoPico.hpp @@ -167,3 +228,20 @@ enum ForcedSetupMode FORCED_SETUP_MODE_LOCK_WEB_CONFIG = 2; FORCED_SETUP_MODE_LOCK_BOTH = 3; }; + +enum PS4ControllerType +{ + option (nanopb_enumopt).long_names = false; + + PS4_CONTROLLER = 0; + PS4_ARCADESTICK = 7; +} + +enum MacroType +{ + option (nanopb_enumopt).long_names = false; + + ON_PRESS = 1; + ON_HOLD_REPEAT = 2; + ON_TOGGLE = 3; +}; \ No newline at end of file diff --git a/tests/test-files/test-config.bin b/tests/test-files/test-config.bin index 0229fd2..f74e704 100644 Binary files a/tests/test-files/test-config.bin and b/tests/test-files/test-config.bin differ diff --git a/tests/test-files/test-firmware.bin b/tests/test-files/test-firmware.bin index 8827ffb..7d3e3b0 100644 Binary files a/tests/test-files/test-firmware.bin and b/tests/test-files/test-firmware.bin differ diff --git a/tests/test-files/test-storage-area.bin b/tests/test-files/test-storage-area.bin index 829754a..7aa1449 100644 Binary files a/tests/test-files/test-storage-area.bin and b/tests/test-files/test-storage-area.bin differ diff --git a/tests/test-files/test-whole-board.bin b/tests/test-files/test-whole-board.bin index 237e2e4..c248ee4 100644 Binary files a/tests/test-files/test-whole-board.bin and b/tests/test-files/test-whole-board.bin differ diff --git a/tests/test_builder.py b/tests/test_builder.py index ec754d9..36f76b0 100644 --- a/tests/test_builder.py +++ b/tests/test_builder.py @@ -55,13 +55,13 @@ def test_concatenate_to_usb(tmp_path): def test_padding_firmware(firmware_binary): """Test that firmware is padded to the expected size.""" padded = pad_firmware_up_to_storage(firmware_binary) - assert len(padded) == 2088960 + assert len(padded) == 2080768 def test_padding_firmware_can_truncate(): """Test that firmware is padded to the expected size.""" padded = pad_firmware_up_to_storage(bytearray(b'\x00' * 4 * 1024 * 1024), or_truncate=True) - assert len(padded) == 2088960 + assert len(padded) == 2080768 def test_firmware_plus_storage(firmware_binary, storage_dump): @@ -70,7 +70,7 @@ def test_firmware_plus_storage(firmware_binary, storage_dump): # if this is valid, we should be able to find the storage and footer again storage = get_storage_section(whole_board) footer_size, _, _ = get_config_footer(storage) - assert footer_size == 2032 + assert footer_size == 3309 def test_firmware_plus_config_binary(firmware_binary, config_binary): @@ -79,7 +79,7 @@ def test_firmware_plus_config_binary(firmware_binary, config_binary): # if this is valid, we should be able to find the storage and footer again storage = get_storage_section(whole_board) footer_size, _, _ = get_config_footer(storage) - assert footer_size == 2032 + assert footer_size == 3309 def test_chunky_firmware_plus_config_binary(config_binary): @@ -88,7 +88,7 @@ def test_chunky_firmware_plus_config_binary(config_binary): # if this is valid, we should be able to find the storage and footer again storage = get_storage_section(whole_board) footer_size, _, _ = get_config_footer(storage) - assert footer_size == 2032 + assert footer_size == 3309 def test_replace_config_in_binary(config_binary): @@ -98,7 +98,7 @@ def test_replace_config_in_binary(config_binary): # if this is valid, we should be able to find the storage and footer again storage = get_storage_section(whole_board) footer_size, _, _ = get_config_footer(storage) - assert footer_size == 2032 + assert footer_size == 3309 def test_replace_config_in_binary_not_big_enough(config_binary): @@ -108,7 +108,7 @@ def test_replace_config_in_binary_not_big_enough(config_binary): # if this is valid, we should be able to find the storage and footer again storage = get_storage_section(whole_board) footer_size, _, _ = get_config_footer(storage) - assert footer_size == 2032 + assert footer_size == 3309 def test_padding_firmware_too_big(firmware_binary): @@ -128,15 +128,15 @@ def test_write_new_config_to_whole_board(whole_board_dump, tmp_path): board_dump = file.read() config = get_config(get_storage_section(board_dump)) - assert config.boardVersion == 'v0.7.2' - config.boardVersion = 'v0.7.2-COOL' + assert config.boardVersion == 'v0.7.5' + config.boardVersion = 'v0.7.5-COOL' write_new_config_to_filename(config, tmp_file, inject=True) # read new file with open(tmp_file, 'rb') as file: new_board_dump = file.read() config = get_config(get_storage_section(new_board_dump)) - assert config.boardVersion == 'v0.7.2-COOL' + assert config.boardVersion == 'v0.7.5-COOL' assert len(board_dump) == len(new_board_dump) @@ -149,14 +149,14 @@ def test_write_new_config_to_firmware(firmware_binary, tmp_path): config_pb2 = get_config_pb2() config = config_pb2.Config() - config.boardVersion = 'v0.7.2-COOL' + config.boardVersion = 'v0.7.5-COOL' write_new_config_to_filename(config, tmp_file, inject=True) # read new file with open(tmp_file, 'rb') as file: new_board_dump = file.read() config = get_config(get_storage_section(new_board_dump)) - assert config.boardVersion == 'v0.7.2-COOL' + assert config.boardVersion == 'v0.7.5-COOL' assert len(new_board_dump) == 2 * 1024 * 1024 @@ -166,7 +166,7 @@ def test_write_new_config_to_config_bin(firmware_binary, tmp_path): tmp_file = os.path.join(tmp_path, 'config.bin') config_pb2 = get_config_pb2() config = config_pb2.Config() - config.boardVersion = 'v0.7.2-COOL' + config.boardVersion = 'v0.7.5-COOL' write_new_config_to_filename(config, tmp_file) # read new file @@ -174,7 +174,7 @@ def test_write_new_config_to_config_bin(firmware_binary, tmp_path): config_dump = file.read() config = get_config(config_dump) config_size, _, _ = get_config_footer(config_dump) - assert config.boardVersion == 'v0.7.2-COOL' + assert config.boardVersion == 'v0.7.5-COOL' assert len(config_dump) == config_size + 12 @@ -188,8 +188,8 @@ def test_write_new_config_to_usb(config_binary): write_new_config_to_usb(config, end_out, end_in) # check that it got padded - assert len(serialized) == 2044 - padded_serialized = bytearray(b'\x00' * 2052) + serialized + assert len(serialized) == 3321 + padded_serialized = bytearray(b'\x00' * 775) + serialized assert mock_write.call_args.args[2] % 4096 == 0 assert mock_write.call_args.args[3] == padded_serialized diff --git a/tests/test_commands.py b/tests/test_commands.py index 1dc11c0..5ea7d08 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -44,7 +44,7 @@ def test_concatenate_invocation(tmpdir): with open(out_filename, 'rb') as out_file, open('tests/test-files/test-storage-area.bin', 'rb') as storage_file: out = out_file.read() storage = storage_file.read() - assert out[2088960:2097152] == storage + assert out[2080768:2097152] == storage def test_storage_dump_invocation(): @@ -52,7 +52,7 @@ def test_storage_dump_invocation(): result = run(['visualize-storage', '-P', 'tests/test-files/proto-files', '--filename', 'tests/test-files/test-storage-area.bin'], capture_output=True, encoding='utf8') - assert 'boardVersion: "v0.7.2"' in result.stdout + assert 'boardVersion: "v0.7.5"' in result.stdout def test_debug_storage_dump_invocation(): @@ -60,8 +60,8 @@ def test_debug_storage_dump_invocation(): result = run(['visualize-storage', '-d', '-P', 'tests/test-files/proto-files', '--filename', 'tests/test-files/test-storage-area.bin'], capture_output=True, encoding='utf8') - assert 'boardVersion: "v0.7.2"' in result.stdout - assert 'length of content to look for footer in: 8192' in result.stderr + assert 'boardVersion: "v0.7.5"' in result.stdout + assert 'length of content to look for footer in: 16384' in result.stderr def test_storage_dump_json_invocation(): @@ -70,4 +70,4 @@ def test_storage_dump_json_invocation(): '--filename', 'tests/test-files/test-storage-area.bin'], capture_output=True, encoding='utf8') to_dict = json.loads(result.stdout) - assert to_dict['boardVersion'] == 'v0.7.2' + assert to_dict['boardVersion'] == 'v0.7.5' diff --git a/tests/test_gui.py b/tests/test_gui.py index d755223..97d84ba 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -73,12 +73,12 @@ async def test_simple_tree_building(): """Test some basics of the config tree being built.""" app = ConfigEditor(config_filename=os.path.join(HERE, 'test-files/test-config.bin')) async with app.run_test() as pilot: - check_node = pilot.app.query_one(Tree).root.children[2] - assert "boardVersion = 'v0.7.2'" in check_node.label + check_node = pilot.app.query_one(Tree).root.children[3] + assert "boardVersion = 'v0.7.5'" in check_node.label parent_config, field_descriptor, field_value = check_node.data assert parent_config == pilot.app.config assert field_descriptor == pilot.app.config.DESCRIPTOR.fields_by_name['boardVersion'] - assert field_value == 'v0.7.2' + assert field_value == 'v0.7.5' app.exit() @@ -89,7 +89,7 @@ async def test_simple_toggle(): app = ConfigEditor(config_filename=os.path.join(HERE, 'test-files/test-config.bin')) async with app.run_test() as pilot: tree = pilot.app.query_one(Tree) - display_node = tree.root.children[3] + display_node = tree.root.children[5] invert_node = display_node.children[11] assert 'False' in invert_node.label @@ -104,7 +104,7 @@ async def test_simple_edit_via_input_field(): app = ConfigEditor(config_filename=os.path.join(HERE, 'test-files/test-config.bin')) async with app.run_test() as pilot: tree = pilot.app.query_one(Tree) - display_node = tree.root.children[3] + display_node = tree.root.children[5] i2cspeed_node = display_node.children[10] assert pilot.app.config.displayOptions.i2cSpeed == 400000 @@ -128,7 +128,7 @@ async def test_simple_edit_via_input_field_enum(): app = ConfigEditor(config_filename=os.path.join(HERE, 'test-files/test-config.bin')) async with app.run_test() as pilot: tree = pilot.app.query_one(Tree) - gamepad_node = tree.root.children[5] + gamepad_node = tree.root.children[7] dpadmode_node = gamepad_node.children[0] assert pilot.app.config.gamepadOptions.dpadMode == 0 @@ -152,8 +152,8 @@ async def test_simple_edit_via_input_field_string(): app = ConfigEditor(config_filename=os.path.join(HERE, 'test-files/test-config.bin')) async with app.run_test() as pilot: tree = pilot.app.query_one(Tree) - version_node = tree.root.children[2] - assert pilot.app.config.boardVersion == 'v0.7.2' + version_node = tree.root.children[3] + assert pilot.app.config.boardVersion == 'v0.7.5' tree.select_node(version_node) tree.action_select_cursor() @@ -173,7 +173,7 @@ async def test_add_node_to_repeated(): app = ConfigEditor(config_filename=os.path.join(HERE, 'test-files/test-config.bin')) async with app.run_test() as pilot: tree = pilot.app.query_one(Tree) - profile_node = tree.root.children[10] + profile_node = tree.root.children[13] altpinmappings_node = profile_node.children[0] tree.root.expand_all() @@ -207,8 +207,8 @@ async def test_save(config_binary, tmp_path): app = ConfigEditor(config_filename=new_filename) async with app.run_test() as pilot: - pilot.app.config.boardVersion = 'v0.7.2-bss-wuz-here' + pilot.app.config.boardVersion = 'v0.7.5-bss-wuz-here' await pilot.press('s') config = get_config_from_file(new_filename) - assert config.boardVersion == 'v0.7.2-bss-wuz-here' + assert config.boardVersion == 'v0.7.5-bss-wuz-here' diff --git a/tests/test_pico.py b/tests/test_pico.py index 39f65d7..fe470a6 100644 --- a/tests/test_pico.py +++ b/tests/test_pico.py @@ -96,9 +96,9 @@ def test_exit_xip(): def test_erase(): """Test that we can send a command to erase a section of memory.""" end_out, end_in = mock.MagicMock(), mock.MagicMock() - pico.erase(end_out, end_in, 0x101FE000, 8192) + pico.erase(end_out, end_in, 0x101FC000, 8192) - payload = struct.pack('