Moved sources to subdirs in project

Add sprinkler device
This commit is contained in:
J-F Martel 2017-04-12 13:23:46 -04:00
parent 2139293944
commit c7c015dab3
19 changed files with 471 additions and 67 deletions

View File

@ -1,5 +1,6 @@
#QT += Network #QT += Network
QT += gui declarative network QT += gui declarative network
#CONFIG += console
HEADERS += \ HEADERS += \
Sources/MasterCtrl.h \ Sources/MasterCtrl.h \
@ -8,8 +9,6 @@ HEADERS += \
Sources/EthernetNetworkCommIF.h \ Sources/EthernetNetworkCommIF.h \
Sources/232NetworkCommIF.h \ Sources/232NetworkCommIF.h \
Sources/NetworkProtocol.h \ Sources/NetworkProtocol.h \
Sources/DeadboltDevice.h \
Sources/AVReceiverDevice.h \
Sources/VoipSMS/VoipMsSMSClient.h \ Sources/VoipSMS/VoipMsSMSClient.h \
Sources/Gui/SystemTrayManager.h \ Sources/Gui/SystemTrayManager.h \
Sources/Gui/SettingsWindow.h \ Sources/Gui/SettingsWindow.h \
@ -18,13 +17,18 @@ HEADERS += \
Sources/ProtocolDefs.h \ Sources/ProtocolDefs.h \
Sources/EthernetNetworkServer.h \ Sources/EthernetNetworkServer.h \
Sources/NetworkDevicesMgr.h \ Sources/NetworkDevicesMgr.h \
Sources/SMSDevice.h \
Sources/NetworkDevice.h \ Sources/NetworkDevice.h \
Sources/AbstractNetworkInterface.h \ Sources/AbstractNetworkInterface.h \
Sources/VoipSMS/SMSMessage.h \ Sources/VoipSMS/SMSMessage.h \
Sources/Gui/CContactsWindow.h \ Sources/Gui/CContactsWindow.h \
Sources/Contact.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 += \
Sources/main.cpp \ Sources/main.cpp \
@ -33,8 +37,6 @@ SOURCES += \
Sources/232NetworkCommIF.cpp \ Sources/232NetworkCommIF.cpp \
Sources/EthernetNetworkCommIF.cpp \ Sources/EthernetNetworkCommIF.cpp \
Sources/NetworkProtocol.cpp \ Sources/NetworkProtocol.cpp \
Sources/DeadboltDevice.cpp \
Sources/AVReceiverDevice.cpp \
Sources/VoipSMS/VoipMsSMSClient.cpp \ Sources/VoipSMS/VoipMsSMSClient.cpp \
Sources/Gui/SystemTrayManager.cpp \ Sources/Gui/SystemTrayManager.cpp \
Sources/Gui/SettingsWindow.cpp \ Sources/Gui/SettingsWindow.cpp \
@ -42,12 +44,17 @@ SOURCES += \
Sources/Gui/AppIconWidget.cpp \ Sources/Gui/AppIconWidget.cpp \
Sources/EthernetNetworkServer.cpp \ Sources/EthernetNetworkServer.cpp \
Sources/NetworkDevicesMgr.cpp \ Sources/NetworkDevicesMgr.cpp \
Sources/SMSDevice.cpp \
Sources/NetworkDevice.cpp \ Sources/NetworkDevice.cpp \
Sources/VoipSMS/SMSMessage.cpp \ Sources/VoipSMS/SMSMessage.cpp \
Sources/Gui/CContactsWindow.cpp \ Sources/Gui/CContactsWindow.cpp \
Sources/Contact.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 \ #win32:SOURCES += $$PWD/Source/qextserialport/win_qextserialport.cpp \
@ -58,4 +65,7 @@ INCLUDEPATH += $$PWD/ \
$$PWD/Sources/ \ $$PWD/Sources/ \
$$PWD/Sources/qextserialport/ \ $$PWD/Sources/qextserialport/ \
$$PWD/Sources/VoipSMS/ \ $$PWD/Sources/VoipSMS/ \
$$PWD/Sources/Gui/ $$PWD/Sources/Gui/ \
$$PWD/Sources/Deadbolt \
$$PWD/Sources/Sprinkler \
$$PWD/Sources/AvReceiver \

View File

@ -0,0 +1,75 @@
#include "DeadboltDevice.h"
#include "ProtocolDefs.h"
#include <QDebug>
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;
}

View File

@ -6,8 +6,9 @@
#include "NetworkDevice.h" #include "NetworkDevice.h"
class CDeadboltDevice: public CNetworkDevice class CDeadboltDevice: public QObject, public CNetworkDevice
{ {
Q_OBJECT
public: public:
CDeadboltDevice(int Address, CAbstractNetworkCommIF *NetworkInterface); CDeadboltDevice(int Address, CAbstractNetworkCommIF *NetworkInterface);
virtual ~CDeadboltDevice(); virtual ~CDeadboltDevice();

View File

@ -1,46 +0,0 @@
#include "DeadboltDevice.h"
#include "ProtocolDefs.h"
#include <QDebug>
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;
}

View File

@ -155,6 +155,40 @@ void CEthernetNetworkServer::DeviceSocketDataAvail()
CloseSocket = true; 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) // if(IsDeviceRegistered(DeviceID) == true)
// { // {

View File

@ -48,6 +48,14 @@ int CNetworkDevicesMgr::CreateNewSMSDevice(int Address, CAbstractNetworkCommIF *
return RET_OK; 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) void CNetworkDevicesMgr::EthernetNetworkDeviceDisconnected(CNetworkDevice *Device)
{ {
qDebug("Device disconnected. ID: %d, Address: %d",Device->GetDeviceID(),Device->GetDeviceAddress()); qDebug("Device disconnected. ID: %d, Address: %d",Device->GetDeviceID(),Device->GetDeviceAddress());
@ -86,6 +94,20 @@ CNetworkDevice* CNetworkDevicesMgr::GetDevice(int DeviceID, int Address)
return 0; return 0;
} }
QList<CNetworkDevice*> CNetworkDevicesMgr::GetDevices(int DeviceID)
{
QList<CNetworkDevice*> 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<CSMSMessage> NewMessages) int CNetworkDevicesMgr::NewSMSMessagesReceived(QList<CSMSMessage> NewMessages)
{ {
for(int i = 0; i < mNetworkDevicesList.size(); i++) for(int i = 0; i < mNetworkDevicesList.size(); i++)

View File

@ -4,6 +4,7 @@
#include "DeadboltDevice.h" #include "DeadboltDevice.h"
#include "AVReceiverDevice.h" #include "AVReceiverDevice.h"
#include "SMSDevice.h" #include "SMSDevice.h"
#include "SprinklerDevice.h"
#include "AbstractNetworkInterface.h" #include "AbstractNetworkInterface.h"
#include "QList" #include "QList"
#include <QObject> #include <QObject>
@ -22,9 +23,12 @@ public:
int InitNetworkDevices(); int InitNetworkDevices();
int CreateNewSMSDevice(int Address,CAbstractNetworkCommIF *NetworkIF); int CreateNewSMSDevice(int Address,CAbstractNetworkCommIF *NetworkIF);
int CreateNewSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkIF);
int FindDeviceByPtr(CNetworkDevice *Device); int FindDeviceByPtr(CNetworkDevice *Device);
CNetworkDevice *GetDevice(int DeviceID, int Address); CNetworkDevice *GetDevice(int DeviceID, int Address);
QList<CNetworkDevice*> GetDevices(int DeviceID);
CVoipMsSMSClient *mVoipMSInterfaceHandle; CVoipMsSMSClient *mVoipMSInterfaceHandle;
CContactRepository *mContactRepositoryHandle; CContactRepository *mContactRepositoryHandle;

View File

@ -21,8 +21,8 @@ jean-francois.martel@polymtl.ca
#define FRAME_HEADER 0x8A #define FRAME_HEADER 0x8A
#define DATA_START 11 #define DATA_START 11
#define ACK 0xA3; #define ACK 0xA3
#define NAK 0x90; #define NAK 0x90
#define BROADCAST_VALUE 0xFF #define BROADCAST_VALUE 0xFF
enum eFrameIndex enum eFrameIndex
@ -36,8 +36,6 @@ enum eFrameIndex
FRAME_COMMAND_INDEX, FRAME_COMMAND_INDEX,
FRAME_SIZE1_INDEX, FRAME_SIZE1_INDEX,
FRAME_SIZE2_INDEX, FRAME_SIZE2_INDEX,
FRAME_SIZE3_INDEX,
FRAME_SIZE4_INDEX,
FRAME_DATA_INDEX FRAME_DATA_INDEX
}; };
@ -48,10 +46,13 @@ enum DEVICES_IDS
ID_PC, //PC ID_PC, //PC
ID_AV_MUX, //Audio Video Multiplexer ID_AV_MUX, //Audio Video Multiplexer
ID_IR_REMOTE, //Infra red transmitter ID_IR_REMOTE, //Infra red transmitter
ID_DEADBOLT, ID_DEADBOLT_DEVICE,
ID_RECEIVER_AMP, ID_RECEIVER_AMP,
ID_SMS_CLIENT, ID_SMS_CLIENT,
ID_ETHERNET_VIRTUAL, ID_ETHERNET_VIRTUAL,
ID_SPRINKLER_DEVICE,
ID_SPRINKLER_INTERFACE,
ID_DEADBOLT_INTERFACE,
ID_NB_DEVICE_ID ID_NB_DEVICE_ID
}; };
@ -119,18 +120,19 @@ enum IR_REMOTE_CMDS
MAX_IR_REMOTE_CMD MAX_IR_REMOTE_CMD
}; };
//The SMS remote interface commands
enum SMS_CLIENT_CMDS enum SMS_CLIENT_CMDS
{ {
SMS_CLIENT_DEVICE_ACK = 1, SMS_CLIENT_DEVICE_ACK = 1,
SMS_CLIENT_DEVICE_STATUS_REQUEST, //2 SMS_CLIENT_DEVICE_STATUS_REQUEST,
SMS_CLIENT_DEVICE_STATUS_RESPONSE, 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_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_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_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_REQUEST,
SMS_CLIENT_DEVICE_GET_CONTACTS_RESPONSE,//12 SMS_CLIENT_DEVICE_GET_CONTACTS_RESPONSE,//12
SMS_CLIENT_DEVICE_CONTACTS_CHANGED_NOTIFICATION, SMS_CLIENT_DEVICE_CONTACTS_CHANGED_NOTIFICATION,
@ -139,15 +141,75 @@ enum SMS_CLIENT_CMDS
}; };
//The actual deadbolt device commands
enum DEADBOLT_CMDS enum DEADBOLT_CMDS
{ {
DEADBOLT_DEVICE_ACK = 1, DEADBOLT_DEVICE_ACK = 1,
DEADBOLT_DEVICE_STATUS_REQUEST, DEADBOLT_DEVICE_STATUS_REQUEST,
DEADBOLT_DEVICE_STATUS_RESPONSE, 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 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 enum ETHERNET_NETWORK_VIRTUAL_CMDS
{ {
ETH_NETWK_DEVICE_INFO_REQUEST = 0xD0, ETH_NETWK_DEVICE_INFO_REQUEST = 0xD0,

View File

@ -0,0 +1,90 @@
#include "SprinklerDevice.h"
#include "ProtocolDefs.h"
#include <QDebug>
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;
}

View File

@ -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

View File

@ -0,0 +1,72 @@
#include "SprinklerInterface.h"
#include "ProtocolDefs.h"
#include <QDebug>
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;
}

View File

@ -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

View File

@ -0,0 +1,6 @@
#include "SprinklerMgr.h"
CSprinklerMgr::CSprinklerMgr(QObject *parent) : QObject(parent)
{
}

View File

@ -0,0 +1,17 @@
#ifndef SPRINKLERMGR_H
#define SPRINKLERMGR_H
#include <QObject>
class CSprinklerMgr : public QObject
{
Q_OBJECT
public:
explicit CSprinklerMgr(QObject *parent = 0);
signals:
public slots:
};
#endif // SPRINKLERMGR_H

View File

@ -45,6 +45,8 @@ int CSMSDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int Mess
} }
case SMS_CLIENT_DEVICE_STATUS_RESPONSE: case SMS_CLIENT_DEVICE_STATUS_RESPONSE:
{ {
// mStatusRequestTimer->start();
DeviceStatusReceived();
break; break;
} }
case SMS_CLIENT_DEVICE_DID_INFO_REQUEST: case SMS_CLIENT_DEVICE_DID_INFO_REQUEST:
@ -209,6 +211,13 @@ void CSMSDevice::StatusReqTimerExpired()
mIsOnline = false; mIsOnline = false;
qDebug("SMS Device offline,Address: %d",mDeviceAddress); qDebug("SMS Device offline,Address: %d",mDeviceAddress);
} }
// RequestStatus(); RequestStatus();
mStatusRequestTimer->start();
}
void CSMSDevice::DeviceStatusReceived()
{
mStatusRequestsCount = 0;
mStatusRequestTimer->start(); mStatusRequestTimer->start();
} }

View File

@ -24,6 +24,7 @@ public:
int mStatusRequestsCount; int mStatusRequestsCount;
void SendNewSMSReceived(QList<CSMSMessage> NewMessages); void SendNewSMSReceived(QList<CSMSMessage> NewMessages);
void DeviceStatusReceived();
private: private:
void RequestStatus(); void RequestStatus();

View File

@ -6,6 +6,7 @@
#include <QDateTime> #include <QDateTime>
#include <QStringList> #include <QStringList>
#include "MasterCtrl.h" #include "MasterCtrl.h"
#include <QDebug>
CVoipMsSMSClient::CVoipMsSMSClient() CVoipMsSMSClient::CVoipMsSMSClient()
{ {
@ -137,6 +138,7 @@ int CVoipMsSMSClient::DownloadNewSMS()
int CVoipMsSMSClient::CheckForNewSMS() int CVoipMsSMSClient::CheckForNewSMS()
{ {
// qDebug("Check new SMS"); // qDebug("Check new SMS");
qDebug() << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss") << ":" << "Check New SMS";
if(mSMSMessagesList.isEmpty() == true) if(mSMSMessagesList.isEmpty() == true)
{ {
return RET_ERROR; return RET_ERROR;
@ -207,6 +209,11 @@ void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply)
{ {
SendSMSAckReceived(false); SendSMSAckReceived(false);
} }
else
{
//Restart timer...
StartSMSCheckTimer();
}
} }
Reply.clear(); Reply.clear();
} }
@ -357,6 +364,7 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
else else
{ {
mSMSMessagesList.append(NewMessages); mSMSMessagesList.append(NewMessages);
StartSMSCheckTimer();
} }
@ -395,6 +403,7 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
else else
{ {
qDebug("No SMS to download in this period."); qDebug("No SMS to download in this period.");
StartSMSCheckTimer();
} }
return RET_OK; return RET_OK;