Skip to content

Commit a9e7bc0

Browse files
committed
www: Sidewinder GP web configuration
1 parent 798d702 commit a9e7bc0

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed

www/server/app.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ app.get("/api/getAddonsOptions", (req, res) => {
223223
wiiExtensionSCLPin: -1,
224224
wiiExtensionBlock: 0,
225225
wiiExtensionSpeed: 400000,
226+
sidewinderGPPinTrigger: -1,
227+
sidewinderGPPinClock: -1,
228+
sidewinderGPPinData: -1,
226229
AnalogInputEnabled: 1,
227230
BoardLedAddonEnabled: 1,
228231
BuzzerSpeakerAddonEnabled: 1,
@@ -237,6 +240,7 @@ app.get("/api/getAddonsOptions", (req, res) => {
237240
SliderSOCDInputEnabled: 1,
238241
TurboInputEnabled: 1,
239242
WiiExtensionAddonEnabled: 1,
243+
SidewinderGPEnabled: 1,
240244
usedPins: Object.values(picoController),
241245
});
242246
});

www/src/Pages/AddonsConfigPage.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,10 @@ const schema = yup.object().shape({
270270
BootselButtonAddonEnabled: yup.number().required().label('Boot Select Button Add-On Enabled'),
271271
bootselButtonMap: yup.number().label('BOOTSEL Button Map').validateSelectionWhenValue('BootselButtonAddonEnabled', BUTTON_MASKS),
272272

273+
sidewinderGPPinTrigger : yup.number().required().test('', '${originalValue} is unavailable/already assigned!', (value) => usedPins.indexOf(value) === -1).label('Sidewinder GP Trigger Pin'),
274+
sidewinderGPPinClock : yup.number().required().test('', '${originalValue} is unavailable/already assigned!', (value) => usedPins.indexOf(value) === -1).label('Sidewinder GP Clock Pin'),
275+
sidewinderGPPinData : yup.number().required().test('', '${originalValue} is unavailable/already assigned!', (value) => usedPins.indexOf(value) === -1).label('Sidewinder GP Data Pin'),
276+
273277
BuzzerSpeakerAddonEnabled: yup.number().required().label('Buzzer Speaker Add-On Enabled'),
274278
buzzerPin: yup.number().label('Buzzer Pin').validatePinWhenValue('BuzzerSpeakerAddonEnabled'),
275279
buzzerVolume: yup.number().label('Buzzer Volume').validateRangeWhenValue('BuzzerSpeakerAddonEnabled', 0, 100),
@@ -331,6 +335,7 @@ const schema = yup.object().shape({
331335
wiiExtensionSCLPin: yup.number().required().label('WiiExtension I2C SCL Pin').validatePinWhenValue('WiiExtensionAddonEnabled'),
332336
wiiExtensionBlock: yup.number().required().label('WiiExtension I2C Block').validateSelectionWhenValue('WiiExtensionAddonEnabled', I2C_BLOCKS),
333337
wiiExtensionSpeed: yup.number().label('WiiExtension I2C Speed').validateNumberWhenValue('WiiExtensionAddonEnabled'),
338+
SidewinderGPEnabled: yup.number().required().label('Sidewinder GP Input Enabled'),
334339
});
335340

336341
const defaultValues = {
@@ -385,6 +390,9 @@ const defaultValues = {
385390
wiiExtensionSCLPin: -1,
386391
wiiExtensionBlock: 0,
387392
wiiExtensionSpeed: 400000,
393+
sidewinderGPPinTrigger: -1,
394+
sidewinderGPPinClock: -1,
395+
sidewinderGPPinData: -1,
388396
AnalogInputEnabled: 0,
389397
BoardLedAddonEnabled: 0,
390398
BuzzerSpeakerAddonEnabled: 0,
@@ -399,6 +407,7 @@ const defaultValues = {
399407
ReverseInputEnabled: 0,
400408
TurboInputEnabled: 0,
401409
WiiExtensionAddonEnabled: 0,
410+
SidewinderGPEnabled: 0,
402411
};
403412

404413
const FormContext = ({setStoredData}) => {
@@ -530,6 +539,12 @@ const sanitizeData = (values) => {
530539
values.wiiExtensionBlock = parseInt(values.wiiExtensionBlock);
531540
if (!!values.wiiExtensionSpeed)
532541
values.wiiExtensionSpeed = parseInt(values.wiiExtensionSpeed);
542+
if (!!values.sidewinderGPPinTrigger)
543+
values.sidewinderGPPinTrigger = parseInt(values.sidewinderGPPinTrigger);
544+
if (!!values.sidewinderGPPinClock)
545+
values.sidewinderGPPinClock = parseInt(values.sidewinderGPPinClock);
546+
if (!!values.sidewinderGPPinData)
547+
values.sidewinderGPPinData = parseInt(values.sidewinderGPPinData);
533548
if (!!values.AnalogInputEnabled)
534549
values.AnalogInputEnabled = parseInt(values.AnalogInputEnabled);
535550
if (!!values.BoardLedAddonEnabled)
@@ -558,6 +573,8 @@ const sanitizeData = (values) => {
558573
values.TurboInputEnabled = parseInt(values.TurboInputEnabled);
559574
if (!!values.WiiExtensionAddonEnabled)
560575
values.WiiExtensionAddonEnabled = parseInt(values.WiiExtensionAddonEnabled);
576+
if (!!values.SidewinderGPEnabled)
577+
values.SidewinderGPEnabled = parseInt(values.SidewinderGPEnabled);
561578
}
562579

563580
function flattenObject(object) {
@@ -1564,6 +1581,59 @@ export default function AddonsConfigPage() {
15641581
onChange={(e) => {handleCheckbox("WiiExtensionAddonEnabled", values); handleChange(e);}}
15651582
/>
15661583
</Section>
1584+
<Section title="Sidewinder Gamepad">
1585+
<div
1586+
id="SidewinderGPInputOptions"
1587+
hidden={!values.SidewinderGPEnabled}>
1588+
<Row className="mb-3">
1589+
<FormControl type="number"
1590+
label="Trigger Pin"
1591+
name="sidewinderGPPinTrigger"
1592+
className="form-control-sm"
1593+
groupClassName="col-sm-1 mb-3"
1594+
value={values.sidewinderGPPinTrigger}
1595+
error={errors.sidewinderGPPinTrigger}
1596+
isInvalid={errors.sidewinderGPPinTrigger}
1597+
onChange={handleChange}
1598+
min={-1}
1599+
max={29}
1600+
/>
1601+
<FormControl type="number"
1602+
label="Clock Pin"
1603+
name="sidewinderGPPinClock"
1604+
className="form-control-sm"
1605+
groupClassName="col-sm-1 mb-3"
1606+
value={values.sidewinderGPPinClock}
1607+
error={errors.sidewinderGPPinClock}
1608+
isInvalid={errors.sidewinderGPPinClock}
1609+
onChange={handleChange}
1610+
min={-1}
1611+
max={29}
1612+
/>
1613+
<FormControl type="number"
1614+
label="Data Pin"
1615+
name="sidewinderGPPinData"
1616+
className="form-control-sm"
1617+
groupClassName="col-sm-1 mb-3"
1618+
value={values.sidewinderGPPinData}
1619+
error={errors.sidewinderGPPinData}
1620+
isInvalid={errors.sidewinderGPPinData}
1621+
onChange={handleChange}
1622+
min={-1}
1623+
max={29}
1624+
/>
1625+
</Row>
1626+
</div>
1627+
<FormCheck
1628+
label="Enabled"
1629+
type="switch"
1630+
id="SidewinderGPInputButoon"
1631+
reverse
1632+
isInvalid={false}
1633+
checked={Boolean(values.SidewinderGPEnabled)}
1634+
onChange={(e) => {handleCheckbox("SidewinderGPEnabled", values); handleChange(e);}}
1635+
/>
1636+
</Section>
15671637
<div className="mt-3">
15681638
<Button type="submit" id="save">Save</Button>
15691639
{saveMessage ? <span className="alert">{saveMessage}</span> : null}

0 commit comments

Comments
 (0)