bool QSerialPortPrivate::clear(QSerialPort::Directions directions) { if (deviceId == BAD_PORT) { q_ptr->setError(QSerialPort::NotOpenError); return false; } bool inputL = false; bool outputL = false; if (directions == QSerialPort::AllDirections) inputL = outputL = true; else { if (directions & QSerialPort::Input) inputL = true; if (directions & QSerialPort::Output) outputL = true; } cleanJavaException(); bool res = QAndroidJniObject::callStaticMethod<jboolean>( kJniClassName, "purgeBuffers", "(IZZ)Z", deviceId, inputL, outputL); cleanJavaException(); return res; }
bool QSerialPortPrivate::setParameters(int baudRateA, int dataBitsA, int stopBitsA, int parityA) { if (deviceId == BAD_PORT) { q_ptr->setError(QSerialPort::NotOpenError); return false; } cleanJavaException(); jboolean resultL = QAndroidJniObject::callStaticMethod<jboolean>( kJniClassName, "setParameters", "(IIIII)Z", deviceId, baudRateA, dataBitsA, stopBitsA, parityA); cleanJavaException(); if(resultL) { // SET THE JNI VALUES TO WHAT WAS SENT inputBaudRate = outputBaudRate = baudRateA; jniDataBits = dataBitsA; jniStopBits = stopBitsA; jniParity = parityA; } return resultL; }
bool QSerialPortPrivate::open(QIODevice::OpenMode mode) { rwMode = mode; qCDebug(AndroidSerialPortLog) << "Opening" << systemLocation.toLatin1().data(); QAndroidJniObject jnameL = QAndroidJniObject::fromString(systemLocation); cleanJavaException(); deviceId = QAndroidJniObject::callStaticMethod<jint>( kJniClassName, "open", "(Landroid/content/Context;Ljava/lang/String;I)I", QtAndroid::androidActivity().object(), jnameL.object<jstring>(), (jint)this); cleanJavaException(); isReadStopped = false; if (deviceId == BAD_PORT) { qWarning() << "Error opening %s" << systemLocation.toLatin1().data(); q_ptr->setError(QSerialPort::DeviceNotFoundError); return false; } if (rwMode == QIODevice::WriteOnly) stopReadThread(); return true; }
bool QSerialPortInfo::isValid() const { QAndroidJniObject jstrL = QAndroidJniObject::fromString(d_ptr->portName); cleanJavaException(); jboolean resultL = QAndroidJniObject::callStaticMethod<jboolean>( V_jniClassName, "isDeviceNameValid", "(Ljava/lang/String;)Z", jstrL.object<jstring>()); cleanJavaException(); return resultL; }
void QSerialPortPrivate::startReadThread() { if (!isReadStopped) return; cleanJavaException(); QAndroidJniObject::callStaticMethod<void>( kJniClassName, "startIoManager", "(I)V", deviceId); cleanJavaException(); isReadStopped = false; }
bool QSerialPortPrivate::setRequestToSend(bool set) { if (deviceId == BAD_PORT) { q_ptr->setError(QSerialPort::NotOpenError); return false; } cleanJavaException(); bool res = QAndroidJniObject::callStaticMethod<jboolean>( kJniClassName, "setRequestToSend", "(IZ)Z", deviceId, set); cleanJavaException(); return res; }
void QSerialPortPrivate::close() { if (deviceId == BAD_PORT) return; qCDebug(AndroidSerialPortLog) << "Closing" << systemLocation.toLatin1().data(); cleanJavaException(); jboolean resultL = QAndroidJniObject::callStaticMethod<jboolean>( kJniClassName, "close", "(I)Z", deviceId); cleanJavaException(); descriptor = -1; isCustomBaudRateSupported = false; pendingBytesWritten = 0; deviceId = BAD_PORT; if (!resultL) q_ptr->setErrorString(QStringLiteral("Closing device failed")); }