// verify checksum on chunk data // (after unpacking) // bool XpkTags::verifyChecksum(XpkChunk *pChunk, CIOBuffer *pOutBuffer) { uint8_t *pBuf = pOutBuffer->GetAt(pOutBuffer->GetCurrentPos() - pChunk->m_UnLen); uint16_t checksum = cchecksum((uint32_t*)pBuf, pChunk->m_UnLen); if (checksum == pChunk->m_ChunkChecksum) { return true; } return false; }
/*! * \brief Rs232DevicePrivate::sendMsg - Richiamata solo privatamente per spedire "fisicamente" * i messaggi verso il device * \param bufferIn */ void Rs232DevicePrivate::sendMsg(const QByteArray &bufferIn) { QByteArray bufferOut; quint8 checksum = cchecksum(bufferIn); encode(bufferIn, bufferOut); bufferOut.append(~checksum); if (m_debug) { QDebug debugBuffer = qDebug(); debugBuffer << headDebug << "Tx "; quint8 var; foreach (var, bufferOut) { debugBuffer << hex << var; } } write(bufferOut); flush(); }