Fixed initialization of scalar values declared as Long when the value is > 2^24. The value was getting loaded into a float then back to an integer, which caused lost resolution.
Improved FieldCal when working with shared mode variables. FieldCal also modified so reps of zero disables operation with no error code. This provides the wizard another way to disable shared FieldCals.
Increased timeout for OS download from 75 seconds to 100 seconds.
Changed FTPClient to not use up file handles when ACTIVE mode is set but the server returns an error since it requires PASSIVE mode.
Improved FTPClient to return a failure if the connection is successful but the file transfer in some way fails.
Improved dialing so that bytes arriving immediately after dialing is successful are not thrown away.
Changed FTP server to not allow HIDDEN files to be retrieved.
Fixed http in the case that when memory has been depleted possible memory corruption occured.
Improved TCP to enhance FTPClient success and lessen chances of a watchdog error.
Extended minimum TCP retransmission from 1 second to 4 seconds.
Fixed PakBus/TCP password.
Improved SerialOpen and SerialClose to use a new flag so that SerialClose does not disturb PPP dialing if SerialOpen had not opened the comport.
Added FTP client and server to the 'W' terminal mode to "sniff" on TCP commands.
Fixed FTPClientso that it does not occasionally fail unnecessarily.
Improved PPPOpen by adding a 30 second timeout to wait.
Changed PPPClose to work better when called multiple times; changed SerialOpen and SerialClose to coordinate better with PPP.
Changed PPP negotiation timeout to 6 seconds from 4 seconds to prevent PPP connection to a very slow server.
Added PPP status information to IPINFO status.
Improved TCP SerialIn. When using TCP serial in and out via CRBasic, flush the input buffer when TCP is closed.
Fixed possible memory corruption using tablefile and web services JSON output when reading from a final storage string type. If the string length was greater than 64 characters the stack buffer space was not larger enough and memory was corrupted.
Fixed JSON and XML format in the case there are no records.
Improved FileUpload when the file cannot be opened or some other error happens that could lead to multiple uses of the same comms memory, possibly causing memory corruption and a watchdog.
Improved FileUpload if an error is encountered in the middle of reading the file.
Fixed possible problem uploading a file if a fragment needs to be resent .
Changed PakBus file upload. When uploading a file that is associated with an active CardOut, the data will be flushed to the card prior to starting the upload. The program may continue storing during the upload, this may give unexpected results in the retrieved file after conversion.
Improved reserving memory for Card Task to keep the memory locked up to the point where the task starts so another task does not get the memory. This problem was causing out of memory errors in a test suite program when TLS was enabled.
Improved CardOut by pre-allocating memory for Card thread stack size and file information, to ensure there is enough memory available after locking Final Storage memory. This was causing some programs to fail compile after a power cycle with a CardOut instruction.
Fixed ACPower Split Phase measurement.
Fixed DNP3 so that the flags for all objects and variations are recorded correctly.
Changed DNP3 so that by default there is no Confirm Link Data Request. Confirm Link Data Request is activated by setting the (optional) timeout parameter to non-zero, specifying the time in seconds to wait for the Data Link response.
Changed DefaultSettings for BaudRateSDC to 115200.
Changed calibration check to give a warning rather than error and force the gain range of bad cals to NAN.
Improved Terminal 'W' "sniff" command to allow TCP sniffing on a TCP com port for all connections except the connection we are sniffing on.
Changed 'W' terminal mode ASCII(Y)? so a carriage return will default to Y instead of exiting.
Fixed PakBus Terminal mode 'P' and 'W' possible memory overwrite when sending small packets back.
Changed TableFile when running in interval mode and the table is set up as non-interval, to not use the calculated approximate output file size in determining whether to delete old files. The approximate file size information is used to avoid attempting a write failing, then having to delete a file and try again. If the table is called or outputs conditionally, then the approximate file size can cause premature deletion of files and reduction of the number of files stored on the drive.
Improved PortGet to allow ports 11 and 12, these return the state of pulse channel 1 and pulse channel 2, respectively. The CR3000 also allows port 13 for Pulse channel 3.
Changed TimerIO to not be allowed outside Scan..NextScan, and don't crash compiler if it is.
Enhanced TableFile to force a flush of all internal storage every time an SC115 is attached. This enhanced milking mode is enabled by setting the NumRecs parameter to 0 while the interval is -1. With the Interval -1 and the NumRecs > 0, NumRecs back from the current record will be stored to the file. Also changed the behavior when MaxFiles = 0. The filename will remain fixed with no number appended. The old file, if ones exists, will be overwritten at each output.
Improved SDMIO16 to allow Longs in Dest/Source and Status parameters.
Synchronized SDM and processing after setting time and before re-starting the task sequencer. NOTE: This had the potential of hanging programs using SDM devices when time was set.
Enhanced pre-compiler with a new mode to process a program with conditional compiling (#if..#end, etc.) to store the program that results from evaluating the conditional compilation directives. This is accessed in CRBasic from the Compile
Conditional Compile and Save menu item (version 3.3 or greater) or enabled from the pre-compiler command line by using -p . This allows a master file to be processed to generate desired "configurations".
Improved HydraProbe instruction by adding LOAM soil type.
Fixed float to long conversion problems in expressions with multiple AND, OR, XOR, =, IMP, <<, and >> operators.
Fixed SDI12 terminal snooping ('W' command).
Fixed Central Routers to stop a memory leak on CommsMemFree(2)
Fixed a possible problem with the Files Manager setting when removing files with older serial numbers.
Changed web service to return "Last-Modified-Date" of files and to return 304 "Not Modified" if the file has not been modified since. This allows the http client to use the cached file instead of retrieving the same file again.
Changed FileList to guard against a file name that is larger than the string size, which was corrupting adjacent memory.
Changed ArrayLength for variables of type String to return the number of Strings in the array instead of the total number of characters.
Changed ConstTable editing to not append a each time a constant is modified.
Improved FFT instruction by adding checking to make sure the source is as large as needed according to N and option parameters.
Changed Move instruction to not use null pointer to field information when the source is an expression.
Increased buffer size for keyboard/display buffers that receive the time information. With the null it can go beyond the previously allocated 21 characters.
Removed warning for WorstCase table not being called.
Changed to not allow CallTable to be used with WorstCase table.
Changed loading OS from keyboard/display file menu to check for memory before allocating, so that a warning can notify the user to stop the running program and try again.
Fixed sprintf problem with -0. We thought we had fixed this twice previously but found that the compiler was optimizing away our intended fix. The check for -0 was working as the value on the stack was changed but the compiler had already loaded the value in a register and did not detect that it needed to re-read the modified value. This allowed the -0 to pass into our optimized conversion routine causing a lock up.
Changed EmailRecv so date, subject, etc. are only stored if the file is found.
Fixed For loop with no index variable assigned to not crash compiler.
Improved ModBusMaster and ModBusSlave to allow them to get and receive String Data (2 bytes per register, Null terminated.)
Added UINT4 (Unsigned Integer) data type in DataTable fields
Changed ConstTable editing to accommodate encrypted files.
Improved USB to allow it to work with FileManage.
Fixed subroutine error message for a subroutine name that begins with numeric, causing compiler to crash.