removed absolute positions, fix for part def

This commit is contained in:
john30
2014-11-22 13:37:24 +01:00
parent e18d3af04f
commit 1f33218692
2 changed files with 6 additions and 6 deletions
+4 -4
View File
@@ -139,12 +139,12 @@ result_t Message::prepare(const unsigned char srcAddress, SymbolString& masterDa
masterData.push_back(m_dstAddress, false);
masterData.push_back(m_id[0], false);
masterData.push_back(m_id[1], false);
unsigned char addData = m_data->getNextOffset(pt_masterData);
unsigned char addData = m_data->getLength(pt_masterData);
masterData.push_back(m_id.size() - 2 + addData, false);
for (size_t i=2; i<m_id.size(); i++)
masterData.push_back(m_id[i], false);
SymbolString slaveData;
result_t result = m_data->write(input, masterData, slaveData, separator); // TODO m_id.size() - 2
result_t result = m_data->write(input, masterData, m_id.size() - 2, slaveData, 0, separator);
if (result != RESULT_OK)
return result;
masterData.push_back(masterData.getCRC(), false, false);
@@ -156,13 +156,13 @@ result_t Message::handle(SymbolString& masterData, SymbolString& slaveData,
std::ostringstream& output, char separator, bool answer)
{
if (m_isActiveMessage == true) {
result_t result = m_data->read(masterData, slaveData, output, false, separator);
result_t result = m_data->read(masterData, m_id.size() - 2, slaveData, 0, output, false, separator);
if (result != RESULT_OK)
return result;
}
else if (answer == true) {
std::istringstream input; // TODO create input from database of internal variables
result_t result = m_data->write(input, masterData, slaveData, separator);
result_t result = m_data->write(input, masterData, m_id.size() - 2, slaveData, 0, separator);
if (result != RESULT_OK)
return result;
}
+2 -2
View File
@@ -66,12 +66,12 @@ void printErrorPos(std::vector<std::string>::iterator it, const std::vector<std:
int main()
{
// message= [type];class;name;[comment];[QQ];ZZ;id;fields...
// message= [type];class;name;[comment];[QQ];ZZ;PBSB;fields...
// field= name;[pos];type[;[divisor|values][;[unit][;[comment]]]]
std::string checks[][5] = {
// "message", "flags"
{";;first;;;fe;0700;x;;bda", "26.10.2014", "fffe0700042610001451", "00", ""},
{";;first;;;15;b5090400;date;1;bda", "26.10.2014", "ff15b50904040026100014cc", "00", ""},
{"w;;first;;;15;b5090400;date;;bda", "26.10.2014", "ff15b5090604002610001445", "00", ""},
};
std::map<std::string, DataField*> templates;
Message* message = NULL;