diff --git a/QGCCommon.pri b/QGCCommon.pri index 39447bb8429e9d6ecede81fd5604b85ee4fe2319..826e4a78f3b328a2fd97e09767ddaa0e9752f7bb 100644 --- a/QGCCommon.pri +++ b/QGCCommon.pri @@ -40,6 +40,7 @@ linux { DEFINES += QGC_ENABLE_BLUETOOTH DEFINES += QGC_GST_TAISYNC_ENABLED DEFINES += QGC_GST_MICROHARD_ENABLED + QMAKE_CXXFLAGS += -Wno-address-of-packed-member target.path = $$DESTDIR equals(ANDROID_TARGET_ARCH, x86) { CONFIG += Androidx86Build diff --git a/libs/qtandroidserialport/src/qserialport_android.cpp b/libs/qtandroidserialport/src/qserialport_android.cpp index 32d9110b0e4a0aff4357f18894a624a7d3d62fe3..6d29434306546aef3f8b227fafc90657d74839cf 100644 --- a/libs/qtandroidserialport/src/qserialport_android.cpp +++ b/libs/qtandroidserialport/src/qserialport_android.cpp @@ -55,14 +55,13 @@ QT_BEGIN_NAMESPACE #define BAD_PORT 0 static const char kJniClassName[] {"org/mavlink/qgroundcontrol/QGCActivity"}; -static const char kJTag[] {"QGC_QSerialPort"}; static void jniDeviceHasDisconnected(JNIEnv *envA, jobject thizA, jint userDataA) { Q_UNUSED(envA); Q_UNUSED(thizA); if (userDataA != 0) - ((QSerialPortPrivate *)userDataA)->q_ptr->close(); + (reinterpret_cast(userDataA))->q_ptr->close(); } static void jniDeviceNewData(JNIEnv *envA, jobject thizA, jint userDataA, jbyteArray dataA) @@ -70,9 +69,9 @@ static void jniDeviceNewData(JNIEnv *envA, jobject thizA, jint userDataA, jbyteA Q_UNUSED(thizA); if (userDataA != 0) { - jbyte *bytesL = envA->GetByteArrayElements(dataA, NULL); + jbyte *bytesL = envA->GetByteArrayElements(dataA, nullptr); jsize lenL = envA->GetArrayLength(dataA); - ((QSerialPortPrivate *)userDataA)->newDataArrived((char *)bytesL, lenL); + (reinterpret_cast(userDataA))->newDataArrived(reinterpret_cast(bytesL), lenL); envA->ReleaseByteArrayElements(dataA, bytesL, JNI_ABORT); } } @@ -82,12 +81,12 @@ static void jniDeviceException(JNIEnv *envA, jobject thizA, jint userDataA, jstr Q_UNUSED(thizA); if(userDataA != 0) { - const char *stringL = envA->GetStringUTFChars(messageA, NULL); + const char *stringL = envA->GetStringUTFChars(messageA, nullptr); QString strL = QString::fromUtf8(stringL); envA->ReleaseStringUTFChars(messageA, stringL); if(envA->ExceptionCheck()) envA->ExceptionClear(); - ((QSerialPortPrivate *)userDataA)->exceptionArrived(strL); + (reinterpret_cast(userDataA))->exceptionArrived(strL); } } @@ -95,7 +94,7 @@ static void jniLogDebug(JNIEnv *envA, jobject thizA, jstring messageA) { Q_UNUSED(thizA); - const char *stringL = envA->GetStringUTFChars(messageA, NULL); + const char *stringL = envA->GetStringUTFChars(messageA, nullptr); QString logMessage = QString::fromUtf8(stringL); envA->ReleaseStringUTFChars(messageA, stringL); if (envA->ExceptionCheck()) @@ -107,7 +106,7 @@ static void jniLogWarning(JNIEnv *envA, jobject thizA, jstring messageA) { Q_UNUSED(thizA); - const char *stringL = envA->GetStringUTFChars(messageA, NULL); + const char *stringL = envA->GetStringUTFChars(messageA, nullptr); QString logMessage = QString::fromUtf8(stringL); envA->ReleaseStringUTFChars(messageA, stringL); if (envA->ExceptionCheck()) @@ -190,7 +189,7 @@ bool QSerialPortPrivate::open(QIODevice::OpenMode mode) "(Landroid/content/Context;Ljava/lang/String;I)I", QtAndroid::androidActivity().object(), jnameL.object(), - (jint)this); + reinterpret_cast(this)); cleanJavaException(); isReadStopped = false; @@ -395,7 +394,7 @@ void QSerialPortPrivate::startWriting() bool QSerialPortPrivate::waitForReadyRead(int msecs) { - int origL = readBuffer.size(); + int origL = static_cast(readBuffer.size()); if (origL > 0) return true; @@ -528,7 +527,7 @@ void QSerialPortPrivate::newDataArrived(char *bytesA, int lengthA) // Always buffered, read data from the port into the read buffer if (readBufferMaxSize && (bytesToReadL > (readBufferMaxSize - readBuffer.size()))) { - bytesToReadL = readBufferMaxSize - readBuffer.size(); + bytesToReadL = static_cast(readBufferMaxSize - readBuffer.size()); if (bytesToReadL <= 0) { // Buffer is full. User must read data from the buffer // before we can read more from the port. @@ -538,7 +537,7 @@ void QSerialPortPrivate::newDataArrived(char *bytesA, int lengthA) } char *ptr = readBuffer.reserve(bytesToReadL); - memcpy(ptr, bytesA, bytesToReadL); + memcpy(ptr, bytesA, static_cast(bytesToReadL)); emit q->readyRead(); } @@ -617,8 +616,8 @@ qint64 QSerialPortPrivate::writeToPort(const char *data, qint64 maxSize) } QAndroidJniEnvironment jniEnv; - jbyteArray jarrayL = jniEnv->NewByteArray(maxSize); - jniEnv->SetByteArrayRegion(jarrayL, 0, maxSize, (jbyte *)data); + jbyteArray jarrayL = jniEnv->NewByteArray(static_cast(maxSize)); + jniEnv->SetByteArrayRegion(jarrayL, 0, static_cast(maxSize), (jbyte*)data); if (jniEnv->ExceptionCheck()) jniEnv->ExceptionClear(); int resultL = QAndroidJniObject::callStaticMethod( @@ -640,14 +639,6 @@ qint64 QSerialPortPrivate::writeToPort(const char *data, qint64 maxSize) return resultL; } -static inline bool evenParity(quint8 c) -{ - c ^= c >> 4; //(c7 ^ c3)(c6 ^ c2)(c5 ^ c1)(c4 ^ c0) - c ^= c >> 2; //[(c7 ^ c3)(c5 ^ c1)][(c6 ^ c2)(c4 ^ c0)] - c ^= c >> 1; - return c & 1; //(c7 ^ c3)(c5 ^ c1)(c6 ^ c2)(c4 ^ c0) -} - typedef QMap BaudRateMap; // The OS specific defines can be found in termios.h