|
- #include "OutputConnector.h"
- #include "GlobalDefine.h"
-
- COutputConnector::COutputConnector()
- {
- }
-
-
- int COutputConnector::SetOutputPins(QBitArray PinsStates)
- {
- if(mIOModuleRangeEnd >= IO_COUNT)
- {
- qDebug("Logic error in COutputConnector::SetOutputPins; mIOModuleRangeEnd greater than IO count");
- return RET_ERROR;
- }
- if(IsConnectorDefined() == false)
- {
- return RET_ERROR;
- }
-
- QBitArray OutputBuf(IO_COUNT);
-
- int PinIndex = 0;
- for(int IoPin = mIOModuleRangeBegin; IoPin <= mIOModuleRangeEnd; IoPin++)
- {
- OutputBuf[IoPin] = PinsStates[PinIndex++];
- }
-
- mIOInterfaceHandle->SetOutputs(OutputBuf);
-
- return RET_OK;
- }
-
-
- QBitArray COutputConnector::GetOutputPinsStates()
- {
- if(IsConnectorDefined() == false)
- {
- return QBitArray();
- }
-
- QBitArray IOStates = mIOInterfaceHandle->GetOutputStates();
- QBitArray PinsStates(mPinCount);
-
- if(mIOModuleRangeEnd > IOStates.size()) //try not to crash!
- {
- qDebug("Logic error in CInputConnector::GetInputPinsStates(); mIOModuleRangeEnd greater than IO count");
- return QBitArray();
- }
-
- int ConnectorPin = 0;
- for(int IoPin = mIOModuleRangeBegin; IoPin <= mIOModuleRangeEnd; IoPin++)
- {
- PinsStates[ConnectorPin++] = IOStates[IoPin];
- }
-
- return PinsStates;
- }
-
- int COutputConnector::SetConnectorType(CConnectorDefs::eConnectorType type)
- {
- CConnector::SetConnectorType(type);
-
- mOutputsPinsStateBuffer.clear();
- mOutputsPinsStateBuffer = QBitArray(mPinCount);
-
- ClearAllPins();
- return RET_OK;
- }
-
- //! !!!! WARNING, PinIndex IS ZERO-BASED INDEX !!! //
- int COutputConnector::SetSinglePin(unsigned int PinNumber)
- {
- if(IsConnectorDefined() == false)
- {
- return RET_ERROR;
- }
-
- int ZeroBasedPinIndex = PinNumber-1;
-
- if(ZeroBasedPinIndex >= (int)mPinCount || ZeroBasedPinIndex < 0)
- {
- return RET_ERROR;
- }
-
- QBitArray PinsStates(mPinCount);
- PinsStates.setBit(ZeroBasedPinIndex);
-
- SetOutputPins(PinsStates);
-
- return RET_OK;
-
- }
-
- //! !!!! WARNING, PinIndex IS ZERO-BASED INDEX !!! //
- int COutputConnector::GetSinglePinState(unsigned int PinNumber)
- {
- if(IsConnectorDefined() == false)
- {
- return RET_ERROR;
- }
-
- int ZeroBasedPinIndex = PinNumber-1;
-
- if(ZeroBasedPinIndex > (int)mPinCount || ZeroBasedPinIndex < 0)
- {
- return -1;
- }
-
- QBitArray CurStates = GetOutputPinsStates();
-
- return CurStates.at(ZeroBasedPinIndex);
- }
-
- int COutputConnector::TogglePin(unsigned int PinNumber)
- {
- if(IsConnectorDefined() == false)
- {
- return RET_ERROR;
- }
-
- int ZeroBasedPinIndex = PinNumber-1;
-
- if(ZeroBasedPinIndex > (int)mPinCount || ZeroBasedPinIndex < 0)
- {
- return RET_ERROR;
- }
-
- QBitArray CurStates = GetOutputPinsStates();
-
- CurStates.toggleBit(ZeroBasedPinIndex);
- SetOutputPins(CurStates);
-
- return RET_OK;
-
- }
-
- int COutputConnector::ClearAllPins()
- {
- if(IsConnectorDefined() == false)
- {
- return RET_ERROR;
- }
-
- mIOInterfaceHandle->ResetOutputs();
- return RET_OK;
- }
|