- DateTimeCore:
- Added new functions Get/SetDateTime() for combined date & time get/set
- Added LocalTime param to ReadDate/Time() and BuildDate/TimeStr()
- Allow input time to interpretted as ether UTC or local time
- DeviceCore:
- Added SourceRef to HandleCommand()
- Complete Async resolve:
- Remove Resolving param from THandle
- Rename state csResolving -> csPreparing
- Added handle state csPrepared, to indicated resolve complete
- Open handle if state = csPrepared
- Remove Resolve delay (not required since async resolve)
- remove from JSON config as well
- FunctionCore
- Replace Channel->Ready with Channel->State (off/waiting/ready)
- Add Function reference to Handle
- SelectableBare/Core:
- Implement async address resolve with event handling
- Create ResolveHandler() signal handler (friend) function
- Change Create/Remove/DestroyHandle() methods to virtual methods
- Move socket specific code to SelectableCore
- Rename ChangeState() to virtual HandleState()
- Move ClearHandle() from SelectableBare -> SelectableCore
- Implement new/delete from THandle
- Set max TCP SYN count on connect
- FunctionCore
- So not set Function JSON "config" param to empty object by default
- Change TChannelLink to reference Channel direct
- Add Input/Output to TChannelLink
- Replace LinkChannel() Bidirectional param with Input/Output param
- Update JSON config as well
- Implement Channel "Ready" state and events
- Remove Input/OutputEnabled parameters and related methods
- Remove from JSON config as well
- Update AddChannel() method accordingly
- Add Ref param to struct TChannel
- SelectableCore:
- Convert inline ChangeState() to non-inline method
- Move ChangeState() to last step in open/close methods
- Add Channels in Not Ready state
- Change Channel state when Handle state changed
- DeviceCore:
- Add Channels in Ready state
- FileCore:
- Add Channel in Not Ready state
- FunctionCore:
- Set Function Type in Init()
- SelectableBare:
- Remove unnecesary initialisation in constructor
- SelectableCore:
- Remove code duplicated in SelectableBare
- Save reference to process config in Function Core
- Moved from DeviceCore to here as common feature
- "Config" : object
Allow additional config to be stored in application definition
- "Config" : string
Name reference to config object in main JSON file
- Remove from Device Core
- Implemented new Util library:
- Convert Bytes to Hex/Bin/Safe string
- Convert HexString to Bytes
- Search String for substring function
- Use Util library in LogCore for String conversions
- JSONparseCore:
- Implement output to string
- Added method WriteToString()
- Create function pointers which is selected for correct output:
JSONstrOutput or JSONfileOutput -> Print()
- Replace all write() statements with Print() statements
- Modify PrintStr not use dprintf, but sprintf to temp buffer
- DeviceCore:
- Added PollCycle variable (not used here)
- WatchdogCore:
- Return "true" on in Process()
- SelectableCore:
- Minor update (code compacted)
- Application/Function:
- Added CApplication as friend of CFunction
- Added param WaitToTerminate on Function
- Application Run() only exists if all (WaitToTerminate) functions
has terminated cleanly.
- Remove separate poll group specifications in JSON file
- Implemented PollGroups per parameter or node in JSON file
- Implemented copying of PollGroups from Template
- FunctionCore:
- Add OutputFormat param on Output() method - override output format
- SelectableCore:
- Update Log output formats (process/functionblock)
- DeviceCore:
- Updated device data format (different byte sequences)
- Added ID & Address fields to TDevice struct
- Add search methods for ID & Address
- Update AddDevice() method to check for duplicate ID & address
- Handle Invalid reply different from reply timeout
- Add methods ValidReplyReceived() for standardise operation
- Bug fix: DeviceTypes added as to Device List!
- Bug fix: Check if Device/DeviceType created before adding params
- Added correct handling of new Device Data types (LH & HL)
- Updated log messages
- Switch from malloc/free -> new/delete for structures
- Bug fix: Move Parameter groups to Device (not class)
- Update Parameter groups:
- Update Read/Write indicators as params are added
- DeviceCore:
- Add dtNone data type
- Add Config param, reference to data tree
- Add Init() methods, loading config from JSON
- Add GetDataType() method, converts text to data type enum
- Add Set/UpdateStringValue() methods with Len param
- Clear compiler warnings, missing switch case values
- Implement consistent Function addition to application
- Use TYPE_XXX constants to declare function type
- Use NewXXXX() methods to call constructor correctly
- Add FunctionType list (with constructor) to Application
- Create Function by comparison to FunctionType list
- Simplify LoadConfig() and Init() methods for functions
- Combine methods into Init() method
- Pass relevant data member to Init() method
- Remove all CDataMember references on functions
- ApplicationCore:
- Split ReadParam() method from LoadConfig() method
- Split main configuration into separate files:
- config/ - main config file, general application settings
- definition/ - application definition, e.g. function blocks
- Definition and Address List files specified in config file
- Load address file in address/ branch
- Made DataTree & JSONparser private
- Made Config, Definition & Address branches public
- Removed unnecessary branch references
- Improved event logging
- DataTreeCore:
- Allow GetChFirstChild & GetChElement to create parent branches
with correct type, ie. Object/Array
- Remove unnecessary Create param from GetXxx functions
- Bug fix: Print empty objects/arrays correct, ie. empty brackets
- Bug fix: Adding element at specific index
- Bug fix: Error when get/create string value with "null"
- FunctionCore:
- Type param now set as constant via constructor
- Create empty Handles & Channels objects if none in Config
- SelectableCore:
- Add Queue length parameter to handles for UNIX and TCP sockets
- DeviceCore:
- Bug fix: missing Process() method
- FunctionCore, SelectCore, SelectableCore, DeviceCore, FileCore:
- Update Logs to show [ProcessName]/[FunctionName]
- SelectableCore:
- Update ConnectTypeName array (more readable)
- Return THandle on all OpenXxxx() methods
- Do not remove select handle for UDPremoteClient (same handle as server)
- Add correct Handle when adding RemoteClient to Selector