Esempio n. 1
0
void tAt5PreAtlas::CreateEncryptionKeys(QIODevice& device, boost::shared_ptr< tChPreAtlasHdr > xPreAtlas,
                                        boost::shared_ptr< tChAtlasHdr> xAtlasHdr, 
                                        QString typeStr, QString serialNum, std::vector<ulong>& keyList)
{
    tAt5Stream stream;
    tChPreAtlasHdr* pPreAtlas = xPreAtlas.get();
    if (!pPreAtlas)
        return;

    tChAtlasHdr* pAtlasHdr = xAtlasHdr.get();
    if (!pAtlasHdr)
        return;

    tAt5AtlasVersion atlas_version = pAtlasHdr->GetAt5Version();

    // Now build Signature string
    std::vector<uchar> Signature;

    // Add type string to Signature
    QByteArray tmpAsciiStr = typeStr.toAscii();
    for (int ts = 0; ts < tmpAsciiStr.size(); ts++)
        Signature.push_back(tmpAsciiStr[ts]);

    // Add serial number
    for (int sn = 0; sn < serialNum.size(); sn+= 2)
    {
        QByteArray arr;
        arr.append(serialNum[sn].toAscii());
        arr.append(serialNum[sn+1].toAscii());
        uchar sigChar = (uchar) arr.toUShort(0, 16);
        Signature.push_back(sigChar);
    }

    // Add Atlas checksum
    Signature.insert(Signature.end(), (uchar*)&(pPreAtlas->AtlasHdrCksum.m_Val) , ((uchar*)&(pPreAtlas->AtlasHdrCksum.m_Val)+2));

    // Add last byte of map.
    ulong LastCartPos = pPreAtlas->DataSize() + pPreAtlas->AtlasCartPos.m_Val + pPreAtlas->AtlasDataLen.m_Val - 1;
    stream.InsStrm(device, atlas_version.m_MajorAtlasVer, atlas_version.m_MinorAtlasVer, LastCartPos, 1);
    tCdUchar LastChar;
    stream >> LastChar;
    Signature.push_back(LastChar.m_Val);

    ulong AckStart = pPreAtlas->AtlasCartPos.m_Val + pPreAtlas->DataSize() + pPreAtlas->AtlasHdrLen.m_Val + 
        pAtlasHdr->AcknowledgeListPos.m_Val;

    stream.ClearBuff();
    if (pAtlasHdr->AcknowledgeListLen.m_Val != 0)
    {
        stream.InsStrm(device, atlas_version.m_MajorAtlasVer, atlas_version.m_MinorAtlasVer, AckStart, pAtlasHdr->AcknowledgeListLen.m_Val);

        for (uint ackIndex = 0; ackIndex < pAtlasHdr->AcknowledgeListLen.m_Val; ++ackIndex)
        {
            tCdUchar ackChar;
            stream >> ackChar;
            Signature.push_back(ackChar.m_Val);
        }
    }
Esempio n. 2
0
/**@brief convert QString to unsigned short int (2 bytes, 16 bits);
 *
 *@param str [IN]: the string to convert;
 *@param data [OUT]: the result is stored in this parm;
 *@return bool, if convert succeed, return true; else, return false;
 *@note
 */
bool Lms511Thread::Str2Uint_16(QByteArray str, unsigned short int *data)
{
    bool ok;
    *data = str.toUShort(&ok, 16);
    return ok;
}
Esempio n. 3
0
bool
Field::setDefaultValue(const QByteArray& def)
{
    if (def.isNull()) {
        m_defaultValue = QVariant();
        return true;
    }

    bool ok;
    switch (type()) {
    case Byte: {
        unsigned int v = def.toUInt(&ok);
        if (!ok || v > 255)
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant(v);
        break;
    }
    case ShortInteger: {
        int v = def.toInt(&ok);
        if (!ok || (!(m_options & Unsigned) && (v < -32768 || v > 32767)) || ((m_options & Unsigned) && (v < 0 || v > 65535)))
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant(v);
        break;
    }
    case Integer: {//4 bytes
        long v = def.toLong(&ok);
//js: FIXME   if (!ok || (!(m_options & Unsigned) && (-v > 0x080000000 || v > (0x080000000-1))) || ((m_options & Unsigned) && (v < 0 || v > 0x100000000)))
        if (!ok || (!(m_options & Unsigned) && (-v > (int)0x07FFFFFFF || v > (int)(0x080000000 - 1))))
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant((qint64)v);
        break;
    }
    case BigInteger: {//8 bytes
//! @todo BigInteger support
        /*
              qint64 long v = def.toLongLong(&ok);
        //TODO: 2-part decoding
              if (!ok || (!(m_options & Unsigned) && (-v > 0x080000000 || v > (0x080000000-1))))
                m_defaultValue = QVariant();
              else
                if (m_options & Unsigned)
                  m_defaultValue=QVariant((quint64) v);
                else
                  m_defaultValue = QVariant((qint64)v);*/
        break;
    }
    case Boolean: {
        unsigned short v = def.toUShort(&ok);
        if (!ok || v > 1)
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant((bool)v);
        break;
    }
    case Date: {//YYYY-MM-DD
        QDate date = QDate::fromString(def, Qt::ISODate);
        if (!date.isValid())
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant(date);
        break;
    }
    case DateTime: {//YYYY-MM-DDTHH:MM:SS
        QDateTime dt = QDateTime::fromString(def, Qt::ISODate);
        if (!dt.isValid())
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant(dt);
        break;
    }
    case Time: {//HH:MM:SS
        QTime time = QTime::fromString(def, Qt::ISODate);
        if (!time.isValid())
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant(time);
        break;
    }
    case Float: {
        float v = def.toFloat(&ok);
        if (!ok || ((m_options & Unsigned) && (v < 0.0)))
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant(v);
        break;
    }
    case Double: {
        double v = def.toDouble(&ok);
        if (!ok || ((m_options & Unsigned) && (v < 0.0)))
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant(v);
        break;
    }
    case Text: {
        if (def.isNull() || (uint(def.length()) > maxLength()))
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant((QString)def);
        break;
    }
    case LongText: {
        if (def.isNull())
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant((QString)def);
        break;
    }
    case BLOB: {
//TODO
        if (def.isNull())
            m_defaultValue = QVariant();
        else
            m_defaultValue = QVariant(def);
        break;
    }
    default:
        m_defaultValue = QVariant();
    }
    return m_defaultValue.isNull();
}