also refresh last update time when storing master data for master-master message
This commit is contained in:
@@ -626,14 +626,16 @@ result_t Message::prepareSlave(istringstream& input, SymbolString& slaveData)
|
|||||||
result_t Message::storeLastData(SymbolString& master, SymbolString& slave)
|
result_t Message::storeLastData(SymbolString& master, SymbolString& slave)
|
||||||
{
|
{
|
||||||
result_t result = storeLastData(pt_masterData, master, 0);
|
result_t result = storeLastData(pt_masterData, master, 0);
|
||||||
if (result>=RESULT_OK)
|
if (result>=RESULT_OK) {
|
||||||
result = storeLastData(pt_slaveData, slave, 0);
|
result = storeLastData(pt_slaveData, slave, 0);
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
result_t Message::storeLastData(const PartType partType, SymbolString& data, unsigned char index)
|
result_t Message::storeLastData(const PartType partType, SymbolString& data, unsigned char index)
|
||||||
{
|
{
|
||||||
if (data.size() > 0 && (this->m_dstAddress == BROADCAST || partType == pt_slaveData)) {
|
if (data.size() > 0
|
||||||
|
&& (this->m_dstAddress == BROADCAST || partType == pt_slaveData || (partType == pt_masterData && isMaster(this->m_dstAddress)))) {
|
||||||
time(&m_lastUpdateTime);
|
time(&m_lastUpdateTime);
|
||||||
}
|
}
|
||||||
if (partType == pt_masterData) {
|
if (partType == pt_masterData) {
|
||||||
@@ -958,8 +960,9 @@ result_t ChainedMessage::storeLastData(SymbolString& master, SymbolString& slave
|
|||||||
unsigned char index = 0;
|
unsigned char index = 0;
|
||||||
if (checkId(master, &index)) {
|
if (checkId(master, &index)) {
|
||||||
result_t result = storeLastData(pt_masterData, master, index);
|
result_t result = storeLastData(pt_masterData, master, index);
|
||||||
if (result>=RESULT_OK)
|
if (result>=RESULT_OK) {
|
||||||
result = storeLastData(pt_slaveData, slave, index);
|
result = storeLastData(pt_slaveData, slave, index);
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return RESULT_ERR_INVALID_ARG;
|
return RESULT_ERR_INVALID_ARG;
|
||||||
@@ -967,8 +970,9 @@ result_t ChainedMessage::storeLastData(SymbolString& master, SymbolString& slave
|
|||||||
|
|
||||||
result_t ChainedMessage::storeLastData(const PartType partType, SymbolString& data, unsigned char index)
|
result_t ChainedMessage::storeLastData(const PartType partType, SymbolString& data, unsigned char index)
|
||||||
{
|
{
|
||||||
if (index>=m_ids.size())
|
if (index>=m_ids.size()) {
|
||||||
return RESULT_ERR_INVALID_ARG;
|
return RESULT_ERR_INVALID_ARG;
|
||||||
|
}
|
||||||
if (partType == pt_masterData) {
|
if (partType == pt_masterData) {
|
||||||
switch (data.compareMaster(*m_lastMasterDatas[index])) {
|
switch (data.compareMaster(*m_lastMasterDatas[index])) {
|
||||||
case 1: // completely different
|
case 1: // completely different
|
||||||
@@ -1025,13 +1029,15 @@ result_t ChainedMessage::storeLastData(const PartType partType, SymbolString& da
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// adjust NN
|
// adjust NN
|
||||||
if (master.size()-5>255 || slave.size()-1>255)
|
if (master.size()-5>255 || slave.size()-1>255) {
|
||||||
return RESULT_ERR_INVALID_POS;
|
return RESULT_ERR_INVALID_POS;
|
||||||
|
}
|
||||||
master[4] = (unsigned char)(master.size()-5);
|
master[4] = (unsigned char)(master.size()-5);
|
||||||
slave[0] = (unsigned char)(slave.size()-1);
|
slave[0] = (unsigned char)(slave.size()-1);
|
||||||
result_t result = Message::storeLastData(pt_masterData, master, 0);
|
result_t result = Message::storeLastData(pt_masterData, master, 0);
|
||||||
if (result==RESULT_OK)
|
if (result==RESULT_OK) {
|
||||||
result = Message::storeLastData(pt_slaveData, slave, 0);
|
result = Message::storeLastData(pt_slaveData, slave, 0);
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user