diff --git a/server/app.js b/server/app.js
index 757c1ec..a61c9f7 100644
--- a/server/app.js
+++ b/server/app.js
@@ -212,6 +212,9 @@ app.get("/api/getAddonsOptions", (req, res) => {
wiiExtensionSCLPin: -1,
wiiExtensionBlock: 0,
wiiExtensionSpeed: 400000,
+ sidewinderGPPinTrigger: -1,
+ sidewinderGPPinClock: -1,
+ sidewinderGPPinData: -1,
AnalogInputEnabled: 1,
BoardLedAddonEnabled: 1,
BuzzerSpeakerAddonEnabled: 1,
@@ -226,6 +229,7 @@ app.get("/api/getAddonsOptions", (req, res) => {
SliderSOCDInputEnabled: 1,
TurboInputEnabled: 1,
WiiExtensionAddonEnabled: 1,
+ SidewinderGPEnabled: 1,
usedPins: Object.values(picoController),
});
});
diff --git a/src/Pages/AddonsConfigPage.js b/src/Pages/AddonsConfigPage.js
index adbf843..998527a 100644
--- a/src/Pages/AddonsConfigPage.js
+++ b/src/Pages/AddonsConfigPage.js
@@ -298,6 +298,10 @@ const schema = yup.object().shape({
BootselButtonAddonEnabled: yup.number().required().label('Boot Select Button Add-On Enabled'),
bootselButtonMap: yup.number().label('BOOTSEL Button Map').validateSelectionWhenEnabled('BootselButtonAddonEnabled', BUTTON_MASKS),
+ sidewinderGPPinTrigger : yup.number().required().test('', '${originalValue} is unavailable/already assigned!', (value) => usedPins.indexOf(value) === -1).label('Sidewinder GP Trigger Pin'),
+ sidewinderGPPinClock : yup.number().required().test('', '${originalValue} is unavailable/already assigned!', (value) => usedPins.indexOf(value) === -1).label('Sidewinder GP Clock Pin'),
+ sidewinderGPPinData : yup.number().required().test('', '${originalValue} is unavailable/already assigned!', (value) => usedPins.indexOf(value) === -1).label('Sidewinder GP Data Pin'),
+
BuzzerSpeakerAddonEnabled: yup.number().required().label('Buzzer Speaker Add-On Enabled'),
buzzerPin: yup.number().label('Buzzer Pin').validatePinWhenEnabled('BuzzerSpeakerAddonEnabled'),
buzzerVolume: yup.number().label('Buzzer Volume').validateRangeWhenEnabled('BuzzerSpeakerAddonEnabled', 0, 100),
@@ -359,6 +363,7 @@ const schema = yup.object().shape({
wiiExtensionSCLPin: yup.number().required().label('WiiExtension I2C SCL Pin').validatePinWhenEnabled('WiiExtensionAddonEnabled'),
wiiExtensionBlock: yup.number().required().label('WiiExtension I2C Block').validateSelectionWhenEnabled('WiiExtensionAddonEnabled', I2C_BLOCKS),
wiiExtensionSpeed: yup.number().label('WiiExtension I2C Speed').validateNumberWhenEnabled('WiiExtensionAddonEnabled'),
+ SidewinderGPEnabled: yup.number().required().label('Sidewinder GP Input Enabled')
});
const defaultValues = {
@@ -413,6 +418,9 @@ const defaultValues = {
wiiExtensionSCLPin: -1,
wiiExtensionBlock: 0,
wiiExtensionSpeed: 400000,
+ sidewinderGPPinTrigger: -1,
+ sidewinderGPPinClock: -1,
+ sidewinderGPPinData: -1,
AnalogInputEnabled: 0,
BoardLedAddonEnabled: 0,
BuzzerSpeakerAddonEnabled: 0,
@@ -427,6 +435,7 @@ const defaultValues = {
ReverseInputEnabled: 0,
TurboInputEnabled: 0,
WiiExtensionAddonEnabled: 0,
+ SidewinderGPEnabled: 0,
};
let usedPins = [];
@@ -560,6 +569,12 @@ const sanitizeData = (values) => {
values.wiiExtensionBlock = parseInt(values.wiiExtensionBlock);
if (!!values.wiiExtensionSpeed)
values.wiiExtensionSpeed = parseInt(values.wiiExtensionSpeed);
+ if (!!values.sidewinderGPPinTrigger)
+ values.sidewinderGPPinTrigger = parseInt(values.sidewinderGPPinTrigger);
+ if (!!values.sidewinderGPPinClock)
+ values.sidewinderGPPinClock = parseInt(values.sidewinderGPPinClock);
+ if (!!values.sidewinderGPPinData)
+ values.sidewinderGPPinData = parseInt(values.sidewinderGPPinData);
if (!!values.AnalogInputEnabled)
values.AnalogInputEnabled = parseInt(values.AnalogInputEnabled);
if (!!values.BoardLedAddonEnabled)
@@ -588,6 +603,8 @@ const sanitizeData = (values) => {
values.TurboInputEnabled = parseInt(values.TurboInputEnabled);
if (!!values.WiiExtensionAddonEnabled)
values.WiiExtensionAddonEnabled = parseInt(values.WiiExtensionAddonEnabled);
+ if (!!values.SidewinderGPEnabled)
+ values.SidewinderGPEnabled = parseInt(values.SidewinderGPEnabled);
}
function flattenObject(object) {
@@ -1591,6 +1608,59 @@ export default function AddonsConfigPage() {
onChange={(e) => {handleCheckbox("WiiExtensionAddonEnabled", values); handleChange(e);}}
/>
+