Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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>());
  }
}