void EmsData::acceptLocalFlashBlockForDevice(unsigned short locationid) { setDeviceFlashBlock(locationid,getLocalFlashBlock(locationid)); if (isLocalFlashDirty(locationid)) { markLocalFlashLocationClean(locationid); } }
void EmsData::flashBlockUpdate(unsigned short locationid, QByteArray header, QByteArray payload) { QLOG_TRACE() << "Flash Block retrieved:" << "0x" + QString::number(locationid,16).toUpper(); Q_UNUSED(header) for (int l=0;l<getChildrenOfLocalFlashLocation(locationid).size();l++) { unsigned short childid = getChildrenOfLocalFlashLocation(locationid)[l]; QList<ConfigBlock> configlist = m_memoryMetaData->getConfigMetaData(QString::number(childid,16).toUpper()); QLOG_TRACE() << "Location" << QString::number(childid,16).toUpper() << "Size:" << configlist.size(); for (int i=0;i<configlist.size();i++) { //configlist[i].offset() QString valstr = ""; QString bytestr = ""; for (int k=0;k<configlist[i].size();k++) { unsigned int value = 0; for (int j=0;j<configlist[i].elementSize();j++) { //QLOG_DEBUG() << (unsigned char)block[m_fieldConfigList[i].second.offset() + (k * m_fieldConfigList[i].second.elementSize()) + j]; bytestr += QString::number((unsigned char)payload[configlist[i].offset() + (k * configlist[i].elementSize()) + j],16).toUpper() + ","; value += ((unsigned char)payload[configlist[i].offset() + (k * configlist[i].elementSize()) + j]) << (8 * (configlist[i].elementSize() - (j+1))); } //userValue = (ecuValue + translate) * scale valstr += QString::number(calcAxis(value,configlist[i].calc())) + ","; } valstr = valstr.mid(0,valstr.length()-1); QLOG_DEBUG() << "Pre value:" << "0x" + QString::number(locationid,16) << bytestr; //valstr == variable. emit configRecieved(configlist[i],QVariant(valstr)); } } if (!verifyMemoryBlock(locationid,header,payload)) { //QMessageBox::information(this,"Error","Flash Location ID 0x" + QString::number(locationid,16).toUpper() + " should be 1024 sized, but it is " + QString::number(payload.size()) + ". This should never happen"); QLOG_ERROR() << "Flash Location ID 0x" + QString::number(locationid,16).toUpper() + " should be 1024 sized, but it is " + QString::number(payload.size()) + ". This should never happen"; return; } if (hasDeviceFlashBlock(locationid)) { if (getDeviceFlashBlock(locationid).isEmpty()) { setLocalFlashBlock(locationid,payload); setDeviceFlashBlock(locationid,payload); emit updateRequired(locationid); return; } else { if (m_interrogationInProgress) { //checkEmsData->setDeviceFlashBlock(locationid,payload); for (int i=0;i<m_duplicateFlashMemoryList.size();i++) { if (m_duplicateFlashMemoryList[i]->locationid == locationid) { m_duplicateFlashMemoryList[i]->setData(payload); break; } } m_checkEmsDataInUse = true; } else { if (getDeviceFlashBlock(locationid) != payload) { QLOG_ERROR() << "Flash block in memory does not match flash block on tuner! This should not happen!"; QLOG_ERROR() << "Flash size:" << getDeviceFlashBlock(locationid).size(); QLOG_ERROR() << "Flash ID:" << "0x" + QString::number(locationid,16).toUpper(); setDeviceFlashBlock(locationid,payload); } if (getLocalFlashBlock(locationid) != payload) { setLocalFlashBlock(locationid,payload); } } } } emit updateRequired(locationid); //updateDataWindows(locationid); return; }