@@ -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
336341const 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
404413const 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
563580function 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