Change Log 

2019-05-17-1400 JPL     SHA-256 checksum: BD272604D1CC9F042594C4BD1EAD145AA9FFD104556725DFBC04EA889451A006
RediGateMMI : Each time a Banner is displayed, then check if Reconfiguring
AutoProc : Looping of Event Files with Last Event / Jump to Last Event
JSON_Rbe : use GMT/UTC instead of localtime() for all CSV operations
CellLEDs : Problem if not UBLOX or (CoreMSQID == 0)

2019-04-04-1000 JPL
UMUX : Sent AT+CEDRSX+3,2 ..3,2...3,5.. to disable Power Save Mode
     : which could potentially disable inbound connections
RediGate400_configs.tgz : New from Jon Tandy with SARA-R4 enabled
cellmodem.tcl : From JPT. I forgot to update tarball with this file.
CellLEDs : Try twice to set AT+UGPS=1,0,3 for basic satellites
uff2lnux : From Valmet5?????.1.cfg to Valmet5Mast?????.1.cfg
SosMast : Read support of Omni-6K/7K Cmd-65
SRTPMast : More support of CPU-Regs in word and Bit modes

2019-03-28-1700 JPL
RediGateMMI : ALter Chan/Rtu in CustomReport option, can view CSV files
            : from /tmp/sdcard1/SNF*/*.csv
enize : ENIZING for Schenck OpenSSL encryption
ROCMast : Fuller support of TypePnt-99 (Tables 0 - 15) Configurable
        : OpCodes 10/11 reading and writing
CirrusRBE : Can process SARA-R4 GPS data. It could take up to two minutes
          : to get GPS intialized
JSON_Rbe : Fixed bug in processing sdcard/*.csv historical files
start : Attempt to mount USB memory stick if SCDARD does not exist
nodir : rm Bootdelay in both /tmp/director, /tmp/redigate/

2018-12-12-1800 JPL
bootdelay : If ttyS0 interrupts occur within 15 seconds then wait up
          : to 1.5 minutes before starting RediGate or Bootloader
SosMast : ASCII Modbus handles LRC errors without crashing
ModMast : Ditto
uff2lnux : UBlox SARA-R410 Verizon and AT&T support w, w/o UMUX
UMUX : Newest
RediGateMMI : Reverse video help text for Modem AT command
            : Does not have AutoProc Debug level support yet.
dir_tool : Corrected format for UINT32 in RC_LIST, RJ_LIST
gwutl : JPT updates some error messages : Ditto
NetworkMonitor: Ditto
JSON_Rbe : Latest
ROCMast : Better processing of Echoed back PARAMETER header bytes
VirtMast : Latest, Correct RTU_STAT_POLL_DONE/WROTE_DATA
AutoProc : Fisrt Version
MQisdp : Newest
MQRbePr : Newest
DirectorXDBM : Newest
Ymodem : Newest
CirrusRBE : AutoProc support to publish TextFile as RBE String
SpkPlgRBE : Support AutoProc to publish TextFile as RBE String
RediGateMMI : Support for AutoProc diags per Proces Table Row
DirectorScan : If not OneBadPoll kills RTU then MS-DOS Epoch Seconds
start : mount -t vfat -o umask=000 /dev/mmcblk0p1 /tmp/sdcard/

2018-09-06-1000 JPL
ROCMast : More validation of certain OpCodes
hex2bin : for Schneck encryption : JPT updated logging bug
NetworkMonitor: JPT updated
VirtMast : ENGINEERING_SCALE function
ModMast : Preliminary 64bit data reading w/o write
SosMast (NOT) : Preliminary 64bit data reading w/o write (pending testing)
JSON_Rbe : Cleaned up Historical file search of multiple days
dir_tool : produces output if "dir_tool -1 -1 DS" searches all RTU list
uff2lnux : Network Monitor changes, AutoProcess object support
RediGateMMI : RPN-Calc option 'FF' has Double-Hex, Hex->Double converts

2018-08-07-0800 JPL
uff2lnux : Removed some support for Sangoma
VirtMast : New POD_ENGINEER_SCALING function

2018-07-25-1400 JPL
RediGateMMI : Option-21 (Alter CSV StartTime) correctly display Month
CirrusRBE : Processes Header Only CSV files
uff2lnux : JPT Network Monitor Version 2
NetworkMonitor: JPT Initial Script
start : Added "NetworkMonitor restart" as last line
gwutl : JPT Gateway Utility Script
dir_tool : Latest : JPT background Network Monitor Script

2018-06-20-0900 JPL
JSON_Rbe : If column heading has EpochTimeMS then 64 bit integer time
         : of MilliSeconds since 1969. Intelligent searching through
         : CSV files for records to publish and publish all records
         : not just the last two days.
CirrusRBE : ditto. Service mosquitt_loop() during searching.
SpkPlgRBE : Force UNDERSCOREs into RtuName. Implement ReconnectDelay.
StoreFwd : If Pacing is 0 seconds then store Milliseconds since 1969
         : into first column with heading of "EpochTimeMS"
         : If pacing=0 seconds then Millisecond timestamps
RediGateMMI : Directory Services allows user to modify Last CSV Time
root : call /etc/init.d/S01setuptimestamp update
S40crond : 55 **** /etc/init.d/S01setuptimestamp update
S01setuptimestamp : Make certain that clock is 2018 or better
uff2lunx : Support for multiple Network-Monitor Objects
MQisdp : Will adhere better to Reconnect Pacing
dir_tool : Latest

2018-05-22-1000 JPL : Allow Single HReg write to >49999 address
JSON_Rbe : Allow Long ${GATEWAY} name
uff2lnux : Allow long ${GATEWAY} name in JSON Topics
S15cellmodem : kill tclsh added to all cases
StoreFwd : Better file managment at Midnight, Send today and yesterday
         : data
TOTFLOMast : Support for DB-II Data Structure Groups 5,6,7
MQisdp : Removed spaces from URL Names and Gateway Name

2018-04-23-1400 JPL
StoreFwd : When no connection exists continuously check for Midnight
         : for creating new starting CSV files, No alter for Timezone
DirectorScan : Support for SetOsVal and other updates
uff2lnux : List names of POD Functions 129 to 139. Ctl/Mon Netwrk Object
UffUpdate.txt : Move Ctl/Mon-Network object files to /etc/init.d/
TOTFLOMast : Don't abort POLL/CMD if SendMsg() fails from Broken PIPE

2018-03-13-1400 JPL
JSON_Rbe : THere was not enough checking if the MQttCLient buffer was
         : too full
uff2lnux : Latest
dirprofile : added ":/sbin" into export $PATH

2018-02-20-2200 JPL
uff2lnux : Ublox-SARA-R cell modem support
UffUpdate.txt :, move to /etc/init.d/
UMUX : CAT-M modem multiplexer. Does not use virtual hanadshake
     : Only send HDLC payloads of 107 byte, AT+CMUX=0,116...
S15cellmodem : If Modem_type=SARA-R4 call /etc/init.d/

2018-02-06-0900 JPL
TOTFLOMast : More diagnostics for 8 byte UNION. Continue 2018-01-26 tarbll
uff2lnux : MeasData support
JSON_Rbe : Even more TagName Command Searching validation

2018-01-26-1400 JPL
uff2lnux : Wesdac Protocol Support
TOTFLOMast : Support for RAMS Array 104 debugging. Allow for UCHAR+32
           : Data Type to indicate UNION data of INT32/REAL32 pair to be
           : after storing this UCHAR data. Real32 data regi will be
           : counted as a INT32 register. Support RAMS arrays 148 to 158
RediGateMMI : Don't ask for CellModem port 73 to 77

2017-12-27-0900 JPL     SHA-256 checksum: 792ED046E0275225609DD7630A0BB470A8B9869BB5853C0B27073E83DFCA14FB
  CIPMast       : Don't interpret "FLOTOTAL_100_Press" as "FLOTOTAL[100].Press

2017-12-13-1500 JPL
  dirprofile    : Some got "Director" text instead of "RediGate"
  JSON_Rbe      : Better management of Startup publishing

2017-12-12-1100 JPL
  TOTFLOWMast   : Sending a command could get into infinite loop
  JSON_Rbe      : Prevent double/triple publishes after New Broker Connection

2017-11-27-1200 JPL
  JSON_Rbe      : Device Management by subscribing to File topic with /DEVMAN/
                : will allow subscribed files to stored into /tmp/director/
                : and periodically a script will run to move to /home/director/
                : Immediately pub all RTUs RBEs after Gateway Birth/State topics
  TOTFLOMast    : Added OPERATIONS APP and SU G4 LIQ APP Support.
                : DTYPE_LONG: in ParseReply() was for only 2 bytes not four
  Ymodem        : Send file namess up to 127 bytes, debug to /tmp/ymodem.dbg
  dirprofile    : Added /sbin/ to path      : Get Out of BootLoader script
  bootloader    : Call
  dirprofile    : echo "reconfigure" or "reset" >/hom/dirctr/ in Bootloader mode
  start         : Process STAR files in /home/Dirupld/ and Multiples as well
  MQisdp        : Timestamp JSON/dir_tool subscribe files in /tmp/director/
                : with Milliseconds
  uff2lnux      : Enable JSON_Leg0 under legacy MQisdp

2017-11-02-1700 JPL
  JSONRbe       : ProcessJSON() was not correctly check cmd StringLengths
  CIPMast       : Fragmented Reading and works up to 4000 bytes

2017-10-25-1700 JPL
  TOTFLOMast    : Added Shutdown App Register(59, Safety Application)

2017-10-25-1000 JPL
  TOTFLOMast    : Trend File APP needed to act like HoldReg APP for programmable
                : data matching Polll Table Column used and inspecting RTDB Reg
  CellLEDs      : Removed double quotes around strings, support ATI for U-Blox

2017-10-11-1100 JPL
  CIPMast       : Support for 64bit "LINT" data type from L5XTool
  SpkPlgRBE     : CMD_MOD_STAT was breaking ipcmsg's with _fGotCmdModStat
  CirrusRBE     : Search for "/SNFCC_RRRRR/" for CSV Chan/Rtu numbers
  StoreFwd      : Remove Spaces from CSV file names
  TOTFLOMast    : RAMS App (Alarm Registers-8) support

2017-10-09-0900 JPL
  RediGateMMI   : Option-17 MQtt Status looks for 'SpkPlgRBE0'
  CirrusRBE     : Support Option-17 above, better rcvd-TagName validation
  SpkPlgRBE     : Ditto and if DNS-Ping fail, then netstat |grep 1883 |ESTAB
                : WalkTable command from MMI
  CellLEDs      : better -SIGINT management
  JSON_Rbe      : more validation of Received TagName search/matching
  uff2lnux      : Allow TOTFLOMast Protocol=271 for SlotNumb and StationName-10
  TOTFLOMast    : Latest
  S92leds       : usleep 1000000 from sleep 1

2017-08-24-1000 JPL
  uff2lnux      : Possibility of multiple SpkPlgRBE, new ACE Structure
  StoreFwd      : Possibility of multiple SpkPlgRBE, new ACE Structure
  CIPMast       : Support for manually entered Multi-Level UDTs for single value
  MQRbePR       : Latest
  MQXRbePR      : Latest
  CellLEDs      : Release malloc() memory and close /dev/acscomm?? port
  CirrusRBE     : If cannot connect to broker release malloc() memory and
                : after being killed
  .profile      : added ':/sbin' to export $PATH 
  RediGateMMI   : Allow simple ENTER to abort CustUtil_* selection

2017-08-16-1500 JPL
  TOTFLOMast    : HoldingRegs APP has unknown DTYPE_??? to use whatever
                : DTYPE_ associated inside the RTDB when DATA_SET_FORMATTED
  Bootloader    : changed from "dctr" uff header marker to "drct"

2017-08-11-0900 JPL
  uff2lnux      : Support for MultiRBE SparkPlugRBE
  VirtMast      : JSON_TRAP with correct Register Range Limit based on 'Count'
  JSON_Rbe      : No RBE Topics DiagMessage(Level-4), AWS Historical data
                : SUB_TOPIC_TO_RTDB versus Protocol
  SpkPlgRBE     : Control process for CirrusRBE
  CirrusRBE     : Multiple RTU Support, control subscriptions of CMDs
  StoreFwd      : If SpkPlgB_EZ not found then look for SpkPlgRBE instead

2017-07-24-1300 JPL
  VirtMast      : New Poll 'Source Type' -> JSON COMMAND TRAP
  JSON_Rbe      : Accept DATA_SET_FORMATTED from VirtMast JSON_CMD_TRAP
                : to enable a 'command' publish topic to Remote Device
                : Allow new Replacement ${REG@xxxxx} to use Strings from
                : Rtdb Regsiters @ 'xxxxx' (e.g. 49001) as replacements
                : Convert <CR><LF><TAB> chars to <SPACE> for Wonderware
  StoreFwd      : Some Diagnostic changes, dynamically locate starting RBE
                : Register instead of requirement of Coil 0001.
  Xml2uff       : Allow *.xml.gz files names from 128 to 256 bytes
  bacnet4linux  : 1st inclusion WEB server port 8000 of discovery data
  BACnetIpMast  : 1st inclusion
  uff2lnux      : BACnetMast needs SOS Table Size in both old/new NetCircuits
  start         : Added check for ../config/init.arcom/
  SpkPlgEZ      : If DNS connection to Broker then ping test for only
                : 4 seconds and the ping failure can force MQtt shutdown
  SpkPlgEZ      : If DNS connection to Broker then ping test for only
                : 4 seconds and then ping failure can force MQtt shutdown
  CirrusLink    : Channel Number was not being read from the config file
                : Double send Birth Certificates because of issues in DNS
                : with DHCP after pulling the RJ-45 Ethernet cable

2017-06-29-1200 JPL
  JSON_Rbe      : ${CHAN},${RTU},${DEV} replacements. PUB/SUB topics for
                : Device,Gateway,STATE,File(History?)
  MQisdp        : Allow for Topics up to 256 bytes
  RbePush       : Rotate through all four RBE Flags (0-3) each Interval
                : or Individual RBE flags if Chan00 to Chan03
                : Customer enters Interval in seconds
  CellLEDs      : Prevent TIME.GPS from getting large
  MQRbePr       : Topics up to 256 bytes, Publish TagNames w/o RETAIN, but
                : send after every Gateway/Birth topic

2017-06-16-0900 JPL
  uff2lnux      : MQisdpX? replacement for ${REDIGATE}, ${DIRECTOR} ${GROUP}
  MQisdp        : 256 char Topics

2017-06-12-1400 JPL
  CellLEDs      : If no AT-Cmds[] then only regular AT+CSQ request
  MQisdp        : Wild card replacements
  ModMast       : If 32bit Format and 16bit RTDB regs then save pairs
  dir_tool      : Write /tmp/*.dtl for "-1 -1 DS" device status
  VirtMast      : Latest
  MQisdp        : More Wildcard placements from Global.txt
  DirectorPLC   : Latest : Required for CirrusLink
  CirrusLink    : SparkPlugB-EZ support
  SpkPlgEZ      : Manager for CirrusLink
  uff2lnux      : Support for JSON_Rbe, StoreFwd, S03emux -SIGINT CellLEDs
  JSON_Rbe      : Beta for BlueMix
  StoreFwd      : Logging to SD-Card1 and publish via SpkPlgEZ
  PLC2Mast      : Validate unsoliced Write-Cmd-8 DestAddres in byte[4?]
  TANOMast      : Removed some diags

2017-06-05-1800 JPL
  MQRbePr       : Publish TagNames WITHOUT 'Retain' flag

2017-06-02-1000 JPL
  RediGateMMI   : View Store-N-Forward files on sdcard/usb-stick
  MQRbePr       : Publish TagNames after EVERY Director-BIRTH

2017-04-10-0900 JPL
  CellLEDs      : SIGINT trap to remove ipcmsg() and then exit
                : Flash LED even if PPP not running
  S92leds       : killall -SIGINT CellLEDs 2> /dev/null
  CirrusLink    : Beta ver of SparkPlug-B EZ for RBE deliver to Ignition
  SpkPlgEZ      : Control Process of CirrusLink to launch and kil
  ModSlave      : added SIGCHLD so system() call won't cause zombie process
  DialBackup    : Ditto
  uff2lnux      : Empty TagNames causes problems

2017-03-27-1100 JPL
  ROCMast       : Newest version
  uff2lnux      : Beta version of SparkPlug-B

2017-03-20-1500 JPL
  OmronFINSMast : Added Timer/Counter FLG(Bool) and PV(Word)

2017-03-20-1300 JPL
  OmronFINSMast  : Added Expansion Banked(0-7) Data Memory (0x90 to 97)

2017-03-15-1100 JPL
  xmlupdate      : was creating $ConfigName.xml.xml.gz
  OmronFINSMast  : From 2012 but first release in 3.12 Linux

2017-03-09-1400 JPL
  uff2lnux       : Was not managing Dirupld password correctly
  RediGate400_configs.tgz : New from JTandy

2017-03-08-1000 JPL
  xmlupldate     : Error to /home/*/Problem.txt if Multiple *.xml.gz files
  DirectorWdog   : umount /tmp/sdcard1/ /tmp/usb1/ if /home/director/reboot
  VirtMast       : all Functions CfgPtrs can be dynamic RTDB references

2017-03-01-1600 JPL
  VirtMast       : Enable TagNames as Column Headers in DATA_LOGGER
                 : Data can change TYPE and have Address Gaps
  DialBackup     : Some local values set to zero
  DirectorWdog   : If Dialbackup using VirtCOM? then LED controls prevent
                 : processing 'reset' or 'reconfigure' files
  ModMast        : Newest for Passthru Modbus aware for validations
  TANOMast       : Newest for RESET RTU command
  PLC2Mast       : Support for Peer Write 16bitWordPairs to 32bit RTDB Regs
  SRTPMast       : Force Local Source port to range 17000 to 17259 for OLD GEs
  S91RediGate    : case start) and stop) added with umount /tmp/sdcard1/

2017-02-23-1000 JPL
  MELSECMast     : For Denso project, read/write X,Y,M,D devices with RTDB
                 : Bool,Int16,Int32,Real32,String-32

2017-02-22-1000 JPL
  VirtMast       : if TS_ADC_AT_x100=1 then lower libdevmem(0x100 not 0x140)
  ModSlTcpd      : Newest
  ModSlave       : Close serial port after CMD_TERMINATE
  RediGateMMI    : Newest
  xmlupdate      : *.xml.gz and *.tmp.gz >> /home/*/AceConfigName.txt
  customer.Z4    : TS_ADC_AT_x100=1 for VirtMast
  PLC2Mast       : PLC2 WRITE INT-PAIR to BE/LE WORD 32 bit RTDB
  TANOMast       : If ModbusCoil Write an OFF then don't send Command
  MQisdp         : Latest
  DialBackup     : Changed some Diagnostics

2017-01-31-0900 JPL
  VirtMast       : VirtMast correctly rejects LOW_PRIORITY Cmd(MSG_REPLY) or
                 : iCmdRespMSQID==MSQID_INVALID
  dir_tool       : Add 100 to Channel-Param to keep original file in
                 : PF (publish-file) command
  cellmodem.tcl  : If DE910 then from "S11emux" to "S03emux"
  uff2lnux       : TagName dots to slashes for file
  DialBackup     : Resurected for PBF Energy
  UdpHandler     : Packet byte matching 0 to 5 to enable sending packet
  ModMast        : In PThru mode bottom 3 digits of ResponseTmout used for
                 : InterChar Demarkation
  MQRbePr        : Latest
  UdpServ        : Latest

2017-01-03-1400 JPL
  uff2lnux       : EIP TagName DOTs to SLASHES, 2 or More TagNams/Channel
  CIPMast        : RegSesn setup >60 seconds Idle Timer
  VirtMast       : POD_GetRTUSTATUS works now, all polls normall SUCCESSFULL

2016-12-29-1000 JPL
  DnpMast        : _fReconfigure
  DnpSlave       : _fReconfigure
  SmartMux       : _fReconfigure
  customer.Z*    : IM_IGNORE_QUALITY=0
  VirtMast       : All Polls successful, POD_QUALITYREG to set BAD quality
  CIPMast        : wStat uninitialized in UpdateMultiRTDB(), uSkipTest==NO_SAVE
  uff2lnux       : Latest
  TOTFLOMast     : Latest
  UdpHandler     : _fReconfigure, never ported to ARM processor

2016-12-08-1600 JPL
  RediGate400_configs.tgz : From Jon Tandy

2016-12-05-1600 JPL
  RediGate400_configs.tgz : From Jon Tandy     : Reset EMUX after 4 consec ppp0 restart w/o success
  TANOMast       : Diagnostic changes
  PLC2Mast       : Diagnostic changes

2016-11-28-1300 JPL
  RegiGate400_configs.tgz : From Jon Tandy
  S01setuptimestamp : Extract RediGate400_configs.tgz somewhere
  TOTFLOMast     : A few more Arrays supported

2016-11-17-1200 JPL
  start          : use ethtool to obtain SerialNumber for .serial
  uff2lnux       : CIPMast with SkipPoll options, SINT32 in TagName process
                 : MQrbePr Enable list, _alCustFlags[BASH_USES_TILDE]
                 : Subscriptions RBE-Data precedes RBE/RTU-BIRTH certificate
  MQRbePr        : ditto
  MQisdp         : Latest
  MQRbePr        : Latest
  CIPMast        : SKipReg, ResultReg Poll record processing, SKIP_SAVE_RTDB
                 : SKIP_EXTRACT_BIT (removed need for +100,000,+200,000 Markers
  VirtMast       : Improved DiagLog( |uIndex ), String Rplacement last byte
  SRTPMast       : Too much logic for Long Integers at 45001
  cellmodem.tcl  : Reprogramming if SIM changed
  MQRbePr        : Enable RTU List
  DirectorPLC    : SSCGP/MGLL XMl functions call lRequestSystemCmd()
  customer.Z*    : BASH_USES_TILDE=1
  RediGateMMI    : Newest
  CellLEDs       : Newest, works without AT Commands
  DirectorXDBM   : Fixed more RBE Stuff     : If cellmodem fails four times in a row then "S03emux restart"
  dir_tool       : Latest
  TANOMast       : Model 100/05 Tano with Spy Mode
  PLC2Mast       : Supports Spy mode with Unsolicited Write DF1
  TOTFLOMast     : ABB TotalFlow first Beta version
  customer.Z4    : DIRUPLD_PASSWD=1

2016-05-02-1600 JPL
  Bootloader     : put "rdgt" into Override.UFF.
  UffUpdate.txt  : openconnect.* to /etc/vpnc/
  ModMast        : Allow full 16bit Ace RTU Address without breaking protocol
  CSPMast        : Writing to Bit-15 with cmd 0xAB also wrote Bit-0 next word
  DF1Mast        : ditto
  TermServd      : Remvoed Shared Resoure messages
  uff2lnux       : Newest

2016-04-12-0800 JPL
  uff2lnux       : TAG_NAMEs any length

2016-03-16-1700 JPL started 1st Linux REDIGATE 400 from Plains-PL
  Change.log     : First of REDIGATE 400 Series
  REDIGATE-400   : New BRANDING name for Tarballs
  customer.Z[2,4]: RediGate_400, REDIGATE_400=1      : /tmp/redigate/ and RediGate.0.cfg and AceCfg.xml.gz file
                 : /home/Dirupld/*.XML.gz moved to /home/director/
  uff2lnux       : RediGate 400 throughout group with 'redigate'
                 : Any length TagName->sValue
  syslog.conf    : /tmp/redigate/RediGateFifo mapping
  TarUpdate.txt  : syslog.conf to /etc/ mode 0644, scripts/* -> /etc/stunnel/
                 : S01setuptimestamp to /etc/init.d/
  TermServd      : Eliminate "Could not semop(?) Success
  .profile       : 'ps|grep RediGateCore' and ${MYDIR#*RediGate.0.cfg}"
  S90DirectorPipe: /tmp/redigate/*
  S91Director    : /tmp/redigate/*
  RediGateCore   : Copied from DirectorCore
  RediGateMMI    : Newly aware of REDIGATE-400
  Xml2uff        : Convert ACE 3.2 XML file to Apex.uff file
  xmlupdate      : Modified uffupdate to proces RediGate.xml.gz to UFF with
                 : ln -s ../config/Apex.uff -> /home/../
  S01setuptimestamp : from P66 moved to /etc/init.d/
  ./scripts/*.sh : Moved to /etc/stunnel/
  syslog.conf    : /tmp/redigate/RediGateFifo
  nodir          : /tmp/redigate/Bootdelay
  S50stunnel     : killall -SIGKILL stunnel 2> /dev/null
  VirtMast       : Pod Multi-IO card index offset by one
  DirectorPLC    : libdevmem_open( +0x1a0 );