163 lines
5.3 KiB
C++
163 lines
5.3 KiB
C++
#include "ChaletInterface.h"
|
|
#include "ChaletDataLogger.h"
|
|
|
|
CChaletInterface::CChaletInterface(int Address, CAbstractNetworkCommIF *NetworkInterface, CChaletLoraDevice *DevicePtr):
|
|
CNetworkDevice(ID_CHALET_INTERFACE,Address,NetworkInterface)
|
|
{
|
|
mChaletLoraDevice = DevicePtr;
|
|
mChaletDataLogger = mChaletLoraDevice->GetDataLoggerHandle();
|
|
|
|
connect(mChaletLoraDevice,SIGNAL(DeviceWifiStoredParamsReceived()),this,SLOT(DeviceWiFiDataReceived()));
|
|
connect(mChaletLoraDevice,SIGNAL(DeviceFirmwareVersionReceived()),this,SLOT(DeviceFirmwareVersionReceived()));
|
|
|
|
}
|
|
|
|
|
|
int CChaletInterface::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 CHALET_INTERFACE_ACK:
|
|
{
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_GENERAL_STATUS_REQUEST:
|
|
{
|
|
QByteArray data = mChaletLoraDevice->GetChaletMainStatus().ToByteArray();
|
|
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_GENERAL_STATUS_RESPONSE,data.size(),&data);
|
|
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_AC_POWER_STATE_STATUS_REQUEST:
|
|
{
|
|
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_AC_POWER_SET_STATE_REQUEST:
|
|
{
|
|
qDebug("AC power state set request received from interface");
|
|
if(Data[0] == (char)1)
|
|
{
|
|
mChaletLoraDevice->SendInverterPowerRelayState(true);
|
|
}
|
|
else if(Data[0] == (char)0)
|
|
{
|
|
mChaletLoraDevice->SendInverterPowerRelayState(false);
|
|
}
|
|
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_BATTERY_VOLTAGE_REQUEST:
|
|
{
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_WIFI_SET_STATE_REQUEST:
|
|
{
|
|
qDebug("WiFi state set request received from interface");
|
|
if(Data[0] == (char)1)
|
|
{
|
|
mChaletLoraDevice->SendWiFiModuleSetState(true);
|
|
}
|
|
else if(Data[0] == (char)0)
|
|
{
|
|
mChaletLoraDevice->SendWiFiModuleSetState(false);
|
|
}
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_DO_HARAKIRI_REQUEST:
|
|
{
|
|
mChaletLoraDevice->SendDOHarakiri();
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_REBOOT_CPU_REQUEST:
|
|
{
|
|
mChaletLoraDevice->SendRebootCmd();
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_GET_TODAYS_DATA_LOG_REQUEST:
|
|
{
|
|
QByteArray *data = mChaletDataLogger->GetTodaysData();
|
|
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_GET_TODAYS_DATA_LOG_RESPONSE,data->size(),data);
|
|
delete data;
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_GET_DATA_LOG_REQUEST:
|
|
{
|
|
QDate StartDate;
|
|
QDataStream Strm(Data);
|
|
Strm >> StartDate;
|
|
QByteArray *data = mChaletDataLogger->GetChaletData(StartDate);
|
|
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_GET_DATA_LOG_RESPONSE,data->size(),data);
|
|
delete data;
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_REQUEST:
|
|
{
|
|
mChaletLoraDevice->SendGetWifiParams();
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_REQUEST:
|
|
{
|
|
mChaletLoraDevice->SendSetWifiParams(Data);
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_GET_FIRMWARE_VERSION_REQUEST:
|
|
{
|
|
mChaletLoraDevice->SendGetFirmwareVersion();
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_CLEAR_COMMS_STATS_REQUEST:
|
|
{
|
|
|
|
mChaletLoraDevice->SendClearCommStatsRequest();
|
|
// mChaletLoraDevice->ResetCommStats();
|
|
break;
|
|
}
|
|
case CHALET_INTERFACE_WIFI_GET_DEVICE_PARAMS_RESPONSE:
|
|
case CHALET_INTERFACE_WIFI_SET_DEVICE_PARAMS_RESPONSE:
|
|
case CHALET_INTERFACE_GET_DATA_LOG_RESPONSE:
|
|
case CHALET_INTERFACE_GET_TODAYS_DATA_LOG_RESPONSE:
|
|
case CHALET_INTERFACE_GENERAL_STATUS_RESPONSE:
|
|
case CHALET_INTERFACE_AC_POWER_STATE_STATUS_RESPONSE:
|
|
case CHALET_INTERFACE_AC_POWER_SET_STATE_RESPONSE:
|
|
case CHALET_INTERFACE_BATTERY_VOLTAGE_RESPONSE:
|
|
case CHALET_INTERFACE_WIFI_SET_STATE_RESPONSE:
|
|
case CHALET_INTERFACE_CLEAR_COMMS_STATS_RESPONSE:
|
|
{
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
void CChaletInterface::SendChaletCommActivityBeacon()
|
|
{
|
|
mNetworkInterfacePtr->SendNetworkMessage(ID_CHALET_INTERFACE,mDeviceAddress,CHALET_INTERFACE_CHALET_ACTIVITY_RESPONSE,0,0);
|
|
}
|
|
|
|
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);
|
|
}
|