CHANGELOG

Release Notes

1.1602 - Fixed LJME_AUTO_IPS_FILE_NOT_FOUND error when no devices are connected.
         Fixing unintialized pointer dereference for out-only stream.
         Updated T4 nominal calibration constants.
1.1601 - Added LJM_STREAM_PORT configuration.
1.1600 - Fixed T4 stream calibration functionality.
       - Added extended ErrorString information for
         LJM_ErrorToString(LJME_DEVICE_CURRENTLY_CLAIMED_BY_ANOTHER_PROCESS, ...)
       - Fixed possible segfault on LabJackM exit.
       - Improved CPU efficiency during stream.
1.1501 - Fixed bug where LJM_eReadAddressArray, LJM_eReadNameArray,
         LJM_eWriteAddressArray, and LJM_eWriteNameArray return error 1215 when
         NumValues is greater than 127 and the connection type is TCP or UDP.
1.1500 - Added special voltage to T4 calibration.
       - Added auto IP functionality.
       - Fixed streaming bug during multiple stream bursts with different scan rates.
       - WiFi initialization now happens via TCP unless the ConnectionType is UDP.
       - Network device connection and initialization is parallelized.
1.1405 - Initial support for T4 LV stream channels.
       - Fixed a memory leak when a device is closed after having streamed.
       - Fixed a problem where devices of the same type had to be opened in a
         particular order on Mac/Linux.
       - Fixed a repeating LJME_TRANSACTION_ID_ERR that can happen during poor
         TCP connectivity.
       - Fixed LJME_RECONNECT_FAILED error caused by device attribute load
         failure during opening.
       - Fixed deadlock that could occur due to a close call during device
         reconnect.
       - Fixed Windows USB stream timeout for some triggered or externally-
         clocked streams.
       - Improved subsequent stream startup speed: if stream has been
         successfully started for a given device handle without returning a
         LJME_USING_DEFAULT_CALIBRATION warning, the next stream start for that
         device handle will not need to load the  stream calibration.
       - Type B and type C thermocouples: switched from table lookup to
         polynomials.
       - LJM_StreamReadCallbacks may now call LJM_eStreamStop.
       - LJM_StreamReadCallback will now be called upon stream error.
1.1404 - Fixed possible pure virtual error in multi-threaded context when device
         is reconnected or closed prematurely.
         Fixed possible socket leak.
         Changing communication error behavior to return
         LJME_NO_RESPONSE_BYTES_RECEIVED instead of
         LJME_INCORRECT_NUM_RESPONSE_BYTES_RECEIVED in some situations.
         Fixed command-response (WiFi) stream situation when the device has no
         scan backlog.
         Fixed crash on Windows when TCP devices are not closed before program
         termination.
         Fixed possible LJME_INVALID_LENGTH error during Ethernet stream.
         Improved accuracy of stream timing.
1.1403 - Fixed possible seg fault upon device attribute load failure.
         Fixed possible memory leak in LJM_StreamBurst.
         Fixed possible LJME_TRANSACTION_ID_ERR during externally-clocked
         stream.
         LJM_NumberToIP: Filling the unused bytes of IPv4String with NULL.
         Fixed stream calibrations loading when a T7 (non-Pro) has an SD card.
1.1402 - Adding multi-packet functionality to LJM_eReadAddressArray,
         LJM_eReadNameArray, LJM_eWriteAddressArray, and LJM_eWriteNameArray -
         communication is broken into multiple packets as needed due to max
         packet size.
         Fixed possible segfault when an unsupported device is opened.
1.1401 - Fixed LJM_SetStreamCallback timing.
         Added T4 stream support.
         Deprecated LJM_MAX_USB_PACKET_NUM_BYTES,
         LJM_MAX_ETHERNET_PACKET_NUM_BYTES_T7, and
         LJM_MAX_WIFI_PACKET_NUM_BYTES_T7 - use LJM_GetHandleInfo instead.
1.1400 - Added LJM_dtT4 and LJM_dtTSERIES.
         Added LJME_U3_NOT_SUPPORTED_BY_LJM.
         Added LJME_U6_NOT_SUPPORTED_BY_LJM.
         Added LJME_UE9_NOT_SUPPORTED_BY_LJM.
         Deprecated LJME_U3_CANNOT_BE_OPENED_BY_LJM.
         Deprecated LJME_U6_CANNOT_BE_OPENED_BY_LJM.
         Deprecated LJME_UE9_CANNOT_BE_OPENED_BY_LJM.
         Dropping ppc support for Mac OS X; still supporting i386 and x86_64.
         Updated to libusb-1.0.19.
         Added message and quick-start URLs for indicating that the UD devices
         are not supported.
         Fixing LJM_StreamBurst thread-safety and memory leak.
         Fixed memory leak during reconnect.
         Fixed possible seg fault when device attribute loading fails.
         Fixed Windows TCP stream handle leak.
         Fixed bug where reconnect happens later than it should.
         Fixed error message thread-safety.
1.1301 - Fixing bug when device does not respond after a Modbus Feedback write
         that has no read component. Fixing USB reconnect issue.
1.1300 - Added functions: LJM_eReadAddressByteArray, LJM_eReadNameByteArray,
         LJM_eWriteAddressByteArray, and LJM_eWriteNameByteArray.
         Added secret function Internal_LJM_GetHandles.
1.1201 - B-type thermocouple conversion: increased the range and used new
         constants.
1.1200 - Changed ListAll to use UDP instead of TCP. Added LJM_GetSpecificIPsInfo.
         Changed from ljm_special_addresses.config to ljm_specific_ips.config.
         Added `void` to parameter list for LJM_CloseAll, LJM_LoadConstants,
         and LJM_ResetLog. Added functionality to broadcast on all available
         network adapters.
1.1100 - Added LJME_FUNCTION_DOES_NOT_SUPPORT_THIS_TYPE. Changed
         LJME_INVALID_VALUE_TYPE to LJME_UNKNOWN_VALUE_TYPE. Fixed open-by-name
         issue.
1.1003 - Fixed synchronization bug that causes problems primarily in Kipling.
1.1002 - Fixed WiFi discovery issue.
1.1001 - Fixed TCP open bugs. Removed threading of USB open for faster opening
         of USB devices when Open connectionType is LJM_ctANY.
1.1000 - Added LJM_RegisterDeviceReconnectCallback. Added
         LJM_AUTO_RECONNECT_WAIT_MS. Now using a separate device reconnection
         thread.
1.0900 - Added LJM_StreamBurst. Added Special Address functionality and the
         corresponding configs LJM_SPECIAL_ADDRESSES_FILE and
         LJM_SPECIAL_ADDRESSES_STATUS. Fixed device memory management and thread
         safety issues. Changed LJME_COULD_NOT_CLAIM_DEVICE to
         LJME_DEVICE_CURRENTLY_CLAIMED_BY_ANOTHER_PROCESS.
1.0808 - Fixed a segmentation fault when stream is running upon program termination.
1.0807 - Fixed a segmentation fault.
1.0806 - Adding LJM_STREAM_AIN_BINARY flag. Fixed possible pure virtual call
         during reconnect.
1.0805 - Fixed segmentation fault during TCP open on Mac/Linux. Fixed logger
         issue.
1.0804 - Made some performance gains during stream.
1.0803 - Removed LJM_MAX_TCP_PACKET_NUM_BYTES_NON_T7. Improved stream stop time.
         Fixed stream seg fault. Fixed stream LJME_TRANSACTION_ID_ERR.
1.0802 - Added Type C thermocouple support.
1.0801 - Changed default WiFi send/receive timeout to 4000 ms.
         Added check for when API functions with NumFrames / NumValues
         parameters are 0 or less, in which case LJME_INVALID_PARAMETER is
         returned.
1.0800 - Client code should be re-compiled.
         Changed LabJackM.h constant LJM_DEMO_MODE from "-1" to "-2".
         Introduced new configs:
          - LJM_USB_SEND_RECEIVE_TIMEOUT_MS
          - LJM_ETHERNET_SEND_RECEIVE_TIMEOUT_MS
          - LJM_ETHERNET_OPEN_TIMEOUT_MS
          - LJM_WIFI_SEND_RECEIVE_TIMEOUT_MS
          - LJM_WIFI_OPEN_TIMEOUT_MS
         The following configs are now write-only shortcuts for the new
         configs:
          - LJM_OPEN_TCP_DEVICE_TIMEOUT_MS
          - LJM_SEND_RECEIVE_TIMEOUT_MS
         Removed LabJackM.h constant: LJM_DEFAULT_TIMEOUT. Fixed
         LJME_TRANSACTION_ID_ERR stream bug.
1.0707 - Added LJME_DEBUG_LOG_FILE_NOT_OPEN. Changed the default log level to
         LJM_INFO. Fixed LJME_INTENT_NOT_READY error when streaming via WiFi.
         Fixed stream-out error. Fixed stream sleep calculation. Stream
         refactors.
1.0706 - Fixed easy functions bug for digits that can cause reading/writing to
         an incorrect address.
1.0705 - Fixed easy functions bug that caused LJME_PACKET_SIZE_TOO_LARGE.
1.0704 - Device reconnect bug fix.
1.0703 - LJM_eStreamStart: automatically applying stream settling of 10 if
         firmware is old and stream settling reads as 0. Fixed Ethernet
         streaming for Windows 8. Added the keyword static to LabJackM.h
         variable definitions. Fixed error check for string length to
         LJM_eWriteAddressString / LJM_eWriteNameString. Fixed burst stream
         bug. Fixed WiFi stream bug. Fixed heap memory issue. Stream callback
         improvement.
1.0702 - Added configuration parameter LJM_STREAM_CONVERT_AIN14 to control
         whether AIN14 is converted to units Kelvin or not - default is to not
         do so. Modified error message for unknown constants. Fix for deadlock
         when eStreamStop was not called.
1.0701 - Removed LJM_dtUE9, LJM_dtU3, LJM_dtU6, and LJM_dtSKYMOTE_BRIDGE from
         LabJackM.h. Removed erroneous setting of stream resolution and settling
         time during LJM_eStreamStart. Accepting additional values for
         DeviceType and ConnectionType for the Open and ListAll functions, such
         as "ETH" for LJM_ctETHERNET. Added stream burst support. Added retry to
         calibration constants loading during stream start.
1.0700 - New function: LJM_SetStreamCallback
         Added support for alternate stream resolution and settling. Added
         basic support for WiFi streaming.
1.0601 - Fixed stream for range/gain of 0.1V. Fixed error when streaming
         STREAM_DATA_CAPTURE_16.
1.0600 - Changed the config parameter LJM_HEAL_CONNECTION_MODE to
         LJM_AUTO_RECONNECT_STICKY_SERIAL and
         LJM_AUTO_RECONNECT_STICKY_CONNECTION.
         Beta Wifi stream support added.
1.0501 - Fix for IP-specified automatic connection healing. Speedup for device
         opening on Mac.
1.0500 - New config parameter: LJM_ZERO_LENGTH_ARRAY_MODE
         Speedup for certain types of opening USB connections on Mac.
1.0401 - Bug fix to LJM_HEAL_CONNECTION_MODE_BY_OPEN_PARAMETERS for Windows
         TCP devices. Added error check for string length to
         LJM_eWriteAddressString.
1.0400 - New function: LJM_ListAllExtended
         New config parameters:
         LJM_STREAM_SCANS_RETURN, LJM_STREAM_RECEIVE_TIMEOUT_MODE, and
         LJM_STREAM_RECEIVE_TIMEOUT_MS
1.0300 - New functions:
         LJM_LookupConstantValue and LJM_LookupConstantName.
         Improved version of LJM_ListAll / LJM_ListAllS, which uses multiple
         attempts to find devices via TCP and uses UDP to gain device
         information.
1.0201 - Stream timing fix. Constants file (ljm_constants.json) update.
1.0200 - New functions:
         LJM_eReadAddressArray, LJM_eReadNameArray, LJM_eWriteAddressArray,
         and LJM_eWriteNameArray.
         O-Stream support. Stream thread timing modification. LJM_BYTES array
         fix. Auto-closing devices upon exit. Debug logger thread default
         sleep is now 50 ms. Debug logger thread temporarily stops running if
         no log messages are received for (100 ms + 2 * logger sleep time).
         Constants file (ljm_constants.json) update.
1.0103 - Fix for stream auto-recovery. Fix for stream digital channel.
         Fix for bug when TCP open times out on Mac OS X and Linux.
1.0102 - Fixed LJM_LoadConstantsFromString deadlock. Fixed
         LJM_ReadLibraryConfigS deadlock. Added LJM_DEFAULT_UNIT_ID to
         LabJackM.h. Not flushing Windows USB on open. Support for streaming
         digital channels. Debug logger improvements.
1.0101 - Mac/Linux USB streaming fixes. LJM_Open and LJM_OpenS Identifier
         defaults to decimal IP rather than hex IP. Fixed deadlock situation.
         Config file interpretation improvements. Now flushing before opening
         USB devices.
1.0100 - Added the functions LJM_LoadConstantsFromFile and
         LJM_LoadConstantsFromString. Streaming fixes.
1.0000 - Broken backwards compatibility - Constants renames:
         LJM_LOG_MODE => LJM_DEBUG_LOG_MODE,
         LJM_LOG_LEVEL => LJM_DEBUG_LOG_LEVEL,
         LJM_LOG_BUFFER_MAX_SIZE => LJM_DEBUG_LOG_BUFFER_MAX_SIZE,
         LJM_LOG_SLEEP_TIME_MS => LJM_DEBUG_LOG_SLEEP_TIME_MS,
         LJM_LOG_FILE => LJM_DEBUG_LOG_FILE,
         LJM_LOG_FILE_MAX_SIZE => LJM_DEBUG_LOG_FILE_MAX_SIZE,
         LJM_NAME_CONSTANTS_FILE => LJM_MODBUS_MAP_CONSTANTS_FILE,
         LJME_LOG_FAILURE => LJME_DEFAULT_LOG_FAILURE.
         Added LJM_LoadConfigurationFile and config file loading on LJM
         startup. Stream improvements. Debug logging improvements.
0.0246 - Bug fixes. LJME_USING_DEFAULT_CALIBRATION will return the root
         error in LJM_ErrorToString.
0.0245 - Fixed bug where LJM would not return an error when an error occurred.
         Added calibration constants verification during streaming. Added
         stream verifications.
0.0244 - Broken backwards compatibility - LJM_eWriteString is now
         LJM_eWriteNameString, LJM_eReadString is now LJM_eReadNameString.
         Added LJM_eWriteAddressString and LJM_eReadAddressString.
         Streaming speedups and fixes, including allowing an arbitrary
         number of samples in LJM_eStreamStart/LJM_eStreamRead. Added
         LJM_STREAM_TRANSFERS_PER_SECOND config parameter. Now loading max
         packet size from T7s and device name for Digits. Fixed device open
         bug. Open calls now return LJME_OVERSPECIFIED_PORT when connection
         type is "any" and port is specified. Fixed altername name address
         bug. Added LJM_RETRY_ON_TRANSACTION_ID_MISMATCH configuration.
         Added check against the constants file for old firmware (see
         LJM_OLD_FIRMWARE_CHECK). Added Modbus operation re-try when the device
         returns an unexpected Transaction ID (see
         LJM_RETRY_ON_TRANSACTION_ID_MISMATCH). Added LJM_TCVoltsToTemp
         function.
0.0243 - LJM_eStreamRead breaks backwards compatibility - the NumSkippedScans
         parameter has been removed. LJM_eStreamStart breaks backwards
         compatibility - the aScanList_Neg parameter has been removed.
         Removed unused errorcodes from this header file. Streaming
         improvements. Worst-case device open times have been improved.
0.0242 - LJM_Open() breaks backwards compatibility - the DeviceType and
         ConnectionType parameters are now pass-by-value rather than
         pointers. Removed LJME_MUST_SPECIFY_DT_AND_CT. Streaming revisions.
0.0241 - Fixed constant file/log file location resolution for Windows.
0.0240 - Removed dllexport for Windows.
0.0239 - OpenS/ListAllS now make the LJM_dt/LJM_ct/LJM_id prefixes optional.
         __stdcall functions for Windows.
0.0238 - More const parameters. Outputs invalid address with
         LJME_MBE2_ILLEGAL_DATA_ADDRESS or LJME_INVALID_ADDRESS when
         relevant. Automatically reloads constants file more often. Improved
         logging.
0.0237 - Bug fix for Open
0.0236 - Limited AutoResponse streaming support.
0.0235 - LJME_INVALID_NAME will give the last unrecognized names.
0.0234 - Default send/receive timeout is now 20 seconds. Fixed
         synchronization issues. Command-Response stream improvements.
0.0233 - LJM_ListAll/LJM_ListAllS now have new prototypes and can accept any
         device or connection type.
0.0231 - Added LJM_AddressToType/LJM_AddressesToTypes
0.0229 - Limited streaming support
0.0225 - Fixed endianness issue with ListAll.
0.0224 - Added LJM_ALLOWS_AUTO_CONDENSE_ADDRESSES configuration.
         Added LJME_ERROR_RETRIEVAL_FAILURE.
0.0223 - Fixed packet bugs, handle bugs, and updated error names.
         LJME_LABJACK_NOT_FOUND => LJME_DEVICE_NOT_FOUND
         LJME_ATTRIBUTE_LOAD_FAILURE => LJME_ATTR_LOAD_COMM_FAILURE
         LJME_DEVICE_ALREADY_OPEN => LJME_COULD_NOT_CLAIM_DEVICE
0.0222 - Fixed many opening bugs, added WiFi device discovery
0.0217 - Added LJM_eReadString and LJM_eWriteString
0.0215 - Added the MAC address and IPv4 address converter functions
0.0214 - Added LJM_ReadLibraryConfigS and LJM_WriteLibraryConfigS,
         removed LJM_GetDriverVersion.
0.0212 - Added basic logging functionality.
0.0211 - Added LJM_STRING functionality.
0.0209 - JSON Modbus constants file.
0.0207 - Implementation LJM_ListAll.
0.0206 - Open functions now return any handle matching an already open device
         if possible.
         Implementation of the easy functions.
0.0205 - New LJM_ErrorToString style.
0.0202 - Added the array-capable easy functions.
