Nouvel Ampli

Lora Interface
This commit is contained in:
jfmartel 2022-12-20 13:00:16 -05:00
parent a98f292e65
commit ac4e5aeb93
11 changed files with 183 additions and 7 deletions

View File

@ -124,6 +124,7 @@ INCLUDEPATH += $$PWD/ \
$$PWD/blynk-library-master/src/ \
$$PWD/Sources/Modbus \
$$PWD/Sources/Ispindel \
$$PWD/Sources/LoraModuleInterface \
# $$PWD/Lib/QtHTTPServer/include/ \
LIBS += -L$$PWD/Lib/QtHTTPServer/ -lQt5HttpServer

View File

@ -385,3 +385,48 @@ QByteArray CAVReceiverDevice::GetReceiverStatus()
return StatusArray;
}
int CAVReceiverDevice::SelectScene(char Zone, char Scene)
{
QString Cmd;
if(Zone == AV_RECEIVER_MAIN_ZONE)
{
Cmd = QString("@MAIN:SCENE=Scene %1\r\n").arg((int)Scene,1);
}
else if(Zone == AV_RECEIVER_ZONE_2)
{
Cmd = QString("@ZONE2:SCENE=Scene %1\r\n").arg((int)Scene,1);
}
else
{
return RET_ERROR;
}
SendReceiverCommand(Cmd);
DisconnectReceiverDelayed(2000);
return RET_OK;
}
int CAVReceiverDevice::SetMainVolume(float Volume)
{
QString Cmd;
Cmd = QString("@MAIN:VOL=%1\r\n").arg(Volume,1,'f',1);
// qDebug("%s",qPrintable(Cmd));
SendReceiverCommand(Cmd);
// DisconnectReceiverDelayed();
return RET_OK;
}
int CAVReceiverDevice::SetZone2Volume(float Volume)
{
QString Cmd;
Cmd = QString("@ZONE2:VOL=%1\r\n").arg(Volume,1,'f',1);
SendReceiverCommand(Cmd);
// DisconnectReceiverDelayed();
return RET_OK;
}

View File

@ -71,6 +71,9 @@ public:
int SetMainZone(bool OnOff);
int SetSpeakers(int SpeakerA, int SpeakerB);
int SendRawCommand(QString Cmd);
int SelectScene(char Zone, char Scene);
int SetMainVolume(float Volume);
int SetZone2Volume(float Volume);
QByteArray GetReceiverStatus();
private:

View File

@ -3,6 +3,13 @@
#include <QString>
#include "GlobalDefine.h"
enum eAVReceiverZones
{
AV_RECEIVER_MAIN_ZONE = 1,
AV_RECEIVER_ZONE_2,
AV_RECEIVER_MAX_ZONE
};
class CAvReceiverMainStatus
{

View File

@ -1,6 +1,7 @@
#include "AvReceiverInterface.h"
#include "ProtocolDefs.h"
#include "AVReceiverDevice.h"
#include <QDataStream>
CAvReceiverInterface::CAvReceiverInterface(int Address, CAbstractNetworkCommIF *NetworkInterface , CAVReceiverDevice *DevicePtr):
CNetworkDevice(ID_AVRECEIVER_INTERFACE,Address,NetworkInterface)
@ -53,12 +54,38 @@ int CAvReceiverInterface::NewDeviceFrameReceived(int DeviceID, int DeviceAddress
{
break;
}
case AV_RECEIVER_INTERFACE_SELECT_SCENE_REQUEST:
{
mAvReceiverDevice->SelectScene(Data[0],Data[1]);
break;
}
case AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_REQUEST:
{
float VolumeData;
QDataStream Strm(&Data,QIODevice::ReadOnly);
Strm >> VolumeData;
mAvReceiverDevice->SetMainVolume(VolumeData);
break;
}
case AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_REQUEST:
{
float VolumeData;
QDataStream Strm(&Data,QIODevice::ReadOnly);
Strm >> VolumeData;
mAvReceiverDevice->SetZone2Volume(VolumeData);
break;
}
case AV_RECEIVER_INTERFACE_GENERAL_STATUS_RESPONSE:
case AV_RECEIVER_INTERFACE_SET_MAIN_POWER_RESPONSE:
case AV_RECEIVER_INTERFACE_SET_ZONE2_RESPONSE:
case AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_RESPONSE:
case AV_RECEIVER_INTERFACE_SET_SPEAKERS_RESPONSE:
case AV_RECEIVER_INTERFACE_SET_MAIN_ZONE_RESPONSE:
case AV_RECEIVER_INTERFACE_SELECT_SCENE_RESPONSE:
case AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_RESPONSE:
case AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_RESPONSE:
default:
{
qDebug("Received invalid msg from Sprinkler Interface");

View File

@ -2,15 +2,76 @@
CLoraModuleInterface::CLoraModuleInterface()
{
connect(&mLoraModuleIFSerialPort,SIGNAL(readyRead()),this,SLOT(NewLoraModuleIFDataReady()));
mLoraModuleIFStatusTimer = new QTimer();
mLoraModuleIFStatusTimer->setSingleShot(false);
mLoraModuleIFStatusTimer->setInterval(1000);
mLoraModuleIFStatusTimer->start();
connect(mLoraModuleIFStatusTimer,SIGNAL(timeout()),this,SLOT(LoraModuleStatusTimerExpired()));
}
CLoraModuleInterface::~CLoraModuleInterface()
{
delete mLoraModuleIFStatusTimer;
}
//This the handling of the Microcontroller (LoraModuleInterface)
int CLoraModuleInterface::NewFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data)
{
return RET_OK;
}
//This is to answer to CChaletDevice requests
int CLoraModuleInterface::SendNetworkMessage(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray *Data)
{
return RET_OK;
}
void CLoraModuleInterface::LoraModuleStatusTimerExpired()
{
}
int CLoraModuleInterface::SetLoraModuleInterfaceParameters(QString ComPort, qint32 BaudRate)
{
mLoraModuleIFComPortName = ComPort;
mLoraModuleIFComPortBaudRate = BaudRate;
if(mLoraModuleIFSerialPort.isOpen())
{
mLoraModuleIFSerialPort.close();
}
mLoraModuleIFSerialPort.setPortName(mLoraModuleIFComPortName);
if(mLoraModuleIFSerialPort.setBaudRate(mLoraModuleIFComPortBaudRate) == false)
{
qDebug("Invalid Lora Device serial port baud rate...");
}
//The other serial port parameters (parity, stop bits, data bits) are all set to mentally sane default values so no need to set them.
if(mLoraModuleIFSerialPort.open(QIODevice::ReadWrite) == false)
{
qDebug("Could not open Lora device port");
return RET_ERROR;
}
qDebug("Lora serial port opened");
return RET_OK;
return RET_OK;
}
void CLoraModuleInterface::NewLoraModuleIFDataReady()
{
QByteArray NewData = mLoraModuleIFSerialPort.readAll();
AnalyzeRxBuffer(NewData);
}

View File

@ -7,6 +7,8 @@
#include "NetworkProtocol.h"
#include "AbstractNetworkInterface.h"
#include "NetworkDevice.h"
#include <QTimer>
#include <QSerialPort>
class CLoraModuleInterface : public QObject, public CNetworkProtocol, public CAbstractNetworkCommIF
{
@ -14,6 +16,16 @@ class CLoraModuleInterface : public QObject, public CNetworkProtocol, public CAb
public:
CLoraModuleInterface();
~CLoraModuleInterface();
int SetLoraModuleInterfaceParameters(QString ComPort,qint32 BaudRate);
QTimer *mLoraModuleIFStatusTimer;
QSerialPort mLoraModuleIFSerialPort;
QString mLoraModuleIFComPortName;
qint32 mLoraModuleIFComPortBaudRate;
@ -22,6 +34,10 @@ public:
//NetworkCommIF implementation
virtual int SendNetworkMessage(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray *Data);
public slots:
void LoraModuleStatusTimerExpired();
void NewLoraModuleIFDataReady();
};
#endif // LORAMODULEINTERFACE_H

View File

@ -77,7 +77,7 @@ void CLoraNetworkCommIF::LoraDeviceNewDataReady()
{
QByteArray NewData = mLoraDeviceSerialPort.readAll();
QString Printf = "New Lora Data: ";
// QString Printf = "New Lora Data: ";
AnalyzeRxBuffer(NewData);

View File

@ -15,11 +15,15 @@ CMasterCtrl::CMasterCtrl()
mSettingsWindow = new CSettingsWindow();
mSettingsWindow->mProgramHandle = this;
mChaletLoraNetworkCommInterface = new CLoraNetworkCommIF();
mChaletLoraDevice = new CChaletLoraDevice(1,mChaletLoraNetworkCommInterface);
// mChaletLoraNetworkCommInterface = new CLoraNetworkCommIF();//JFM LoraInterface Dev
mChaletLoraModuleInterface = new CLoraModuleInterface();
// mChaletLoraDevice = new CChaletLoraDevice(1,mChaletLoraNetworkCommInterface);//JFM LoraInterface Dev
mChaletLoraDevice = new CChaletLoraDevice(1,mChaletLoraModuleInterface);
// mChaletLoraInterface = new CChaletLoraInterface(mRooftopTowerLoraDevice);
mIspindelDevice = new CIspindelDevice;
@ -41,7 +45,8 @@ CMasterCtrl::~CMasterCtrl()
delete mEthernetNetworkServer;
delete mContactsRepository;
delete mSprinklerManager;
delete mChaletLoraNetworkCommInterface;
//delete mChaletLoraNetworkCommInterface; //JFM LoraInterface Dev
delete mChaletLoraModuleInterface;
delete mChaletLoraDevice;
delete mIspindelDevice;
// delete mMasterCtrlSettings;
@ -94,10 +99,13 @@ void CMasterCtrl::Start()
mAVReceiverDevice->Start();
/* //JFM LoraInterface Dev
mChaletLoraNetworkCommInterface->mMyLoraAddress = 5;
mChaletLoraNetworkCommInterface->mMyLoraChannel = 4;
mChaletLoraNetworkCommInterface->SetLoraDestinationAddress(mMasterCtrlSettings.mChaletLoraAddress,mMasterCtrlSettings.mChaletLoraChannel);
mChaletLoraNetworkCommInterface->SetLoraSerialPortSettings(mMasterCtrlSettings.mChaletComPort,QSerialPort::Baud9600);
*/ //JFM LoraInterface Dev
// mChaletLoraNetworkCommInterface->SetLoraSerialPortSettings("COM5",QSerialPort::Baud9600);
mChaletLoraDevice->Start();
@ -144,8 +152,8 @@ unsigned int CMasterCtrl::SettingsWindowClosed()
{
mVoipMsSMSClient->SetVOIPMsSettings(&mMasterCtrlSettings.mVoipMSSettings);
mVoipMsSMSClient->DownloadSMSFromServer();
mChaletLoraNetworkCommInterface->SetLoraDestinationAddress(mMasterCtrlSettings.mChaletLoraAddress,mMasterCtrlSettings.mChaletLoraChannel);
mChaletLoraNetworkCommInterface->SetLoraSerialPortSettings(mMasterCtrlSettings.mChaletComPort,QSerialPort::Baud9600);
//mChaletLoraNetworkCommInterface->SetLoraDestinationAddress(mMasterCtrlSettings.mChaletLoraAddress,mMasterCtrlSettings.mChaletLoraChannel); //JFM LoraInterface Dev
//mChaletLoraNetworkCommInterface->SetLoraSerialPortSettings(mMasterCtrlSettings.mChaletComPort,QSerialPort::Baud9600); //JFM LoraInterface Dev
return RET_OK;
}

View File

@ -17,6 +17,7 @@
#include "LoraNetworkCommIF.h"
#include "HttpServer.h"
#include "IspindelDevice.h"
#include "LoraModuleInterface.h"
//#include "AppIconWidget.h"
@ -42,7 +43,8 @@ public:
CChaletLoraDevice *mChaletLoraDevice;
// CChaletLoraInterface *mChaletLoraInterface;
CLoraNetworkCommIF *mChaletLoraNetworkCommInterface;
// CLoraNetworkCommIF *mChaletLoraNetworkCommInterface;
CLoraModuleInterface *mChaletLoraModuleInterface;
// CAppIconWidget mAppWidget;
// CHttpServer mHttpServer;

View File

@ -245,6 +245,12 @@ enum AV_RECEIVER_INTERFACE_CMDS
AV_RECEIVER_INTERFACE_SET_SPEAKERS_RESPONSE,
AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_REQUEST,
AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_RESPONSE,
AV_RECEIVER_INTERFACE_SELECT_SCENE_REQUEST,
AV_RECEIVER_INTERFACE_SELECT_SCENE_RESPONSE,
AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_REQUEST,
AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_RESPONSE,
AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_REQUEST,
AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_RESPONSE,
MAX_AV_RECEIVER_INTERFACE_CMD