CR6 OS 2.0
Updated: 16-04-2015

  1. (CRITICAL) Upgrading from version 1 of the Operating System will reset all the CR6’s settings back to factory default. It is recommended that this OS not be sent remotely and without getting a backup of you current logger settings or taking programmatic measures to insure your settings are restored after the logger is updated. This can be done using DevConfig’s backup utility and CRBasic instruction SetSetting, respectively.
  2. (CRITICAL) The following instructions are still not implemented in the CR6: CWB100(), CWB100Diagnostics(), CWB100Routes(), CWB100RSSI(), GPS(), and MuxSelect().
  3. The IPInfo() instruction now provides a way to return the remote IP address of a connection handle. If the handle number is greater than or equal to 100, it will return either an IPv4 or IPv6 address. The second option of IPInfo() is ignored when the connection handle is greater than or equal to 100.
  4. Fixed updating CommsMemFree when monitoring the status field via CRBasic.
  5. Fixed stack allocation when email, FTP, and HTTP clients are within a subroutine or function that is declared in a different sequence than when executed at run time. This sometimes resulted in a watchdog.
  6. Limited IPRoute() to not execute at compile time unless it is before BeginProg in the CRBasic program.
  7. Modified IPRoute() so it can be changed on the fly.
  8. Fixed PPPOpen() when assigning return value to an element in an array.
  9. Changed serial comport shutdown process used by PPPClose() and SerialClose() to wait for the comm task to finish transmitting before they shutoff the comport.
  10. Fixed data table streaming of a single element of an array as in "DataTable.FieldName(2).
  11. Added a DHCP server that can be used for WiFi interfaces (e.g. NL240). Includes support for NL240 configured for ad hoc mode ("create a network") and connected by CSIOIP() (configured with Bridge Mode Enabled = TRUE)
  12. Fixed EmailSend() and other client instructions so they can correctly run in the 4th slow sequence.
  13. Changed EmailRecv() so that "From" (sender) information is not required to be enclosed in < > when parsing.
  14. Enhanced EmailSend() so that leading spaces are stripped from email addresses before using, when multiple addresses are passed to the ToAddr parameter. Previously, the user needed to make sure the addresses specified in ToAddr contained no leading spaces.
  15. Fixed TLS for email so that it will work every time instead of every other time.
  16. Changed CSIOIP so that if the datalogger receives a non-zero IP address from the NL2xx and the datalogger CSIOIP address is not static, then stop DHCP and auto IP and remove the DNS servers.
  17. Fixed EthernetPower to skip turning PPP off.
  18. Enhanced FTPClient() in conjunction with the files manager setting (3210) so that it will return the new filename that is controlled by the files manager setting. The new filename is now placed into the local file name variable.
  19. Added the ability to access all datalogger settings and status from CRBasic and keyboard display. Previously, some settings were not accessible from the keyboard display or program.
  20. Changed PakBus hop metric for TCP connections to be 1 sec instead of 5 sec unless the connection is over PPP.
  21. Changed PakBus/TCP to not close the TCP connection if a route is lost but neighbors still exists on the connection.
  22. Fixed PakBus/TCP Password authorization so that the TCPOpen() does not return a connection before the authorization is complete. This manifested as not being able to connect with Konect GDS.
  23. Fixed dialing a modem via PPP or Modem Callback so that if dialing fails, and the modem outputs unknown characters to the datalogger, that the echo process continues to work.
  24. Fixed PPPClose() to get rid of the 5 second delay and to not inadvertently close the NL240 also.
  25. Fixed possible asynchronous problem when dialing a modem with PPP.
  26. Removed looking for "CLIENT" while connected in PPP.
  27. Modified PPP so that if a comport is setup for PPP, don't let any characters enter the Terminal Mode even if the program has closed PPP.
  28. Changed PPP so that when closing the session is unsuccessful, send +++ and AT+CGATT=0 to try to get the modem off line.
  29. Enhanced PPP dialing messages in IP trace and IP status.
  30. Fixed keyboard display security challenge to not incorrectly re-challenge when backing out of a secured menu.
  31. Changed indentation (reduced) of displayed values while editing constant in ConstTable.
  32. Added in keyboard display ConstTable editor an "Apply and Restart" flag that will cause the changes to the ConstTable to be applied and the program restarted. This behaves the same way as when you escape from the ConstTable menu and are prompted to save the changes.
  33. Updated keyboard display of settings to show all logger settings available. Previously only a subset of settings were displayed for editing.
  34. Added a 6th parameter (optional) to DNP instruction; 1 means TLS enabled.
  35. Fixed DNP3 when the swath for the DNPVariable instruction is 1.
  36. Fixed SDM-SIO1 DNP3 Master.
  37. Changed the DNPFlag parameter so that if the flag parameter is smaller than the array for the source parameter, then the last element of the flag array is used for all of the remaining source array elements.
  38. Changed the DNPEvent parameter so that if the DNPEvent array is smaller than the source array, the last element of the DNPEvent array is used for all of the remaining source array elements.
  39. Changed DNP3 so that more than 65535 events can be stored and so that it does not use twice as much memory as needed.
  40. Added DNP3 indexing into arrays so that multiple DNP3 classes can be specified with one source array.
  41. Changed DNP datagram implementation so that if DNP comport parameter is negative then PakBus Datagram is activated.
  42. Added support for DNP3 object 110 (string).
  43. Added support for DNP3 group 21 (frozen counter).
  44. Added DNP3 group 0, variations 240, 241, 242, 243, 247, 248, 250, 252, 254, 255.
  45. Added an optional parameter to DNPUpdate() called ConnectHandle that provides a TCP Connection Handle controlled by TCPOpen().
  46. Added support for DNP3 Unsolicited Responses.
  47. Added support in DNP3 for single precision floating point.
  48. Added DNP3 support for object 50, variation 1 (read time and date).
  49. Changed the meaning of the link verification, timeout parameter in DNP() as follows: 1000 = Disable link layer confirmation, disable link verification, application layer timeout is 60 seconds. 1sss = Disable link layer confirmation, disable link verification, application layer timeout is sss seconds (max is 60 seconds). 0000 = Disable link layer confirmation, enable link verification, application layer timeout is 60 seconds. 0sss = Enable link verification, link layer and application layer confirmation timeout is sss seconds (max is 60 seconds).
  50. Fixed erroneous closing of comport that is open for PPP or serial comms when characters directed to the terminal are intercepted.
  51. Fixed GetVariables() responding to command when the remote wants ASCII and our variable is NSEC (timestamp), return the date/time instead of NAN.
  52. Corrected a problem using the Const declaration when using values exceeding (2^31) – 1 (2,147,483,647). If a value greater than (2^31) -1 was used as the constant, the actual value used in the program was 2,147,483,647. If a user’s program contains a Const declaration with a desired floating point value greater than 2,147,483,647, they can correct previously gather data by doing a simple calculation. To correct calculation errors caused by this issue a user will need to reprocess values obtained using the erroneous constant. For example if the Const in question was used as a multiplier, you should divide the result by 2,147,483,647, then multiply by the actual desired constant.
  53. Added support for ACPower() instruction. The instruction is the same as it is on the CRx000.
  54. Added support for PWM() instruction. The instruction is the same as it is on the CRx000.
  55. Added optional parameter to ExciteV() to allow differential excitation on the adjacent U channel.
  56. Fixed SerialOpen() so that optional CommsMode parameter correctly overrode the current Configuration setting for ComC1 and ComC3 at runtime.
  57. Changed compiler to allow a reference to tablename.fieldname() to act the same as tablename.fieldname.
  58. Fixed compiling a program that is missing a referenced sub routine. This was crashing the PC compiler since FunctionsPtr is NULL yet was used.
  59. Changed compile time error checking so that we don't flag a compile out of bounds error for covariance if a variable index is issued for the source. At run time an out of bounds will be flagged if necessary.
  60. Modified SpaAvg() so a compile error will be reported if the swath parameter is a constant that is beyond the boundary of the source array.
  61. Add -u command line in PC compiler. This option will instruct the PC compiler to check for and report unused variables and subroutines. For example "cr1comp.exe -u myprog.cr1" would report "Warning: VarA declared but not used" if myprog.cr1 had a variable VarA declared, but VarA is not actually used within the program.
  62. Enhanced Instr() function by adding Search Options 9 and 10. Search options 9 and 10 find the start of FilterString, starting at the end of the string and searching backwards through SearchString until it finds the beginning of FilterString, reaches the StartString position, or reaches the beginning of SearchString. Option 9 performs a case sensitive search. Option 10 performs a case insensitive search.
  63. Fixed a PortPairConfig() initialization problem. PortPairConfig() was only successful the first time it was used. They symptom was that the port was set to a 5V level even though the program contained a PortPairConfig Option parameter of 2 (3.3V).
  64. Fixed slow slicing issue in pipeline mode with no measurements in main scan and running faster than 10mS scan intervals. There was not sufficient time to slice, due to the wake up of ADC.
  65. Modified the OS so when resetting the settings coming from OS download. For the control port /comports, set the flag that says the baud rate was set via the settings instead of from serial open.
  66. Set maximum number of tables that have Tablefile() to 30. (significant)
  67. Modified the OS for streaming data so that the optional parameter ‘interval’ cannot be non-zero when the table specified is Public, Status, ConstTable, or DataTableInfo. Also, when streaming Public, Status, Constant, or Datatableinfo, increment the record number so there is a record to send.
  68. Changed Settings by renaming the "Hibernate" settings field to "DisableLithium". The new field name will be used in the keyboard display and must be used when referencing in CRBasic SetSetting(“DisableLithium”,TRUE).
  69. Changed exchange of settings for TLS Certificate, TLS Private Key, and TLS Private Key Password so that they are not passed back to Device Configuration if a) PakBus Encryption is not active and the connection is TCP/IP or b) the connection is not direct link.