diff --git a/MasterCtrl.pro b/MasterCtrl.pro index 847c5c6..694a1c0 100644 --- a/MasterCtrl.pro +++ b/MasterCtrl.pro @@ -1,5 +1,6 @@ #QT += Network QT += gui declarative network +#CONFIG += console HEADERS += \ Sources/MasterCtrl.h \ @@ -8,8 +9,6 @@ HEADERS += \ Sources/EthernetNetworkCommIF.h \ Sources/232NetworkCommIF.h \ Sources/NetworkProtocol.h \ - Sources/DeadboltDevice.h \ - Sources/AVReceiverDevice.h \ Sources/VoipSMS/VoipMsSMSClient.h \ Sources/Gui/SystemTrayManager.h \ Sources/Gui/SettingsWindow.h \ @@ -18,13 +17,18 @@ HEADERS += \ Sources/ProtocolDefs.h \ Sources/EthernetNetworkServer.h \ Sources/NetworkDevicesMgr.h \ - Sources/SMSDevice.h \ Sources/NetworkDevice.h \ Sources/AbstractNetworkInterface.h \ Sources/VoipSMS/SMSMessage.h \ Sources/Gui/CContactsWindow.h \ Sources/Contact.h \ - Sources/ContactRepository.h + Sources/ContactRepository.h \ + Sources/Sprinkler/SprinklerDevice.h \ + Sources/VoipSMS/SMSDevice.h \ + Sources/Deadbolt/DeadboltDevice.h \ + Sources/AvReceiver/AVReceiverDevice.h \ + Sources/Sprinkler/SprinklerInterface.h \ + Sources/Sprinkler/SprinklerMgr.h SOURCES += \ Sources/main.cpp \ @@ -33,8 +37,6 @@ SOURCES += \ Sources/232NetworkCommIF.cpp \ Sources/EthernetNetworkCommIF.cpp \ Sources/NetworkProtocol.cpp \ - Sources/DeadboltDevice.cpp \ - Sources/AVReceiverDevice.cpp \ Sources/VoipSMS/VoipMsSMSClient.cpp \ Sources/Gui/SystemTrayManager.cpp \ Sources/Gui/SettingsWindow.cpp \ @@ -42,12 +44,17 @@ SOURCES += \ Sources/Gui/AppIconWidget.cpp \ Sources/EthernetNetworkServer.cpp \ Sources/NetworkDevicesMgr.cpp \ - Sources/SMSDevice.cpp \ Sources/NetworkDevice.cpp \ Sources/VoipSMS/SMSMessage.cpp \ Sources/Gui/CContactsWindow.cpp \ Sources/Contact.cpp \ - Sources/ContactRepository.cpp + Sources/ContactRepository.cpp \ + Sources/Sprinkler/SprinklerDevice.cpp \ + Sources/VoipSMS/SMSDevice.cpp \ + Sources/Deadbolt/DeadboltDevice.cpp \ + Sources/AvReceiver/AVReceiverDevice.cpp \ + Sources/Sprinkler/SprinklerInterface.cpp \ + Sources/Sprinkler/SprinklerMgr.cpp #win32:SOURCES += $$PWD/Source/qextserialport/win_qextserialport.cpp \ @@ -58,4 +65,7 @@ INCLUDEPATH += $$PWD/ \ $$PWD/Sources/ \ $$PWD/Sources/qextserialport/ \ $$PWD/Sources/VoipSMS/ \ - $$PWD/Sources/Gui/ + $$PWD/Sources/Gui/ \ + $$PWD/Sources/Deadbolt \ + $$PWD/Sources/Sprinkler \ + $$PWD/Sources/AvReceiver \ diff --git a/Sources/AVReceiverDevice.cpp b/Sources/AvReceiver/AVReceiverDevice.cpp similarity index 100% rename from Sources/AVReceiverDevice.cpp rename to Sources/AvReceiver/AVReceiverDevice.cpp diff --git a/Sources/AVReceiverDevice.h b/Sources/AvReceiver/AVReceiverDevice.h similarity index 100% rename from Sources/AVReceiverDevice.h rename to Sources/AvReceiver/AVReceiverDevice.h diff --git a/Sources/Deadbolt/DeadboltDevice.cpp b/Sources/Deadbolt/DeadboltDevice.cpp new file mode 100644 index 0000000..bdac152 --- /dev/null +++ b/Sources/Deadbolt/DeadboltDevice.cpp @@ -0,0 +1,75 @@ +#include "DeadboltDevice.h" +#include "ProtocolDefs.h" +#include + + +CDeadboltDevice::CDeadboltDevice(int Address, CAbstractNetworkCommIF *NetworkInterface): + CNetworkDevice(ID_DEADBOLT_DEVICE,Address,NetworkInterface) +{ + +} + +CDeadboltDevice::~CDeadboltDevice() +{ +} + +int CDeadboltDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) +{ + Q_UNUSED(DeviceID) + Q_UNUSED(DeviceAddress) + Q_UNUSED(DataSize) + Q_UNUSED(Data) + + return RET_OK; + + switch(MessageID) + { + case DEADBOLT_DEVICE_STATUS_RESPONSE: + { + break; + } + case DEADBOLT_DEVICE_ACK: + { + break; + } + case DEADBOLT_DEVICE_GET_LOCKED_STATE_REQUEST: + { + break; + } + case DEADBOLT_DEVICE_GOTO_LOCKED_ACK: + { + break; + } + case DEADBOLT_DEVICE_GOTO_UNLOCKED_ACK: + { + break; + } + case DEADBOLT_DEVICE_GET_PASSWORDS_RESPONSE: + { + break; + } + case DEADBOLT_DEVICE_SET_PASSWORDS_ACK: + { + break; + } + case DEADBOLT_DEVICE_LOCK_EVENT: + { + break; + } + case DEADBOLT_DEVICE_STATUS_REQUEST: + case DEADBOLT_DEVICE_LOCKED_STATE_RESPONSE: + case DEADBOLT_DEVICE_GOTO_LOCKED_REQUEST: + case DEADBOLT_DEVICE_SET_PASSWORDS_REQUEST: + case DEADBOLT_DEVICE_GET_PASSWORDS_REQUEST: + case DEADBOLT_DEVICE_GOTO_UNLOCKED_REQUEST: + default: + { + qDebug("Received invalid msg from Deadbolt Device"); + break; + } + } + + return 0; +} + + diff --git a/Sources/DeadboltDevice.h b/Sources/Deadbolt/DeadboltDevice.h similarity index 84% rename from Sources/DeadboltDevice.h rename to Sources/Deadbolt/DeadboltDevice.h index 0c58482..0a6d560 100644 --- a/Sources/DeadboltDevice.h +++ b/Sources/Deadbolt/DeadboltDevice.h @@ -6,8 +6,9 @@ #include "NetworkDevice.h" -class CDeadboltDevice: public CNetworkDevice +class CDeadboltDevice: public QObject, public CNetworkDevice { + Q_OBJECT public: CDeadboltDevice(int Address, CAbstractNetworkCommIF *NetworkInterface); virtual ~CDeadboltDevice(); diff --git a/Sources/DeadboltDevice.cpp b/Sources/DeadboltDevice.cpp deleted file mode 100644 index 98e789d..0000000 --- a/Sources/DeadboltDevice.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "DeadboltDevice.h" -#include "ProtocolDefs.h" -#include - - -CDeadboltDevice::CDeadboltDevice(int Address, CAbstractNetworkCommIF *NetworkInterface): - CNetworkDevice(ID_DEADBOLT,Address,NetworkInterface) -{ - -} - -CDeadboltDevice::~CDeadboltDevice() -{ -} - -int CDeadboltDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) -{ - Q_UNUSED(DeviceID) - Q_UNUSED(DeviceAddress) - Q_UNUSED(DataSize) - Q_UNUSED(Data) - - return RET_OK; - - switch(MessageID) - { - case DEADBOLT_DEVICE_STATUS_RESPONSE: - { - break; - } - case DEADBOLT_DEVICE_ACK: - { - break; - } - case DEADBOLT_DEVICE_STATUS_REQUEST: - default: - { - qDebug("Received invalid msg from Deadbolt Device"); - break; - } - } - - return 0; -} - - diff --git a/Sources/EthernetNetworkServer.cpp b/Sources/EthernetNetworkServer.cpp index ba3545b..8195598 100644 --- a/Sources/EthernetNetworkServer.cpp +++ b/Sources/EthernetNetworkServer.cpp @@ -155,6 +155,40 @@ void CEthernetNetworkServer::DeviceSocketDataAvail() CloseSocket = true; } } + if(DeviceID == ID_SPRINKLER_DEVICE) + { + if(mDevicesMgrHandle != 0) + { + if(mDevicesMgrHandle->CreateNewSprinklerDevice(DeviceAddress,(CAbstractNetworkCommIF*)NetworkIF) == RET_OK) + { + //All OK. + + //Redirect signals. + DeviceSocket->disconnect(); + // disconnect(DeviceSocket,SIGNAL(readyRead()),this,SLOT(DeviceSocketDataAvail())); + connect(DeviceSocket,SIGNAL(readyRead()),NetworkIF,SLOT(SocketDataAvailable())); + connect(DeviceSocket,SIGNAL(disconnected()),NetworkIF,SLOT(SocketDisconnected())); + connect(NetworkIF,SIGNAL(EthernetInterfaceSocketDisconnected(CNetworkDevice*)),mDevicesMgrHandle,SLOT(EthernetNetworkDeviceDisconnected(CNetworkDevice*))); + + //Inform device that it is connected + QByteArray Frame = GetTxPacket((unsigned char)ETH_NETWK_SET_DEVICE_INFO_ACK,0,0,0,DeviceAddress,(unsigned char)ID_ETHERNET_VIRTUAL); + DeviceSocket->write(Frame); + qDebug("Created new Sprinkler device"); + } + else + { + qDebug("Could not create Sprinkler device in ethernet server"); + QByteArray Frame = GetTxPacket((unsigned char)ETH_NETWK_CONNECTION_REFUSED,0,0,0,DeviceAddress,(unsigned char)ID_ETHERNET_VIRTUAL); + DeviceSocket->write(Frame); + CloseSocket = true; + } + } + else + { + qDebug("Invalid DevicesMgrHandle in ethernet server"); + CloseSocket = true; + } + } // if(IsDeviceRegistered(DeviceID) == true) // { diff --git a/Sources/NetworkDevicesMgr.cpp b/Sources/NetworkDevicesMgr.cpp index 88b7cba..ee17126 100644 --- a/Sources/NetworkDevicesMgr.cpp +++ b/Sources/NetworkDevicesMgr.cpp @@ -48,6 +48,14 @@ int CNetworkDevicesMgr::CreateNewSMSDevice(int Address, CAbstractNetworkCommIF * return RET_OK; } +int CNetworkDevicesMgr::CreateNewSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkIF) +{ + CSprinklerDevice *SprinklerDevice = new CSprinklerDevice(Address,NetworkIF); + mNetworkDevicesList.append((CNetworkDevice*)SprinklerDevice); + + return RET_OK; +} + void CNetworkDevicesMgr::EthernetNetworkDeviceDisconnected(CNetworkDevice *Device) { qDebug("Device disconnected. ID: %d, Address: %d",Device->GetDeviceID(),Device->GetDeviceAddress()); @@ -86,6 +94,20 @@ CNetworkDevice* CNetworkDevicesMgr::GetDevice(int DeviceID, int Address) return 0; } +QList CNetworkDevicesMgr::GetDevices(int DeviceID) +{ + QList DevicesList; + for(int i = 0; i < mNetworkDevicesList.size(); i++) + { + if(mNetworkDevicesList.at(i)->GetDeviceID() == DeviceID) + { + DevicesList.append(mNetworkDevicesList.at(i)); + } + } + + return DevicesList; +} + int CNetworkDevicesMgr::NewSMSMessagesReceived(QList NewMessages) { for(int i = 0; i < mNetworkDevicesList.size(); i++) diff --git a/Sources/NetworkDevicesMgr.h b/Sources/NetworkDevicesMgr.h index 8bdb078..51b6af6 100644 --- a/Sources/NetworkDevicesMgr.h +++ b/Sources/NetworkDevicesMgr.h @@ -4,6 +4,7 @@ #include "DeadboltDevice.h" #include "AVReceiverDevice.h" #include "SMSDevice.h" +#include "SprinklerDevice.h" #include "AbstractNetworkInterface.h" #include "QList" #include @@ -22,9 +23,12 @@ public: int InitNetworkDevices(); int CreateNewSMSDevice(int Address,CAbstractNetworkCommIF *NetworkIF); + int CreateNewSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkIF); + int FindDeviceByPtr(CNetworkDevice *Device); CNetworkDevice *GetDevice(int DeviceID, int Address); + QList GetDevices(int DeviceID); CVoipMsSMSClient *mVoipMSInterfaceHandle; CContactRepository *mContactRepositoryHandle; diff --git a/Sources/ProtocolDefs.h b/Sources/ProtocolDefs.h index b67d3b8..7874b55 100644 --- a/Sources/ProtocolDefs.h +++ b/Sources/ProtocolDefs.h @@ -21,8 +21,8 @@ jean-francois.martel@polymtl.ca #define FRAME_HEADER 0x8A #define DATA_START 11 -#define ACK 0xA3; -#define NAK 0x90; +#define ACK 0xA3 +#define NAK 0x90 #define BROADCAST_VALUE 0xFF enum eFrameIndex @@ -36,8 +36,6 @@ enum eFrameIndex FRAME_COMMAND_INDEX, FRAME_SIZE1_INDEX, FRAME_SIZE2_INDEX, - FRAME_SIZE3_INDEX, - FRAME_SIZE4_INDEX, FRAME_DATA_INDEX }; @@ -48,10 +46,13 @@ enum DEVICES_IDS ID_PC, //PC ID_AV_MUX, //Audio Video Multiplexer ID_IR_REMOTE, //Infra red transmitter - ID_DEADBOLT, + ID_DEADBOLT_DEVICE, ID_RECEIVER_AMP, ID_SMS_CLIENT, ID_ETHERNET_VIRTUAL, + ID_SPRINKLER_DEVICE, + ID_SPRINKLER_INTERFACE, + ID_DEADBOLT_INTERFACE, ID_NB_DEVICE_ID }; @@ -119,18 +120,19 @@ enum IR_REMOTE_CMDS MAX_IR_REMOTE_CMD }; +//The SMS remote interface commands enum SMS_CLIENT_CMDS { SMS_CLIENT_DEVICE_ACK = 1, - SMS_CLIENT_DEVICE_STATUS_REQUEST, //2 + SMS_CLIENT_DEVICE_STATUS_REQUEST, SMS_CLIENT_DEVICE_STATUS_RESPONSE, - SMS_CLIENT_DEVICE_DID_INFO_REQUEST, //4 + SMS_CLIENT_DEVICE_DID_INFO_REQUEST, SMS_CLIENT_DEVICE_DID_INFO_RESPONSE, - SMS_CLIENT_DEVICE_GET_ALL_MSG_REQUEST, //6 + SMS_CLIENT_DEVICE_GET_ALL_MSG_REQUEST, SMS_CLIENT_DEVICE_GET_ALL_MSG_RESPONSE, - SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION, //8 + SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION, SMS_CLIENT_DEVICE_SEND_SMS_REQUEST, - SMS_CLIENT_DEVICE_SEND_SMS_ACK, //10 + SMS_CLIENT_DEVICE_SEND_SMS_ACK, SMS_CLIENT_DEVICE_GET_CONTACTS_REQUEST, SMS_CLIENT_DEVICE_GET_CONTACTS_RESPONSE,//12 SMS_CLIENT_DEVICE_CONTACTS_CHANGED_NOTIFICATION, @@ -139,15 +141,75 @@ enum SMS_CLIENT_CMDS }; +//The actual deadbolt device commands enum DEADBOLT_CMDS { DEADBOLT_DEVICE_ACK = 1, DEADBOLT_DEVICE_STATUS_REQUEST, DEADBOLT_DEVICE_STATUS_RESPONSE, + DEADBOLT_DEVICE_GET_LOCKED_STATE_REQUEST, + DEADBOLT_DEVICE_LOCKED_STATE_RESPONSE, + DEADBOLT_DEVICE_GOTO_LOCKED_REQUEST, + DEADBOLT_DEVICE_GOTO_LOCKED_ACK, + DEADBOLT_DEVICE_GOTO_UNLOCKED_REQUEST, + DEADBOLT_DEVICE_GOTO_UNLOCKED_ACK, + DEADBOLT_DEVICE_GET_PASSWORDS_REQUEST, + DEADBOLT_DEVICE_GET_PASSWORDS_RESPONSE, + DEADBOLT_DEVICE_SET_PASSWORDS_REQUEST, + DEADBOLT_DEVICE_SET_PASSWORDS_ACK, + DEADBOLT_DEVICE_LOCK_EVENT, MAX_DEADBOLT_DEVICE_CMD }; +//The actual sprinkler module device commands +enum SPRINKLER_DEVICE_CMDS +{ + SPRINKLER_DEVICE_ACK = 1, + SPRINKLER_DEVICE_STATUS_REQUEST, + SPRINKLER_DEVICE_STATUS_RESPONSE, + SPRINKLER_DEVICE_SET_SPRINKLER_STATE_REQUEST, + SPRINKLER_DEVICE_SET_SPRINKLER_STATE_ACK, + SPRINKLER_DEVICE_GET_SPRINKLER_STATE_REQUEST, + SPRINKLER_DEVICE_GET_SPRINKLER_STATE_RESPONSE, + SPRINKLER_DEVICE_GET_WATER_FLOW_REQUEST, + SPRINKLER_DEVICE_GET_WATER_FLOW_RESPONSE, + SPRINKLER_DEVICE_GET_MOISTURE_REQUEST, + SPRINKLER_DEVICE_GET_MOISTURE_RESPONSE, + SPRINKLER_DEVICE_SET_PROGRAM_REQUEST, + SPRINKLER_DEVICE_SET_PROGRAM_ACK, + SPRINKLER_DEVICE_GET_PROGRAM_REQUEST, + SPRINKLER_DEVICE_GET_PROGRAM_RESPONSE, + SPRINKLER_DEVICE_SET_PARAMETERS_REQUEST, + SPRINKLER_DEVICE_SET_PARAMETERS_ACK, + SPRINKLER_DEVICE_GET_PARAMETERS_REQUEST, + SPRINKLER_DEVICE_GET_PARAMETERS_RESPONSE, + + + MAX_SPRINKLER_DEVICE_CMD +}; + +//The sprinkler interface commands +enum SPRINKLER_INTERFACE_CMDS +{ + SPRINKLER_INTERFACE_ACK = 1, + SPRINKLER_INTERFACE_STATUS_REQUEST, + SPRINKLER_INTERFACE_STATUS_RESPONSE, + SPRINKLER_INTERFACE_GET_SPRINKLERS_REQUEST, + SPRINKLER_INTERFACE_GET_SPRINKLERS_RESPONSE, + SPRINKLER_INTERFACE_GET_SPRINKLER_DATA_REQUEST, + SPRINKLER_INTERFACE_GET_SPRINKLER_DATA_RESPONSE, + SPRINKLER_INTERFACE_SET_SPRINKLER_DATA_REQUEST, + SPRINKLER_INTERFACE_SET_SPRINKLER_DATA_ACK, + SPRINKLER_INTERFACE_GET_SPRINKLER_STATE_REQUEST, + SPRINKLER_INTERFACE_GET_SPRINKLER_STATE_RESPONSE, + SPRINKLER_INTERFACE_SET_SPRINKLER_STATE_REQUEST, + SPRINKLER_INTERFACE_SET_SPRINKLER_STATE_ACK, + + MAX_SPRINKLER_INTERFACE_CMD +}; + + enum ETHERNET_NETWORK_VIRTUAL_CMDS { ETH_NETWK_DEVICE_INFO_REQUEST = 0xD0, diff --git a/Sources/Sprinkler/SprinklerDevice.cpp b/Sources/Sprinkler/SprinklerDevice.cpp new file mode 100644 index 0000000..887d27b --- /dev/null +++ b/Sources/Sprinkler/SprinklerDevice.cpp @@ -0,0 +1,90 @@ +#include "SprinklerDevice.h" +#include "ProtocolDefs.h" +#include + + +CSprinklerDevice::CSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkInterface): + CNetworkDevice(ID_SPRINKLER_DEVICE,Address,NetworkInterface) +{ + +} + +CSprinklerDevice::~CSprinklerDevice() +{ +} + +int CSprinklerDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) +{ + Q_UNUSED(DeviceID) + Q_UNUSED(DeviceAddress) + Q_UNUSED(DataSize) + Q_UNUSED(Data) + + return RET_OK; + + switch(MessageID) + { + case SPRINKLER_DEVICE_STATUS_RESPONSE: + { + break; + } + case SPRINKLER_DEVICE_ACK: + { + break; + } + case SPRINKLER_DEVICE_SET_SPRINKLER_STATE_ACK: + { + break; + } + case SPRINKLER_DEVICE_GET_SPRINKLER_STATE_RESPONSE: + { + break; + } + case SPRINKLER_DEVICE_GET_WATER_FLOW_RESPONSE: + { + break; + } + case SPRINKLER_DEVICE_GET_MOISTURE_RESPONSE: + { + break; + } + case SPRINKLER_DEVICE_SET_PROGRAM_ACK: + { + break; + } + + case SPRINKLER_DEVICE_GET_PROGRAM_RESPONSE: + { + break; + } + + case SPRINKLER_DEVICE_SET_PARAMETERS_ACK: + { + break; + } + + case SPRINKLER_DEVICE_GET_PARAMETERS_RESPONSE: + { + break; + } + + case SPRINKLER_DEVICE_SET_SPRINKLER_STATE_REQUEST: + case SPRINKLER_DEVICE_GET_SPRINKLER_STATE_REQUEST: + case SPRINKLER_DEVICE_GET_WATER_FLOW_REQUEST: + case SPRINKLER_DEVICE_GET_MOISTURE_REQUEST: + case SPRINKLER_DEVICE_SET_PROGRAM_REQUEST: + case SPRINKLER_DEVICE_GET_PROGRAM_REQUEST: + case SPRINKLER_DEVICE_SET_PARAMETERS_REQUEST: + case SPRINKLER_DEVICE_GET_PARAMETERS_REQUEST: + case SPRINKLER_DEVICE_STATUS_REQUEST: + default: + { + qDebug("Received invalid msg from Sprinkler Device"); + break; + } + } + + return 0; +} + + diff --git a/Sources/Sprinkler/SprinklerDevice.h b/Sources/Sprinkler/SprinklerDevice.h new file mode 100644 index 0000000..40d3dfe --- /dev/null +++ b/Sources/Sprinkler/SprinklerDevice.h @@ -0,0 +1,19 @@ +#ifndef SPRINKLERDEVICE_H +#define SPRINKLERDEVICE_H + +#include "GlobalDefine.h" +#include "NetworkDevice.h" + + +class CSprinklerDevice: public QObject, public CNetworkDevice +{ + Q_OBJECT +public: + CSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkInterface); + virtual ~CSprinklerDevice(); + + virtual int NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data); + +}; + +#endif // SPRINKLERDEVICE_H diff --git a/Sources/Sprinkler/SprinklerInterface.cpp b/Sources/Sprinkler/SprinklerInterface.cpp new file mode 100644 index 0000000..39f4afc --- /dev/null +++ b/Sources/Sprinkler/SprinklerInterface.cpp @@ -0,0 +1,72 @@ +#include "SprinklerInterface.h" +#include "ProtocolDefs.h" +#include + + +CSprinklerInterface::CSprinklerInterface(int Address, CAbstractNetworkCommIF *NetworkInterface): + CNetworkDevice(ID_SPRINKLER_DEVICE,Address,NetworkInterface) +{ + +} + +CSprinklerInterface::~CSprinklerInterface() +{ +} + +int CSprinklerInterface::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) +{ + Q_UNUSED(DeviceID) + Q_UNUSED(DeviceAddress) + Q_UNUSED(DataSize) + Q_UNUSED(Data) + + return RET_OK; + + switch(MessageID) + { + case SPRINKLER_INTERFACE_STATUS_RESPONSE: + { + break; + } + case SPRINKLER_INTERFACE_ACK: + { + break; + } + case SPRINKLER_INTERFACE_GET_SPRINKLERS_REQUEST: + { + break; + } + case SPRINKLER_INTERFACE_GET_SPRINKLER_DATA_REQUEST: + { + break; + } + case SPRINKLER_INTERFACE_GET_SPRINKLER_DATA_RESPONSE: + { + break; + } + case SPRINKLER_INTERFACE_GET_SPRINKLER_STATE_REQUEST: + { + break; + } + case SPRINKLER_INTERFACE_SET_SPRINKLER_STATE_REQUEST: + { + break; + } + + case SPRINKLER_INTERFACE_SET_SPRINKLER_DATA_REQUEST: + case SPRINKLER_INTERFACE_GET_SPRINKLER_STATE_RESPONSE: + case SPRINKLER_INTERFACE_GET_SPRINKLERS_RESPONSE: + case SPRINKLER_INTERFACE_SET_SPRINKLER_DATA_ACK: + case SPRINKLER_INTERFACE_SET_SPRINKLER_STATE_ACK: + case SPRINKLER_INTERFACE_STATUS_REQUEST: + default: + { + qDebug("Received invalid msg from Sprinkler Interface"); + break; + } + } + + return 0; +} + + diff --git a/Sources/Sprinkler/SprinklerInterface.h b/Sources/Sprinkler/SprinklerInterface.h new file mode 100644 index 0000000..6bfe0dd --- /dev/null +++ b/Sources/Sprinkler/SprinklerInterface.h @@ -0,0 +1,19 @@ +#ifndef SPRINKLERINTERFACE_H +#define SPRINKLERINTERFACE_H + +#include "GlobalDefine.h" +#include "NetworkDevice.h" + + +class CSprinklerInterface: public QObject, public CNetworkDevice +{ + Q_OBJECT +public: + CSprinklerInterface(int Address, CAbstractNetworkCommIF *NetworkInterface); + virtual ~CSprinklerInterface(); + + virtual int NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data); + +}; + +#endif // SPRINKLERDEVICE_H diff --git a/Sources/Sprinkler/SprinklerMgr.cpp b/Sources/Sprinkler/SprinklerMgr.cpp new file mode 100644 index 0000000..b4d3f6b --- /dev/null +++ b/Sources/Sprinkler/SprinklerMgr.cpp @@ -0,0 +1,6 @@ +#include "SprinklerMgr.h" + +CSprinklerMgr::CSprinklerMgr(QObject *parent) : QObject(parent) +{ + +} diff --git a/Sources/Sprinkler/SprinklerMgr.h b/Sources/Sprinkler/SprinklerMgr.h new file mode 100644 index 0000000..14a988b --- /dev/null +++ b/Sources/Sprinkler/SprinklerMgr.h @@ -0,0 +1,17 @@ +#ifndef SPRINKLERMGR_H +#define SPRINKLERMGR_H + +#include + +class CSprinklerMgr : public QObject +{ + Q_OBJECT +public: + explicit CSprinklerMgr(QObject *parent = 0); + +signals: + +public slots: +}; + +#endif // SPRINKLERMGR_H \ No newline at end of file diff --git a/Sources/SMSDevice.cpp b/Sources/VoipSMS/SMSDevice.cpp similarity index 96% rename from Sources/SMSDevice.cpp rename to Sources/VoipSMS/SMSDevice.cpp index dec978a..4850267 100644 --- a/Sources/SMSDevice.cpp +++ b/Sources/VoipSMS/SMSDevice.cpp @@ -45,6 +45,8 @@ int CSMSDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int Mess } case SMS_CLIENT_DEVICE_STATUS_RESPONSE: { + // mStatusRequestTimer->start(); + DeviceStatusReceived(); break; } case SMS_CLIENT_DEVICE_DID_INFO_REQUEST: @@ -209,6 +211,13 @@ void CSMSDevice::StatusReqTimerExpired() mIsOnline = false; qDebug("SMS Device offline,Address: %d",mDeviceAddress); } - // RequestStatus(); + RequestStatus(); + mStatusRequestTimer->start(); +} + +void CSMSDevice::DeviceStatusReceived() +{ + + mStatusRequestsCount = 0; mStatusRequestTimer->start(); } diff --git a/Sources/SMSDevice.h b/Sources/VoipSMS/SMSDevice.h similarity index 96% rename from Sources/SMSDevice.h rename to Sources/VoipSMS/SMSDevice.h index d7273f4..8508c76 100644 --- a/Sources/SMSDevice.h +++ b/Sources/VoipSMS/SMSDevice.h @@ -24,6 +24,7 @@ public: int mStatusRequestsCount; void SendNewSMSReceived(QList NewMessages); + void DeviceStatusReceived(); private: void RequestStatus(); diff --git a/Sources/VoipSMS/VoipMsSMSClient.cpp b/Sources/VoipSMS/VoipMsSMSClient.cpp index a6ed2e6..72b2ea7 100644 --- a/Sources/VoipSMS/VoipMsSMSClient.cpp +++ b/Sources/VoipSMS/VoipMsSMSClient.cpp @@ -6,6 +6,7 @@ #include #include #include "MasterCtrl.h" +#include CVoipMsSMSClient::CVoipMsSMSClient() { @@ -137,6 +138,7 @@ int CVoipMsSMSClient::DownloadNewSMS() int CVoipMsSMSClient::CheckForNewSMS() { // qDebug("Check new SMS"); + qDebug() << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss") << ":" << "Check New SMS"; if(mSMSMessagesList.isEmpty() == true) { return RET_ERROR; @@ -207,6 +209,11 @@ void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply) { SendSMSAckReceived(false); } + else + { + //Restart timer... + StartSMSCheckTimer(); + } } Reply.clear(); } @@ -357,6 +364,7 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) else { mSMSMessagesList.append(NewMessages); + StartSMSCheckTimer(); } @@ -395,6 +403,7 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) else { qDebug("No SMS to download in this period."); + StartSMSCheckTimer(); } return RET_OK;