From 1a7ca49b7d6e8441147f6cf6a603babf32f5d15e Mon Sep 17 00:00:00 2001 From: JF Date: Fri, 14 Aug 2015 11:09:36 -0400 Subject: [PATCH] Changes in inheritance scheme for network protocol implementation --- .gitignore | 1 + MasterCtrl.pro | 2 ++ Sources/232NetworkCommIF.cpp | 15 ++++++++++----- Sources/232NetworkCommIF.h | 15 +++++++++------ Sources/485NetworkCommIF.cpp | 11 +++++++++++ Sources/485NetworkCommIF.h | 13 ++++++++++++- Sources/AbstractDevice.h | 16 ++++++++++++++++ Sources/DeadboltDevice.cpp | 9 +++++++-- Sources/DeadboltDevice.h | 9 +++++---- Sources/MasterCtrl.cpp | 2 +- Sources/NetworkProtocol.cpp | 6 +++--- Sources/NetworkProtocol.h | 5 +++-- Sources/ProtocolDefs.h | 2 ++ 13 files changed, 82 insertions(+), 24 deletions(-) create mode 100644 Sources/AbstractDevice.h diff --git a/.gitignore b/.gitignore index 2373091..3366542 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /Makefile.Release release debug +*.autosave diff --git a/MasterCtrl.pro b/MasterCtrl.pro index 287393f..737bec1 100644 --- a/MasterCtrl.pro +++ b/MasterCtrl.pro @@ -10,6 +10,8 @@ HEADERS += \ Sources/NetworkProtocol.h \ Sources/AbstractNetworkInterface.h \ Sources/DeadboltDevice.h \ + Sources/AbstractDevice.h \ + Sources/ProtocolDefs.h SOURCES += \ Sources/main.cpp \ diff --git a/Sources/232NetworkCommIF.cpp b/Sources/232NetworkCommIF.cpp index f7384e3..608fff7 100644 --- a/Sources/232NetworkCommIF.cpp +++ b/Sources/232NetworkCommIF.cpp @@ -1,19 +1,24 @@ #include "232NetworkCommIF.h" -C232NetworkCommIF::C232NetworkCommIF(CAbstractNetworkCommIF *DeviceHandle) +C232NetworkCommIF::C232NetworkCommIF(CAbstractDevice *DeviceHandle) { mDeviceHandle = DeviceHandle; - mNetworkProtocol = new CNetworkProtocol(this); + // mNetworkProtocol = new CNetworkProtocol(this); } C232NetworkCommIF::~C232NetworkCommIF() { - delete mNetworkProtocol; } int C232NetworkCommIF::NewFrameReceived(QByteArray Frame) { //FWD to device... - //Nothing to do with the data here, up it goes to the device! - mDeviceHandle->NewFrameReceived(Frame); + //Nothing to do with the data here, up it goes to the device instance! + mDeviceHandle->NewDeviceFrameReceived(Frame); + return 1; +} + +int C232NetworkCommIF::SendNetworkMessage(unsigned char MessageID, unsigned char Flags, unsigned char *Data, int Size) +{ + GetTxPacket(MessageID,Flags,Data,Size,mDeviceHandle->GetDeviceAddress(),mDeviceHandle->GetDeviceID()); return 1; } diff --git a/Sources/232NetworkCommIF.h b/Sources/232NetworkCommIF.h index f8b9d7f..f4010ec 100644 --- a/Sources/232NetworkCommIF.h +++ b/Sources/232NetworkCommIF.h @@ -2,21 +2,24 @@ #define _232NETWORKCOMMIF_H #include "GlobalDefine.h" -#include "AbstractNetworkInterface.h" +#include "AbstractDevice.h" #include "NetworkProtocol.h" -class C232NetworkCommIF : public CAbstractNetworkCommIF +class C232NetworkCommIF : public CNetworkProtocol { public: - C232NetworkCommIF(CAbstractNetworkCommIF *DeviceHandle); + C232NetworkCommIF(CAbstractDevice *DeviceHandle); ~C232NetworkCommIF(); + int SendNetworkMessage(unsigned char MessageID,unsigned char Flags,unsigned char *Data,int Size/*, unsigned char Address,unsigned char ID*/); - virtual int NewFrameReceived(QByteArray Frame); + + + //NetworkProtocol implementation + int NewFrameReceived(QByteArray Frame); private: - CNetworkProtocol *mNetworkProtocol; - CAbstractNetworkCommIF *mDeviceHandle; + CAbstractDevice *mDeviceHandle; }; #endif // _232NETWORKCOMMIF_H diff --git a/Sources/485NetworkCommIF.cpp b/Sources/485NetworkCommIF.cpp index da1db72..91f29b1 100644 --- a/Sources/485NetworkCommIF.cpp +++ b/Sources/485NetworkCommIF.cpp @@ -3,3 +3,14 @@ C485NetworkCommIF::C485NetworkCommIF() { } + +int C485NetworkCommIF::NewFrameReceived(QByteArray Frame) +{ + return 1; +} + +int C485NetworkCommIF::RegisterNewDevice(CAbstractDevice *NewDevice) +{ + mDevicesList.append(NewDevice); + return 1; +} diff --git a/Sources/485NetworkCommIF.h b/Sources/485NetworkCommIF.h index 7beb510..6468dae 100644 --- a/Sources/485NetworkCommIF.h +++ b/Sources/485NetworkCommIF.h @@ -1,10 +1,21 @@ #ifndef _485NETWORKCOMMIF_H #define _485NETWORKCOMMIF_H +#include "NetworkProtocol.h" +#include "AbstractDevice.h" -class C485NetworkCommIF +class C485NetworkCommIF : public CNetworkProtocol { public: C485NetworkCommIF(); + + + //NetworkProtocol implementation + int NewFrameReceived(QByteArray Frame); + + int RegisterNewDevice(CAbstractDevice *NewDevice); + +private: + QList mDevicesList; }; #endif // _485NETWORKCOMMIF_H diff --git a/Sources/AbstractDevice.h b/Sources/AbstractDevice.h new file mode 100644 index 0000000..928ec54 --- /dev/null +++ b/Sources/AbstractDevice.h @@ -0,0 +1,16 @@ +#ifndef ABSTRACTDEVICE_H +#define ABSTRACTDEVICE_H +#include + +class CAbstractDevice +{ +public: + virtual int NewDeviceFrameReceived(QByteArray Frame) = 0; + virtual int GetDeviceID(){return mDeviceID;} + virtual int GetDeviceAddress(){return mDeviceAddress;} + + int mDeviceID; + int mDeviceAddress; + +}; +#endif // ABSTRACTDEVICE_H diff --git a/Sources/DeadboltDevice.cpp b/Sources/DeadboltDevice.cpp index 7422146..40f22c8 100644 --- a/Sources/DeadboltDevice.cpp +++ b/Sources/DeadboltDevice.cpp @@ -1,8 +1,11 @@ #include "DeadboltDevice.h" -CDeadboltDevice::CDeadboltDevice() + +CDeadboltDevice::CDeadboltDevice(int Address) { mNetworkCommInterface = new C232NetworkCommIF(this); + mDeviceAddress = Address; + mDeviceID = ID_DEADBOLT; } CDeadboltDevice::~CDeadboltDevice() @@ -10,7 +13,9 @@ CDeadboltDevice::~CDeadboltDevice() delete mNetworkCommInterface; } -int CDeadboltDevice::NewFrameReceived(QByteArray Frame) +int CDeadboltDevice::NewDeviceFrameReceived(QByteArray Frame) { return 0; } + + diff --git a/Sources/DeadboltDevice.h b/Sources/DeadboltDevice.h index d0ea1e4..7f9d6f2 100644 --- a/Sources/DeadboltDevice.h +++ b/Sources/DeadboltDevice.h @@ -3,15 +3,16 @@ #include "GlobalDefine.h" #include "232NetworkCommIF.h" -//#include "AbstractNetworkInterface.h" +#include "AbstractDevice.h" -class CDeadboltDevice: public CAbstractNetworkCommIF +class CDeadboltDevice: public CAbstractDevice { public: - CDeadboltDevice(); + CDeadboltDevice(int Address); ~CDeadboltDevice(); - virtual int NewFrameReceived(QByteArray Frame); + + virtual int NewDeviceFrameReceived(QByteArray Frame); C232NetworkCommIF *mNetworkCommInterface; diff --git a/Sources/MasterCtrl.cpp b/Sources/MasterCtrl.cpp index 0ec8c84..05599c3 100644 --- a/Sources/MasterCtrl.cpp +++ b/Sources/MasterCtrl.cpp @@ -3,7 +3,7 @@ CMasterCtrl::CMasterCtrl() { qDebug("Creation..."); - mDeadBoltDevice = new CDeadboltDevice; + mDeadBoltDevice = new CDeadboltDevice(1); } CMasterCtrl::~CMasterCtrl() diff --git a/Sources/NetworkProtocol.cpp b/Sources/NetworkProtocol.cpp index 543b960..a930f5b 100644 --- a/Sources/NetworkProtocol.cpp +++ b/Sources/NetworkProtocol.cpp @@ -4,9 +4,8 @@ #include "QByteArray" -CNetworkProtocol::CNetworkProtocol(CAbstractNetworkCommIF *Parent) +CNetworkProtocol::CNetworkProtocol() { - mParentHandle = Parent; ResetRxStateMachine(); } @@ -252,7 +251,8 @@ void CNetworkProtocol::RxStateMachine(unsigned char Data) //Data is OK... execute // ExecuteCommand(); - mParentHandle->NewFrameReceived(QByteArray(mRxData,RxSize+10)); + // mParentHandle->NewFrameReceived(QByteArray(mRxData,RxSize+10)); + NewFrameReceived(QByteArray(mRxData,RxSize+10)); ResetRxStateMachine(); break; } diff --git a/Sources/NetworkProtocol.h b/Sources/NetworkProtocol.h index 071a9e4..5ea26e9 100644 --- a/Sources/NetworkProtocol.h +++ b/Sources/NetworkProtocol.h @@ -8,11 +8,12 @@ class CNetworkProtocol { public: - CNetworkProtocol(CAbstractNetworkCommIF *Parent); + CNetworkProtocol(); ~CNetworkProtocol(); - CAbstractNetworkCommIF *mParentHandle; QByteArray GetTxPacket(unsigned char MessageID,unsigned char Flags,unsigned char *Data,int Size, unsigned char Address,unsigned char ID); + virtual int NewFrameReceived(QByteArray Frame) = 0; + private: void ResetRxStateMachine(); unsigned char CalcCRC(char *Buffer, int Size); diff --git a/Sources/ProtocolDefs.h b/Sources/ProtocolDefs.h index 57ed335..19cfad5 100644 --- a/Sources/ProtocolDefs.h +++ b/Sources/ProtocolDefs.h @@ -43,6 +43,8 @@ enum DEVICES_IDS ID_PC, //PC ID_AV_MUX, //Audio Video Multiplexer ID_IR_REMOTE, //Infra red transmitter + ID_DEADBOLT, + ID_RECEIVER_AMP, ID_NB_DEVICE_ID };