@@ -48,6 +48,7 @@ HRESULT Library_windows_devices_native_Windows_Devices_Gpio_GpioPin::get_Debounc
4848{
4949 TINYCLR_HEADER ();
5050
51+ GPIO_PIN pin;
5152 CLR_INT64 value;
5253 CLR_RT_HeapBlock* pThis = stack.This (); FAULT_ON_NULL (pThis);
5354
@@ -56,7 +57,8 @@ HRESULT Library_windows_devices_native_Windows_Devices_Gpio_GpioPin::get_Debounc
5657 TINYCLR_SET_AND_LEAVE (CLR_E_OBJECT_DISPOSED);
5758 }
5859
59- value = (CLR_INT64)::CPU_GPIO_GetDebounce () * TIME_CONVERSION__TO_MILLISECONDS;
60+ pin = (GPIO_PIN)( pThis[ FIELD__m_pinNumber ].NumericByRefConst ().u4 );
61+ value = (CLR_INT64)::CPU_GPIO_GetPinDebounce ( pin ) * TIME_CONVERSION__TO_MILLISECONDS;
6062 stack.SetResult_I8 ( value );
6163 stack.TopValue ().ChangeDataType ( DATATYPE_TIMESPAN );
6264
@@ -67,6 +69,7 @@ HRESULT Library_windows_devices_native_Windows_Devices_Gpio_GpioPin::set_Debounc
6769{
6870 TINYCLR_HEADER ();
6971
72+ GPIO_PIN pin;
7073 CLR_INT64 value;
7174 CLR_RT_HeapBlock* pThis = stack.This (); FAULT_ON_NULL (pThis);
7275
@@ -76,12 +79,11 @@ HRESULT Library_windows_devices_native_Windows_Devices_Gpio_GpioPin::set_Debounc
7679 }
7780
7881 value = (CLR_INT64_TEMP_CAST) stack.Arg1 ().NumericByRef ().s8 / TIME_CONVERSION__TO_MILLISECONDS;
79-
80- // TODO: Issue #101 Set debounce individually per pin once the HAL has that capability.
81- // if (!::CPU_GPIO_SetDebounce( value ))
82- // {
83- // TINYCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER);
84- // }
82+ pin = (GPIO_PIN)( pThis[ FIELD__m_pinNumber ].NumericByRefConst ().u4 );
83+ if (!::CPU_GPIO_SetPinDebounce ( pin, value ))
84+ {
85+ TINYCLR_SET_AND_LEAVE (CLR_E_INVALID_PARAMETER);
86+ }
8587 TINYCLR_SET_AND_LEAVE (stack.NotImplementedStub ());
8688
8789 TINYCLR_NOCLEANUP ();
0 commit comments