From 3ee680b155bde98fd0ccd0830f82920616e6519c Mon Sep 17 00:00:00 2001 From: Will Hedgecock Date: Wed, 17 Nov 2021 01:20:30 -0600 Subject: [PATCH] Complete rework of Windows native code --- src/main/c/Windows/SerialPort_Windows.c | 567 +++++++++--------- src/main/c/Windows/WindowsHelperFunctions.c | 90 ++- src/main/c/Windows/WindowsHelperFunctions.h | 30 +- .../resources/Windows/x86/jSerialComm.dll | Bin 71168 -> 117248 bytes .../resources/Windows/x86_64/jSerialComm.dll | Bin 91136 -> 139776 bytes 5 files changed, 372 insertions(+), 315 deletions(-) diff --git a/src/main/c/Windows/SerialPort_Windows.c b/src/main/c/Windows/SerialPort_Windows.c index f1c29b9..69d11aa 100644 --- a/src/main/c/Windows/SerialPort_Windows.c +++ b/src/main/c/Windows/SerialPort_Windows.c @@ -2,7 +2,7 @@ * SerialPort_Windows.c * * Created on: Feb 25, 2012 - * Last Updated on: Nov 03, 2021 + * Last Updated on: Nov 12, 2021 * Author: Will Hedgecock * * Copyright (C) 2012-2021 Fazecast, Inc. @@ -36,7 +36,6 @@ #include #include #include "ftdi/ftd2xx.h" -#include "../com_fazecast_jSerialComm_SerialPort.h" #include "WindowsHelperFunctions.h" // Cached class, method, and field IDs @@ -65,7 +64,7 @@ jfieldID readTimeoutField; jfieldID writeTimeoutField; jfieldID eventFlagsField; -// Run-time loadable DLL function +// Runtime-loadable DLL functions typedef int (__stdcall *FT_CreateDeviceInfoListFunction)(LPDWORD); typedef int (__stdcall *FT_GetDeviceInfoListFunction)(FT_DEVICE_LIST_INFO_NODE*, LPDWORD); typedef int (__stdcall *FT_GetComPortNumberFunction)(FT_HANDLE, LPLONG); @@ -73,6 +72,9 @@ typedef int (__stdcall *FT_SetLatencyTimerFunction)(FT_HANDLE, UCHAR); typedef int (__stdcall *FT_OpenFunction)(int, FT_HANDLE*); typedef int (__stdcall *FT_CloseFunction)(FT_HANDLE); +// List of available serial ports +serialPortVector serialPorts = { NULL, 0 }; + JNIEXPORT jobjectArray JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCommPorts(JNIEnv *env, jclass serialComm) { HKEY keyHandle1, keyHandle2, keyHandle3, keyHandle4, keyHandle5; @@ -82,7 +84,6 @@ JNIEXPORT jobjectArray JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCommP DWORD subKeyLength1, subKeyLength2, subKeyLength3, friendlyNameLength; // Enumerate serial ports on machine - charTupleVector serialCommPorts = { (wchar_t**)malloc(sizeof(wchar_t*)), (wchar_t**)malloc(sizeof(wchar_t*)), (wchar_t**)malloc(sizeof(wchar_t*)), 0 }; if ((RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"HARDWARE\\DEVICEMAP\\SERIALCOMM", 0, KEY_QUERY_VALUE, &keyHandle1) == ERROR_SUCCESS) && (RegQueryInfoKeyW(keyHandle1, NULL, NULL, NULL, NULL, NULL, NULL, &numValues, &maxValueLength, &maxComPortLength, NULL, NULL) == ERROR_SUCCESS)) { @@ -106,8 +107,12 @@ JNIEXPORT jobjectArray JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCommP wchar_t* comPortString = (comPort[0] == L'\\') ? (wcsrchr(comPort, L'\\') + 1) : comPort; wchar_t* descriptionString = wcsrchr(valueName, L'\\') ? (wcsrchr(valueName, L'\\') + 1) : valueName; - // Add new SerialComm object to vector - pushBack(&serialCommPorts, comPortString, descriptionString, descriptionString); + // Check if port is already enumerated + serialPort *port = fetchPort(&serialPorts, comPortString); + if (port) + port->enumerated = 1; + else + pushBack(&serialPorts, comPortString, descriptionString, descriptionString); } } @@ -177,13 +182,15 @@ JNIEXPORT jobjectArray JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCommP wchar_t* descriptionString = friendlyName; // Update friendly name if COM port is actually connected and present in the port list - int i; - for (i = 0; i < serialCommPorts.length; ++i) - if (wcscmp(serialCommPorts.first[i], comPortString) == 0) + for (int i = 0; i < serialPorts.length; ++i) + if (wcscmp(serialPorts.ports[i]->portPath, comPortString) == 0) { - free(serialCommPorts.second[i]); - serialCommPorts.second[i] = (wchar_t*)malloc((wcslen(descriptionString)+1)*sizeof(wchar_t)); - wcscpy(serialCommPorts.second[i], descriptionString); + wchar_t *newMemory = (wchar_t*)realloc(serialPorts.ports[i]->friendlyName, (wcslen(descriptionString)+1)*sizeof(wchar_t)); + if (newMemory) + { + serialPorts.ports[i]->friendlyName = newMemory; + wcscpy(serialPorts.ports[i]->friendlyName, descriptionString); + } break; } } @@ -250,14 +257,15 @@ JNIEXPORT jobjectArray JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCommP if (SetupDiGetDevicePropertyW(devList, &devInfoData, &DEVPKEY_Device_BusReportedDeviceDesc, &devInfoPropType, (BYTE*)portDescription, valueLength, NULL, 0)) { // Update port description if COM port is actually connected and present in the port list - int i; - for (i = 0; i < serialCommPorts.length; ++i) - if (wcscmp(serialCommPorts.first[i], comPortString) == 0) + for (int i = 0; i < serialPorts.length; ++i) + if (wcscmp(serialPorts.ports[i]->portPath, comPortString) == 0) { - free(serialCommPorts.third[i]); - serialCommPorts.third[i] = (wchar_t*)malloc((wcslen(portDescription)+1)*sizeof(wchar_t)); - wcscpy(serialCommPorts.third[i], portDescription); - break; + wchar_t *newMemory = (wchar_t*)realloc(serialPorts.ports[i]->portDescription, (wcslen(portDescription)+1)*sizeof(wchar_t)); + if (newMemory) + { + serialPorts.ports[i]->portDescription = newMemory; + wcscpy(serialPorts.ports[i]->portDescription, portDescription); + } } } @@ -287,9 +295,8 @@ JNIEXPORT jobjectArray JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCommP FT_DEVICE_LIST_INFO_NODE *devInfo = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs); if (FT_GetDeviceInfoList(devInfo, &numDevs) == FT_OK) { - int i, j; wchar_t comPortString[128]; - for (i = 0; i < numDevs; ++i) + for (int i = 0; i < numDevs; ++i) { LONG comPortNumber = 0; if ((FT_Open(i, &devInfo[i].ftHandle) == FT_OK) && (FT_GetComPortNumber(devInfo[i].ftHandle, &comPortNumber) == FT_OK)) @@ -302,13 +309,16 @@ JNIEXPORT jobjectArray JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCommP // Update port description if COM port is actually connected and present in the port list FT_Close(devInfo[i].ftHandle); swprintf(comPortString, sizeof(comPortString) / sizeof(wchar_t), L"COM%ld", comPortNumber); - for (j = 0; j < serialCommPorts.length; ++j) - if (wcscmp(serialCommPorts.first[j], comPortString) == 0) + for (int j = 0; j < serialPorts.length; ++j) + if (wcscmp(serialPorts.ports[j]->portPath, comPortString) == 0) { size_t descLength = 8+strlen(devInfo[i].Description); - free(serialCommPorts.third[j]); - serialCommPorts.third[j] = (wchar_t*)malloc(descLength*sizeof(wchar_t)); - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, devInfo[i].Description, -1, serialCommPorts.third[j], descLength); + wchar_t *newMemory = (wchar_t*)realloc(serialPorts.ports[j]->portDescription, descLength*sizeof(wchar_t)); + if (newMemory) + { + serialPorts.ports[j]->portDescription = newMemory; + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, devInfo[i].Description, -1, serialPorts.ports[j]->portDescription, descLength); + } break; } } @@ -321,28 +331,21 @@ JNIEXPORT jobjectArray JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCommP } // Get relevant SerialComm methods and fill in com port array - jobjectArray arrayObject = env->NewObjectArray(serialCommPorts.length, serialCommClass, 0); wchar_t systemPortName[128]; - int i; - for (i = 0; i < serialCommPorts.length; ++i) + jobjectArray arrayObject = env->NewObjectArray(serialPorts.length, serialCommClass, 0); + for (int i = 0; i < serialPorts.length; ++i) { // Create new SerialComm object containing the enumerated values jobject serialCommObject = env->NewObject(serialCommClass, serialCommConstructor); wcscpy(systemPortName, L"\\\\.\\"); - wcscat(systemPortName, serialCommPorts.first[i]); + wcscat(systemPortName, serialPorts.ports[i]->portPath); env->SetObjectField(serialCommObject, comPortField, env->NewString((jchar*)systemPortName, wcslen(systemPortName))); - env->SetObjectField(serialCommObject, friendlyNameField, env->NewString((jchar*)serialCommPorts.second[i], wcslen(serialCommPorts.second[i]))); - env->SetObjectField(serialCommObject, portDescriptionField, env->NewString((jchar*)serialCommPorts.third[i], wcslen(serialCommPorts.third[i]))); - free(serialCommPorts.first[i]); - free(serialCommPorts.second[i]); - free(serialCommPorts.third[i]); + env->SetObjectField(serialCommObject, friendlyNameField, env->NewString((jchar*)serialPorts.ports[i]->friendlyName, wcslen(serialPorts.ports[i]->friendlyName))); + env->SetObjectField(serialCommObject, portDescriptionField, env->NewString((jchar*)serialPorts.ports[i]->portDescription, wcslen(serialPorts.ports[i]->portDescription))); // Add new SerialComm object to array env->SetObjectArrayElement(arrayObject, i, serialCommObject); } - free(serialCommPorts.first); - free(serialCommPorts.second); - free(serialCommPorts.third); return arrayObject; } @@ -385,48 +388,63 @@ JNIEXPORT void JNICALL Java_com_fazecast_jSerialComm_SerialPort_uninitializeLibr JNIEXPORT jlong JNICALL Java_com_fazecast_jSerialComm_SerialPort_openPortNative(JNIEnv *env, jobject obj) { + // Retrieve the serial port parameter fields jstring portNameJString = (jstring)env->GetObjectField(obj, comPortField); - const char *portName = env->GetStringUTFChars(portNameJString, NULL); + const wchar_t *portName = (wchar_t*)env->GetStringChars(portNameJString, NULL); + unsigned char disableAutoConfig = env->GetBooleanField(obj, disableConfigField); - // Try to open existing serial port with read/write access - HANDLE serialPortHandle = INVALID_HANDLE_VALUE; - if ((serialPortHandle = CreateFile(portName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH | FILE_FLAG_OVERLAPPED, NULL)) != INVALID_HANDLE_VALUE) + // Ensure that the serial port still exists and is not already open + serialPort *port = fetchPort(&serialPorts, portName); + if (!port) { - // Configure the port parameters and timeouts - if (Java_com_fazecast_jSerialComm_SerialPort_configPort(env, obj, (jlong)serialPortHandle)) - env->SetLongField(obj, serialPortHandleField, (jlong)serialPortHandle); - else - { - // Close the port if there was a problem setting the parameters - int numRetries = 10; - PurgeComm(serialPortHandle, PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR); - while (!CloseHandle(serialPortHandle) && (numRetries-- > 0)); - serialPortHandle = INVALID_HANDLE_VALUE; - env->SetLongField(obj, serialPortHandleField, -1l); - } + // Create port representation and add to serial port listing + port = pushBack(&serialPorts, portName, L"User-Specified Port", L"User-Specified Port"); + } + if (!port || (port->handle != INVALID_HANDLE_VALUE)) + { + env->ReleaseStringChars(portNameJString, (const jchar*)portName); + return 0; } - env->ReleaseStringUTFChars(portNameJString, portName); - return (jlong)serialPortHandle; + // Try to open the serial port with read/write access + if ((port->handle = CreateFileW(portName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH | FILE_FLAG_OVERLAPPED, NULL)) != INVALID_HANDLE_VALUE) + { + // Configure the port parameters and timeouts + if (!disableAutoConfig && !Java_com_fazecast_jSerialComm_SerialPort_configPort(env, obj, (jlong)(intptr_t)port)) + { + // Close the port if there was a problem setting the parameters + PurgeComm(port->handle, PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR); + CancelIoEx(port->handle, NULL); + CloseHandle(port->handle); + port->handle = INVALID_HANDLE_VALUE; + } + } + else + { + port->errorLineNumber = __LINE__ - 14; + port->errorNumber = GetLastError(); + } + + // Return a pointer to the serial port data structure + env->ReleaseStringChars(portNameJString, (const jchar*)portName); + return (port->handle != INVALID_HANDLE_VALUE) ? (jlong)(intptr_t)port : 0; } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_configPort(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_configPort(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_FALSE; - DCB dcbSerialParams{}; - dcbSerialParams.DCBlength = sizeof(DCB); - - // Get port parameters from Java class + // Retrieve port parameters from the Java class + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; DWORD baudRate = (DWORD)env->GetIntField(obj, baudRateField); BYTE byteSize = (BYTE)env->GetIntField(obj, dataBitsField); int stopBitsInt = env->GetIntField(obj, stopBitsField); int parityInt = env->GetIntField(obj, parityField); int flowControl = env->GetIntField(obj, flowControlField); + int timeoutMode = env->GetIntField(obj, timeoutModeField); + int readTimeout = env->GetIntField(obj, readTimeoutField); + int writeTimeout = env->GetIntField(obj, writeTimeoutField); + int eventsToMonitor = env->GetIntField(obj, eventFlagsField); DWORD sendDeviceQueueSize = (DWORD)env->GetIntField(obj, sendDeviceQueueSizeField); DWORD receiveDeviceQueueSize = (DWORD)env->GetIntField(obj, receiveDeviceQueueSizeField); - BYTE configDisabled = (BYTE)env->GetBooleanField(obj, disableConfigField); BYTE rs485ModeEnabled = (BYTE)env->GetBooleanField(obj, rs485ModeField); BYTE isDtrEnabled = env->GetBooleanField(obj, isDtrEnabledField); BYTE isRtsEnabled = env->GetBooleanField(obj, isRtsEnabledField); @@ -444,7 +462,9 @@ JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_configPort(J BOOL XonXoffOutEnabled = ((flowControl & com_fazecast_jSerialComm_SerialPort_FLOW_CONTROL_XONXOFF_OUT_ENABLED) > 0); // Retrieve existing port configuration - if (!configDisabled && (!SetupComm(serialPortHandle, receiveDeviceQueueSize, sendDeviceQueueSize) || !GetCommState(serialPortHandle, &dcbSerialParams))) + DCB dcbSerialParams{}; + dcbSerialParams.DCBlength = sizeof(DCB); + if ((!SetupComm(port->handle, receiveDeviceQueueSize, sendDeviceQueueSize) || !GetCommState(port->handle, &dcbSerialParams))) return JNI_FALSE; // Set updated port parameters @@ -471,101 +491,79 @@ JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_configPort(J dcbSerialParams.XoffChar = (char)19; // Apply changes - return (configDisabled ? Java_com_fazecast_jSerialComm_SerialPort_configEventFlags(env, obj, serialPortFD) : - (SetCommState(serialPortHandle, &dcbSerialParams) && Java_com_fazecast_jSerialComm_SerialPort_configEventFlags(env, obj, serialPortFD))); + return (SetCommState(port->handle, &dcbSerialParams) && Java_com_fazecast_jSerialComm_SerialPort_configTimeouts(env, obj, serialPortPointer, timeoutMode, readTimeout, writeTimeout, eventsToMonitor)); } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_configTimeouts(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_configTimeouts(JNIEnv *env, jobject obj, jlong serialPortPointer, jint timeoutMode, jint readTimeout, jint writeTimeout, jint eventsToMonitor) { - // Get port timeouts from Java class - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_FALSE; - COMMTIMEOUTS timeouts{}; - int timeoutMode = env->GetIntField(obj, timeoutModeField); - DWORD readTimeout = (DWORD)env->GetIntField(obj, readTimeoutField); - DWORD writeTimeout = (DWORD)env->GetIntField(obj, writeTimeoutField); - - // Set updated port timeouts - timeouts.WriteTotalTimeoutMultiplier = 0; - switch (timeoutMode) - { - case com_fazecast_jSerialComm_SerialPort_TIMEOUT_READ_SEMI_BLOCKING: // Read Semi-blocking - case (com_fazecast_jSerialComm_SerialPort_TIMEOUT_READ_SEMI_BLOCKING | com_fazecast_jSerialComm_SerialPort_TIMEOUT_WRITE_BLOCKING): // Read Semi-blocking/Write Blocking - timeouts.ReadIntervalTimeout = MAXDWORD; - timeouts.ReadTotalTimeoutMultiplier = MAXDWORD; - timeouts.ReadTotalTimeoutConstant = readTimeout ? readTimeout : 0x0FFFFFFF; - timeouts.WriteTotalTimeoutConstant = writeTimeout; - break; - case com_fazecast_jSerialComm_SerialPort_TIMEOUT_READ_BLOCKING: // Read Blocking - case (com_fazecast_jSerialComm_SerialPort_TIMEOUT_READ_BLOCKING | com_fazecast_jSerialComm_SerialPort_TIMEOUT_WRITE_BLOCKING): // Read/Write Blocking - timeouts.ReadIntervalTimeout = 0; - timeouts.ReadTotalTimeoutMultiplier = 0; - timeouts.ReadTotalTimeoutConstant = readTimeout; - timeouts.WriteTotalTimeoutConstant = writeTimeout; - break; - case com_fazecast_jSerialComm_SerialPort_TIMEOUT_SCANNER: // Scanner Mode - timeouts.ReadIntervalTimeout = MAXDWORD; - timeouts.ReadTotalTimeoutMultiplier = MAXDWORD; - timeouts.ReadTotalTimeoutConstant = 0x0FFFFFFF; - timeouts.WriteTotalTimeoutConstant = writeTimeout; - break; - case com_fazecast_jSerialComm_SerialPort_TIMEOUT_NONBLOCKING: // Read Non-blocking - case (com_fazecast_jSerialComm_SerialPort_TIMEOUT_NONBLOCKING | com_fazecast_jSerialComm_SerialPort_TIMEOUT_WRITE_BLOCKING): // Read Non-blocking/Write Blocking - default: - timeouts.ReadIntervalTimeout = MAXDWORD; - timeouts.ReadTotalTimeoutMultiplier = 0; - timeouts.ReadTotalTimeoutConstant = 0; - timeouts.WriteTotalTimeoutConstant = writeTimeout; - break; - } - - // Apply changes - return SetCommTimeouts(serialPortHandle, &timeouts); -} - -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_configEventFlags(JNIEnv *env, jobject obj, jlong serialPortFD) -{ - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_FALSE; - // Get event flags from Java class - int eventsToMonitor = env->GetIntField(obj, eventFlagsField); int eventFlags = EV_ERR; + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; if (((eventsToMonitor & com_fazecast_jSerialComm_SerialPort_LISTENING_EVENT_DATA_AVAILABLE) > 0) || ((eventsToMonitor & com_fazecast_jSerialComm_SerialPort_LISTENING_EVENT_DATA_RECEIVED) > 0)) eventFlags |= EV_RXCHAR; if ((eventsToMonitor & com_fazecast_jSerialComm_SerialPort_LISTENING_EVENT_DATA_WRITTEN) > 0) eventFlags |= EV_TXEMPTY; - // Change read timeouts if we are monitoring data received + // Set updated port timeouts + COMMTIMEOUTS timeouts{}; + timeouts.WriteTotalTimeoutMultiplier = 0; if ((eventsToMonitor & com_fazecast_jSerialComm_SerialPort_LISTENING_EVENT_DATA_RECEIVED) > 0) { - COMMTIMEOUTS timeouts{}; + // Force specific read timeouts if we are monitoring data received timeouts.ReadIntervalTimeout = MAXDWORD; timeouts.ReadTotalTimeoutMultiplier = MAXDWORD; timeouts.ReadTotalTimeoutConstant = 1000; - timeouts.WriteTotalTimeoutMultiplier = 0; timeouts.WriteTotalTimeoutConstant = 0; - SetCommTimeouts(serialPortHandle, &timeouts); } else - Java_com_fazecast_jSerialComm_SerialPort_configTimeouts(env, obj, serialPortFD); + { + switch (timeoutMode) + { + case com_fazecast_jSerialComm_SerialPort_TIMEOUT_READ_SEMI_BLOCKING: // Read Semi-blocking + case (com_fazecast_jSerialComm_SerialPort_TIMEOUT_READ_SEMI_BLOCKING | com_fazecast_jSerialComm_SerialPort_TIMEOUT_WRITE_BLOCKING): // Read Semi-blocking/Write Blocking + timeouts.ReadIntervalTimeout = MAXDWORD; + timeouts.ReadTotalTimeoutMultiplier = MAXDWORD; + timeouts.ReadTotalTimeoutConstant = readTimeout ? readTimeout : 0x0FFFFFFF; + timeouts.WriteTotalTimeoutConstant = writeTimeout; + break; + case com_fazecast_jSerialComm_SerialPort_TIMEOUT_READ_BLOCKING: // Read Blocking + case (com_fazecast_jSerialComm_SerialPort_TIMEOUT_READ_BLOCKING | com_fazecast_jSerialComm_SerialPort_TIMEOUT_WRITE_BLOCKING): // Read/Write Blocking + timeouts.ReadIntervalTimeout = 0; + timeouts.ReadTotalTimeoutMultiplier = 0; + timeouts.ReadTotalTimeoutConstant = readTimeout; + timeouts.WriteTotalTimeoutConstant = writeTimeout; + break; + case com_fazecast_jSerialComm_SerialPort_TIMEOUT_SCANNER: // Scanner Mode + timeouts.ReadIntervalTimeout = MAXDWORD; + timeouts.ReadTotalTimeoutMultiplier = MAXDWORD; + timeouts.ReadTotalTimeoutConstant = 0x0FFFFFFF; + timeouts.WriteTotalTimeoutConstant = writeTimeout; + break; + case com_fazecast_jSerialComm_SerialPort_TIMEOUT_NONBLOCKING: // Read Non-blocking + case (com_fazecast_jSerialComm_SerialPort_TIMEOUT_NONBLOCKING | com_fazecast_jSerialComm_SerialPort_TIMEOUT_WRITE_BLOCKING): // Read Non-blocking/Write Blocking + default: + timeouts.ReadIntervalTimeout = MAXDWORD; + timeouts.ReadTotalTimeoutMultiplier = 0; + timeouts.ReadTotalTimeoutConstant = 0; + timeouts.WriteTotalTimeoutConstant = writeTimeout; + break; + } + } // Apply changes - return SetCommMask(serialPortHandle, eventFlags); + return (SetCommTimeouts(port->handle, &timeouts) && SetCommMask(port->handle, eventFlags)); } -JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_waitForEvent(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_waitForEvent(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return 0; OVERLAPPED overlappedStruct{}; + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; overlappedStruct.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if (overlappedStruct.hEvent == NULL) { + port->errorNumber = GetLastError(); + port->errorLineNumber = __LINE__ - 4; CloseHandle(overlappedStruct.hEvent); return 0; } @@ -573,12 +571,12 @@ JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_waitForEvent(JNI // Wait for a serial port event BOOL listenerRunning = TRUE; DWORD eventMask = 0, numBytesRead = 0, errorsMask, readResult = WAIT_FAILED; - if (WaitCommEvent(serialPortHandle, &eventMask, &overlappedStruct) == FALSE) + if (WaitCommEvent(port->handle, &eventMask, &overlappedStruct) == FALSE) { if (GetLastError() != ERROR_IO_PENDING) // Problem occurred { - // Problem reading, close port - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); + port->errorLineNumber = __LINE__ - 4; + port->errorNumber = GetLastError(); listenerRunning = FALSE; } else @@ -590,11 +588,14 @@ JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_waitForEvent(JNI readResult = WaitForSingleObject(overlappedStruct.hEvent, 500); else { - CancelIo(serialPortHandle); + // Purge any outstanding port operations + PurgeComm(port->handle, PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR); + CancelIoEx(port->handle, NULL); + FlushFileBuffers(port->handle); readResult = WaitForSingleObject(overlappedStruct.hEvent, INFINITE); } } while ((readResult == WAIT_TIMEOUT) && listenerRunning); - if ((readResult != WAIT_OBJECT_0) || (GetOverlappedResult(serialPortHandle, &overlappedStruct, &numBytesRead, FALSE) == FALSE)) + if ((readResult != WAIT_OBJECT_0) || (GetOverlappedResult(port->handle, &overlappedStruct, &numBytesRead, FALSE) == FALSE)) numBytesRead = 0; } } @@ -603,9 +604,7 @@ JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_waitForEvent(JNI if (listenerRunning) { COMSTAT commInfo; - if (!ClearCommError(serialPortHandle, &errorsMask, &commInfo)) - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); - else + if (ClearCommError(port->handle, &errorsMask, &commInfo)) numBytesRead = commInfo.cbInQue; } @@ -615,88 +614,80 @@ JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_waitForEvent(JNI (((eventMask & EV_TXEMPTY) > 0) ? com_fazecast_jSerialComm_SerialPort_LISTENING_EVENT_DATA_WRITTEN : 0); } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_closePortNative(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jlong JNICALL Java_com_fazecast_jSerialComm_SerialPort_closePortNative(JNIEnv *env, jobject obj, jlong serialPortPointer) { - // Purge any outstanding port operations - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_TRUE; - PurgeComm(serialPortHandle, PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR); - // Force the port to enter non-blocking mode to ensure that any current reads return COMMTIMEOUTS timeouts{}; + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; timeouts.WriteTotalTimeoutMultiplier = 0; timeouts.ReadIntervalTimeout = MAXDWORD; timeouts.ReadTotalTimeoutMultiplier = 0; timeouts.ReadTotalTimeoutConstant = 0; timeouts.WriteTotalTimeoutConstant = 0; - SetCommTimeouts(serialPortHandle, &timeouts); + SetCommTimeouts(port->handle, &timeouts); + + // Purge any outstanding port operations + PurgeComm(port->handle, PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR); + CancelIoEx(port->handle, NULL); + FlushFileBuffers(port->handle); // Close the port - int numRetries = 10; - while (!CloseHandle(serialPortHandle) && (GetLastError() != ERROR_INVALID_HANDLE) && (numRetries-- > 0)); - if (numRetries > 0) + if (!CloseHandle(port->handle)) { - env->SetLongField(obj, serialPortHandleField, -1l); - return JNI_TRUE; + port->handle = INVALID_HANDLE_VALUE; + port->errorLineNumber = __LINE__ - 3; + port->errorNumber = GetLastError(); + return 0; } - - // Error closing port, reconfigure port settings - Java_com_fazecast_jSerialComm_SerialPort_configEventFlags(env, obj, serialPortFD); - return JNI_FALSE; + port->handle = INVALID_HANDLE_VALUE; + return -1; } -JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_bytesAvailable(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_bytesAvailable(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return -1; - // Retrieve bytes available to read COMSTAT commInfo; - DWORD errorsMask; - if (!ClearCommError(serialPortHandle, &errorsMask, &commInfo)) + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; + if (ClearCommError(port->handle, NULL, &commInfo)) + return commInfo.cbInQue; + else { - // Problem detected, close port - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); - serialPortHandle = INVALID_HANDLE_VALUE; + port->errorLineNumber = __LINE__ - 4; + port->errorNumber = GetLastError(); } - return (serialPortHandle == INVALID_HANDLE_VALUE) ? -1 : commInfo.cbInQue; + return -1; } -JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_bytesAwaitingWrite(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_bytesAwaitingWrite(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return -1; - // Retrieve bytes awaiting write COMSTAT commInfo; - DWORD errorsMask; - if (!ClearCommError(serialPortHandle, &errorsMask, &commInfo)) + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; + if (ClearCommError(port->handle, NULL, &commInfo)) + return commInfo.cbOutQue; + else { - // Problem detected, close port - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); - serialPortHandle = INVALID_HANDLE_VALUE; + port->errorLineNumber = __LINE__ - 4; + port->errorNumber = GetLastError(); } - return (serialPortHandle == INVALID_HANDLE_VALUE) ? -1 : commInfo.cbOutQue; + return -1; } -JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_readBytes(JNIEnv *env, jobject obj, jlong serialPortFD, jbyteArray buffer, jlong bytesToRead, jlong offset) +JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_readBytes(JNIEnv *env, jobject obj, jlong serialPortPointer, jbyteArray buffer, jlong bytesToRead, jlong offset, jint timeoutMode, jint readTimeout) { - // Retrieve the serial port handle - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return -1; - - // Check for a disconnected serial port - COMSTAT commInfo; - DWORD errorsMask; - if (!ClearCommError(serialPortHandle, &errorsMask, &commInfo)) + // Ensure that the allocated read buffer is large enough + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; + if (bytesToRead > port->readBufferLength) { - // Problem detected, close port - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); - return -1; + port->errorLineNumber = __LINE__ + 1; + char *newMemory = (char*)realloc(port->readBuffer, bytesToRead); + if (!newMemory) + { + port->errorNumber = errno; + return -1; + } + port->readBuffer = newMemory; + port->readBufferLength = bytesToRead; } // Create an asynchronous result structure @@ -704,97 +695,113 @@ JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_readBytes(JNIEnv overlappedStruct.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if (overlappedStruct.hEvent == NULL) { + port->errorNumber = GetLastError(); + port->errorLineNumber = __LINE__ - 4; CloseHandle(overlappedStruct.hEvent); return -1; } - char *readBuffer = (char*)malloc(bytesToRead); - DWORD numBytesRead = 0; - // Read from serial port and close upon error + // Read from the serial port BOOL result; - if (((result = ReadFile(serialPortHandle, readBuffer, bytesToRead, NULL, &overlappedStruct)) == FALSE) && (GetLastError() != ERROR_IO_PENDING)) - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); - else if ((result = GetOverlappedResult(serialPortHandle, &overlappedStruct, &numBytesRead, TRUE)) == FALSE) - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); + DWORD numBytesRead = 0; + if (((result = ReadFile(port->handle, port->readBuffer, bytesToRead, NULL, &overlappedStruct)) == FALSE) && (GetLastError() != ERROR_IO_PENDING)) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); + } + else if ((result = GetOverlappedResult(port->handle, &overlappedStruct, &numBytesRead, TRUE)) == FALSE) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); + } - // Return number of bytes read if successful + // Return number of bytes read CloseHandle(overlappedStruct.hEvent); - env->SetByteArrayRegion(buffer, offset, numBytesRead, (jbyte*)readBuffer); - free(readBuffer); + env->SetByteArrayRegion(buffer, offset, numBytesRead, (jbyte*)port->readBuffer); return (result == TRUE) ? numBytesRead : -1; } -JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_writeBytes(JNIEnv *env, jobject obj, jlong serialPortFD, jbyteArray buffer, jlong bytesToWrite, jlong offset) +JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_writeBytes(JNIEnv *env, jobject obj, jlong serialPortPointer, jbyteArray buffer, jlong bytesToWrite, jlong offset, jint timeoutMode) { - // Retrieve the serial port handle - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return -1; - - // Check for a disconnected serial port - COMSTAT commInfo; - DWORD errorsMask; - if (!ClearCommError(serialPortHandle, &errorsMask, &commInfo)) - { - // Problem detected, close port - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); - return -1; - } - // Create an asynchronous result structure OVERLAPPED overlappedStruct{}; + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; overlappedStruct.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if (overlappedStruct.hEvent == NULL) { + port->errorNumber = GetLastError(); + port->errorLineNumber = __LINE__ - 4; CloseHandle(overlappedStruct.hEvent); return -1; } - jbyte *writeBuffer = env->GetByteArrayElements(buffer, 0); - DWORD numBytesWritten = 0; + + // Write to the serial port BOOL result; + DWORD numBytesWritten = 0; + jbyte *writeBuffer = env->GetByteArrayElements(buffer, 0); + if (((result = WriteFile(port->handle, writeBuffer+offset, bytesToWrite, NULL, &overlappedStruct)) == FALSE) && (GetLastError() != ERROR_IO_PENDING)) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); + } + else if ((result = GetOverlappedResult(port->handle, &overlappedStruct, &numBytesWritten, TRUE)) == FALSE) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); + } - // Write to serial port and close upon error - if (((result = WriteFile(serialPortHandle, writeBuffer+offset, bytesToWrite, NULL, &overlappedStruct)) == FALSE) && (GetLastError() != ERROR_IO_PENDING)) - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); - else if ((result = GetOverlappedResult(serialPortHandle, &overlappedStruct, &numBytesWritten, TRUE)) == FALSE) - Java_com_fazecast_jSerialComm_SerialPort_closePortNative(env, obj, serialPortFD); - - // Return number of bytes written if successful + // Return number of bytes written CloseHandle(overlappedStruct.hEvent); env->ReleaseByteArrayElements(buffer, writeBuffer, JNI_ABORT); return (result == TRUE) ? numBytesWritten : -1; } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_setBreak(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_setBreak(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; + if (!SetCommBreak(port->handle)) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); return JNI_FALSE; - return SetCommBreak(serialPortHandle); + } + return JNI_TRUE; } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_clearBreak(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_clearBreak(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; + if (!ClearCommBreak(port->handle)) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); return JNI_FALSE; - return ClearCommBreak(serialPortHandle); + } + return JNI_TRUE; } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_setRTS(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_setRTS(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; + if (!EscapeCommFunction(port->handle, SETRTS)) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); return JNI_FALSE; - return EscapeCommFunction(serialPortHandle, SETRTS); + } + return JNI_TRUE; } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_clearRTS(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_clearRTS(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; + if (!EscapeCommFunction(port->handle, CLRRTS)) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); return JNI_FALSE; - return EscapeCommFunction(serialPortHandle, CLRRTS); + } + return JNI_TRUE; } JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_presetRTS(JNIEnv *env, jobject obj) @@ -855,20 +862,28 @@ JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_preclearRTS( return (result != 0); } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_setDTR(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_setDTR(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; + if (!EscapeCommFunction(port->handle, SETDTR)) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); return JNI_FALSE; - return EscapeCommFunction(serialPortHandle, SETDTR); + } + return JNI_TRUE; } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_clearDTR(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_clearDTR(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) + serialPort *port = (serialPort*)(intptr_t)serialPortPointer; + if (!EscapeCommFunction(port->handle, CLRDTR)) + { + port->errorLineNumber = __LINE__ - 2; + port->errorNumber = GetLastError(); return JNI_FALSE; - return EscapeCommFunction(serialPortHandle, CLRDTR); + } + return JNI_TRUE; } JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_presetDTR(JNIEnv *env, jobject obj) @@ -929,56 +944,48 @@ JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_preclearDTR( return (result != 0); } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCTS(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getCTS(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_FALSE; DWORD modemStatus = 0; - return GetCommModemStatus(serialPortHandle, &modemStatus) && (modemStatus & MS_CTS_ON); + return GetCommModemStatus(((serialPort*)(intptr_t)serialPortPointer)->handle, &modemStatus) && (modemStatus & MS_CTS_ON); } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getDSR(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getDSR(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_FALSE; DWORD modemStatus = 0; - return GetCommModemStatus(serialPortHandle, &modemStatus) && (modemStatus & MS_DSR_ON); + return GetCommModemStatus(((serialPort*)(intptr_t)serialPortPointer)->handle, &modemStatus) && (modemStatus & MS_DSR_ON); } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getDCD(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getDCD(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_FALSE; DWORD modemStatus = 0; - return GetCommModemStatus(serialPortHandle, &modemStatus) && (modemStatus & MS_RLSD_ON); + return GetCommModemStatus(((serialPort*)(intptr_t)serialPortPointer)->handle, &modemStatus) && (modemStatus & MS_RLSD_ON); } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getDTR(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getDTR(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_FALSE; return env->GetBooleanField(obj, isDtrEnabledField); } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getRTS(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getRTS(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_FALSE; return env->GetBooleanField(obj, isRtsEnabledField); } -JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getRI(JNIEnv *env, jobject obj, jlong serialPortFD) +JNIEXPORT jboolean JNICALL Java_com_fazecast_jSerialComm_SerialPort_getRI(JNIEnv *env, jobject obj, jlong serialPortPointer) { - HANDLE serialPortHandle = (HANDLE)serialPortFD; - if (serialPortHandle == INVALID_HANDLE_VALUE) - return JNI_FALSE; DWORD modemStatus = 0; - return GetCommModemStatus(serialPortHandle, &modemStatus) && (modemStatus & MS_RING_ON); + return GetCommModemStatus(((serialPort*)(intptr_t)serialPortPointer)->handle, &modemStatus) && (modemStatus & MS_RING_ON); +} + +JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_getLastErrorLocation(JNIEnv *env, jobject obj, jlong serialPortPointer) +{ + return ((serialPort*)(intptr_t)serialPortPointer)->errorLineNumber; +} + +JNIEXPORT jint JNICALL Java_com_fazecast_jSerialComm_SerialPort_getLastErrorCode(JNIEnv *env, jobject obj, jlong serialPortPointer) +{ + return ((serialPort*)(intptr_t)serialPortPointer)->errorNumber; } #endif diff --git a/src/main/c/Windows/WindowsHelperFunctions.c b/src/main/c/Windows/WindowsHelperFunctions.c index b56b751..5048a9e 100644 --- a/src/main/c/Windows/WindowsHelperFunctions.c +++ b/src/main/c/Windows/WindowsHelperFunctions.c @@ -2,7 +2,7 @@ * WindowsHelperFunctions.c * * Created on: May 05, 2015 - * Last Updated on: Nov 03, 2021 + * Last Updated on: Nov 14, 2021 * Author: Will Hedgecock * * Copyright (C) 2012-2021 Fazecast, Inc. @@ -28,37 +28,73 @@ #include #include "WindowsHelperFunctions.h" -void pushBack(struct charTupleVector* vector, const wchar_t* key, const wchar_t* firstString, const wchar_t* secondString) +// Common storage functionality +serialPort* pushBack(serialPortVector* vector, const wchar_t* key, const wchar_t* friendlyName, const wchar_t* description) { - // Allocate memory for new string storage - vector->length++; - wchar_t** newMemory = (wchar_t**)realloc(vector->first, vector->length*sizeof(wchar_t*)); - if (newMemory) - vector->first = newMemory; - newMemory = (wchar_t**)realloc(vector->second, vector->length*sizeof(wchar_t*)); - if (newMemory) - vector->second = newMemory; - newMemory = (wchar_t**)realloc(vector->third, vector->length*sizeof(wchar_t*)); - if (newMemory) - vector->third = newMemory; + // Allocate memory for the new SerialPort storage structure + if (vector->capacity == vector->length) + { + serialPort** newArray = (serialPort**)realloc(vector->ports, ++vector->capacity * sizeof(serialPort*)); + if (newArray) + vector->ports = newArray; + else + { + vector->capacity--; + return NULL; + } + } + serialPort* port = (serialPort*)malloc(sizeof(serialPort)); + if (port) + vector->ports[vector->length++] = port; + else + return NULL; - // Store new strings - vector->first[vector->length-1] = (wchar_t*)malloc((wcslen(key)+1)*sizeof(wchar_t)); - vector->second[vector->length-1] = (wchar_t*)malloc((wcslen(firstString)+1)*sizeof(wchar_t)); - vector->third[vector->length-1] = (wchar_t*)malloc((wcslen(secondString)+1)*sizeof(wchar_t)); - wcscpy(vector->first[vector->length-1], key); - wcscpy(vector->second[vector->length-1], firstString); - wcscpy(vector->third[vector->length-1], secondString); + // Initialize the storage structure + memset(port, 0, sizeof(serialPort)); + port->handle = (void*)-1; + port->enumerated = 1; + port->portPath = (wchar_t*)malloc((wcslen(key)+1)*sizeof(wchar_t)); + port->friendlyName = (wchar_t*)malloc((wcslen(friendlyName)+1)*sizeof(wchar_t)); + port->portDescription = (wchar_t*)malloc((wcslen(description)+1)*sizeof(wchar_t)); + + // Store port strings + wcscpy(port->portPath, key); + wcscpy(port->friendlyName, friendlyName); + wcscpy(port->portDescription, description); + + // Return the newly created serial port structure + return port; } -char keyExists(struct charTupleVector* vector, const wchar_t* key) +serialPort* fetchPort(serialPortVector* vector, const wchar_t* key) { - // Search for a vector item with a matching key - size_t i; - for (i = 0; i < vector->length; ++i) - if (wcscmp(key, vector->first[i]) == 0) - return 1; - return 0; + for (int i = 0; i < vector->length; ++i) + if (wcscmp(key, vector->ports[i]->portPath) == 0) + return vector->ports[i]; + return NULL; +} + +void removePort(serialPortVector* vector, serialPort* port) +{ + // Clean up memory associated with the port + free(port->portPath); + free(port->friendlyName); + free(port->portDescription); + if (port->readBuffer) + free(port->readBuffer); + + // Move up all remaining ports in the serial port listing + for (int i = 0; i < vector->length; ++i) + if (vector->ports[i] == port) + { + for (int j = i; j < (vector->length - 1); ++j) + vector->ports[j] = vector->ports[j+1]; + vector->length--; + break; + } + + // Free the serial port structure memory + free(port); } #endif diff --git a/src/main/c/Windows/WindowsHelperFunctions.h b/src/main/c/Windows/WindowsHelperFunctions.h index 6387ba2..3e9b5c3 100644 --- a/src/main/c/Windows/WindowsHelperFunctions.h +++ b/src/main/c/Windows/WindowsHelperFunctions.h @@ -2,7 +2,7 @@ * WindowsHelperFunctions.h * * Created on: May 05, 2015 - * Last Updated on: Nov 03, 2021 + * Last Updated on: Nov 14, 2021 * Author: Will Hedgecock * * Copyright (C) 2012-2021 Fazecast, Inc. @@ -26,13 +26,27 @@ #ifndef __WINDOWS_HELPER_FUNCTIONS_HEADER_H__ #define __WINDOWS_HELPER_FUNCTIONS_HEADER_H__ -typedef struct charTupleVector -{ - wchar_t **first, **second, **third; - size_t length; -} charTupleVector; +// Serial port JNI header file +#include "../com_fazecast_jSerialComm_SerialPort.h" -void pushBack(struct charTupleVector* vector, const wchar_t* key, const wchar_t* firstString, const wchar_t* secondString); -char keyExists(struct charTupleVector* vector, const wchar_t* key); +// Serial port data structure +typedef struct serialPort +{ + void *handle; + char *readBuffer; + wchar_t *portPath, *friendlyName, *portDescription; + int errorLineNumber, errorNumber, readBufferLength; + volatile char enumerated, eventListenerRunning; +} serialPort; + +// Common storage functionality +typedef struct serialPortVector +{ + serialPort **ports; + int length, capacity; +} serialPortVector; +serialPort* pushBack(serialPortVector* vector, const wchar_t* key, const wchar_t* friendlyName, const wchar_t* description); +serialPort* fetchPort(serialPortVector* vector, const wchar_t* key); +void removePort(serialPortVector* vector, serialPort* port); #endif // #ifndef __WINDOWS_HELPER_FUNCTIONS_HEADER_H__ diff --git a/src/main/resources/Windows/x86/jSerialComm.dll b/src/main/resources/Windows/x86/jSerialComm.dll index 5ac4591471aada6fa36b2798413d14ff7b15b3fd..316ed8272ccd500023f4a7967e3aa3d1ae875e78 100644 GIT binary patch literal 117248 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 diff --git a/src/main/resources/Windows/x86_64/jSerialComm.dll b/src/main/resources/Windows/x86_64/jSerialComm.dll index 6a9fb0acf0235adbeb1f2ce4dc7975523218048d..993d9c3121eb03332d6581e8436440dd079a8a99 100644 GIT binary patch literal 139776 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%0AIm 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