|
|
@ -190,44 +190,37 @@ class Inverter { |
|
|
|
mDevControlRequest = false; |
|
|
|
} else if (IV_MI != ivGen) { // HM / HMS / HMT
|
|
|
|
mGetLossInterval++; |
|
|
|
if(mNextLive) |
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
else { |
|
|
|
if(INV_RADIO_TYPE_NRF == ivRadioType) { |
|
|
|
// get live data until quality reaches maximum
|
|
|
|
if(!heuristics.isTxAtMax()) { |
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(actPowerLimit == 0xffff) { |
|
|
|
cb(SystemConfigPara, false); // power limit info
|
|
|
|
cb(RealTimeRunData_Debug, false); |
|
|
|
} else if(InitDataState != devControlCmd) { |
|
|
|
cb(devControlCmd, false); // custom command which was received by API
|
|
|
|
devControlCmd = InitDataState; |
|
|
|
mGetLossInterval = 1; |
|
|
|
} else if(0 == getFwVersion()) { |
|
|
|
cb(InverterDevInform_All, false); // get firmware version
|
|
|
|
if(INV_RADIO_TYPE_NRF == ivRadioType) { |
|
|
|
// get live data until quality reaches maximum
|
|
|
|
if(!heuristics.isTxAtMax()) { |
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
return; |
|
|
|
} |
|
|
|
else if(0 == getHwVersion()) { |
|
|
|
cb(InverterDevInform_Simple, false); // get hardware version
|
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
} else if((alarmLastId != alarmMesIndex) && (alarmMesIndex != 0)) { |
|
|
|
cb(AlarmData, false); // get last alarms
|
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
} else if((0 == mGridLen) && generalConfig->readGrid) { // read grid profile
|
|
|
|
cb(GridOnProFilePara, false); |
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
} else if (mGetLossInterval > AHOY_GET_LOSS_INTERVAL) { // get loss rate
|
|
|
|
mGetLossInterval = 1; |
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
cb(GetLossRate, false); |
|
|
|
} else |
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
} |
|
|
|
|
|
|
|
if(actPowerLimit == 0xffff) { |
|
|
|
cb(SystemConfigPara, false); // power limit info
|
|
|
|
} else if(InitDataState != devControlCmd) { |
|
|
|
cb(devControlCmd, false); // custom command which was received by API
|
|
|
|
devControlCmd = InitDataState; |
|
|
|
mGetLossInterval = 1; |
|
|
|
return; |
|
|
|
} else if(0 == getFwVersion()) { |
|
|
|
cb(InverterDevInform_All, false); // get firmware version
|
|
|
|
} else if(0 == getHwVersion()) { |
|
|
|
cb(InverterDevInform_Simple, false); // get hardware version
|
|
|
|
} else if((alarmLastId != alarmMesIndex) && (alarmMesIndex != 0)) { |
|
|
|
cb(AlarmData, false); // get last alarms
|
|
|
|
} else if((0 == mGridLen) && generalConfig->readGrid) { // read grid profile
|
|
|
|
cb(GridOnProFilePara, false); |
|
|
|
} else if (mGetLossInterval > AHOY_GET_LOSS_INTERVAL) { // get loss rate
|
|
|
|
mGetLossInterval = 1; |
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
cb(GetLossRate, false); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
cb(RealTimeRunData_Debug, false); // get live data
|
|
|
|
} else { // MI
|
|
|
|
cb(((type == INV_TYPE_4CH) ? MI_REQ_4CH : MI_REQ_CH1), false); |
|
|
|
mGetLossInterval++; |
|
|
@ -279,21 +272,18 @@ class Inverter { |
|
|
|
} |
|
|
|
|
|
|
|
const char *getFieldName(uint8_t pos, record_t<> *rec) { |
|
|
|
DPRINTLN(DBG_VERBOSE, F("hmInverter.h:getFieldName")); |
|
|
|
if(NULL != rec) |
|
|
|
return fields[rec->assign[pos].fieldId]; |
|
|
|
return notAvail; |
|
|
|
} |
|
|
|
|
|
|
|
const char *getUnit(uint8_t pos, record_t<> *rec) { |
|
|
|
DPRINTLN(DBG_VERBOSE, F("hmInverter.h:getUnit")); |
|
|
|
if(NULL != rec) |
|
|
|
return units[rec->assign[pos].unitId]; |
|
|
|
return notAvail; |
|
|
|
} |
|
|
|
|
|
|
|
uint8_t getChannel(uint8_t pos, record_t<> *rec) { |
|
|
|
DPRINTLN(DBG_VERBOSE, F("hmInverter.h:getChannel")); |
|
|
|
if(NULL != rec) |
|
|
|
return rec->assign[pos].ch; |
|
|
|
return 0; |
|
|
@ -350,7 +340,6 @@ class Inverter { |
|
|
|
} |
|
|
|
|
|
|
|
if(rec == &recordMeas) { |
|
|
|
mNextLive = false; // live data received
|
|
|
|
DPRINTLN(DBG_VERBOSE, "add real time"); |
|
|
|
// get last alarm message index and save it in the inverter object
|
|
|
|
if (getPosByChFld(0, FLD_EVT, rec) == pos) { |
|
|
@ -363,7 +352,6 @@ class Inverter { |
|
|
|
} |
|
|
|
} |
|
|
|
else { |
|
|
|
mNextLive = true; |
|
|
|
if (rec->assign == InfoAssignment) { |
|
|
|
DPRINTLN(DBG_DEBUG, "add info"); |
|
|
|
// eg. fw version ...
|
|
|
@ -868,7 +856,6 @@ class Inverter { |
|
|
|
uint8_t mGridLen = 0; |
|
|
|
uint8_t mGridProfile[MAX_GRID_LENGTH]; |
|
|
|
uint8_t mAlarmNxtWrPos = 0; // indicates the position in array (rolling buffer)
|
|
|
|
bool mNextLive = true; // first read live data after booting up then version etc.
|
|
|
|
|
|
|
|
public: |
|
|
|
uint16_t mDtuRxCnt = 0; |
|
|
|