Beispiel #1
0
bool QBBVirtualKeyboard::connect()
{
    close();

    mEncoder = new pps_encoder_t;
    mDecoder = new pps_decoder_t;

    pps_encoder_initialize(mEncoder, false);
    pps_decoder_initialize(mDecoder, NULL);

    errno = 0;
    mFd = ::open(sPPSPath, O_RDWR);
    if (mFd == -1)
    {
        qCritical("QBBVirtualKeyboard: Unable to open \"%s\" for keyboard: %s (%d).",
                sPPSPath, strerror(errno), errno);
        close();
        return false;
    }

    mBuffer = new char[sBufferSize];
    if (!mBuffer) {
        qCritical("QBBVirtualKeyboard: Unable to allocate buffer of %d bytes. Size is unavailable.",  sBufferSize);
        return false;
    }

    if (!queryPPSInfo())
        return false;

    start();

    return true;
}
bool QQnxVirtualKeyboardPps::connect()
{
    close();

    m_encoder = new pps_encoder_t;
    m_decoder = new pps_decoder_t;

    pps_encoder_initialize(m_encoder, false);
    pps_decoder_initialize(m_decoder, 0);

    errno = 0;
    m_fd = ::open(ms_PPSPath, O_RDWR);
    if (m_fd == -1)
    {
        qCritical("QQnxVirtualKeyboard: Unable to open \"%s\" for keyboard: %s (%d).",
                ms_PPSPath, strerror(errno), errno);
        close();
        return false;
    }

    m_buffer = new char[ms_bufferSize];
    if (!m_buffer) {
        qCritical("QQnxVirtualKeyboard: Unable to allocate buffer of %d bytes. Size is unavailable.",  ms_bufferSize);
        return false;
    }

    if (!queryPPSInfo())
        return false;

    m_readNotifier = new QSocketNotifier(m_fd, QSocketNotifier::Read);
    QObject::connect(m_readNotifier, SIGNAL(activated(int)), this, SLOT(ppsDataReady()));

    return true;
}
Beispiel #3
0
pps_encoder_t *beginCtrlMessage(const char *msg, QObject *sender)
{
    pps_encoder_t *encoder= new pps_encoder_t;
    pps_encoder_initialize(encoder, 0);
    pps_encoder_add_string(encoder, "msg", msg);
    ctrlId++;
    pps_encoder_add_string(encoder, "id", QString::number(ctrlId).toStdString().c_str() );
    waitingCtrlMsgs.append(QPair<int, QObject*>(ctrlId, sender));
    return encoder;
}
Beispiel #4
0
QByteArray QPpsObjectPrivate::encode(const QVariantMap &ppsData, bool *ok)
{
    pps_encoder_t encoder;
    pps_encoder_initialize(&encoder, false);

    encodeObject(&encoder, ppsData, ok);
    const char *rawData = 0;
    if (*ok) {
        // rawData points to a memory owned by encoder.
        // The memory will be freed when pps_encoder_cleanup is called.
        rawData = pps_encoder_buffer(&encoder);
        if (!rawData) {
            qWarning() << "QPpsObjectPrivate::encode: pps_encoder_buffer failed";
            *ok = false;
        }
    }

    pps_encoder_cleanup(&encoder);
    return QByteArray(rawData);
}