syntax = "proto2"; import "nanopb.proto"; import "enums.proto"; message GamepadOptions { optional InputMode inputMode = 1; optional DpadMode dpadMode = 2; optional SOCDMode socdMode = 3; optional bool invertXAxis = 4; optional bool invertYAxis = 5; optional bool switchTpShareForDs4 = 6; optional bool lockHotkeys = 7; 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 [deprecated = true]; optional InputModeAuthType ps4AuthType = 21; optional InputModeAuthType ps5AuthType = 22; optional InputModeAuthType xinputAuthType = 23; } message KeyboardMapping { optional uint32 keyDpadUp = 1; optional uint32 keyDpadDown = 2; optional uint32 keyDpadLeft = 3; optional uint32 keyDpadRight = 4; optional uint32 keyButtonB1 = 5; optional uint32 keyButtonB2 = 6; optional uint32 keyButtonB3 = 7; optional uint32 keyButtonB4 = 8; optional uint32 keyButtonL1 = 9; optional uint32 keyButtonR1 = 10; optional uint32 keyButtonL2 = 11; optional uint32 keyButtonR2 = 12; optional uint32 keyButtonS1 = 13; optional uint32 keyButtonS2 = 14; optional uint32 keyButtonL3 = 15; optional uint32 keyButtonR3 = 16; optional uint32 keyButtonA1 = 17; optional uint32 keyButtonA2 = 18; } message HotkeyEntry { optional uint32 dpadMask = 1; optional GamepadHotkey action = 2; optional uint32 buttonsMask = 3; optional uint32 auxMask = 4; } message HotkeyOptions { optional HotkeyEntry hotkey01 = 1; optional HotkeyEntry hotkey02 = 2; optional HotkeyEntry hotkey03 = 3; optional HotkeyEntry hotkey04 = 4; optional HotkeyEntry hotkey05 = 5; optional HotkeyEntry hotkey06 = 6; optional HotkeyEntry hotkey07 = 7; optional HotkeyEntry hotkey08 = 8; optional HotkeyEntry hotkey09 = 9; 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 { optional ForcedSetupMode mode = 1; }; message ButtonLayoutParamsCommon { optional int32 startX = 1; optional int32 startY = 2; optional int32 buttonRadius = 3; optional int32 buttonPadding = 4; } message ButtonLayoutParamsLeft { optional ButtonLayout layout = 1; optional ButtonLayoutParamsCommon common = 2; } message ButtonLayoutParamsRight { optional ButtonLayoutRight layout = 1; optional ButtonLayoutParamsCommon common = 2; } message ButtonLayoutCustomOptions { optional ButtonLayoutParamsLeft paramsLeft = 1; optional ButtonLayoutParamsRight paramsRight = 2; } message PinMappings { optional int32 pinDpadUp = 1; optional int32 pinDpadDown = 2; optional int32 pinDpadLeft = 3; optional int32 pinDpadRight = 4; optional int32 pinButtonB1 = 5; optional int32 pinButtonB2 = 6; optional int32 pinButtonB3 = 7; optional int32 pinButtonB4 = 8; optional int32 pinButtonL1 = 9; optional int32 pinButtonR1 = 10; optional int32 pinButtonL2 = 11; optional int32 pinButtonR2 = 12; optional int32 pinButtonS1 = 13; optional int32 pinButtonS2 = 14; optional int32 pinButtonL3 = 15; optional int32 pinButtonR3 = 16; optional int32 pinButtonA1 = 17; optional int32 pinButtonA2 = 18; optional int32 pinButtonFn = 19; } message GpioMappingInfo { optional GpioAction action = 1; } message GpioMappings { repeated GpioMappingInfo pins = 1 [(nanopb).max_count = 30]; } message AlternativePinMappings { optional int32 pinButtonB1 = 1; optional int32 pinButtonB2 = 2; optional int32 pinButtonB3 = 3; optional int32 pinButtonB4 = 4; optional int32 pinButtonL1 = 5; optional int32 pinButtonR1 = 6; optional int32 pinButtonL2 = 7; optional int32 pinButtonR2 = 8; optional int32 pinDpadUp = 9; optional int32 pinDpadDown = 10; optional int32 pinDpadLeft = 11; optional int32 pinDpadRight = 12; } message ProfileOptions { repeated AlternativePinMappings deprecatedAlternativePinMappings = 1 [(nanopb).max_count = 3, deprecated = true]; repeated GpioMappings gpioMappingsSets = 2 [(nanopb).max_count = 3]; } message DisplayOptions { optional bool enabled = 1; optional int32 i2cBlock = 2; optional int32 deprecatedI2cSDAPin = 3 [deprecated = true]; optional int32 deprecatedI2cSCLPin = 4 [deprecated = true]; optional int32 i2cAddress = 5; optional int32 deprecatedI2cSpeed = 6 [deprecated = true]; optional ButtonLayout buttonLayout = 7; optional ButtonLayoutRight buttonLayoutRight = 8; optional ButtonLayoutCustomOptions buttonLayoutCustomOptions = 9; optional SplashMode splashMode = 10; optional SplashChoice splashChoice = 11; optional int32 splashDuration = 12; optional bytes splashImage = 13 [(nanopb).max_size = 1024]; optional int32 size = 14; optional int32 flip = 15; optional bool invert = 16; optional int32 displaySaverTimeout = 17; optional bool turnOffWhenSuspended = 18; } message LEDOptions { optional int32 dataPin = 1; optional LEDFormat_Proto ledFormat = 2; optional ButtonLayout ledLayout = 3; optional uint32 ledsPerButton = 4; optional uint32 brightnessMaximum = 5; optional uint32 brightnessSteps = 6; optional int32 indexUp = 7; optional int32 indexDown = 8; optional int32 indexLeft = 9; optional int32 indexRight = 10; optional int32 indexB1 = 11; optional int32 indexB2 = 12; optional int32 indexB3 = 13; optional int32 indexB4 = 14; optional int32 indexL1 = 15; optional int32 indexR1 = 16; optional int32 indexL2 = 17; optional int32 indexR2 = 18; optional int32 indexS1 = 19; optional int32 indexS2 = 20; optional int32 indexL3 = 21; optional int32 indexR3 = 22; optional int32 indexA1 = 23; optional int32 indexA2 = 24; optional PLEDType pledType = 25; optional int32 pledPin1 = 26; optional int32 pledPin2 = 27; optional int32 pledPin3 = 28; optional int32 pledPin4 = 29; 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 message AnimationOptions_Proto { optional uint32 baseAnimationIndex = 1; optional uint32 brightness = 2; optional uint32 staticColorIndex = 3; optional uint32 buttonColorIndex = 4; optional int32 chaseCycleTime = 5; optional int32 rainbowCycleTime = 6; optional uint32 themeIndex = 7; optional bool hasCustomTheme = 8; optional uint32 customThemeUp = 9; optional uint32 customThemeDown = 10; optional uint32 customThemeLeft = 11; optional uint32 customThemeRight = 12; optional uint32 customThemeB1 = 13; optional uint32 customThemeB2 = 14; optional uint32 customThemeB3 = 15; optional uint32 customThemeB4 = 16; optional uint32 customThemeL1 = 17; optional uint32 customThemeR1 = 18; optional uint32 customThemeL2 = 19; optional uint32 customThemeR2 = 20; optional uint32 customThemeS1 = 21; optional uint32 customThemeS2 = 22; optional uint32 customThemeL3 = 23; optional uint32 customThemeR3 = 24; optional uint32 customThemeA1 = 25; optional uint32 customThemeA2 = 26; optional uint32 customThemeUpPressed = 27; optional uint32 customThemeDownPressed = 28; optional uint32 customThemeLeftPressed = 29; optional uint32 customThemeRightPressed = 30; optional uint32 customThemeB1Pressed = 31; optional uint32 customThemeB2Pressed = 32; optional uint32 customThemeB3Pressed = 33; optional uint32 customThemeB4Pressed = 34; optional uint32 customThemeL1Pressed = 35; optional uint32 customThemeR1Pressed = 36; optional uint32 customThemeL2Pressed = 37; optional uint32 customThemeR2Pressed = 38; optional uint32 customThemeS1Pressed = 39; optional uint32 customThemeS2Pressed = 40; optional uint32 customThemeL3Pressed = 41; optional uint32 customThemeR3Pressed = 42; optional uint32 customThemeA1Pressed = 43; optional uint32 customThemeA2Pressed = 44; optional uint32 buttonPressColorCooldownTimeInMs = 45; } message BootselButtonOptions { optional bool enabled = 1; optional uint32 buttonMap = 2; } message OnBoardLedOptions { optional OnBoardLedMode mode = 1; optional bool enabled = 2; } message AnalogOptions { optional bool enabled = 1; optional int32 analogAdc1PinX = 2; optional int32 analogAdc1PinY = 3; optional bool forced_circularity = 4; optional uint32 analog_deadzone = 5; optional int32 analogAdc2PinX = 6; optional int32 analogAdc2PinY = 7; optional DpadMode analogAdc1Mode = 8; optional DpadMode analogAdc2Mode = 9; optional InvertMode analogAdc1Invert = 10; optional InvertMode analogAdc2Invert = 11; optional bool auto_calibrate = 12; } message TurboOptions { optional bool enabled = 1; optional int32 deprecatedButtonPin = 2 [deprecated = true]; optional int32 ledPin = 3; optional uint32 shotCount = 4; optional int32 shmupDialPin = 5; optional bool shmupModeEnabled = 6; optional uint32 shmupAlwaysOn1 = 7; optional uint32 shmupAlwaysOn2 = 8; optional uint32 shmupAlwaysOn3 = 9; optional uint32 shmupAlwaysOn4 = 10; optional int32 shmupBtn1Pin = 11; optional int32 shmupBtn2Pin = 12; optional int32 shmupBtn3Pin = 13; optional int32 shmupBtn4Pin = 14; optional uint32 shmupBtnMask1 = 15; optional uint32 shmupBtnMask2 = 16; optional uint32 shmupBtnMask3 = 17; optional uint32 shmupBtnMask4 = 18; optional ShmupMixMode shmupMixMode = 19; } message SliderOptions { optional bool enabled = 1; 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; } message SOCDSliderOptions { optional bool enabled = 1; optional int32 deprecatedPinOne = 2 [deprecated = true]; optional int32 deprecatedPinTwo = 3 [deprecated = true]; optional SOCDMode modeDefault = 4; optional SOCDMode deprecatedModeOne = 5 [deprecated = true]; optional SOCDMode deprecatedModeTwo = 6 [deprecated = true]; } message ReverseOptions { optional bool enabled = 1; optional int32 buttonPin = 2; optional int32 ledPin = 3; optional uint32 actionUp = 4; optional uint32 actionDown = 5; optional uint32 actionLeft = 6; optional uint32 actionRight = 7; } message AnalogADS1219Options { optional bool enabled = 1; optional int32 i2cBlock = 2; optional int32 deprecatedI2cSDAPin = 3 [deprecated = true]; optional int32 deprecatedI2cSCLPin = 4 [deprecated = true]; optional int32 i2cAddress = 5; optional int32 deprecatedI2cSpeed = 6 [deprecated = true]; } message AnalogADS1256Options { optional bool enabled = 1; optional int32 spiBlock = 2; optional int32 csPin = 3; optional int32 drdyPin = 4; optional float avdd = 5; optional bool enableTriggers = 6; } message DualDirectionalOptions { optional bool enabled = 1; 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 DualDirectionalCombinationMode combineMode = 7; optional bool fourWayMode = 8; } message TiltOptions { optional bool enabled = 1; optional int32 tilt1Pin = 2; optional int32 tilt2Pin = 3; optional int32 deprecatedTiltFunctionPin = 4 [deprecated = true]; optional int32 tiltLeftAnalogUpPin = 5; optional int32 tiltLeftAnalogDownPin = 6; optional int32 tiltLeftAnalogLeftPin = 7; optional int32 tiltLeftAnalogRightPin = 8; optional int32 tiltRightAnalogUpPin = 9; optional int32 tiltRightAnalogDownPin = 10; optional int32 tiltRightAnalogLeftPin = 11; optional int32 tiltRightAnalogRightPin = 12; optional SOCDMode tiltSOCDMode = 13; optional int32 factorTilt1LeftX = 14; optional int32 factorTilt1LeftY = 15; optional int32 factorTilt1RightX = 16; optional int32 factorTilt1RightY = 17; optional int32 factorTilt2LeftX = 18; optional int32 factorTilt2LeftY = 19; optional int32 factorTilt2RightX = 20; optional int32 factorTilt2RightY = 21; } message BuzzerOptions { optional bool enabled = 1; optional int32 pin = 2; optional uint32 volume = 3; optional int32 enablePin = 4; } message ExtraButtonOptions { optional bool enabled = 1; optional int32 pin = 2; optional uint32 buttonMap = 3; } message PlayerNumberOptions { optional bool enabled = 1; optional uint32 number = 2; } message PS4Options { optional bool enabled = 1; optional bytes serial = 2 [(nanopb).max_size = 16]; optional bytes signature = 3 [(nanopb).max_size = 256]; optional bytes rsaN = 4 [(nanopb).max_size = 256]; optional bytes rsaE = 5 [(nanopb).max_size = 4]; optional bytes rsaD = 6 [(nanopb).max_size = 256]; optional bytes rsaP = 7 [(nanopb).max_size = 128]; optional bytes rsaQ = 8 [(nanopb).max_size = 128]; optional bytes rsaDP = 9 [(nanopb).max_size = 128]; optional bytes rsaDQ = 10 [(nanopb).max_size = 128]; optional bytes rsaQP = 11 [(nanopb).max_size = 128]; optional bytes rsaRN = 12 [(nanopb).max_size = 256]; } message PSPassthroughOptions { optional bool enabled = 1 [deprecated = true]; optional int32 deprecatedPinDplus = 2 [deprecated = true]; optional int32 deprecatedPin5V = 3 [deprecated = true]; } message XBOnePassthroughOptions { optional bool enabled = 1 [deprecated = true]; } message WiiOptions { message AnalogAxis { optional int32 axisType = 1; optional int32 minRange = 2; optional int32 maxRange = 3; } message StickOptions { optional AnalogAxis x = 1; optional AnalogAxis y = 2; } message NunchukOptions { optional int32 buttonC = 1; optional int32 buttonZ = 2; optional StickOptions stick = 3; } message ClassicOptions { optional int32 buttonA = 1; optional int32 buttonB = 2; optional int32 buttonX = 3; optional int32 buttonY = 4; optional int32 buttonL = 5; optional int32 buttonZL = 6; optional int32 buttonR = 7; optional int32 buttonZR = 8; optional int32 buttonMinus = 9; optional int32 buttonPlus = 10; optional int32 buttonHome = 11; optional int32 buttonUp = 12; optional int32 buttonDown = 13; optional int32 buttonLeft = 14; optional int32 buttonRight = 15; optional StickOptions rightStick = 17; optional StickOptions leftStick = 16; optional AnalogAxis leftTrigger = 18; optional AnalogAxis rightTrigger = 19; } message TaikoOptions { optional int32 buttonKatLeft = 1; optional int32 buttonKatRight = 2; optional int32 buttonDonLeft = 3; optional int32 buttonDonRight = 4; } message GuitarOptions { optional int32 buttonRed = 1; optional int32 buttonGreen = 2; optional int32 buttonYellow = 3; optional int32 buttonBlue = 4; optional int32 buttonOrange = 5; optional int32 buttonPedal = 6; optional int32 buttonMinus = 7; optional int32 buttonPlus = 8; optional int32 strumUp = 9; optional int32 strumDown = 10; optional StickOptions stick = 11; optional AnalogAxis whammyBar = 12; } message DrumOptions { optional int32 buttonRed = 1; optional int32 buttonGreen = 2; optional int32 buttonYellow = 3; optional int32 buttonBlue = 4; optional int32 buttonOrange = 5; optional int32 buttonPedal = 6; optional int32 buttonMinus = 7; optional int32 buttonPlus = 8; optional StickOptions stick = 9; } message TurntableOptions { optional int32 buttonLeftRed = 1; optional int32 buttonLeftGreen = 2; optional int32 buttonLeftBlue = 3; optional int32 buttonRightRed = 4; optional int32 buttonRightGreen = 5; optional int32 buttonRightBlue = 6; optional int32 buttonMinus = 7; optional int32 buttonPlus = 8; optional int32 buttonEuphoria = 9; optional StickOptions stick = 10; optional AnalogAxis leftTurntable = 11; optional AnalogAxis rightTurntable = 12; optional AnalogAxis effects = 13; optional AnalogAxis fader = 14; } message ControllerOptions { optional NunchukOptions nunchuk = 1; optional ClassicOptions classic = 2; optional TaikoOptions taiko = 3; optional GuitarOptions guitar = 4; optional DrumOptions drum = 5; optional TurntableOptions turntable = 6; } optional bool enabled = 1; optional int32 i2cBlock = 2; optional int32 deprecatedI2cSDAPin = 3 [deprecated = true]; optional int32 deprecatedI2cSCLPin = 4 [deprecated = true]; optional int32 deprecatedI2cSpeed = 5 [deprecated = true]; optional ControllerOptions controllers = 6; } message SNESOptions { optional bool enabled = 1; optional int32 clockPin = 2; optional int32 latchPin = 3; optional int32 dataPin = 4; } message KeyboardHostOptions { optional bool enabled = 1; optional int32 deprecatedPinDplus = 2 [deprecated = true]; optional KeyboardMapping mapping = 3; optional int32 deprecatedPin5V = 4 [deprecated = true]; } message FocusModeOptions { optional bool enabled = 1; optional int32 pin = 2; optional int32 buttonLockMask = 3; optional bool oledLockEnabled = 4; optional bool rgbLockEnabled = 5; optional bool buttonLockEnabled = 6; optional bool macroLockEnabled = 7; } message MacroInput { optional uint32 buttonMask = 1; optional uint32 duration = 2; optional uint32 waitDuration = 3 [default = 0]; } message Macro { optional MacroType macroType = 1; optional string macroLabel = 2 [(nanopb).max_length = 64]; repeated MacroInput macroInputs = 3 [(nanopb).max_count = 30]; optional bool enabled = 4; optional bool useMacroTriggerButton = 5; optional int32 deprecatedMacroTriggerPin = 6 [deprecated = true]; optional uint32 macroTriggerButton = 7; optional bool exclusive = 8 [default = true]; optional bool interruptible = 9 [default = true]; optional bool showFrames = 10 [default = false]; } message MacroOptions { optional bool enabled = 1; optional int32 deprecatedPin = 2 [deprecated = true]; repeated Macro macroList = 3 [(nanopb).max_count = 6]; optional bool macroBoardLedEnabled = 4; } message InputHistoryOptions { optional bool enabled = 1; optional uint32 length = 2; optional uint32 col = 3; optional uint32 row = 4; } message RotaryPinOptions { optional bool enabled = 1; optional int32 pinA = 2; optional int32 pinB = 3; optional RotaryEncoderPinMode mode = 4; optional uint32 pulsesPerRevolution = 5; optional uint32 resetAfter = 6; optional bool allowWrapAround = 7; optional float multiplier = 8; } message RotaryOptions { optional bool enabled = 1; optional RotaryPinOptions encoderOne = 2; optional RotaryPinOptions encoderTwo = 3; } message AddonOptions { optional BootselButtonOptions bootselButtonOptions = 1; optional OnBoardLedOptions onBoardLedOptions = 2; optional AnalogOptions analogOptions = 3; optional TurboOptions turboOptions = 4; optional SliderOptions sliderOptions = 5; optional ReverseOptions reverseOptions = 6; optional AnalogADS1219Options analogADS1219Options = 7; optional DualDirectionalOptions dualDirectionalOptions = 8; optional BuzzerOptions buzzerOptions = 9; optional ExtraButtonOptions deprecatedExtraButtonOptions = 10 [deprecated = true]; optional PlayerNumberOptions playerNumberOptions = 11; optional PS4Options ps4Options = 12 [(nanopb).disallow_export = true]; optional WiiOptions wiiOptions = 13; optional SOCDSliderOptions socdSliderOptions = 14; optional SNESOptions snesOptions = 15; optional FocusModeOptions focusModeOptions = 16; optional KeyboardHostOptions keyboardHostOptions = 17; optional TiltOptions tiltOptions = 18; optional PSPassthroughOptions psPassthroughOptions = 19 [deprecated = true]; optional MacroOptions macroOptions = 20; optional InputHistoryOptions inputHistoryOptions = 21; optional XBOnePassthroughOptions xbonePassthroughOptions = 22 [deprecated = true]; optional AnalogADS1256Options analogADS1256Options = 23; optional RotaryOptions rotaryOptions = 24; } message MigrationHistory { optional bool hotkeysMigrated = 1 [default = false]; optional bool gpioMappingsMigrated = 2 [default = false]; optional bool buttonProfilesMigrated = 3 [default = false]; } message Config { optional string boardVersion = 1 [(nanopb).max_length = 31]; optional GamepadOptions gamepadOptions = 2; optional HotkeyOptions hotkeyOptions = 3; optional PinMappings deprecatedPinMappings = 4 [deprecated = true]; optional KeyboardMapping keyboardMapping = 5; optional DisplayOptions displayOptions = 6; optional LEDOptions ledOptions = 7; optional AnimationOptions_Proto animationOptions = 8; optional AddonOptions addonOptions = 9; optional ForcedSetupOptions forcedSetupOptions = 10; optional ProfileOptions profileOptions = 11; optional string boardConfig = 12 [(nanopb).max_length = 63]; optional GpioMappings gpioMappings = 13; optional MigrationHistory migrations = 14; optional PeripheralOptions peripheralOptions = 15; }