From f2ed28105321826af65997ee346db89c2fdc8df5 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Wed, 3 Jan 2024 12:19:54 -0600 Subject: [PATCH] test parsing config as JSON into a message this also bumps the proto files in the test directory as a matter of convenience, so some tests got updated accordingly Signed-off-by: Brian S. Stephan --- gp2040ce_bintools/storage.py | 16 + tests/conftest.py | 10 + tests/test-files/pb2-files/config_pb2.py | 278 +++-- tests/test-files/pb2-files/enums_pb2.py | 64 +- tests/test-files/proto-files/config.proto | 162 +-- tests/test-files/proto-files/enums.proto | 23 +- tests/test-files/test-config.json | 1151 +++++++++++++++++++++ tests/test_builder.py | 2 +- tests/test_gui.py | 10 +- tests/test_storage.py | 17 +- 10 files changed, 1529 insertions(+), 204 deletions(-) create mode 100644 tests/test-files/test-config.json diff --git a/gp2040ce_bintools/storage.py b/gp2040ce_bintools/storage.py index 9d0d6c1..314a666 100644 --- a/gp2040ce_bintools/storage.py +++ b/gp2040ce_bintools/storage.py @@ -8,6 +8,7 @@ import binascii import logging from google.protobuf.json_format import MessageToJson +from google.protobuf.json_format import Parse as JsonParse from google.protobuf.message import Message from gp2040ce_bintools import core_parser, get_config_pb2 @@ -61,6 +62,21 @@ def get_config(content: bytes) -> Message: return config +def get_config_from_json(content: str) -> Message: + """Read the config represented by a JSON string. + + Args: + content: JSON string representing a board config + Returns: + the parsed configuration + """ + config_pb2 = get_config_pb2() + config = config_pb2.Config() + JsonParse(content, config) + logger.debug("parsed: %s", config) + return config + + def get_config_footer(content: bytes) -> tuple[int, int, str]: """Confirm and retrieve the config footer from a series of bytes of GP2040-CE storage. diff --git a/tests/conftest.py b/tests/conftest.py index 898d088..33bb79b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -20,6 +20,16 @@ def config_binary(): yield content +@pytest.fixture +def config_json(): + """Read in a test GP2040-CE configuration, Protobuf serialized binary form with footer.""" + filename = os.path.join(HERE, 'test-files', 'test-config.json') + with open(filename, 'r') as file: + content = file.read() + + yield content + + @pytest.fixture def firmware_binary(): """Read in a test GP2040-CE firmware binary file.""" diff --git a/tests/test-files/pb2-files/config_pb2.py b/tests/test-files/pb2-files/config_pb2.py index 21bf0fd..98eed35 100644 --- a/tests/test-files/pb2-files/config_pb2.py +++ b/tests/test-files/pb2-files/config_pb2.py @@ -15,17 +15,59 @@ 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\"\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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x63onfig.proto\x1a\x0cnanopb.proto\x1a\x0b\x65nums.proto\"\xf6\x03\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\x12\x15\n\rdebounceDelay\x18\x0b \x01(\r\x12\x13\n\x0binputModeB1\x18\x0c \x01(\x05\x12\x13\n\x0binputModeB2\x18\r \x01(\x05\x12\x13\n\x0binputModeB3\x18\x0e \x01(\x05\x12\x13\n\x0binputModeB4\x18\x0f \x01(\x05\x12\x13\n\x0binputModeL1\x18\x10 \x01(\x05\x12\x13\n\x0binputModeL2\x18\x11 \x01(\x05\x12\x13\n\x0binputModeR1\x18\x12 \x01(\x05\x12\x13\n\x0binputModeR2\x18\x13 \x01(\x05\x12\x15\n\rps4ReportHack\x18\x14 \x01(\x08\"\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\x04\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\x12\x1e\n\x08hotkey13\x18\r \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey14\x18\x0e \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey15\x18\x0f \x01(\x0b\x32\x0c.HotkeyEntry\x12\x1e\n\x08hotkey16\x18\x10 \x01(\x0b\x32\x0c.HotkeyEntry\"\xf1\x03\n\x11PeripheralOptions\x12\x30\n\tblockI2C0\x18\x01 \x01(\x0b\x32\x1d.PeripheralOptions.I2COptions\x12\x30\n\tblockI2C1\x18\x02 \x01(\x0b\x32\x1d.PeripheralOptions.I2COptions\x12\x30\n\tblockSPI0\x18\x03 \x01(\x0b\x32\x1d.PeripheralOptions.SPIOptions\x12\x30\n\tblockSPI1\x18\x04 \x01(\x0b\x32\x1d.PeripheralOptions.SPIOptions\x12\x30\n\tblockUSB0\x18\x05 \x01(\x0b\x32\x1d.PeripheralOptions.USBOptions\x1a\x46\n\nI2COptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03sda\x18\x02 \x01(\x05\x12\x0b\n\x03scl\x18\x03 \x01(\x05\x12\r\n\x05speed\x18\x04 \x01(\r\x1aN\n\nSPIOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\n\n\x02rx\x18\x02 \x01(\x05\x12\n\n\x02\x63s\x18\x03 \x01(\x05\x12\x0b\n\x03sck\x18\x04 \x01(\x05\x12\n\n\x02tx\x18\x05 \x01(\x05\x1aJ\n\nUSBOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\n\n\x02\x64p\x18\x02 \x01(\x05\x12\x10\n\x08\x65nable5v\x18\x03 \x01(\x05\x12\r\n\x05order\x18\x04 \x01(\r\"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\".\n\x0fGpioMappingInfo\x12\x1b\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x0b.GpioAction\"5\n\x0cGpioMappings\x12%\n\x04pins\x18\x01 \x03(\x0b\x32\x10.GpioMappingInfoB\x05\x92?\x02\x10\x1e\"\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\"\x8c\x01\n\x0eProfileOptions\x12J\n deprecatedAlternativePinMappings\x18\x01 \x03(\x0b\x32\x17.AlternativePinMappingsB\x07\x18\x01\x92?\x02\x10\x03\x12.\n\x10gpioMappingsSets\x18\x02 \x03(\x0b\x32\r.GpioMappingsB\x05\x92?\x02\x10\x03\"\x9e\x04\n\x0e\x44isplayOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08i2cBlock\x18\x02 \x01(\x05\x12\x1f\n\x13\x64\x65precatedI2cSDAPin\x18\x03 \x01(\x05\x42\x02\x18\x01\x12\x1f\n\x13\x64\x65precatedI2cSCLPin\x18\x04 \x01(\x05\x42\x02\x18\x01\x12\x12\n\ni2cAddress\x18\x05 \x01(\x05\x12\x1e\n\x12\x64\x65precatedI2cSpeed\x18\x06 \x01(\x05\x42\x02\x18\x01\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\"\xce\x05\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\x12\x12\n\npledIndex1\x18 \x01(\x05\x12\x12\n\npledIndex2\x18! \x01(\x05\x12\x12\n\npledIndex3\x18\" \x01(\x05\x12\x12\n\npledIndex4\x18# \x01(\x05\"\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\"\xdc\x01\n\rSliderOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\"\n\x16\x64\x65precatedPinSliderOne\x18\x02 \x01(\x05\x42\x02\x18\x01\x12\"\n\x16\x64\x65precatedPinSliderTwo\x18\x03 \x01(\x05\x42\x02\x18\x01\x12(\n\x11\x64\x65precatedModeOne\x18\x04 \x01(\x0e\x32\t.DpadModeB\x02\x18\x01\x12(\n\x11\x64\x65precatedModeTwo\x18\x05 \x01(\x0e\x32\t.DpadModeB\x02\x18\x01\x12\x1e\n\x0bmodeDefault\x18\x06 \x01(\x0e\x32\t.DpadMode\"\xd4\x01\n\x11SOCDSliderOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1c\n\x10\x64\x65precatedPinOne\x18\x02 \x01(\x05\x42\x02\x18\x01\x12\x1c\n\x10\x64\x65precatedPinTwo\x18\x03 \x01(\x05\x42\x02\x18\x01\x12\x1e\n\x0bmodeDefault\x18\x04 \x01(\x0e\x32\t.SOCDMode\x12(\n\x11\x64\x65precatedModeOne\x18\x05 \x01(\x0e\x32\t.SOCDModeB\x02\x18\x01\x12(\n\x11\x64\x65precatedModeTwo\x18\x06 \x01(\x0e\x32\t.SOCDModeB\x02\x18\x01\"\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\"\xaf\x01\n\x14\x41nalogADS1219Options\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08i2cBlock\x18\x02 \x01(\x05\x12\x1f\n\x13\x64\x65precatedI2cSDAPin\x18\x03 \x01(\x05\x42\x02\x18\x01\x12\x1f\n\x13\x64\x65precatedI2cSCLPin\x18\x04 \x01(\x05\x42\x02\x18\x01\x12\x12\n\ni2cAddress\x18\x05 \x01(\x05\x12\x1e\n\x12\x64\x65precatedI2cSpeed\x18\x06 \x01(\x05\x42\x02\x18\x01\"\xeb\x01\n\x16\x44ualDirectionalOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1b\n\x0f\x64\x65precatedUpPin\x18\x02 \x01(\x05\x42\x02\x18\x01\x12\x1d\n\x11\x64\x65precatedDownPin\x18\x03 \x01(\x05\x42\x02\x18\x01\x12\x1d\n\x11\x64\x65precatedLeftPin\x18\x04 \x01(\x05\x42\x02\x18\x01\x12\x1e\n\x12\x64\x65precatedRightPin\x18\x05 \x01(\x05\x42\x02\x18\x01\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\"\xd8\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\x42\x02\x18\x01\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\"d\n\x14PSPassthroughOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x12\x64\x65precatedPinDplus\x18\x02 \x01(\x05\x42\x02\x18\x01\x12\x1b\n\x0f\x64\x65precatedPin5V\x18\x03 \x01(\x05\x42\x02\x18\x01\"*\n\x17XBOnePassthroughOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"\xf5\x11\n\nWiiOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x10\n\x08i2cBlock\x18\x02 \x01(\x05\x12\x1f\n\x13\x64\x65precatedI2cSDAPin\x18\x03 \x01(\x05\x42\x02\x18\x01\x12\x1f\n\x13\x64\x65precatedI2cSCLPin\x18\x04 \x01(\x05\x42\x02\x18\x01\x12\x1e\n\x12\x64\x65precatedI2cSpeed\x18\x05 \x01(\x05\x42\x02\x18\x01\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\"\x86\x01\n\x13KeyboardHostOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x12\x64\x65precatedPinDplus\x18\x02 \x01(\x05\x42\x02\x18\x01\x12!\n\x07mapping\x18\x03 \x01(\x0b\x32\x10.KeyboardMapping\x12\x1b\n\x0f\x64\x65precatedPin5V\x18\x04 \x01(\x05\x42\x02\x18\x01\"\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\"P\n\x13InputHistoryOptions\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0e\n\x06length\x18\x02 \x01(\r\x12\x0b\n\x03\x63ol\x18\x03 \x01(\r\x12\x0b\n\x03row\x18\x04 \x01(\r\"\xfc\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=\n\x1c\x64\x65precatedExtraButtonOptions\x18\n \x01(\x0b\x32\x13.ExtraButtonOptionsB\x02\x18\x01\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\x12\x31\n\x13inputHistoryOptions\x18\x15 \x01(\x0b\x32\x14.InputHistoryOptions\x12\x39\n\x17xbonePassthroughOptions\x18\x16 \x01(\x0b\x32\x18.XBOnePassthroughOptions\"~\n\x10MigrationHistory\x12\x1e\n\x0fhotkeysMigrated\x18\x01 \x01(\x08:\x05\x66\x61lse\x12#\n\x14gpioMappingsMigrated\x18\x02 \x01(\x08:\x05\x66\x61lse\x12%\n\x16\x62uttonProfilesMigrated\x18\x03 \x01(\x08:\x05\x66\x61lse\"\xe4\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.PinMappingsB\x02\x18\x01\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\x12-\n\x11peripheralOptions\x18\x0f \x01(\x0b\x32\x12.PeripheralOptions') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'config_pb2', globals()) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - _PROFILEOPTIONS.fields_by_name['alternativePinMappings']._options = None - _PROFILEOPTIONS.fields_by_name['alternativePinMappings']._serialized_options = b'\222?\002\020\003' + _GPIOMAPPINGS.fields_by_name['pins']._options = None + _GPIOMAPPINGS.fields_by_name['pins']._serialized_options = b'\222?\002\020\036' + _PROFILEOPTIONS.fields_by_name['deprecatedAlternativePinMappings']._options = None + _PROFILEOPTIONS.fields_by_name['deprecatedAlternativePinMappings']._serialized_options = b'\030\001\222?\002\020\003' + _PROFILEOPTIONS.fields_by_name['gpioMappingsSets']._options = None + _PROFILEOPTIONS.fields_by_name['gpioMappingsSets']._serialized_options = b'\222?\002\020\003' + _DISPLAYOPTIONS.fields_by_name['deprecatedI2cSDAPin']._options = None + _DISPLAYOPTIONS.fields_by_name['deprecatedI2cSDAPin']._serialized_options = b'\030\001' + _DISPLAYOPTIONS.fields_by_name['deprecatedI2cSCLPin']._options = None + _DISPLAYOPTIONS.fields_by_name['deprecatedI2cSCLPin']._serialized_options = b'\030\001' + _DISPLAYOPTIONS.fields_by_name['deprecatedI2cSpeed']._options = None + _DISPLAYOPTIONS.fields_by_name['deprecatedI2cSpeed']._serialized_options = b'\030\001' _DISPLAYOPTIONS.fields_by_name['splashImage']._options = None _DISPLAYOPTIONS.fields_by_name['splashImage']._serialized_options = b'\222?\003\010\200\010' + _SLIDEROPTIONS.fields_by_name['deprecatedPinSliderOne']._options = None + _SLIDEROPTIONS.fields_by_name['deprecatedPinSliderOne']._serialized_options = b'\030\001' + _SLIDEROPTIONS.fields_by_name['deprecatedPinSliderTwo']._options = None + _SLIDEROPTIONS.fields_by_name['deprecatedPinSliderTwo']._serialized_options = b'\030\001' + _SLIDEROPTIONS.fields_by_name['deprecatedModeOne']._options = None + _SLIDEROPTIONS.fields_by_name['deprecatedModeOne']._serialized_options = b'\030\001' + _SLIDEROPTIONS.fields_by_name['deprecatedModeTwo']._options = None + _SLIDEROPTIONS.fields_by_name['deprecatedModeTwo']._serialized_options = b'\030\001' + _SOCDSLIDEROPTIONS.fields_by_name['deprecatedPinOne']._options = None + _SOCDSLIDEROPTIONS.fields_by_name['deprecatedPinOne']._serialized_options = b'\030\001' + _SOCDSLIDEROPTIONS.fields_by_name['deprecatedPinTwo']._options = None + _SOCDSLIDEROPTIONS.fields_by_name['deprecatedPinTwo']._serialized_options = b'\030\001' + _SOCDSLIDEROPTIONS.fields_by_name['deprecatedModeOne']._options = None + _SOCDSLIDEROPTIONS.fields_by_name['deprecatedModeOne']._serialized_options = b'\030\001' + _SOCDSLIDEROPTIONS.fields_by_name['deprecatedModeTwo']._options = None + _SOCDSLIDEROPTIONS.fields_by_name['deprecatedModeTwo']._serialized_options = b'\030\001' + _ANALOGADS1219OPTIONS.fields_by_name['deprecatedI2cSDAPin']._options = None + _ANALOGADS1219OPTIONS.fields_by_name['deprecatedI2cSDAPin']._serialized_options = b'\030\001' + _ANALOGADS1219OPTIONS.fields_by_name['deprecatedI2cSCLPin']._options = None + _ANALOGADS1219OPTIONS.fields_by_name['deprecatedI2cSCLPin']._serialized_options = b'\030\001' + _ANALOGADS1219OPTIONS.fields_by_name['deprecatedI2cSpeed']._options = None + _ANALOGADS1219OPTIONS.fields_by_name['deprecatedI2cSpeed']._serialized_options = b'\030\001' + _DUALDIRECTIONALOPTIONS.fields_by_name['deprecatedUpPin']._options = None + _DUALDIRECTIONALOPTIONS.fields_by_name['deprecatedUpPin']._serialized_options = b'\030\001' + _DUALDIRECTIONALOPTIONS.fields_by_name['deprecatedDownPin']._options = None + _DUALDIRECTIONALOPTIONS.fields_by_name['deprecatedDownPin']._serialized_options = b'\030\001' + _DUALDIRECTIONALOPTIONS.fields_by_name['deprecatedLeftPin']._options = None + _DUALDIRECTIONALOPTIONS.fields_by_name['deprecatedLeftPin']._serialized_options = b'\030\001' + _DUALDIRECTIONALOPTIONS.fields_by_name['deprecatedRightPin']._options = None + _DUALDIRECTIONALOPTIONS.fields_by_name['deprecatedRightPin']._serialized_options = b'\030\001' + _TILTOPTIONS.fields_by_name['deprecatedTiltFunctionPin']._options = None + _TILTOPTIONS.fields_by_name['deprecatedTiltFunctionPin']._serialized_options = b'\030\001' _PS4OPTIONS.fields_by_name['serial']._options = None _PS4OPTIONS.fields_by_name['serial']._serialized_options = b'\222?\002\010\020' _PS4OPTIONS.fields_by_name['signature']._options = None @@ -48,116 +90,148 @@ 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' + _PSPASSTHROUGHOPTIONS.fields_by_name['deprecatedPinDplus']._options = None + _PSPASSTHROUGHOPTIONS.fields_by_name['deprecatedPinDplus']._serialized_options = b'\030\001' + _PSPASSTHROUGHOPTIONS.fields_by_name['deprecatedPin5V']._options = None + _PSPASSTHROUGHOPTIONS.fields_by_name['deprecatedPin5V']._serialized_options = b'\030\001' + _WIIOPTIONS.fields_by_name['deprecatedI2cSDAPin']._options = None + _WIIOPTIONS.fields_by_name['deprecatedI2cSDAPin']._serialized_options = b'\030\001' + _WIIOPTIONS.fields_by_name['deprecatedI2cSCLPin']._options = None + _WIIOPTIONS.fields_by_name['deprecatedI2cSCLPin']._serialized_options = b'\030\001' + _WIIOPTIONS.fields_by_name['deprecatedI2cSpeed']._options = None + _WIIOPTIONS.fields_by_name['deprecatedI2cSpeed']._serialized_options = b'\030\001' + _KEYBOARDHOSTOPTIONS.fields_by_name['deprecatedPinDplus']._options = None + _KEYBOARDHOSTOPTIONS.fields_by_name['deprecatedPinDplus']._serialized_options = b'\030\001' + _KEYBOARDHOSTOPTIONS.fields_by_name['deprecatedPin5V']._options = None + _KEYBOARDHOSTOPTIONS.fields_by_name['deprecatedPin5V']._serialized_options = b'\030\001' _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['deprecatedExtraButtonOptions']._options = None + _ADDONOPTIONS.fields_by_name['deprecatedExtraButtonOptions']._serialized_options = b'\030\001' _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['deprecatedPinMappings']._options = None + _CONFIG.fields_by_name['deprecatedPinMappings']._serialized_options = b'\030\001' _CONFIG.fields_by_name['boardConfig']._options = None _CONFIG.fields_by_name['boardConfig']._serialized_options = b'\222?\002p?' _GAMEPADOPTIONS._serialized_start=44 - _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 + _GAMEPADOPTIONS._serialized_end=546 + _KEYBOARDMAPPING._serialized_start=549 + _KEYBOARDMAPPING._serialized_end=943 + _HOTKEYENTRY._serialized_start=945 + _HOTKEYENTRY._serialized_end=1046 + _HOTKEYOPTIONS._serialized_start=1049 + _HOTKEYOPTIONS._serialized_end=1576 + _PERIPHERALOPTIONS._serialized_start=1579 + _PERIPHERALOPTIONS._serialized_end=2076 + _PERIPHERALOPTIONS_I2COPTIONS._serialized_start=1850 + _PERIPHERALOPTIONS_I2COPTIONS._serialized_end=1920 + _PERIPHERALOPTIONS_SPIOPTIONS._serialized_start=1922 + _PERIPHERALOPTIONS_SPIOPTIONS._serialized_end=2000 + _PERIPHERALOPTIONS_USBOPTIONS._serialized_start=2002 + _PERIPHERALOPTIONS_USBOPTIONS._serialized_end=2076 + _FORCEDSETUPOPTIONS._serialized_start=2078 + _FORCEDSETUPOPTIONS._serialized_end=2130 + _BUTTONLAYOUTPARAMSCOMMON._serialized_start=2132 + _BUTTONLAYOUTPARAMSCOMMON._serialized_end=2235 + _BUTTONLAYOUTPARAMSLEFT._serialized_start=2237 + _BUTTONLAYOUTPARAMSLEFT._serialized_end=2335 + _BUTTONLAYOUTPARAMSRIGHT._serialized_start=2337 + _BUTTONLAYOUTPARAMSRIGHT._serialized_end=2441 + _BUTTONLAYOUTCUSTOMOPTIONS._serialized_start=2443 + _BUTTONLAYOUTCUSTOMOPTIONS._serialized_end=2562 + _PINMAPPINGS._serialized_start=2565 + _PINMAPPINGS._serialized_end=2976 + _GPIOMAPPINGINFO._serialized_start=2978 + _GPIOMAPPINGINFO._serialized_end=3024 + _GPIOMAPPINGS._serialized_start=3026 + _GPIOMAPPINGS._serialized_end=3079 + _ALTERNATIVEPINMAPPINGS._serialized_start=3082 + _ALTERNATIVEPINMAPPINGS._serialized_end=3357 + _PROFILEOPTIONS._serialized_start=3360 + _PROFILEOPTIONS._serialized_end=3500 + _DISPLAYOPTIONS._serialized_start=3503 + _DISPLAYOPTIONS._serialized_end=4045 + _LEDOPTIONS._serialized_start=4048 + _LEDOPTIONS._serialized_end=4766 + _ANIMATIONOPTIONS_PROTO._serialized_start=4769 + _ANIMATIONOPTIONS_PROTO._serialized_end=5955 + _BOOTSELBUTTONOPTIONS._serialized_start=5957 + _BOOTSELBUTTONOPTIONS._serialized_end=6015 + _ONBOARDLEDOPTIONS._serialized_start=6017 + _ONBOARDLEDOPTIONS._serialized_end=6084 + _ANALOGOPTIONS._serialized_start=6087 + _ANALOGOPTIONS._serialized_end=6440 + _TURBOOPTIONS._serialized_start=6443 + _TURBOOPTIONS._serialized_end=6889 + _SLIDEROPTIONS._serialized_start=6892 + _SLIDEROPTIONS._serialized_end=7112 + _SOCDSLIDEROPTIONS._serialized_start=7115 + _SOCDSLIDEROPTIONS._serialized_end=7327 + _REVERSEOPTIONS._serialized_start=7330 + _REVERSEOPTIONS._serialized_end=7477 + _ANALOGADS1219OPTIONS._serialized_start=7480 + _ANALOGADS1219OPTIONS._serialized_end=7655 + _DUALDIRECTIONALOPTIONS._serialized_start=7658 + _DUALDIRECTIONALOPTIONS._serialized_end=7893 + _TILTOPTIONS._serialized_start=7896 + _TILTOPTIONS._serialized_end=8496 + _BUZZEROPTIONS._serialized_start=8498 + _BUZZEROPTIONS._serialized_end=8559 + _EXTRABUTTONOPTIONS._serialized_start=8561 + _EXTRABUTTONOPTIONS._serialized_end=8630 + _PLAYERNUMBEROPTIONS._serialized_start=8632 + _PLAYERNUMBEROPTIONS._serialized_end=8686 + _PS4OPTIONS._serialized_start=8689 + _PS4OPTIONS._serialized_end=8969 + _PSPASSTHROUGHOPTIONS._serialized_start=8971 + _PSPASSTHROUGHOPTIONS._serialized_end=9071 + _XBONEPASSTHROUGHOPTIONS._serialized_start=9073 + _XBONEPASSTHROUGHOPTIONS._serialized_end=9115 + _WIIOPTIONS._serialized_start=9118 + _WIIOPTIONS._serialized_end=11411 + _WIIOPTIONS_ANALOGAXIS._serialized_start=9317 + _WIIOPTIONS_ANALOGAXIS._serialized_end=9383 + _WIIOPTIONS_STICKOPTIONS._serialized_start=9385 + _WIIOPTIONS_STICKOPTIONS._serialized_end=9469 + _WIIOPTIONS_NUNCHUKOPTIONS._serialized_start=9471 + _WIIOPTIONS_NUNCHUKOPTIONS._serialized_end=9562 + _WIIOPTIONS_CLASSICOPTIONS._serialized_start=9565 + _WIIOPTIONS_CLASSICOPTIONS._serialized_end=10041 + _WIIOPTIONS_TAIKOOPTIONS._serialized_start=10043 + _WIIOPTIONS_TAIKOOPTIONS._serialized_end=10151 + _WIIOPTIONS_GUITAROPTIONS._serialized_start=10154 + _WIIOPTIONS_GUITAROPTIONS._serialized_end=10455 + _WIIOPTIONS_DRUMOPTIONS._serialized_start=10458 + _WIIOPTIONS_DRUMOPTIONS._serialized_end=10678 + _WIIOPTIONS_TURNTABLEOPTIONS._serialized_start=10681 + _WIIOPTIONS_TURNTABLEOPTIONS._serialized_end=11127 + _WIIOPTIONS_CONTROLLEROPTIONS._serialized_start=11130 + _WIIOPTIONS_CONTROLLEROPTIONS._serialized_end=11411 + _SNESOPTIONS._serialized_start=11413 + _SNESOPTIONS._serialized_end=11496 + _KEYBOARDHOSTOPTIONS._serialized_start=11499 + _KEYBOARDHOSTOPTIONS._serialized_end=11633 + _FOCUSMODEOPTIONS._serialized_start=11636 + _FOCUSMODEOPTIONS._serialized_end=11810 + _MACROINPUT._serialized_start=11812 + _MACROINPUT._serialized_end=11887 + _MACRO._serialized_start=11890 + _MACRO._serialized_end=12182 + _MACROOPTIONS._serialized_start=12184 + _MACROOPTIONS._serialized_end=12292 + _INPUTHISTORYOPTIONS._serialized_start=12294 + _INPUTHISTORYOPTIONS._serialized_end=12374 + _ADDONOPTIONS._serialized_start=12377 + _ADDONOPTIONS._serialized_end=13397 + _MIGRATIONHISTORY._serialized_start=13399 + _MIGRATIONHISTORY._serialized_end=13525 + _CONFIG._serialized_start=13528 + _CONFIG._serialized_end=14140 # @@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 d59f04a..c9aecfd 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*\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') +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*\xc2\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\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*\xd8\x02\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\x14\n\x10INPUT_MODE_XBONE\x10\x05\x12\x15\n\x11INPUT_MODE_MDMINI\x10\x06\x12\x15\n\x11INPUT_MODE_NEOGEO\x10\x07\x12\x16\n\x12INPUT_MODE_PCEMINI\x10\x08\x12\x14\n\x10INPUT_MODE_EGRET\x10\t\x12\x14\n\x10INPUT_MODE_ASTRO\x10\n\x12\x18\n\x14INPUT_MODE_PSCLASSIC\x10\x0b\x12\x1b\n\x17INPUT_MODE_XBOXORIGINAL\x10\x0c\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*\x80\x07\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\x12\x14\n\x10HOTKEY_B1_BUTTON\x10\x17\x12\x14\n\x10HOTKEY_B2_BUTTON\x10\x18\x12\x14\n\x10HOTKEY_B3_BUTTON\x10\x19\x12\x14\n\x10HOTKEY_B4_BUTTON\x10\x1a\x12\x14\n\x10HOTKEY_L1_BUTTON\x10\x1b\x12\x14\n\x10HOTKEY_R1_BUTTON\x10\x1c\x12\x14\n\x10HOTKEY_L2_BUTTON\x10\x1d\x12\x14\n\x10HOTKEY_R2_BUTTON\x10\x1e\x12\x14\n\x10HOTKEY_S1_BUTTON\x10\x1f\x12\x14\n\x10HOTKEY_S2_BUTTON\x10 \x12\x14\n\x10HOTKEY_A1_BUTTON\x10!\x12\x14\n\x10HOTKEY_A2_BUTTON\x10\"\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()) @@ -56,35 +56,35 @@ if _descriptor._USE_C_DESCRIPTORS == False: _BUTTONLAYOUT._serialized_start=30 _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 + _BUTTONLAYOUTRIGHT._serialized_end=1062 + _SPLASHMODE._serialized_start=1064 + _SPLASHMODE._serialized_end=1185 + _SPLASHCHOICE._serialized_start=1188 + _SPLASHCHOICE._serialized_end=1348 + _ONBOARDLEDMODE._serialized_start=1351 + _ONBOARDLEDMODE._serialized_end=1504 + _INPUTMODE._serialized_start=1507 + _INPUTMODE._serialized_end=1851 + _DPADMODE._serialized_start=1853 + _DPADMODE._serialized_end=1948 + _INVERTMODE._serialized_start=1950 + _INVERTMODE._serialized_end=2029 + _SOCDMODE._serialized_start=2032 + _SOCDMODE._serialized_end=2194 + _GPIOACTION._serialized_start=2197 + _GPIOACTION._serialized_end=3025 + _GAMEPADHOTKEY._serialized_start=3028 + _GAMEPADHOTKEY._serialized_end=3924 + _LEDFORMAT_PROTO._serialized_start=3926 + _LEDFORMAT_PROTO._serialized_end=4025 + _SHMUPMIXMODE._serialized_start=4027 + _SHMUPMIXMODE._serialized_end=4119 + _PLEDTYPE._serialized_start=4121 + _PLEDTYPE._serialized_end=4205 + _FORCEDSETUPMODE._serialized_start=4208 + _FORCEDSETUPMODE._serialized_end=4371 + _PS4CONTROLLERTYPE._serialized_start=4373 + _PS4CONTROLLERTYPE._serialized_end=4440 + _MACROTYPE._serialized_start=4442 + _MACROTYPE._serialized_end=4509 # @@protoc_insertion_point(module_scope) diff --git a/tests/test-files/proto-files/config.proto b/tests/test-files/proto-files/config.proto index e82b3b6..9c108db 100644 --- a/tests/test-files/proto-files/config.proto +++ b/tests/test-files/proto-files/config.proto @@ -15,6 +15,16 @@ message GamepadOptions optional bool fourWayMode = 8; optional uint32 profileNumber = 9; optional PS4ControllerType ps4ControllerType = 10; + optional uint32 debounceDelay = 11; + optional int32 inputModeB1 = 12; + optional int32 inputModeB2 = 13; + optional int32 inputModeB3 = 14; + optional int32 inputModeB4 = 15; + optional int32 inputModeL1 = 16; + optional int32 inputModeL2 = 17; + optional int32 inputModeR1 = 18; + optional int32 inputModeR2 = 19; + optional bool ps4ReportHack = 20; } message KeyboardMapping @@ -61,6 +71,41 @@ message HotkeyOptions optional HotkeyEntry hotkey10 = 10; optional HotkeyEntry hotkey11 = 11; optional HotkeyEntry hotkey12 = 12; + optional HotkeyEntry hotkey13 = 13; + optional HotkeyEntry hotkey14 = 14; + optional HotkeyEntry hotkey15 = 15; + optional HotkeyEntry hotkey16 = 16; +} + +message PeripheralOptions +{ + message I2COptions { + optional bool enabled = 1; + optional int32 sda = 2; + optional int32 scl = 3; + optional uint32 speed = 4; + } + + message SPIOptions { + optional bool enabled = 1; + optional int32 rx = 2; + optional int32 cs = 3; + optional int32 sck = 4; + optional int32 tx = 5; + } + + message USBOptions { + optional bool enabled = 1; + optional int32 dp = 2; + optional int32 enable5v = 3; + optional uint32 order = 4; + } + + optional I2COptions blockI2C0 = 1; + optional I2COptions blockI2C1 = 2; + optional SPIOptions blockSPI0 = 3; + optional SPIOptions blockSPI1 = 4; + optional USBOptions blockUSB0 = 5; } message ForcedSetupOptions @@ -117,38 +162,14 @@ message PinMappings optional int32 pinButtonFn = 19; } +message GpioMappingInfo +{ + optional GpioAction action = 1; +} + 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; + repeated GpioMappingInfo pins = 1 [(nanopb).max_count = 30]; } @@ -171,7 +192,8 @@ message AlternativePinMappings message ProfileOptions { - repeated AlternativePinMappings alternativePinMappings = 1 [(nanopb).max_count = 3]; + repeated AlternativePinMappings deprecatedAlternativePinMappings = 1 [(nanopb).max_count = 3, deprecated = true]; + repeated GpioMappings gpioMappingsSets = 2 [(nanopb).max_count = 3]; } message DisplayOptions @@ -179,10 +201,10 @@ message DisplayOptions optional bool enabled = 1; optional int32 i2cBlock = 2; - optional int32 i2cSDAPin = 3; - optional int32 i2cSCLPin = 4; + optional int32 deprecatedI2cSDAPin = 3 [deprecated = true]; + optional int32 deprecatedI2cSCLPin = 4 [deprecated = true]; optional int32 i2cAddress = 5; - optional int32 i2cSpeed = 6; + optional int32 deprecatedI2cSpeed = 6 [deprecated = true]; optional ButtonLayout buttonLayout = 7; optional ButtonLayoutRight buttonLayoutRight = 8; @@ -237,6 +259,11 @@ message LEDOptions optional uint32 pledColor = 30; optional bool turnOffWhenSuspended = 31; + + optional int32 pledIndex1 = 32; + optional int32 pledIndex2 = 33; + optional int32 pledIndex3 = 34; + optional int32 pledIndex4 = 35; }; // This has to be kept in sync with AnimationOptions in AnimationStation.hpp @@ -347,10 +374,10 @@ message SliderOptions { optional bool enabled = 1; - optional int32 deprecatedPinSliderOne = 2; - optional int32 deprecatedPinSliderTwo = 3; - optional DpadMode deprecatedModeOne = 4; - optional DpadMode deprecatedModeTwo = 5; + optional int32 deprecatedPinSliderOne = 2 [deprecated = true]; + optional int32 deprecatedPinSliderTwo = 3 [deprecated = true]; + optional DpadMode deprecatedModeOne = 4 [deprecated = true]; + optional DpadMode deprecatedModeTwo = 5 [deprecated = true]; optional DpadMode modeDefault = 6; } @@ -358,12 +385,12 @@ message SOCDSliderOptions { optional bool enabled = 1; - optional int32 deprecatedPinOne = 2; - optional int32 deprecatedPinTwo = 3; + optional int32 deprecatedPinOne = 2 [deprecated = true]; + optional int32 deprecatedPinTwo = 3 [deprecated = true]; optional SOCDMode modeDefault = 4; - optional SOCDMode deprecatedModeOne = 5; - optional SOCDMode deprecatedModeTwo = 6; + optional SOCDMode deprecatedModeOne = 5 [deprecated = true]; + optional SOCDMode deprecatedModeTwo = 6 [deprecated = true]; } message ReverseOptions @@ -384,20 +411,20 @@ message AnalogADS1219Options optional bool enabled = 1; optional int32 i2cBlock = 2; - optional int32 i2cSDAPin = 3; - optional int32 i2cSCLPin = 4; + optional int32 deprecatedI2cSDAPin = 3 [deprecated = true]; + optional int32 deprecatedI2cSCLPin = 4 [deprecated = true]; optional int32 i2cAddress = 5; - optional int32 i2cSpeed = 6; + optional int32 deprecatedI2cSpeed = 6 [deprecated = true]; } message DualDirectionalOptions { optional bool enabled = 1; - optional int32 deprecatedUpPin = 2; - optional int32 deprecatedDownPin = 3; - optional int32 deprecatedLeftPin = 4; - optional int32 deprecatedRightPin = 5; + optional int32 deprecatedUpPin = 2 [deprecated = true]; + optional int32 deprecatedDownPin = 3 [deprecated = true]; + optional int32 deprecatedLeftPin = 4 [deprecated = true]; + optional int32 deprecatedRightPin = 5 [deprecated = true]; optional DpadMode dpadMode = 6; optional uint32 combineMode = 7; @@ -410,7 +437,7 @@ message TiltOptions optional int32 tilt1Pin = 2; optional int32 tilt2Pin = 3; - optional int32 deprecatedTiltFunctionPin = 4; + optional int32 deprecatedTiltFunctionPin = 4 [deprecated = true]; optional int32 tiltLeftAnalogUpPin = 5; optional int32 tiltLeftAnalogDownPin = 6; optional int32 tiltLeftAnalogLeftPin = 7; @@ -473,8 +500,13 @@ message PS4Options message PSPassthroughOptions { optional bool enabled = 1; - optional int32 pinDplus = 2; - optional int32 pin5V = 3; + optional int32 deprecatedPinDplus = 2 [deprecated = true]; + optional int32 deprecatedPin5V = 3 [deprecated = true]; +} + +message XBOnePassthroughOptions +{ + optional bool enabled = 1; } message WiiOptions @@ -589,9 +621,9 @@ message WiiOptions optional bool enabled = 1; optional int32 i2cBlock = 2; - optional int32 i2cSDAPin = 3; - optional int32 i2cSCLPin = 4; - optional int32 i2cSpeed = 5; + optional int32 deprecatedI2cSDAPin = 3 [deprecated = true]; + optional int32 deprecatedI2cSCLPin = 4 [deprecated = true]; + optional int32 deprecatedI2cSpeed = 5 [deprecated = true]; optional ControllerOptions controllers = 6; } @@ -607,9 +639,9 @@ message SNESOptions message KeyboardHostOptions { optional bool enabled = 1; - optional int32 pinDplus = 2; + optional int32 deprecatedPinDplus = 2 [deprecated = true]; optional KeyboardMapping mapping = 3; - optional int32 pin5V = 4; + optional int32 deprecatedPin5V = 4 [deprecated = true]; } message FocusModeOptions @@ -652,6 +684,14 @@ message MacroOptions repeated Macro macroList = 3 [(nanopb).max_count = 6]; } +message InputHistoryOptions +{ + optional bool enabled = 1; + optional uint32 length = 2; + optional uint32 col = 3; + optional uint32 row = 4; +} + message AddonOptions { optional BootselButtonOptions bootselButtonOptions = 1; @@ -663,7 +703,7 @@ message AddonOptions optional AnalogADS1219Options analogADS1219Options = 7; optional DualDirectionalOptions dualDirectionalOptions = 8; optional BuzzerOptions buzzerOptions = 9; - optional ExtraButtonOptions deprecatedExtraButtonOptions = 10; + optional ExtraButtonOptions deprecatedExtraButtonOptions = 10 [deprecated = true]; optional PlayerNumberOptions playerNumberOptions = 11; optional PS4Options ps4Options = 12 [(nanopb).disallow_export = true]; optional WiiOptions wiiOptions = 13; @@ -674,12 +714,15 @@ message AddonOptions optional TiltOptions tiltOptions = 18; optional PSPassthroughOptions psPassthroughOptions = 19; optional MacroOptions macroOptions = 20; + optional InputHistoryOptions inputHistoryOptions = 21; + optional XBOnePassthroughOptions xbonePassthroughOptions = 22; } message MigrationHistory { optional bool hotkeysMigrated = 1 [default = false]; optional bool gpioMappingsMigrated = 2 [default = false]; + optional bool buttonProfilesMigrated = 3 [default = false]; } message Config @@ -688,7 +731,7 @@ message Config optional GamepadOptions gamepadOptions = 2; optional HotkeyOptions hotkeyOptions = 3; - optional PinMappings deprecatedPinMappings = 4; + optional PinMappings deprecatedPinMappings = 4 [deprecated = true]; optional KeyboardMapping keyboardMapping = 5; optional DisplayOptions displayOptions = 6; optional LEDOptions ledOptions = 7; @@ -700,4 +743,5 @@ message Config optional string boardConfig = 12 [(nanopb).max_length = 63]; optional GpioMappings gpioMappings = 13; optional MigrationHistory migrations = 14; + optional PeripheralOptions peripheralOptions = 15; } diff --git a/tests/test-files/proto-files/enums.proto b/tests/test-files/proto-files/enums.proto index 8a76837..1c4efbf 100644 --- a/tests/test-files/proto-files/enums.proto +++ b/tests/test-files/proto-files/enums.proto @@ -45,7 +45,6 @@ enum ButtonLayoutRight BUTTON_LAYOUT_CUSTOMB = 16; BUTTON_LAYOUT_KEYBOARD8B = 17; BUTTON_LAYOUT_OPENCORE0WASDB = 18; - BUTTON_LAYOUT_BSS = 99; } enum SplashMode @@ -89,6 +88,14 @@ enum InputMode INPUT_MODE_HID = 2; INPUT_MODE_KEYBOARD = 3; INPUT_MODE_PS4 = 4; + INPUT_MODE_XBONE = 5; + INPUT_MODE_MDMINI = 6; + INPUT_MODE_NEOGEO = 7; + INPUT_MODE_PCEMINI = 8; + INPUT_MODE_EGRET = 9; + INPUT_MODE_ASTRO = 10; + INPUT_MODE_PSCLASSIC = 11; + INPUT_MODE_XBOXORIGINAL = 12; INPUT_MODE_CONFIG = 255; } @@ -191,6 +198,18 @@ enum GamepadHotkey HOTKEY_R3_BUTTON = 20; HOTKEY_TOUCHPAD_BUTTON = 21; HOTKEY_REBOOT_DEFAULT = 22; + HOTKEY_B1_BUTTON = 23; + HOTKEY_B2_BUTTON = 24; + HOTKEY_B3_BUTTON = 25; + HOTKEY_B4_BUTTON = 26; + HOTKEY_L1_BUTTON = 27; + HOTKEY_R1_BUTTON = 28; + HOTKEY_L2_BUTTON = 29; + HOTKEY_R2_BUTTON = 30; + HOTKEY_S1_BUTTON = 31; + HOTKEY_S2_BUTTON = 32; + HOTKEY_A1_BUTTON = 33; + HOTKEY_A2_BUTTON = 34; } // This has to be kept in sync with LEDFormat in NeoPico.hpp @@ -244,4 +263,4 @@ enum MacroType ON_PRESS = 1; ON_HOLD_REPEAT = 2; ON_TOGGLE = 3; -}; \ No newline at end of file +}; diff --git a/tests/test-files/test-config.json b/tests/test-files/test-config.json new file mode 100644 index 0000000..1316a7b --- /dev/null +++ b/tests/test-files/test-config.json @@ -0,0 +1,1151 @@ +{ + "boardVersion": "v0.7.6-15-g71f4512", + "gamepadOptions": { + "inputMode": "INPUT_MODE_HID", + "dpadMode": "DPAD_MODE_DIGITAL", + "socdMode": "SOCD_MODE_SECOND_INPUT_PRIORITY", + "invertXAxis": false, + "invertYAxis": false, + "switchTpShareForDs4": false, + "lockHotkeys": false, + "fourWayMode": false, + "profileNumber": 1, + "ps4ControllerType": "PS4_ARCADESTICK", + "debounceDelay": 5, + "inputModeB1": 1, + "inputModeB2": 0, + "inputModeB3": 2, + "inputModeB4": 4, + "inputModeL1": -1, + "inputModeL2": -1, + "inputModeR1": -1, + "inputModeR2": 3, + "ps4ReportHack": false + }, + "hotkeyOptions": { + "hotkey01": { + "dpadMask": 0, + "action": "HOTKEY_REBOOT_DEFAULT", + "buttonsMask": 15360, + "auxMask": 32768 + }, + "hotkey02": { + "dpadMask": 1, + "action": "HOTKEY_LOAD_PROFILE_1", + "buttonsMask": 3072, + "auxMask": 32768 + }, + "hotkey03": { + "dpadMask": 2, + "action": "HOTKEY_LOAD_PROFILE_2", + "buttonsMask": 3072, + "auxMask": 32768 + }, + "hotkey04": { + "dpadMask": 4, + "action": "HOTKEY_LOAD_PROFILE_3", + "buttonsMask": 3072, + "auxMask": 32768 + }, + "hotkey05": { + "dpadMask": 8, + "action": "HOTKEY_LOAD_PROFILE_4", + "buttonsMask": 3072, + "auxMask": 32768 + }, + "hotkey06": { + "dpadMask": 2, + "action": "HOTKEY_DPAD_DIGITAL", + "buttonsMask": 2048, + "auxMask": 32768 + }, + "hotkey07": { + "dpadMask": 4, + "action": "HOTKEY_DPAD_LEFT_ANALOG", + "buttonsMask": 2048, + "auxMask": 32768 + }, + "hotkey08": { + "dpadMask": 8, + "action": "HOTKEY_DPAD_RIGHT_ANALOG", + "buttonsMask": 2048, + "auxMask": 32768 + }, + "hotkey09": { + "dpadMask": 1, + "action": "HOTKEY_TOGGLE_DDI_4_WAY_MODE", + "buttonsMask": 9216, + "auxMask": 32768 + }, + "hotkey10": { + "dpadMask": 1, + "action": "HOTKEY_TOGGLE_4_WAY_MODE", + "buttonsMask": 1024, + "auxMask": 32768 + }, + "hotkey11": { + "dpadMask": 4, + "action": "HOTKEY_SOCD_LAST_INPUT", + "buttonsMask": 1024, + "auxMask": 32768 + }, + "hotkey12": { + "dpadMask": 2, + "action": "HOTKEY_SOCD_NEUTRAL", + "buttonsMask": 1024, + "auxMask": 32768 + }, + "hotkey13": { + "dpadMask": 0, + "action": "HOTKEY_NONE", + "buttonsMask": 0, + "auxMask": 0 + }, + "hotkey14": { + "dpadMask": 0, + "action": "HOTKEY_NONE", + "buttonsMask": 0, + "auxMask": 0 + }, + "hotkey15": { + "dpadMask": 0, + "action": "HOTKEY_NONE", + "buttonsMask": 0, + "auxMask": 0 + }, + "hotkey16": { + "dpadMask": 0, + "action": "HOTKEY_NONE", + "buttonsMask": 0, + "auxMask": 0 + } + }, + "deprecatedPinMappings": { + "pinDpadUp": 0, + "pinDpadDown": 0, + "pinDpadLeft": 0, + "pinDpadRight": 0, + "pinButtonB1": 0, + "pinButtonB2": 0, + "pinButtonB3": 0, + "pinButtonB4": 0, + "pinButtonL1": 0, + "pinButtonR1": 0, + "pinButtonL2": 0, + "pinButtonR2": 0, + "pinButtonS1": 0, + "pinButtonS2": 0, + "pinButtonL3": 0, + "pinButtonR3": 0, + "pinButtonA1": 0, + "pinButtonA2": 0, + "pinButtonFn": 0 + }, + "keyboardMapping": { + "keyDpadUp": 82, + "keyDpadDown": 81, + "keyDpadLeft": 80, + "keyDpadRight": 79, + "keyButtonB1": 225, + "keyButtonB2": 29, + "keyButtonB3": 224, + "keyButtonB4": 226, + "keyButtonL1": 6, + "keyButtonR1": 44, + "keyButtonL2": 25, + "keyButtonR2": 27, + "keyButtonS1": 34, + "keyButtonS2": 30, + "keyButtonL3": 46, + "keyButtonR3": 45, + "keyButtonA1": 38, + "keyButtonA2": 59 + }, + "displayOptions": { + "enabled": false, + "i2cBlock": 0, + "deprecatedI2cSDAPin": 0, + "deprecatedI2cSCLPin": 1, + "i2cAddress": 60, + "deprecatedI2cSpeed": 400000, + "buttonLayout": "BUTTON_LAYOUT_STICK", + "buttonLayoutRight": "BUTTON_LAYOUT_VEWLIX", + "buttonLayoutCustomOptions": { + "paramsLeft": { + "layout": "BUTTON_LAYOUT_STICK", + "common": { + "startX": 8, + "startY": 28, + "buttonRadius": 8, + "buttonPadding": 2 + } + }, + "paramsRight": { + "layout": "BUTTON_LAYOUT_VEWLIX", + "common": { + "startX": 8, + "startY": 28, + "buttonRadius": 8, + "buttonPadding": 2 + } + } + }, + "splashMode": "SPLASH_MODE_NONE", + "splashChoice": "SPLASH_CHOICE_MAIN", + "splashDuration": 7000, + "splashImage": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAQIAAAAAAAAAAAAAAAAAAAODfwAAAAAAAAAAAAAAAAALB/6AAAAAAAAAAAAAAAAAfz/6AAAAAAAAAAAAAAAAAP//gAAAAAAAAAAAAAAAAAH+rwAAAAAAAAAAAAAAsAAD7g/8AAAAAAAAAAAwB/wAB8wf8AAAAAAAAAAAcB/8AA+A/9AAAAAAAAAAsOArngAPAX4AAAAAAIAeB/znDxwHXgD8AAAAAAOAf5/95x4efp4BuPAAAAKDAP+rn8+8Hf8cBz/+AAAOP/H/Dx3/+D36Ph9/8AAAP//9zx4f/3g5QBx8f0AAAH1f/548H/xw+AA//fwAAAH4Lj4+OD/+efAAH/fwAAAB8N58fHg+HHvgAB/AwAAAA8ff+Hhw+Dh/wAAFAKAAAAe/n+Dw+fA8f4AAAAAAAAAP/j/B//vgOD4AAAAAAAAAD/8/A///wDAAAAAAAAAAAB4v/Af+PwAYAAAAAAAAAAAeH/gH+D4AEAAAAAAAAAAAHH94D8AAAAAAAAAAAAAAAB7+eAcAAAAQAAAAAAAAAAAf/nAAAAAAAAAAAAAAAAAAH+zgAAAAAAAAAAAAAAAAAA+cwAAAAAAAAAAAAAAAAAAFHKAAAAAAAAAAAAAAAAAAADiAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "size": 3, + "flip": 0, + "invert": false, + "displaySaverTimeout": 0, + "turnOffWhenSuspended": false + }, + "ledOptions": { + "dataPin": 4, + "ledFormat": "LED_FORMAT_GRB", + "ledLayout": "BUTTON_LAYOUT_STICK", + "ledsPerButton": 1, + "brightnessMaximum": 50, + "brightnessSteps": 5, + "indexUp": 3, + "indexDown": 1, + "indexLeft": 0, + "indexRight": 2, + "indexB1": 8, + "indexB2": 9, + "indexB3": 4, + "indexB4": 5, + "indexL1": 7, + "indexR1": 6, + "indexL2": 11, + "indexR2": 10, + "indexS1": -1, + "indexS2": -1, + "indexL3": -1, + "indexR3": -1, + "indexA1": -1, + "indexA2": -1, + "pledType": "PLED_TYPE_NONE", + "pledPin1": -1, + "pledPin2": -1, + "pledPin3": -1, + "pledPin4": -1, + "pledColor": 16777215, + "turnOffWhenSuspended": false, + "pledIndex1": -1, + "pledIndex2": -1, + "pledIndex3": -1, + "pledIndex4": -1 + }, + "animationOptions": { + "baseAnimationIndex": 2, + "brightness": 5, + "staticColorIndex": 2, + "buttonColorIndex": 1, + "chaseCycleTime": 85, + "rainbowCycleTime": 40, + "themeIndex": 0, + "hasCustomTheme": false, + "customThemeUp": 0, + "customThemeDown": 0, + "customThemeLeft": 0, + "customThemeRight": 0, + "customThemeB1": 0, + "customThemeB2": 0, + "customThemeB3": 0, + "customThemeB4": 0, + "customThemeL1": 0, + "customThemeR1": 0, + "customThemeL2": 0, + "customThemeR2": 0, + "customThemeS1": 0, + "customThemeS2": 0, + "customThemeL3": 0, + "customThemeR3": 0, + "customThemeA1": 0, + "customThemeA2": 0, + "customThemeUpPressed": 0, + "customThemeDownPressed": 0, + "customThemeLeftPressed": 0, + "customThemeRightPressed": 0, + "customThemeB1Pressed": 0, + "customThemeB2Pressed": 0, + "customThemeB3Pressed": 0, + "customThemeB4Pressed": 0, + "customThemeL1Pressed": 0, + "customThemeR1Pressed": 0, + "customThemeL2Pressed": 0, + "customThemeR2Pressed": 0, + "customThemeS1Pressed": 0, + "customThemeS2Pressed": 0, + "customThemeL3Pressed": 0, + "customThemeR3Pressed": 0, + "customThemeA1Pressed": 0, + "customThemeA2Pressed": 0 + }, + "addonOptions": { + "bootselButtonOptions": { + "enabled": false, + "buttonMap": 0 + }, + "onBoardLedOptions": { + "mode": "ON_BOARD_LED_MODE_MODE_INDICATOR", + "enabled": false + }, + "analogOptions": { + "enabled": false, + "analogAdc1PinX": -1, + "analogAdc1PinY": -1, + "forcedCircularity": false, + "analogDeadzone": 5, + "analogAdc2PinX": -1, + "analogAdc2PinY": -1, + "analogAdc1Mode": "DPAD_MODE_LEFT_ANALOG", + "analogAdc2Mode": "DPAD_MODE_RIGHT_ANALOG", + "analogAdc1Invert": "INVERT_NONE", + "analogAdc2Invert": "INVERT_NONE", + "autoCalibrate": false + }, + "turboOptions": { + "enabled": false, + "buttonPin": -1, + "ledPin": -1, + "shotCount": 15, + "shmupDialPin": -1, + "shmupModeEnabled": false, + "shmupAlwaysOn1": 0, + "shmupAlwaysOn2": 0, + "shmupAlwaysOn3": 0, + "shmupAlwaysOn4": 0, + "shmupBtn1Pin": -1, + "shmupBtn2Pin": -1, + "shmupBtn3Pin": -1, + "shmupBtn4Pin": -1, + "shmupBtnMask1": 0, + "shmupBtnMask2": 0, + "shmupBtnMask3": 0, + "shmupBtnMask4": 0, + "shmupMixMode": "SHMUP_MIX_MODE_TURBO_PRIORITY" + }, + "sliderOptions": { + "enabled": false, + "deprecatedPinSliderOne": 0, + "deprecatedPinSliderTwo": 0, + "deprecatedModeOne": "DPAD_MODE_DIGITAL", + "deprecatedModeTwo": "DPAD_MODE_DIGITAL", + "modeDefault": "DPAD_MODE_DIGITAL" + }, + "reverseOptions": { + "enabled": false, + "buttonPin": -1, + "ledPin": -1, + "actionUp": 1, + "actionDown": 1, + "actionLeft": 1, + "actionRight": 1 + }, + "analogADS1219Options": { + "enabled": false, + "i2cBlock": 0, + "deprecatedI2cSDAPin": -1, + "deprecatedI2cSCLPin": -1, + "i2cAddress": 64, + "deprecatedI2cSpeed": 400000 + }, + "dualDirectionalOptions": { + "enabled": true, + "deprecatedUpPin": 0, + "deprecatedDownPin": 0, + "deprecatedLeftPin": 0, + "deprecatedRightPin": 0, + "dpadMode": "DPAD_MODE_DIGITAL", + "combineMode": 3, + "fourWayMode": false + }, + "buzzerOptions": { + "enabled": false, + "pin": -1, + "volume": 100 + }, + "deprecatedExtraButtonOptions": { + "enabled": false, + "pin": 0, + "buttonMap": 0 + }, + "playerNumberOptions": { + "enabled": false, + "number": 1 + }, + "ps4Options": { + "enabled": false, + "serial": "", + "signature": "", + "rsaN": "", + "rsaE": "", + "rsaD": "", + "rsaP": "", + "rsaQ": "", + "rsaDP": "", + "rsaDQ": "", + "rsaQP": "", + "rsaRN": "" + }, + "wiiOptions": { + "enabled": false, + "i2cBlock": 0, + "deprecatedI2cSDAPin": -1, + "deprecatedI2cSCLPin": -1, + "deprecatedI2cSpeed": 400000, + "controllers": { + "nunchuk": { + "buttonC": 0, + "buttonZ": 0, + "stick": { + "x": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "y": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + } + } + }, + "classic": { + "buttonA": 0, + "buttonB": 0, + "buttonX": 0, + "buttonY": 0, + "buttonL": 0, + "buttonZL": 0, + "buttonR": 0, + "buttonZR": 0, + "buttonMinus": 0, + "buttonPlus": 0, + "buttonHome": 0, + "buttonUp": 0, + "buttonDown": 0, + "buttonLeft": 0, + "buttonRight": 0, + "leftStick": { + "x": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "y": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + } + }, + "rightStick": { + "x": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "y": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + } + }, + "leftTrigger": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "rightTrigger": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + } + }, + "taiko": { + "buttonKatLeft": 0, + "buttonKatRight": 0, + "buttonDonLeft": 0, + "buttonDonRight": 0 + }, + "guitar": { + "buttonRed": 0, + "buttonGreen": 0, + "buttonYellow": 0, + "buttonBlue": 0, + "buttonOrange": 0, + "buttonPedal": 0, + "buttonMinus": 0, + "buttonPlus": 0, + "strumUp": 0, + "strumDown": 0, + "stick": { + "x": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "y": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + } + }, + "whammyBar": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + } + }, + "drum": { + "buttonRed": 0, + "buttonGreen": 0, + "buttonYellow": 0, + "buttonBlue": 0, + "buttonOrange": 0, + "buttonPedal": 0, + "buttonMinus": 0, + "buttonPlus": 0, + "stick": { + "x": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "y": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + } + } + }, + "turntable": { + "buttonLeftRed": 0, + "buttonLeftGreen": 0, + "buttonLeftBlue": 0, + "buttonRightRed": 0, + "buttonRightGreen": 0, + "buttonRightBlue": 0, + "buttonMinus": 0, + "buttonPlus": 0, + "buttonEuphoria": 0, + "stick": { + "x": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "y": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + } + }, + "leftTurntable": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "rightTurntable": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "effects": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + }, + "fader": { + "axisType": 0, + "minRange": 0, + "maxRange": 0 + } + } + } + }, + "socdSliderOptions": { + "enabled": false, + "deprecatedPinOne": 0, + "deprecatedPinTwo": 0, + "modeDefault": "SOCD_MODE_NEUTRAL", + "deprecatedModeOne": "SOCD_MODE_UP_PRIORITY", + "deprecatedModeTwo": "SOCD_MODE_UP_PRIORITY" + }, + "snesOptions": { + "enabled": false, + "clockPin": -1, + "latchPin": -1, + "dataPin": -1 + }, + "focusModeOptions": { + "enabled": false, + "pin": -1, + "buttonLockMask": 0, + "oledLockEnabled": false, + "rgbLockEnabled": false, + "buttonLockEnabled": false, + "macroLockEnabled": true + }, + "keyboardHostOptions": { + "enabled": false, + "deprecatedPinDplus": -1, + "mapping": { + "keyDpadUp": 82, + "keyDpadDown": 81, + "keyDpadLeft": 80, + "keyDpadRight": 79, + "keyButtonB1": 225, + "keyButtonB2": 29, + "keyButtonB3": 224, + "keyButtonB4": 226, + "keyButtonL1": 6, + "keyButtonR1": 44, + "keyButtonL2": 25, + "keyButtonR2": 27, + "keyButtonS1": 34, + "keyButtonS2": 30, + "keyButtonL3": 46, + "keyButtonR3": 45, + "keyButtonA1": 38, + "keyButtonA2": 59 + }, + "deprecatedPin5V": -1 + }, + "tiltOptions": { + "enabled": false, + "tilt1Pin": -1, + "tilt2Pin": -1, + "deprecatedTiltFunctionPin": 0, + "tiltLeftAnalogUpPin": -1, + "tiltLeftAnalogDownPin": -1, + "tiltLeftAnalogLeftPin": -1, + "tiltLeftAnalogRightPin": -1, + "tiltRightAnalogUpPin": -1, + "tiltRightAnalogDownPin": -1, + "tiltRightAnalogLeftPin": -1, + "tiltRightAnalogRightPin": -1, + "tiltSOCDMode": "SOCD_MODE_NEUTRAL", + "factorTilt1LeftX": 35, + "factorTilt1LeftY": 35, + "factorTilt1RightX": 35, + "factorTilt1RightY": 35, + "factorTilt2LeftX": 65, + "factorTilt2LeftY": 65, + "factorTilt2RightX": 65, + "factorTilt2RightY": 65 + }, + "psPassthroughOptions": { + "enabled": true, + "deprecatedPinDplus": -1, + "deprecatedPin5V": -1 + }, + "macroOptions": { + "enabled": false, + "pin": -1, + "macroList": [ + { + "macroType": "ON_PRESS", + "macroLabel": "", + "enabled": false, + "useMacroTriggerButton": false, + "macroTriggerPin": -1, + "macroTriggerButton": 0, + "exclusive": true, + "interruptible": true, + "showFrames": false + }, + { + "macroType": "ON_PRESS", + "macroLabel": "", + "enabled": false, + "useMacroTriggerButton": false, + "macroTriggerPin": -1, + "macroTriggerButton": 0, + "exclusive": true, + "interruptible": true, + "showFrames": false + }, + { + "macroType": "ON_PRESS", + "macroLabel": "", + "enabled": false, + "useMacroTriggerButton": false, + "macroTriggerPin": -1, + "macroTriggerButton": 0, + "exclusive": true, + "interruptible": true, + "showFrames": false + }, + { + "macroType": "ON_PRESS", + "macroLabel": "", + "enabled": false, + "useMacroTriggerButton": false, + "macroTriggerPin": -1, + "macroTriggerButton": 0, + "exclusive": true, + "interruptible": true, + "showFrames": false + }, + { + "macroType": "ON_PRESS", + "macroLabel": "", + "enabled": false, + "useMacroTriggerButton": false, + "macroTriggerPin": -1, + "macroTriggerButton": 0, + "exclusive": true, + "interruptible": true, + "showFrames": false + }, + { + "macroType": "ON_PRESS", + "macroLabel": "", + "enabled": false, + "useMacroTriggerButton": false, + "macroTriggerPin": -1, + "macroTriggerButton": 0, + "exclusive": true, + "interruptible": true, + "showFrames": false + } + ], + "macroBoardLedEnabled": true + }, + "inputHistoryOptions": { + "enabled": false, + "length": 21, + "col": 0, + "row": 7 + }, + "xbonePassthroughOptions": { + "enabled": false + } + }, + "forcedSetupOptions": { + "mode": "FORCED_SETUP_MODE_OFF" + }, + "profileOptions": { + "gpioMappingsSets": [ + { + "pins": [ + { + "action": "BUTTON_PRESS_S2" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "BUTTON_PRESS_R1" + }, + { + "action": "BUTTON_PRESS_R2" + }, + { + "action": "BUTTON_PRESS_L2" + }, + { + "action": "BUTTON_PRESS_B2" + }, + { + "action": "BUTTON_PRESS_L1" + }, + { + "action": "BUTTON_PRESS_B4" + }, + { + "action": "BUTTON_PRESS_B3" + }, + { + "action": "BUTTON_PRESS_B1" + }, + { + "action": "BUTTON_PRESS_S2" + }, + { + "action": "BUTTON_PRESS_A1" + }, + { + "action": "BUTTON_PRESS_S1" + }, + { + "action": "BUTTON_PRESS_RIGHT" + }, + { + "action": "BUTTON_PRESS_LEFT" + }, + { + "action": "BUTTON_PRESS_UP" + }, + { + "action": "BUTTON_PRESS_DOWN" + }, + { + "action": "BUTTON_PRESS_A2" + }, + { + "action": "BUTTON_PRESS_L3" + }, + { + "action": "BUTTON_PRESS_R3" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "BUTTON_PRESS_DDI_DOWN" + }, + { + "action": "RESERVED" + }, + { + "action": "BUTTON_PRESS_DDI_LEFT" + }, + { + "action": "BUTTON_PRESS_DDI_RIGHT" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "BUTTON_PRESS_FN" + } + ] + }, + { + "pins": [ + { + "action": "BUTTON_PRESS_S2" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "BUTTON_PRESS_R2" + }, + { + "action": "BUTTON_PRESS_R1" + }, + { + "action": "BUTTON_PRESS_B2" + }, + { + "action": "BUTTON_PRESS_B1" + }, + { + "action": "BUTTON_PRESS_L2" + }, + { + "action": "BUTTON_PRESS_L1" + }, + { + "action": "BUTTON_PRESS_B4" + }, + { + "action": "BUTTON_PRESS_B3" + }, + { + "action": "BUTTON_PRESS_S2" + }, + { + "action": "BUTTON_PRESS_A1" + }, + { + "action": "BUTTON_PRESS_S1" + }, + { + "action": "BUTTON_PRESS_RIGHT" + }, + { + "action": "BUTTON_PRESS_LEFT" + }, + { + "action": "BUTTON_PRESS_UP" + }, + { + "action": "BUTTON_PRESS_DOWN" + }, + { + "action": "BUTTON_PRESS_A2" + }, + { + "action": "BUTTON_PRESS_L3" + }, + { + "action": "BUTTON_PRESS_R3" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "BUTTON_PRESS_DDI_DOWN" + }, + { + "action": "RESERVED" + }, + { + "action": "BUTTON_PRESS_DDI_LEFT" + }, + { + "action": "BUTTON_PRESS_DDI_RIGHT" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "BUTTON_PRESS_FN" + } + ] + }, + { + "pins": [ + { + "action": "BUTTON_PRESS_S2" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "BUTTON_PRESS_L2" + }, + { + "action": "BUTTON_PRESS_R2" + }, + { + "action": "BUTTON_PRESS_B2" + }, + { + "action": "BUTTON_PRESS_B1" + }, + { + "action": "BUTTON_PRESS_L1" + }, + { + "action": "BUTTON_PRESS_R1" + }, + { + "action": "BUTTON_PRESS_B4" + }, + { + "action": "BUTTON_PRESS_B3" + }, + { + "action": "BUTTON_PRESS_S2" + }, + { + "action": "BUTTON_PRESS_A1" + }, + { + "action": "BUTTON_PRESS_S1" + }, + { + "action": "BUTTON_PRESS_RIGHT" + }, + { + "action": "BUTTON_PRESS_LEFT" + }, + { + "action": "BUTTON_PRESS_UP" + }, + { + "action": "BUTTON_PRESS_DOWN" + }, + { + "action": "BUTTON_PRESS_A2" + }, + { + "action": "BUTTON_PRESS_L3" + }, + { + "action": "BUTTON_PRESS_R3" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "BUTTON_PRESS_DDI_DOWN" + }, + { + "action": "RESERVED" + }, + { + "action": "BUTTON_PRESS_DDI_LEFT" + }, + { + "action": "BUTTON_PRESS_DDI_RIGHT" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "BUTTON_PRESS_FN" + } + ] + } + ] + }, + "boardConfig": "RP2040AdvancedBreakoutBoard", + "gpioMappings": { + "pins": [ + { + "action": "BUTTON_PRESS_S2" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "ASSIGNED_TO_ADDON" + }, + { + "action": "BUTTON_PRESS_R2" + }, + { + "action": "BUTTON_PRESS_L2" + }, + { + "action": "BUTTON_PRESS_B2" + }, + { + "action": "BUTTON_PRESS_B1" + }, + { + "action": "BUTTON_PRESS_R1" + }, + { + "action": "BUTTON_PRESS_L1" + }, + { + "action": "BUTTON_PRESS_B4" + }, + { + "action": "BUTTON_PRESS_B3" + }, + { + "action": "BUTTON_PRESS_S2" + }, + { + "action": "BUTTON_PRESS_A1" + }, + { + "action": "BUTTON_PRESS_S1" + }, + { + "action": "BUTTON_PRESS_RIGHT" + }, + { + "action": "BUTTON_PRESS_LEFT" + }, + { + "action": "BUTTON_PRESS_UP" + }, + { + "action": "BUTTON_PRESS_DOWN" + }, + { + "action": "BUTTON_PRESS_A2" + }, + { + "action": "BUTTON_PRESS_L3" + }, + { + "action": "BUTTON_PRESS_R3" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "BUTTON_PRESS_DDI_DOWN" + }, + { + "action": "RESERVED" + }, + { + "action": "BUTTON_PRESS_DDI_LEFT" + }, + { + "action": "BUTTON_PRESS_DDI_RIGHT" + }, + { + "action": "BUTTON_PRESS_DDI_UP" + }, + { + "action": "BUTTON_PRESS_FN" + } + ] + }, + "migrations": { + "hotkeysMigrated": true, + "gpioMappingsMigrated": true, + "buttonProfilesMigrated": true + }, + "peripheralOptions": { + "blockI2C0": { + "enabled": false, + "sda": -1, + "scl": -1, + "speed": 400000 + }, + "blockI2C1": { + "enabled": false, + "sda": -1, + "scl": -1, + "speed": 400000 + }, + "blockSPI0": { + "enabled": false, + "rx": -1, + "cs": -1, + "sck": -1, + "tx": -1 + }, + "blockSPI1": { + "enabled": false, + "rx": -1, + "cs": -1, + "sck": -1, + "tx": -1 + }, + "blockUSB0": { + "enabled": true, + "dp": 2, + "enable5v": -1, + "order": 0 + } + } +} diff --git a/tests/test_builder.py b/tests/test_builder.py index 106d766..0dc789f 100644 --- a/tests/test_builder.py +++ b/tests/test_builder.py @@ -33,7 +33,7 @@ def with_pb2s(test, *args, **kwargs): def test_concatenate_to_file(tmp_path): - """Test that we write a file as expected.""" + """Test that we write a file with firmware + binary user config as expected.""" tmp_file = os.path.join(tmp_path, 'concat.bin') firmware_file = os.path.join(HERE, 'test-files', 'test-firmware.bin') config_file = os.path.join(HERE, 'test-files', 'test-config.bin') diff --git a/tests/test_gui.py b/tests/test_gui.py index 527f738..4bada8d 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -94,7 +94,7 @@ async def test_simple_toggle(): async with app.run_test() as pilot: tree = pilot.app.query_one(Tree) display_node = tree.root.children[5] - invert_node = display_node.children[11] + invert_node = display_node.children[10] assert 'False' in invert_node.label app._modify_node(invert_node) @@ -109,8 +109,8 @@ async def test_simple_edit_via_input_field(): async with app.run_test() as pilot: tree = pilot.app.query_one(Tree) display_node = tree.root.children[5] - i2cspeed_node = display_node.children[10] - assert pilot.app.config.displayOptions.i2cSpeed == 400000 + i2cspeed_node = display_node.children[4] + assert pilot.app.config.displayOptions.deprecatedI2cSpeed == 400000 tree.root.expand_all() await pilot.wait_for_scheduled_animations() @@ -122,7 +122,7 @@ async def test_simple_edit_via_input_field(): await pilot.press('backspace', 'backspace', 'backspace', 'backspace', 'backspace', 'backspace', '5') await pilot.wait_for_scheduled_animations() await pilot.click('Button#save-button') - assert pilot.app.config.displayOptions.i2cSpeed == 5 + assert pilot.app.config.displayOptions.deprecatedI2cSpeed == 5 @pytest.mark.asyncio @@ -198,7 +198,7 @@ async def test_add_node_to_repeated(): await pilot.wait_for_scheduled_animations() await pilot.click('Button#save-button') - assert pilot.app.config.profileOptions.alternativePinMappings[0].pinButtonB4 == 5 + assert pilot.app.config.profileOptions.deprecatedAlternativePinMappings[0].pinButtonB4 == 5 @pytest.mark.asyncio diff --git a/tests/test_storage.py b/tests/test_storage.py index 7130218..b5fea47 100644 --- a/tests/test_storage.py +++ b/tests/test_storage.py @@ -129,12 +129,16 @@ def test_config_from_whole_board_parses(whole_board_dump): @with_pb2s def test_serialize_config_with_footer(storage_dump, config_binary): - """Test that reserializing a read in config matches the original.""" + """Test that reserializing a read in config matches the original. + + Note that this isn't going to produce an *identical* result, because new message fields + may have default values that get saved in the reserialized binary, so we can still only test + some particular parts. But it should work. + """ config = storage.get_config(storage_dump) assert config.boardVersion == 'v0.7.5' reserialized = storage.serialize_config_with_footer(config) - assert config_binary == reserialized - assert storage_dump[-12:] == reserialized[-12:] + assert storage_dump[-4:] == reserialized[-4:] @with_pb2s @@ -176,3 +180,10 @@ def test_get_config_from_usb(config_binary): mock_get.assert_called_once() mock_read.assert_called_with(mock_out, mock_in, 0x101FC000, 16384) assert config == storage.get_config(config_binary) + + +@with_pb2s +def test_json_config_parses(config_json): + """Test that we can import a JSON config into a message.""" + config = storage.get_config_from_json(config_json) + assert config.boardVersion == 'v0.7.6-15-g71f4512'