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; } 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; } message HotkeyOptions { optional HotkeyEntry hotkeyF1Up = 1; optional HotkeyEntry hotkeyF1Down = 2; optional HotkeyEntry hotkeyF1Left = 3; optional HotkeyEntry hotkeyF1Right = 4; optional HotkeyEntry hotkeyF2Up = 5; optional HotkeyEntry hotkeyF2Down = 6; optional HotkeyEntry hotkeyF2Left = 7; optional HotkeyEntry hotkeyF2Right = 8; } 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; } message DisplayOptions { optional bool enabled = 1; optional int32 i2cBlock = 2; optional int32 i2cSDAPin = 3; optional int32 i2cSCLPin = 4; optional int32 i2cAddress = 5; optional int32 i2cSpeed = 6; 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; } 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; }; // 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; } 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 analogAdcPinX = 2; optional int32 analogAdcPinY = 3; optional bool forced_circularity = 4; optional uint32 analog_deadzone = 5; } message TurboOptions { optional bool enabled = 1; optional int32 buttonPin = 2; 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 pinLS = 2; optional int32 pinRS = 3; } message SOCDSliderOptions { optional bool enabled = 1; optional int32 pinOne = 2; optional int32 pinTwo = 3; optional SOCDMode modeDefault = 4; optional SOCDMode modeOne = 5; optional SOCDMode modeTwo = 6; } 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 i2cSDAPin = 3; optional int32 i2cSCLPin = 4; optional int32 i2cAddress = 5; optional int32 i2cSpeed = 6; } message DualDirectionalOptions { optional bool enabled = 1; optional int32 upPin = 2; optional int32 downPin = 3; optional int32 leftPin = 4; optional int32 rightPin = 5; optional DpadMode dpadMode = 6; optional uint32 combineMode = 7; optional bool fourWayMode = 8; } message BuzzerOptions { optional bool enabled = 1; optional int32 pin = 2; optional uint32 volume = 3; } 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 WiiOptions { optional bool enabled = 1; optional int32 i2cBlock = 2; optional int32 i2cSDAPin = 3; optional int32 i2cSCLPin = 4; optional int32 i2cSpeed = 5; } message SNESOptions { optional bool enabled = 1; optional int32 clockPin = 2; optional int32 latchPin = 3; optional int32 dataPin = 4; } 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; } 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 extraButtonOptions = 10; 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; } message Config { optional string boardVersion = 1 [(nanopb).max_length = 31]; optional GamepadOptions gamepadOptions = 2; optional HotkeyOptions hotkeyOptions = 3; optional PinMappings pinMappings = 4; 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; }