59 lines
2.0 KiB
C++
59 lines
2.0 KiB
C++
#include "IspindelInterface.h"
|
|
#include "ProtocolDefs.h"
|
|
#include "IspindelData.h"
|
|
|
|
CIspindelInterface::CIspindelInterface(int Address, CAbstractNetworkCommIF *NetworkInterface, CIspindelDevice *DevicePtr):
|
|
CNetworkDevice(ID_ISPINDEL_INTERFACE,Address,NetworkInterface)
|
|
{
|
|
mISpindelDevice = DevicePtr;
|
|
connect(mISpindelDevice,SIGNAL(NewIspindelDataReceived()),this,SLOT(SendLastIspindelData()));
|
|
}
|
|
|
|
int CIspindelInterface::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data)
|
|
{
|
|
Q_UNUSED(DeviceID)
|
|
Q_UNUSED(DeviceAddress)
|
|
Q_UNUSED(DataSize)
|
|
Q_UNUSED(Data)
|
|
|
|
switch(MessageID)
|
|
{
|
|
case ISPINDLE_LATEST_DATA_REQUEST:
|
|
{
|
|
QByteArray Buf;
|
|
|
|
break;
|
|
}
|
|
case ISPINDEL_GET_FULL_DATA_BUFFER_REQUEST:
|
|
{
|
|
QByteArray Buf = mISpindelDevice->GetAllDataBuffer();
|
|
mNetworkInterfacePtr->SendNetworkMessage(ID_ISPINDEL_INTERFACE,mDeviceAddress,ISPINDEL_GET_FULL_DATA_BUFFER_RESPONSE,Buf.size(),&Buf);
|
|
break;
|
|
}
|
|
case ISPINDEL_DELETE_SAMPLE_REQUEST:
|
|
{
|
|
int Index;
|
|
QDataStream Strm(&Data,QIODevice::ReadOnly | QIODevice::Unbuffered);
|
|
Strm >> Index;
|
|
bool Res = mISpindelDevice->DeleteSampleRequest(Index);
|
|
|
|
QByteArray ResBuffer;
|
|
QDataStream ResultStrm(&ResBuffer,QIODevice::WriteOnly | QIODevice::Unbuffered);
|
|
ResultStrm << Res;
|
|
|
|
mNetworkInterfacePtr->SendNetworkMessage(ID_ISPINDEL_INTERFACE,mDeviceAddress,ISPINDEL_DELETE_SAMPLE_RESPONSE,ResBuffer.size(),&ResBuffer);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
void CIspindelInterface::SendLastIspindelData()
|
|
{
|
|
QByteArray Buf = mISpindelDevice->GetLastestIspindelDataBuffer();
|
|
mNetworkInterfacePtr->SendNetworkMessage(ID_ISPINDEL_INTERFACE,mDeviceAddress,ISPINDLE_LATEST_DATA_RESPONSE,Buf.size(),&Buf);
|
|
qDebug("Sent latest Ispindel data to interface");
|
|
|
|
}
|