Interface Ispindel + dev ChaletInterface
This commit is contained in:
parent
1dadad4b09
commit
8aafc96dbd
Binary file not shown.
@ -9,6 +9,7 @@ HEADERS += \
|
||||
Sources/Chalet/ChaletData.h \
|
||||
Sources/Chalet/ChaletInterface.h \
|
||||
Sources/Chalet/ChaletLoraDevice.h \
|
||||
Sources/Ispindel/IspindelData.h \
|
||||
Sources/LoraNetworkCommIF.h \
|
||||
Sources/MasterCtrl.h \
|
||||
Sources/GlobalDefine.h \
|
||||
@ -49,12 +50,16 @@ HEADERS += \
|
||||
Sources/ImageCropper/imagecropper_p.h \
|
||||
Sources/Modbus/ModbusBackend.h \
|
||||
Sources/Modbus/ModbusRepository.h \
|
||||
Sources/Chalet/ChaletModbusServer.h
|
||||
Sources/Chalet/ChaletModbusServer.h \
|
||||
Sources/Ispindel/IspindelDevice.h \
|
||||
Sources/Ispindel/IspindelDataLogger.h \
|
||||
Sources/Ispindel/IspindelInterface.h
|
||||
|
||||
SOURCES += \
|
||||
Sources/Chalet/ChaletData.cpp \
|
||||
Sources/Chalet/ChaletInterface.cpp \
|
||||
Sources/Chalet/ChaletLoraDevice.cpp \
|
||||
Sources/Ispindel/IspindelData.cpp \
|
||||
Sources/LoraNetworkCommIF.cpp \
|
||||
Sources/main.cpp \
|
||||
Sources/MasterCtrl.cpp \
|
||||
@ -91,7 +96,10 @@ SOURCES += \
|
||||
Sources/ImageCropper/imagecropper.cpp \
|
||||
Sources/Modbus/ModbusBackend.cpp \
|
||||
Sources/Modbus/ModbusRepository.cpp \
|
||||
Sources/Chalet/ChaletModbusServer.cpp
|
||||
Sources/Chalet/ChaletModbusServer.cpp \
|
||||
Sources/Ispindel/IspindelDevice.cpp \
|
||||
Sources/Ispindel/IspindelDataLogger.cpp \
|
||||
Sources/Ispindel/IspindelInterface.cpp
|
||||
|
||||
DEFINES -= Q_OS_UNIX
|
||||
|
||||
@ -111,6 +119,7 @@ INCLUDEPATH += $$PWD/ \
|
||||
$$PWD/Sources/HttpServer \
|
||||
$$PWD/blynk-library-master/src/ \
|
||||
$$PWD/Sources/Modbus \
|
||||
$$PWD/Sources/Ispindel \
|
||||
# $$PWD/Lib/QtHTTPServer/include/ \
|
||||
|
||||
LIBS += -L$$PWD/Lib/QtHTTPServer/ -lQt5HttpServer
|
||||
|
||||
264
MasterCtrl.pro.user.4.8-pre1
Normal file
264
MasterCtrl.pro.user.4.8-pre1
Normal file
@ -0,0 +1,264 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.2.1, 2021-12-02T18:07:50. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{5a351af6-dc3b-4afc-af92-7da5e3a5cd12}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="int">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap"/>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.14.2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.14.2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{dc2b548b-27bc-4e25-8500-cc36640735d8}</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Main/PicDev/Projets/MasterCtrl/Masterctrl</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Main/PicDev/Projets/MasterCtrl/Masterctrl/release</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">MasterCtrl</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Main/PicDev/Projets/MasterCtrl/Masterctrl/MasterCtrl.pro</value>
|
||||
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">MasterCtrl.pro</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">D:/Main/PicDev/Projets/MasterCtrl/Masterctrl</value>
|
||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
<value type="int">18</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">18</value>
|
||||
</data>
|
||||
</qtcreator>
|
||||
@ -8,6 +8,7 @@ CChaletInterface::CChaletInterface(int Address, CAbstractNetworkCommIF *NetworkI
|
||||
mChaletDataLogger = mChaletLoraDevice->GetDataLoggerHandle();
|
||||
|
||||
connect(mChaletLoraDevice,SIGNAL(DeviceWifiStoredParamsReceived()),this,SLOT(DeviceWiFiDataReceived()));
|
||||
connect(mChaletLoraDevice,SIGNAL(DeviceFirmwareVersionReceived()),this,SLOT(DeviceFirmwareVersionReceived()));
|
||||
|
||||
}
|
||||
|
||||
@ -106,6 +107,10 @@ int CChaletInterface::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, in
|
||||
mChaletLoraDevice->SendSetWifiParams(Data);
|
||||
break;
|
||||
}
|
||||
case CHALET_INTERFACE_GET_FIRMWARE_VERSION_REQUEST:
|
||||
{
|
||||
mChaletLoraDevice->SendGetFirmwareVersion();
|
||||
}
|
||||
case CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_RESPONSE:
|
||||
case CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_RESPONSE:
|
||||
case CHALET_INTERFACE_GET_DATA_LOG_RESPONSE:
|
||||
@ -140,3 +145,9 @@ void CChaletInterface::DeviceWiFiDataReceived()
|
||||
QByteArray Data = mChaletLoraDevice->GetDeviceWiFiStoredParams();
|
||||
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_RESPONSE,Data.size(),&Data);
|
||||
}
|
||||
|
||||
void CChaletInterface::DeviceFirmwareVersionReceived()
|
||||
{
|
||||
QByteArray Data = mChaletLoraDevice->GetDeviceFirmwareVersion();
|
||||
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_GET_FIRMWARE_VERSION_RESPONSE,Data.size(),&Data);
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ private:
|
||||
|
||||
public slots:
|
||||
void DeviceWiFiDataReceived();
|
||||
void DeviceFirmwareVersionReceived();
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -22,6 +22,7 @@ CChaletLoraDevice::CChaletLoraDevice(int Address, CAbstractNetworkCommIF *Networ
|
||||
mChaletModbusServer = new CChaletModbusServer(&mChaletModbusRepo,512,1);
|
||||
|
||||
mDeviceWiFiParameters.fill(0xFF);
|
||||
mDeviceFirmwareVersion.fill(0xFF);
|
||||
|
||||
ResetCommStats();
|
||||
}
|
||||
@ -56,7 +57,7 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
|
||||
{
|
||||
float temp;
|
||||
qint16 temp2;
|
||||
qDebug("Chalet Status RX");
|
||||
// qDebug("Chalet Status RX");
|
||||
char VoltageArray[4];
|
||||
char TemperatureArray[4];
|
||||
char SolarPanelCurrentArray[2];
|
||||
@ -94,10 +95,10 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
|
||||
mChaletMainStatus.mLastLoraStatus = QDateTime::currentDateTime();
|
||||
|
||||
CmdResponseReceived(CHALET_GENERAL_STATUS_REQUEST);
|
||||
qDebug("voltage: %f",mChaletMainStatus.mBatteryVoltage);
|
||||
// qDebug("voltage: %f",mChaletMainStatus.mBatteryVoltage);
|
||||
// qDebug("Current: %d",mChaletMainStatus.mBatteryCurrent);
|
||||
// qDebug("SOC: %d",mChaletMainStatus.mBatterySOC);
|
||||
qDebug("Inverter: %d",mChaletMainStatus.mInverterRelayStatus);
|
||||
// qDebug("Inverter: %d",mChaletMainStatus.mInverterRelayStatus);
|
||||
|
||||
mChaletDataLogger.LogChaletLORAData(&mChaletMainStatus);
|
||||
|
||||
@ -114,22 +115,22 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
|
||||
mThingsBoardInterface.UpdateChaletData(&mChaletMainStatus);
|
||||
|
||||
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_ONLINE_STATE_REG,(quint16)mChaletMainStatus.mIsOnline);
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_WIFI_STATE_REG,(quint16)mChaletMainStatus.mWiFiModuleStatus);
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_CURRENT_SENSOR_STATE_REG,(quint16)mChaletMainStatus.mCurrentSensorStatus);
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_HARAKIRI_DONE_REG,(quint16)mChaletMainStatus.mHarakiriDone);
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_STATUS_TOGGLE_REG,(quint16)mChaletMainStatus.mStatusToggleBit);
|
||||
//mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_WATCHDOG_STATUS_REG,(quint16),mChaletMainStatus.m)
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_INVERTER_REG,(quint16)mChaletMainStatus.mInverterRelayStatus);
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_ONLINE_STATE_REG,(quint16)mChaletMainStatus.mIsOnline);
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_WIFI_STATE_REG,(quint16)mChaletMainStatus.mWiFiModuleStatus);
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_CURRENT_SENSOR_STATE_REG,(quint16)mChaletMainStatus.mCurrentSensorStatus);
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_HARAKIRI_DONE_REG,(quint16)mChaletMainStatus.mHarakiriDone);
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_STATUS_TOGGLE_REG,(quint16)mChaletMainStatus.mStatusToggleBit);
|
||||
// //mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_WATCHDOG_STATUS_REG,(quint16),mChaletMainStatus.m)
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_INVERTER_REG,(quint16)mChaletMainStatus.mInverterRelayStatus);
|
||||
|
||||
quint16 TempInt16;
|
||||
memcpy(&TempInt16,&VoltageArray[0],2);
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_VOLTAGE_REG_1,TempInt16);
|
||||
memcpy(&TempInt16,&VoltageArray[2],2);
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_VOLTAGE_REG_2,TempInt16);
|
||||
// quint16 TempInt16;
|
||||
// memcpy(&TempInt16,&VoltageArray[0],2);
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_VOLTAGE_REG_1,TempInt16);
|
||||
// memcpy(&TempInt16,&VoltageArray[2],2);
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_VOLTAGE_REG_2,TempInt16);
|
||||
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_CURRENT_REG_1,mChaletMainStatus.mBatteryCurrent);
|
||||
mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_SOC_REG,mChaletMainStatus.mBatterySOC);
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_CURRENT_REG_1,mChaletMainStatus.mBatteryCurrent);
|
||||
// mChaletModbusRepo.WriteSingleReg(CHALET_MODBUS_BATTERY_SOC_REG,mChaletMainStatus.mBatterySOC);
|
||||
|
||||
break;
|
||||
}
|
||||
@ -141,7 +142,7 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
|
||||
}
|
||||
case CHALET_AC_POWER_SET_STATE_RESPONSE:
|
||||
{
|
||||
qDebug("Lora set Inverter Power response : 0x%d",(int)Data[0]);
|
||||
// qDebug("Lora set Inverter Power response : 0x%d",(int)Data[0]);
|
||||
mChaletMainStatus.mInverterRelayStatus = Data[0];
|
||||
CmdResponseReceived(CHALET_AC_POWER_SET_STATE_REQUEST);
|
||||
break;
|
||||
@ -164,7 +165,7 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
|
||||
}
|
||||
case CHALET_WIFI_SET_STATE_RESPONSE:
|
||||
{
|
||||
qDebug("Lora set WiFi response : 0x%d",(int)Data[0]);
|
||||
// qDebug("Lora set WiFi response : 0x%d",(int)Data[0]);
|
||||
mChaletMainStatus.mWiFiModuleStatus = Data[0];
|
||||
CmdResponseReceived(CHALET_WIFI_SET_STATE_REQUEST);
|
||||
break;
|
||||
@ -210,6 +211,13 @@ int CChaletLoraDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, i
|
||||
emit DeviceWifiSetParamsResult(Data[0]);
|
||||
break;
|
||||
}
|
||||
case CHALET_GET_FIRMWARE_VERSION_RESPONSE:
|
||||
{
|
||||
CmdResponseReceived(CHALET_GET_FIRMWARE_VERSION_REQUEST);
|
||||
mDeviceFirmwareVersion = Data.left(15);
|
||||
emit DeviceFirmwareVersionReceived();
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
@ -252,7 +260,7 @@ void CChaletLoraDevice::CommTimerExpired()
|
||||
ComputeCommStats();
|
||||
}
|
||||
|
||||
qDebug("Sending chalet request 0x%x",mPendingNetworkMsgList.at(0).mMessageID);
|
||||
// qDebug("Sending chalet request 0x%x",mPendingNetworkMsgList.at(0).mMessageID);
|
||||
|
||||
mPendingNetworkMsgList[0].PendingResponse = true;
|
||||
SendChaletCommand(mPendingNetworkMsgList.at(0).mMessageID,mPendingNetworkMsgList.at(0).mData.size(),mPendingNetworkMsgList.at(0).mData);
|
||||
@ -334,6 +342,11 @@ int CChaletLoraDevice::SendSetWifiParams(QByteArray Data)
|
||||
return ScheduleChaletCommand(CHALET_SET_STORED_WIFI_SETTINGS_REQUEST,Data);
|
||||
}
|
||||
|
||||
int CChaletLoraDevice::SendGetFirmwareVersion()
|
||||
{
|
||||
return ScheduleChaletCommand(CHALET_GET_FIRMWARE_VERSION_REQUEST,QByteArray());
|
||||
}
|
||||
|
||||
int CChaletLoraDevice::SendChaletCommand(int CmdID, int DataSize, QByteArray Data)
|
||||
{
|
||||
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_DEVICE,mDeviceAddress,CmdID,DataSize,&Data);
|
||||
@ -352,7 +365,7 @@ int CChaletLoraDevice::CmdResponseReceived(int CmdID)
|
||||
qDebug("Chalet is ONLINE!");
|
||||
}
|
||||
|
||||
qDebug("Chalet response received from cmd: 0x%x",CmdID);
|
||||
//qDebug("Chalet response received from cmd: 0x%x",CmdID);
|
||||
if(mPendingNetworkMsgList.size() == 0)
|
||||
{
|
||||
qDebug("Cmd ack received but list is empty!!!");
|
||||
|
||||
@ -41,6 +41,7 @@ public:
|
||||
|
||||
CChaletMainStatus GetChaletMainStatus() {return mChaletMainStatus;}
|
||||
QByteArray GetDeviceWiFiStoredParams() {return mDeviceWiFiParameters;}
|
||||
QByteArray GetDeviceFirmwareVersion() {return mDeviceFirmwareVersion;}
|
||||
CBlynkCloudClient mBlynkInterface;
|
||||
CThingsBoardInterface mThingsBoardInterface;
|
||||
CChaletModbusServer *mChaletModbusServer;
|
||||
@ -57,6 +58,7 @@ public:
|
||||
CChaletDataLogger *GetDataLoggerHandle() {return &mChaletDataLogger;} //for Interface use...
|
||||
|
||||
QByteArray mDeviceWiFiParameters;
|
||||
QByteArray mDeviceFirmwareVersion;
|
||||
|
||||
|
||||
|
||||
@ -69,15 +71,19 @@ public:
|
||||
int ComputeCommStats();
|
||||
int SendGetWifiParams();
|
||||
int SendSetWifiParams(QByteArray Data);
|
||||
int SendGetFirmwareVersion();
|
||||
|
||||
int CmdResponseReceived(int CmdID);
|
||||
int ScheduleChaletStatusRequest();
|
||||
int ScheduleChaletCommand(int CmdID, int DataSize, QByteArray Data);
|
||||
int ScheduleChaletCommand(int CmdID,QByteArray Data);
|
||||
|
||||
bool IsInverterON(){return mChaletMainStatus.mInverterRelayStatus == 1;}
|
||||
|
||||
signals:
|
||||
void DeviceWifiStoredParamsReceived();
|
||||
void DeviceWifiSetParamsResult(char);
|
||||
void DeviceFirmwareVersionReceived();
|
||||
|
||||
public slots:
|
||||
void CommTimerExpired();
|
||||
|
||||
@ -119,7 +119,7 @@ void CThingsBoardInterface::UpdateChaletData(CChaletMainStatus *Data)
|
||||
JsonByteArray.append("\"Inverter_State\":");
|
||||
JsonByteArray.append((QString("%1, ").arg(Data->mInverterRelayStatus)).toUtf8().data());
|
||||
|
||||
JsonByteArray = "{\"Temperature_Sensor\":";
|
||||
JsonByteArray.append("\"Temperature_Sensor\":");
|
||||
JsonByteArray.append((QString("%1}").arg(Data->mChaletTemperature)).toUtf8().data());
|
||||
|
||||
QNetworkRequest Req;
|
||||
@ -173,7 +173,7 @@ void CThingsBoardInterface::ThingsBoardRPCFinished(QNetworkReply *NetworkReply)
|
||||
{
|
||||
if(mThingsBoardRPCReply->error() != QNetworkReply::NoError)
|
||||
{
|
||||
qDebug("Network error (ThingsBoardRPC)... %d", mThingsBoardRPCReply->error());
|
||||
// qDebug("Network error (ThingsBoardRPC)... %d", mThingsBoardRPCReply->error());
|
||||
RegisterThingsboardRPC();
|
||||
return;
|
||||
}
|
||||
@ -204,17 +204,17 @@ void CThingsBoardInterface::ThingsBoardRPCFinished(QNetworkReply *NetworkReply)
|
||||
if(RequestedState == true)
|
||||
{
|
||||
qDebug("Server Inverter TURN ON request received.");
|
||||
mChaletLoraDevice->SendInverterPowerRelayState(true);
|
||||
// mChaletLoraDevice->SendInverterPowerRelayState(true);
|
||||
}
|
||||
if(RequestedState == false)
|
||||
{
|
||||
qDebug("Server Inverter TURN OFF request received.");
|
||||
mChaletLoraDevice->SendInverterPowerRelayState(false);
|
||||
// mChaletLoraDevice->SendInverterPowerRelayState(false);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else if(RequestedCmd.toString().contains("setWiFiState"))
|
||||
else if(RequestedCmd.toString().contains("setChaletWiFiState"))
|
||||
{
|
||||
//Fetch the required state.
|
||||
QString RequestedState = RPCCmd.value("params").toString();
|
||||
@ -227,6 +227,28 @@ void CThingsBoardInterface::ThingsBoardRPCFinished(QNetworkReply *NetworkReply)
|
||||
qDebug("Server WiFi TURN OFF request received.");
|
||||
}
|
||||
}
|
||||
else if(RequestedCmd.toString().contains("getChaletInverterState"))
|
||||
{
|
||||
qDebug("Inverter state request received");
|
||||
QByteArray JsonByteArray;
|
||||
int ReqID = RPCCmd.value("id").toInt();
|
||||
if(mChaletLoraDevice->IsInverterON())
|
||||
{
|
||||
JsonByteArray = "{\"InverterSwitchState\":\"1\"}";
|
||||
}
|
||||
else
|
||||
{
|
||||
JsonByteArray = "{\"InverterSwitchState\":\"0\"}";
|
||||
}
|
||||
|
||||
QNetworkRequest Req;
|
||||
// QString URL = QString("http://192.168.50.225:8080/api/v1/qpJ6tWCkXHJzDQviDJ64/rpc/%1").arg(ReqID);
|
||||
QString URL = QString("http://192.168.50.225:8080/api/v1/qpJ6tWCkXHJzDQviDJ64/attributes");
|
||||
Req.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
|
||||
Req.setUrl(QUrl(URL));
|
||||
|
||||
mThingsBoardSocket->post(Req,JsonByteArray);
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug("Received an unknown RPC call from ThingsBoard server");
|
||||
|
||||
@ -194,6 +194,20 @@ void CEthernetNetworkServer::DeviceSocketDataAvail()
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ID_ISPINDEL_INTERFACE:
|
||||
{
|
||||
if(mDevicesMgrHandle->CreateNewIspindleInterface(DeviceAddress,(CAbstractNetworkCommIF*)NetworkIF) == RET_OK)
|
||||
{
|
||||
Result = RES_CREATION_SUCCESS;
|
||||
qDebug("Created new Ispindel Interface");
|
||||
}
|
||||
else
|
||||
{
|
||||
Result = RES_CREATION_FAILED;
|
||||
qDebug("Could not create Ispindel Interface in ethernet server");
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
Result = RES_CREATION_UNKNOWN_DEVICE;
|
||||
|
||||
54
Sources/Ispindel/IspindelData.cpp
Normal file
54
Sources/Ispindel/IspindelData.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
#include "IspindelData.h"
|
||||
|
||||
|
||||
CIspindelData::CIspindelData()
|
||||
{
|
||||
mIspindelID = mRSSI = mInterval = 0;
|
||||
mIspindelName = mTemperatureUnits = "";
|
||||
mAngle = mBattery = mGravity = mTemperature = 0.0;
|
||||
mSampleDateTime = QDateTime::currentDateTime();
|
||||
}
|
||||
|
||||
QDataStream &operator<<(QDataStream &out, const CIspindelData &source)
|
||||
{
|
||||
out << source.mAngle
|
||||
<< source.mBattery
|
||||
<< source.mGravity
|
||||
<< source.mInterval
|
||||
<< source.mIspindelID
|
||||
<< source.mIspindelName
|
||||
<< source.mRSSI
|
||||
<< source.mTemperature
|
||||
<< source.mTemperatureUnits
|
||||
<< source.mSampleDateTime;
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
QDataStream &operator>>(QDataStream &in, CIspindelData &dest)
|
||||
{
|
||||
in >> dest.mAngle
|
||||
>> dest.mBattery
|
||||
>> dest.mGravity
|
||||
>> dest.mInterval
|
||||
>> dest.mIspindelID
|
||||
>> dest.mIspindelName
|
||||
>> dest.mRSSI
|
||||
>> dest.mTemperature
|
||||
>> dest.mTemperatureUnits
|
||||
>> dest.mSampleDateTime;
|
||||
|
||||
return in;
|
||||
}
|
||||
|
||||
QByteArray CIspindelData::ToByteArray()
|
||||
{
|
||||
QByteArray Array;
|
||||
QDataStream Strm(&Array,QIODevice::WriteOnly | QIODevice::Unbuffered);
|
||||
|
||||
Strm << *this;
|
||||
|
||||
return Array;
|
||||
}
|
||||
|
||||
|
||||
25
Sources/Ispindel/IspindelData.h
Normal file
25
Sources/Ispindel/IspindelData.h
Normal file
@ -0,0 +1,25 @@
|
||||
#ifndef CISPINDELDATA_H
|
||||
#define CISPINDELDATA_H
|
||||
|
||||
#include <QString>
|
||||
#include <QDataStream>
|
||||
#include <QDateTime>
|
||||
|
||||
class CIspindelData
|
||||
{
|
||||
public:
|
||||
CIspindelData();
|
||||
|
||||
int mIspindelID, mRSSI, mInterval;
|
||||
QString mIspindelName, mTemperatureUnits;
|
||||
double mAngle, mBattery, mGravity, mTemperature;
|
||||
QDateTime mSampleDateTime;
|
||||
|
||||
QByteArray ToByteArray();
|
||||
|
||||
};
|
||||
|
||||
|
||||
QDataStream &operator<<(QDataStream &out, const CIspindelData &source);
|
||||
QDataStream &operator>>(QDataStream &in, CIspindelData &dest);
|
||||
#endif // CISPINDELDATA_H
|
||||
102
Sources/Ispindel/IspindelDataLogger.cpp
Normal file
102
Sources/Ispindel/IspindelDataLogger.cpp
Normal file
@ -0,0 +1,102 @@
|
||||
#include "IspindelDataLogger.h"
|
||||
#include <QFile>
|
||||
#include <QDataStream>
|
||||
#include <GlobalDefine.h>
|
||||
|
||||
CIspindelDataLogger::CIspindelDataLogger(QObject *parent) : QObject(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int CIspindelDataLogger::WriteLogToFile(QList<CIspindelData *> *Data, bool OnlyLastItem)
|
||||
{
|
||||
QFile *LogFile;
|
||||
QString LogFileName(ISPINDEL_LOG_DIR);
|
||||
LogFileName.append("BrewLog");
|
||||
LogFileName.append(".blg");
|
||||
|
||||
LogFile = new QFile(LogFileName);
|
||||
|
||||
if(LogFile->open(QIODevice::ReadWrite|QIODevice::Unbuffered) == false)
|
||||
{
|
||||
delete LogFile;
|
||||
qDebug("Cannot open Ispindel log file for writing...");
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
QDataStream Strm(LogFile);
|
||||
|
||||
//Write header
|
||||
|
||||
int FileVer = ISPINDEL_LOG_FILE_VERSION;
|
||||
int NbItems = Data->size();
|
||||
LogFile->seek(0);
|
||||
|
||||
Strm << FileVer << NbItems;
|
||||
|
||||
if(OnlyLastItem)
|
||||
{
|
||||
//seek to the end of the file
|
||||
LogFile->seek(LogFile->size());
|
||||
|
||||
//write the last item
|
||||
Strm << *Data->last();
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int i = 0; i < Data->size(); i++)
|
||||
{
|
||||
Strm << *Data->at(i);
|
||||
}
|
||||
}
|
||||
|
||||
LogFile->close();
|
||||
delete LogFile;
|
||||
|
||||
return RET_OK;
|
||||
|
||||
}
|
||||
|
||||
int CIspindelDataLogger::LoadLogData(QList<CIspindelData *> *DataList)
|
||||
{
|
||||
QFile *LogFile;
|
||||
QString LogFileName(ISPINDEL_LOG_DIR);
|
||||
LogFileName.append("BrewLog");
|
||||
LogFileName.append(".blg");
|
||||
|
||||
LogFile = new QFile(LogFileName);
|
||||
|
||||
if(LogFile->open(QIODevice::ReadOnly|QIODevice::Unbuffered) == false)
|
||||
{
|
||||
delete LogFile;
|
||||
qDebug("Cannot open Ispindel log file for loading...");
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
QDataStream Strm(LogFile);
|
||||
DataList->clear();
|
||||
|
||||
int FileVersion, NbItems;
|
||||
Strm >> FileVersion;
|
||||
Strm >> NbItems;
|
||||
|
||||
for(int i = 0; i < NbItems; i++)
|
||||
{
|
||||
CIspindelData *Data = new CIspindelData;
|
||||
Strm >> *Data;
|
||||
DataList->append(Data);
|
||||
}
|
||||
|
||||
LogFile->close();
|
||||
delete LogFile;
|
||||
|
||||
qDebug("Ispindel loaded %d readings",DataList->size());
|
||||
for(int i = 0; i < DataList->size(); i++)
|
||||
{
|
||||
qDebug(qPrintable(DataList->at(i)->mSampleDateTime.toString("yyyy-MM-dd hh:mm:ss")));
|
||||
}
|
||||
|
||||
return RET_OK;
|
||||
|
||||
|
||||
}
|
||||
25
Sources/Ispindel/IspindelDataLogger.h
Normal file
25
Sources/Ispindel/IspindelDataLogger.h
Normal file
@ -0,0 +1,25 @@
|
||||
#ifndef ISPINDELDATALOGGER_H
|
||||
#define ISPINDELDATALOGGER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QList>
|
||||
#include "IspindelData.h"
|
||||
|
||||
#define ISPINDEL_LOG_FILE_VERSION 1
|
||||
#define ISPINDEL_LOG_DIR "D:/Main/Brew/Ispindel Logs/"
|
||||
|
||||
class CIspindelDataLogger : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CIspindelDataLogger(QObject *parent = 0);
|
||||
|
||||
int WriteLogToFile(QList<CIspindelData *> *Data, bool OnlyLastItem = true);
|
||||
int LoadLogData(QList<CIspindelData *> *DataList);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
};
|
||||
|
||||
#endif // ISPINDELDATALOGGER_H
|
||||
128
Sources/Ispindel/IspindelDevice.cpp
Normal file
128
Sources/Ispindel/IspindelDevice.cpp
Normal file
@ -0,0 +1,128 @@
|
||||
#include "IspindelDevice.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
|
||||
CIspindelDevice::CIspindelDevice()
|
||||
{
|
||||
mISpindelServer = new QTcpServer;
|
||||
connect(mISpindelServer,SIGNAL(newConnection()),this,SLOT(IspindelClientConnected()));
|
||||
mISpindelServer->listen(QHostAddress::Any,80);
|
||||
|
||||
mIspindelLog.clear();
|
||||
mDataLogger.LoadLogData(&mIspindelLog);
|
||||
|
||||
}
|
||||
|
||||
void CIspindelDevice::IspindelClientConnected()
|
||||
{
|
||||
mIspindelClientConnection = mISpindelServer->nextPendingConnection();
|
||||
connect(mIspindelClientConnection,SIGNAL(readyRead()),this,SLOT(IspindelClientDataAvail()));
|
||||
qDebug("Ispindel connected");
|
||||
}
|
||||
|
||||
void CIspindelDevice::IspindelClientDataAvail()
|
||||
{
|
||||
CIspindelData *NewData = new CIspindelData;
|
||||
QByteArray IspindelData;
|
||||
if(mIspindelClientConnection->bytesAvailable() > 1)
|
||||
{
|
||||
IspindelData = QByteArray(mIspindelClientConnection->readAll());
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QJsonDocument JsonReply = QJsonDocument::fromJson(IspindelData);
|
||||
QJsonObject JsonObject = JsonReply.object();
|
||||
QStringList Keys = JsonObject.keys();
|
||||
if(Keys.isEmpty())
|
||||
return;
|
||||
|
||||
NewData->mIspindelID = JsonObject["ID"].toInt();
|
||||
NewData->mRSSI = JsonObject["RSSI"].toInt();
|
||||
NewData->mAngle = JsonObject["angle"].toDouble();
|
||||
NewData->mBattery = JsonObject["battery"].toDouble();
|
||||
NewData->mGravity = JsonObject["gravity"].toDouble();
|
||||
NewData->mInterval = JsonObject["interval"].toInt();
|
||||
NewData->mIspindelName = JsonObject["name"].toString();
|
||||
NewData->mTemperatureUnits = JsonObject["temp_units"].toString();
|
||||
NewData->mTemperature = JsonObject["temperature"].toDouble();
|
||||
|
||||
mIspindelLog.append(NewData);
|
||||
|
||||
qDebug("ID : %i",NewData->mIspindelID);
|
||||
qDebug("RSSI : %i",NewData->mRSSI);
|
||||
qDebug("Angle : %f",NewData->mAngle);
|
||||
qDebug("Battery : %f",NewData->mBattery);
|
||||
qDebug("Gravity : %f",NewData->mGravity);
|
||||
qDebug("Interval (s): %i",NewData->mInterval);
|
||||
qDebug("Name : %s",qPrintable(NewData->mIspindelName));
|
||||
qDebug("Units : %s",qPrintable(NewData->mTemperatureUnits));
|
||||
qDebug("Temperature : %f",NewData->mTemperature);
|
||||
|
||||
mDataLogger.WriteLogToFile(&mIspindelLog);
|
||||
emit NewIspindelDataReceived();
|
||||
|
||||
|
||||
// "ID" 6913415 QJsonValue (Number)
|
||||
// "RSSI" -65 QJsonValue (Number)
|
||||
// "angle" 89.59756 QJsonValue (Number)
|
||||
// "battery" 4.301355 QJsonValue (Number)
|
||||
// "gravity" 33.36325 QJsonValue (Number)
|
||||
// "interval" 10 QJsonValue (Number)
|
||||
// "name" "iSpindel001" QJsonValue (String)
|
||||
// "temp_units" "C" QJsonValue (String)
|
||||
// "temperature" 20.625 QJsonValue (Number)
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CIspindelDevice::IspindelClientDisconnected()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CIspindelDevice::~CIspindelDevice()
|
||||
{
|
||||
mISpindelServer->close();
|
||||
for(int i = 0; i < mIspindelLog.size(); i++)
|
||||
{
|
||||
delete mIspindelLog[i];
|
||||
mIspindelLog.clear();
|
||||
}
|
||||
}
|
||||
|
||||
CIspindelData *CIspindelDevice::GetLastestIspindelData()
|
||||
{
|
||||
if(mIspindelLog.size() > 0)
|
||||
return mIspindelLog.last();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
QByteArray CIspindelDevice::GetAllDataBuffer()
|
||||
{
|
||||
QByteArray Array;
|
||||
QDataStream Strm (&Array,QIODevice::WriteOnly | QIODevice::Unbuffered);
|
||||
|
||||
int Size = mIspindelLog.size();
|
||||
|
||||
Strm << Size;
|
||||
for(int i = 0; i < Size; i++)
|
||||
{
|
||||
Strm << *mIspindelLog.at(i);
|
||||
}
|
||||
|
||||
return Array;
|
||||
}
|
||||
|
||||
QByteArray CIspindelDevice::GetLastestIspindelDataBuffer()
|
||||
{
|
||||
QByteArray Buf;
|
||||
if(mIspindelLog.size() > 1)
|
||||
{
|
||||
Buf= mIspindelLog.last()->ToByteArray();
|
||||
}
|
||||
return Buf;
|
||||
}
|
||||
39
Sources/Ispindel/IspindelDevice.h
Normal file
39
Sources/Ispindel/IspindelDevice.h
Normal file
@ -0,0 +1,39 @@
|
||||
#ifndef ISPINDELDEVICE_H
|
||||
#define ISPINDELDEVICE_H
|
||||
|
||||
|
||||
#include <QObject>
|
||||
#include <QTcpServer>
|
||||
#include <QTcpSocket>
|
||||
#include "IspindelData.h"
|
||||
#include "IspindelDataLogger.h"
|
||||
#include <QList>
|
||||
|
||||
class CIspindelDevice: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
CIspindelDevice();
|
||||
~CIspindelDevice();
|
||||
|
||||
QTcpServer *mISpindelServer;
|
||||
QTcpSocket *mIspindelClientConnection;
|
||||
QList<CIspindelData*> mIspindelLog;
|
||||
CIspindelDataLogger mDataLogger;
|
||||
|
||||
CIspindelData *GetLastestIspindelData();
|
||||
QList<CIspindelData*> *GetAllData(){return &mIspindelLog;}
|
||||
QByteArray GetAllDataBuffer();
|
||||
QByteArray GetLastestIspindelDataBuffer();
|
||||
|
||||
|
||||
public slots:
|
||||
void IspindelClientConnected();
|
||||
void IspindelClientDataAvail();
|
||||
void IspindelClientDisconnected();
|
||||
|
||||
signals:
|
||||
void NewIspindelDataReceived();
|
||||
};
|
||||
|
||||
#endif // ISPINDELDEVICE_H
|
||||
44
Sources/Ispindel/IspindelInterface.cpp
Normal file
44
Sources/Ispindel/IspindelInterface.cpp
Normal file
@ -0,0 +1,44 @@
|
||||
#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;
|
||||
}
|
||||
}
|
||||
|
||||
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");
|
||||
|
||||
}
|
||||
22
Sources/Ispindel/IspindelInterface.h
Normal file
22
Sources/Ispindel/IspindelInterface.h
Normal file
@ -0,0 +1,22 @@
|
||||
#ifndef ISPINDELINTERFACE_H
|
||||
#define ISPINDELINTERFACE_H
|
||||
|
||||
#include "NetworkDevice.h"
|
||||
#include "IspindelDevice.h"
|
||||
|
||||
class CIspindelInterface: public QObject, public CNetworkDevice
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
CIspindelInterface(int Address, CAbstractNetworkCommIF *NetworkInterface, CIspindelDevice *DevicePtr);
|
||||
virtual int NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data);
|
||||
|
||||
private:
|
||||
CIspindelDevice *mISpindelDevice;
|
||||
|
||||
public slots:
|
||||
void SendLastIspindelData();
|
||||
|
||||
};
|
||||
|
||||
#endif // ISPINDELINTERFACE_H
|
||||
@ -21,6 +21,8 @@ CMasterCtrl::CMasterCtrl()
|
||||
mChaletLoraDevice = new CChaletLoraDevice(1,mChaletLoraNetworkCommInterface);
|
||||
// mChaletLoraInterface = new CChaletLoraInterface(mRooftopTowerLoraDevice);
|
||||
|
||||
mIspindelDevice = new CIspindelDevice;
|
||||
|
||||
|
||||
mEthernetNetworkServer = new CEthernetNetworkServer;
|
||||
mNetworkDevicesManager = new CNetworkDevicesMgr;
|
||||
@ -42,6 +44,7 @@ CMasterCtrl::~CMasterCtrl()
|
||||
delete mSprinklerManager;
|
||||
delete mChaletLoraNetworkCommInterface;
|
||||
delete mChaletLoraDevice;
|
||||
delete mIspindelDevice;
|
||||
// delete mMasterCtrlSettings;
|
||||
}
|
||||
|
||||
@ -69,6 +72,7 @@ void CMasterCtrl::Start()
|
||||
mNetworkDevicesManager->mSprinklerMgrHandle = mSprinklerManager;
|
||||
mNetworkDevicesManager->mAvReceiverDevice = mAVReceiverDevice;
|
||||
mNetworkDevicesManager->mChaletLoraDevice = mChaletLoraDevice;
|
||||
mNetworkDevicesManager->mIspindelDevice = mIspindelDevice;
|
||||
|
||||
|
||||
mEthernetNetworkServer->mDevicesMgrHandle = mNetworkDevicesManager;
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
//#include "ChaletLoraInterface.h"
|
||||
#include "LoraNetworkCommIF.h"
|
||||
#include "HttpServer.h"
|
||||
#include "IspindelDevice.h"
|
||||
|
||||
//#include "AppIconWidget.h"
|
||||
|
||||
@ -44,7 +45,9 @@ public:
|
||||
CLoraNetworkCommIF *mChaletLoraNetworkCommInterface;
|
||||
// CAppIconWidget mAppWidget;
|
||||
|
||||
CHttpServer mHttpServer;
|
||||
// CHttpServer mHttpServer;
|
||||
|
||||
CIspindelDevice *mIspindelDevice;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ CNetworkDevicesMgr::CNetworkDevicesMgr()
|
||||
mSprinklerMgrHandle = 0;
|
||||
mAvReceiverDevice = 0;
|
||||
mChaletLoraDevice = 0;
|
||||
mIspindelDevice = 0;
|
||||
}
|
||||
|
||||
CNetworkDevicesMgr::~CNetworkDevicesMgr()
|
||||
@ -104,6 +105,17 @@ int CNetworkDevicesMgr::CreateNewChaletInterface(int Address, CAbstractNetworkCo
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CNetworkDevicesMgr::CreateNewIspindleInterface(int Address, CAbstractNetworkCommIF *NetworkIF)
|
||||
{
|
||||
if(mIspindelDevice == 0)
|
||||
{
|
||||
return RET_ERROR;
|
||||
}
|
||||
CIspindelInterface *IspindelInterface = new CIspindelInterface(Address, NetworkIF, mIspindelDevice);
|
||||
mNetworkDevicesList.append((CNetworkDevice*)IspindelInterface);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
void CNetworkDevicesMgr::EthernetNetworkDeviceDisconnected(CNetworkDevice *Device)
|
||||
{
|
||||
qDebug("Device disconnected. ID: %d, Address: %d",Device->GetDeviceID(),Device->GetDeviceAddress());
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#include "AbstractNetworkInterface.h"
|
||||
#include "AvReceiverInterface.h"
|
||||
#include "ChaletInterface.h"
|
||||
#include "IspindelInterface.h"
|
||||
|
||||
#include "QList"
|
||||
#include <QObject>
|
||||
@ -18,6 +19,7 @@ class CContactRepository;
|
||||
class CSprinklerMgr;
|
||||
class CAVReceiverDevice;
|
||||
class CChaletLoraDevice;
|
||||
class CIspindelDevice;
|
||||
|
||||
class CNetworkDevicesMgr: public QObject
|
||||
{
|
||||
@ -34,6 +36,7 @@ public:
|
||||
int CreateNewSprinklerInterface(int Address, CAbstractNetworkCommIF *NetworkIF);
|
||||
int CreateNewAvReceiverInterface(int Address, CAbstractNetworkCommIF *NetworkIF);
|
||||
int CreateNewChaletInterface(int Address, CAbstractNetworkCommIF *NetworkIF);
|
||||
int CreateNewIspindleInterface(int Address, CAbstractNetworkCommIF *NetworkIF);
|
||||
|
||||
int FindDeviceByPtr(CNetworkDevice *Device);
|
||||
CNetworkDevice *GetDevice(int DeviceID, int Address);
|
||||
@ -41,6 +44,7 @@ public:
|
||||
|
||||
CAVReceiverDevice *mAvReceiverDevice;
|
||||
CChaletLoraDevice *mChaletLoraDevice;
|
||||
CIspindelDevice *mIspindelDevice;
|
||||
CVoipMsSMSClient *mVoipMSInterfaceHandle;
|
||||
CContactRepository *mContactRepositoryHandle;
|
||||
CMasterCtrl *mProgramHandle;
|
||||
|
||||
@ -60,6 +60,7 @@ enum DEVICES_IDS
|
||||
ID_AVRECEIVER_INTERFACE,
|
||||
ID_CHALET_INTERFACE,
|
||||
ID_CHALET_DEVICE,
|
||||
ID_ISPINDEL_INTERFACE,
|
||||
ID_NB_DEVICE_ID
|
||||
|
||||
};
|
||||
@ -274,6 +275,9 @@ enum CHALET_INTERFACE_CMDS
|
||||
CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_RESPONSE,
|
||||
CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_REQUEST,
|
||||
CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_RESPONSE,
|
||||
CHALET_INTERFACE_GET_FIRMWARE_VERSION_REQUEST,
|
||||
CHALET_INTERFACE_GET_FIRMWARE_VERSION_RESPONSE,
|
||||
|
||||
|
||||
|
||||
MAX_CHALET_INTERFACE_CMD
|
||||
@ -304,9 +308,22 @@ enum CHALET_CMDS
|
||||
CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE,
|
||||
CHALET_SET_STORED_WIFI_SETTINGS_REQUEST,
|
||||
CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE,
|
||||
CHALET_GET_FIRMWARE_VERSION_REQUEST,
|
||||
CHALET_GET_FIRMWARE_VERSION_RESPONSE,
|
||||
|
||||
|
||||
MAX_CHALET_CMD
|
||||
};
|
||||
|
||||
enum ISPINDLE_CMDS
|
||||
{
|
||||
ISPINDLE_ACK = 1,
|
||||
ISPINDLE_LATEST_DATA_REQUEST,
|
||||
ISPINDLE_LATEST_DATA_RESPONSE,
|
||||
ISPINDEL_GET_FULL_DATA_BUFFER_REQUEST,
|
||||
ISPINDEL_GET_FULL_DATA_BUFFER_RESPONSE,
|
||||
|
||||
MAX_ISPINDLE_CMDS
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@ -16,7 +16,7 @@ CVoipMsSMSClient::CVoipMsSMSClient()
|
||||
|
||||
mVOIPMsNotificationServer = new QTcpServer;
|
||||
connect(mVOIPMsNotificationServer,SIGNAL(newConnection()),this,SLOT(VoipNotificationServerConnected()));
|
||||
mVOIPMsNotificationServer->listen(QHostAddress::Any,80);
|
||||
// mVOIPMsNotificationServer->listen(QHostAddress::Any,80);
|
||||
|
||||
mCheckNewSMSTimer = new QTimer();
|
||||
connect(mCheckNewSMSTimer,SIGNAL(timeout()),this,SLOT(CheckNewSMSTimerExpired()));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user