41 lines
1.2 KiB
C++
41 lines
1.2 KiB
C++
#include "GpioInputHandle.h"
|
|
#include "Log.h"
|
|
GpioInputHandle::GpioInputHandle(const GpioPin &gpio, const unsigned int &pin, const signed char invalidInput)
|
|
: mGpio(gpio), mPin(pin), mInvalidInput(invalidInput)
|
|
{
|
|
mContext = nullptr;
|
|
mLastPinValue = mInvalidInput;
|
|
}
|
|
void GpioInputHandle::Init(void)
|
|
{
|
|
GpioInit(mPin, GPIO_DIR_IN);
|
|
}
|
|
void GpioInputHandle::UnInit(void)
|
|
{
|
|
GpioDeinit(mPin);
|
|
}
|
|
void GpioInputHandle::SetInputMonitor(std::shared_ptr<VGpioInputMonitor> monitor, void *context)
|
|
{
|
|
mInputMonitor = monitor;
|
|
mContext = context;
|
|
}
|
|
void GpioInputHandle::CheckInputValue(void)
|
|
{
|
|
auto monitor = mInputMonitor.lock();
|
|
if (mInputMonitor.expired())
|
|
{
|
|
return;
|
|
}
|
|
SINT8 pinValue = 0;
|
|
GpioGet(mPin, pinValue);
|
|
// LogInfo("GpioInputHandle::CheckInputValue pin = %d, pinValue = %d\n", mPin, pinValue);
|
|
if (pinValue == mInvalidInput && mInvalidInput != mLastPinValue)
|
|
{
|
|
monitor->InputTransform(mGpio, GpioInputValue::INVALID, mContext);
|
|
}
|
|
if (pinValue != mInvalidInput && mInvalidInput == mLastPinValue)
|
|
{
|
|
monitor->InputTransform(mGpio, GpioInputValue::VALID, mContext);
|
|
}
|
|
mLastPinValue = pinValue;
|
|
} |