void tCougarIO::SetCSMSettings(tCSMSettings* pNewSettings) { QByteArray bytesResponse = tCSMSettings::GetBytesFromCSMSettings(pNewSettings, CSM_SETTINGS_SIZE, true); unsigned short dataCRC = tSPIDataProcessing::CalculateCRC_16bits(bytesResponse); unsigned short dataLength = static_cast<unsigned short>(bytesResponse.count()); QByteArray msgResponse(CSM_SETTINGS_SIZE + 10, 0); int index = 0; // Start Sequence msgResponse.data()[index++] = ((tSPIDataProcessing::MESSAGE_START_SEQUENCE & 0x00FF) >> 0); msgResponse.data()[index++] = ((tSPIDataProcessing::MESSAGE_START_SEQUENCE & 0xFF00) >> 8); // MsgID #if USE_HEADER_CHECKSUM msgResponse.data()[index++] = (tSPIDataProcessing::MSG_ID_SET_CSM_SETTINGS & 0xFF); int headerIndex = 0; QByteArray HeaderData(7, 0); HeaderData.data()[headerIndex++] = ((tSPIDataProcessing::MESSAGE_START_SEQUENCE & 0x00FF) >> 0); HeaderData.data()[headerIndex++] = ((tSPIDataProcessing::MESSAGE_START_SEQUENCE & 0xFF00) >> 8); HeaderData.data()[headerIndex++] = (tSPIDataProcessing::MSG_ID_SET_CSM_SETTINGS & 0xFF); HeaderData.data()[headerIndex++] = ((dataLength & 0x00FF) >> 0); HeaderData.data()[headerIndex++] = ((dataLength & 0xFF00) >> 8); HeaderData.data()[headerIndex++] = ((dataCRC & 0x00FF) >> 0); HeaderData.data()[headerIndex++] = ((dataCRC & 0xFF00) >> 8); if(m_CSMSoftwareVersion >= HEADER_CHECKSUM_CSM_SOFTWARE_VERSION) msgResponse.data()[index++] = tSPIDataProcessing::CalculateChecksum_8bits(HeaderData); else msgResponse.data()[index++] = 0; #else msgResponse.data()[index++] = ((tSPIDataProcessing::MSG_ID_SET_CSM_SETTINGS & 0x00FF) >> 0); msgResponse.data()[index++] = ((tSPIDataProcessing::MSG_ID_SET_CSM_SETTINGS & 0xFF00) >> 8); #endif // DataLenght msgResponse.data()[index++] = ((dataLength & 0x00FF) >> 0); msgResponse.data()[index++] = ((dataLength & 0xFF00) >> 8); // Data CRC msgResponse.data()[index++] = ((dataCRC & 0x00FF) >> 0); msgResponse.data()[index++] = ((dataCRC & 0xFF00) >> 8); //DbgPrintf("Checksum = %x", dataCRC); // Data memcpy((msgResponse.data() + index), bytesResponse.data(), dataLength); index += bytesResponse.count(); // End Sequence msgResponse.data()[index++] = ((tSPIDataProcessing::MESSAGE_END_SEQUENCE & 0x00FF) >> 0); msgResponse.data()[index++] = ((tSPIDataProcessing::MESSAGE_END_SEQUENCE & 0xFF00) >> 8); Assert(index <= msgResponse.size()); m_DrvSPI->Write(msgResponse); }
void WStandardItemModel::insertHeaderData(std::vector<HeaderData>& headerData, std::vector<WFlags<HeaderFlag> >& fl, WStandardItem *item, int index, int count) { if (item == invisibleRootItem_) { headerData.insert(headerData.begin() + index, count, HeaderData()); fl.insert(fl.begin() + index, count, WFlags<HeaderFlag>()); } }