Commit Graph

194 Commits

Author SHA1 Message Date
Charl Wentzel
abba077ed0 Important Update:
- SelectableCore:
  - Skip IP address "0.0.0.0" when resolving localhost
2017-08-28 13:17:19 +02:00
Charl Wentzel
4af8f529c9 Minor Update:
- DateTimeCore:
  - Change default separators for date/time, allow no separators
- JSONparseCore:
  - Bug fix: Output escape sequences in Hexadecimal
2017-08-23 18:03:11 +02:00
Charl Wentzel
5f5e89e7cd Important update:
- EventBufferCore: (new)
  - Defines Events and related functions
  - Defines Event Buffer
- ItemBuffer:
  - Specify "Keep" parameter for Delete, to override CopyEntries
2017-08-21 20:51:10 +02:00
Charl Wentzel
2830b8dd6d Important Bug fixes:
- Remote Client connect not working properly
  - Set Client Port no on connect
  - Correctly handle create failure
  - Show error on fail
- Input() fail to transfer data if Handle & Channel not same name
  - Search for linked handles
2017-08-18 09:12:55 +02:00
Charl Wentzel
18b487cbdd Minor Update:
- JSONparseCore:
  - Simplify & correct PrintObject() and PrintArray() logic
2017-08-18 05:21:09 +02:00
Charl Wentzel
01845022a1 Merge branch 'Connect' 2017-08-17 14:41:09 +02:00
Charl Wentzel
a209065386 Minor Update:
- SelectableCore:
  - Rename struct Handle parameters:
    Address -> IPaddress, PortNo -> PortName
2017-08-17 14:23:45 +02:00
Charl Wentzel
8fd04dc9e2 Important Update:
- CItemBuffer:
  - Rename CItemBufferCore -> CItemBuffer
  - Add item count and GetCount() method
  - Bug fix: Reset LastItem on DeleteAll()
- TimingCore:
  - Bug fix: Handle buffer overflow on 32-bit processors
2017-08-17 10:56:10 +02:00
Charl Wentzel
2b7c49d5bb Important Update:
- DataTreeCore:
  - Add Parent & Prev Child links to DataMembers
  - Update CreateMember() to set Parent/Sibling reference
      & increase Parent->Len
  - Remove AddMember()
  - Update DestroyMember() to decrease Parent->Len
- JSONparseCore:
  - Update ParseArray() for above changes made to DataTreeCore
2017-08-11 15:42:59 +02:00
Charl Wentzel
73743060a0 Minor Updates:
- DataTreeCore:
  - Correct calculation of length in SetValue()
2017-08-10 21:17:32 +02:00
Charl Wentzel
c9244555ec Important update:
- LiteProtocolCore:
  - Bug fix: NewCommandStr() cannot shrink CommandStr on CreateCommand
  - Bug fix: AppendParam() cannot pass NULL string value
2017-08-06 12:32:14 +02:00
Charl Wentzel
ade3c10a1a Important Update:
- DataTreeCore:
  - Add GetLen() method to get length of (text) value
- FileCore:
  - Minor fix: rename MaxLen -> Len
2017-08-02 03:38:37 +02:00
Charl Wentzel
983a0c5002 Bug fix:
- Included string.h on FunctionCore.h
2017-08-01 08:56:50 +02:00
Charl Wentzel
e71157b9ec Important Update:
- ApplicationCore:
  - Rename ConfigParser -> JSONparser
  - Make JSONparser a public parameter
- DataTreeCore:
  - Bug fix: Insufficient memory allocation on SetValue if Len = -1
2017-07-29 12:45:45 +02:00
Charl Wentzel
b7033bea81 Minor update:
- DataTreeCore:
  - Bug fix: Return Default value on GetStr() if not found or created
2017-07-28 06:46:33 +02:00
Charl Wentzel
a9d9401b96 Minor updated:
- FunctionCore_not_used:
  - Started work on queued channel buffers or processing buffers
  - Incomplete and temporarily abandoned due to time constraints
  - Renamed modified FunctionCore -> FunctionCore_not_used
2017-07-26 10:41:04 +02:00
Charl Wentzel
3e0ff00dbe Important Update:
- ItemBufferCore:
  - New Class for storing items in a FIFO style buffer
- FunctionCore:
  - Implemented pulled input:
    - Function creates static output: StoredOutput & StoredOutputLen
    - Other Function pulls static output from input linked functions
- FunctionCore-ChannelBuffer:
  - Tried to create a processing buffer
  - Abandoned for now
2017-07-24 16:33:01 +02:00
Charl Wentzel
2f81d1fbbe Important Update:
- Library Clean up:
  - Removed all unused C/C++ libraries from source
  - First C/C++ libraries then redA libraries
- Library changes:
  - renamed BufferCore -> CharBufferCore
  - added ItemBufferCore
- CharBufferCore:
  - Derive RollingBuffer & ShiftBuffer from common class CharBuffer
  - CharBuffer is mostly a virtual class (interface)
2017-07-22 17:46:05 +02:00
Charl Wentzel
aaf3c59727 Important Updates:
- DataTreeCore:
  - Allow types float, int & bool to be read as strings with GetStr()
- LogCore:
  - Add comments to Logging parameters
- WatchDogCore:
  - Call CSelectableCore::Process() in Process() to manage connect
- SelectableCore:
  - Allow SetSocketHandle() to be called if Handle already set as socket
  - added strlcase() method to convert string to lower case
  - Update Handle structure:
    - renamed Address -> HostName
    - renamed PortNo -> PortName
    - added AddressList for all resolved addresses
    - added AddressInfo for active address
  - Add ResolveAddress() method
    - Domain name and protocol port resolving with GetAddrInfo()
  - JSON updated:
    - domain name can be provided instead of IP address
    - protocol can be specified instead of Port No, e.g. "HTTP" / "SSH"
  - Resolve address before connect, or use next resolved address
2017-07-22 09:40:17 +02:00
Charl Wentzel
c32875509d Minor updates:
- JSONparseCore:
  - Set File mode on create
- SelectableCore:
  - Check pipe() return value on create
  - Validate replacement of stdin with pipe
2017-07-17 22:51:30 +02:00
Charl Wentzel
9b86bf3573 Important Update:
- CApplicationCore:
  - Run() returns false if error on any Process() call
  - Add TerminateOnError param to Run() method,
    - if set, exit immediately if Process() on any process fails
    - if not set, exit after Process() on all processes
  - Remove "Terminating..." log
2017-07-17 07:18:52 +02:00
Charl Wentzel
c90cb7b0f4 Minor updates:
- FunctionCore:
  - Do not auto create empty channel list
- SelectCore:
  - Rename method: SetDebugLevel() -> LogLevel()
- SelectableCore:
  - Do not auto create empty handles list
2017-07-16 23:30:09 +02:00
Charl Wentzel
434377f122 Major Update:
- Implement new ApplicationCore:
  - Manage Tools: Log, DataTree, JSONparser & Selector
  - Load configuration, Manage FunctionBlocks
- FunctionCore & dirived classes, SignalCore:
  - affects: SelectableCore, DeviceCore, FileCore, WatchdogCore
  - Do not pass Log()
  - Define and pass Type
  - Update/reduce included headers
  - Use ProcessName and Application global vars
  - Get Log, DataTree from Application
  - Use virtual Init() function to set must have Channels/Handles
- DataTreeCore:
  - Bug fix: Check if child members exist and destroy in SetValuePtr()
  - Add method GetFirstChild with BaseMember & Path
  - Bug fix: do not use RootMember if no Parent in GetChildxxx() methods
- SignalCore, SelectCore:
  - Use Application->Log()
- FunctionCore:
  - Add itself to Application (function list)
  - Add parameter: LinkConfigMember, Type
  - Use virtual LoadConfigData() to configure from DataTree
  - Rename methods: LoadConfig() -> InitConfig(),
      InitLogging() -> SetLogParam(), SetDebugLevel() -> SetLogLevel()
  - Add method: GetType(), LoadChannelLinkData(), InitChannelLinks()
  - Modify LinkIn/OutputChannel() to use name for InFunction, not pointer
- SelectableCore & Dirived classes:
  - Affects DeviceCore & WatchdogClient
  - Rename parameter: Select -> Selector, BaseMember -> ConfigMember
  - Get Selector from Application->Selector
  - Change Handles JSON structure from Array to Key:Value pairs
  - Bug fix: check if Selector exist during Input()
  - Bug fix: do not set PortNo if not exist
2017-07-16 20:29:01 +02:00
Charl Wentzel
8933ec1ae6 Important Update:
- FunctionCore:
  - Fix Memory Leaks:
    - Recreate Name in LoadConfig()
    - Setting FirstChannel to NULL in LoadConfig()
  - Fix fault on empty Log/Output in LoadConfig()
  - Check if Log/Level exists in LoadConfig()
  - Do not auto-create all config parameters
- SelectableCore:
  - Fix Memory Leaks:
    - Setting FirstHandle to NULL in LoadConfig()
  - Do not auto-create all config parameters
  - Update logs to specifically refer to "TCP" server/client
2017-07-12 06:19:06 +02:00
Charl Wentzel
3f86de71b1 Major update:
- DataTreeCore:
  - Bug fix: GetMember() error if member not found
- FunctionCore: (affected: SelectableCore, FileCore, WatchdogCore)
  - Made destructor virual
  - Standardize method parameter naming, e.g. pName, pLog
  - Renamed parameters: DebugLevel -> LogLevel, OutputDisplay -> LogOutput
  - Reinstated parameter BaseMember
  - Removed logging parameters from constructor
  - Created method InitLoggging() (shows "Function Created" message)
  - Split LoadConfig() method into parts:
    - Implemented public LoadConfig() methods
    - Implemented LoadConfigData() method, load parameters from DataTree
- WatchdogCore:
  - Derive from CSelectableCore instead of CFunctionCore
  - Rename parameter: PingTimeout -> PingInterval
  - Replace Ping Channel with Handle only
  - Add method SetInterval()
  - Send command direct to handle with (channel) Input()
- SelectableCore:
  - Rename parameters: Auto -> AutoManage, ReopenTimeout -> ReopenDelay
  - Implemented own virtual LoadConfigData() method
- DeviceCore:
  - Made all logging conditional: if (Log) Log->Message(...)
- SelectCore:
  - Renamed parameters: DebugLevel -> LogLevel
2017-07-11 06:20:14 +02:00
Charl Wentzel
b7ed169730 Major Update & Bug fixes:
- FileCore:
  - Replace dlNone -> dlLow
  - Remove temporary code used by CBaslerCamera
- Function Core:
  - Add method SetDebugLevel()
  - Remove global parameter BaseMember;
- JSONparse:
  - Print Bool parameters as true/false, not 1/0
- SelectCore:
  - Add method SetDebugLevel()
- SignalCore:
  - Replace dlNone -> dlLow
2017-07-09 16:31:47 +02:00
Charl Wentzel
b900d735b9 Important update:
- Used new core protocol function to create command
- Bug fix: use correct sequence: From, To, Command
2017-07-08 22:39:32 +02:00
Charl Wentzel
4802452a7c Important Update:
- CLiteProtocol:
  - Set input string on methods to const char *
  - Simplify checking for verification
  - Ensure Length parameter can be left out on all methods
  - Add quick functions for structured commands: To, From, Command
- CLogCore:
  - Use only "\n", not "\r\n"
- SignalCore:
  - Use std::endl instead of "\r\n"
2017-07-08 22:23:50 +02:00
Charl Wentzel
0c20103c9c Merge branch 'master' of /home/development/source/core/redAcore into WatchdogCore 2017-07-05 18:21:27 +02:00
Charl Wentzel
d013078c1f Bug fixes:
- Remove LogStr var
- Create new Command Str before adding parameters
- Set Watchdog name correctly
2017-07-05 18:20:29 +02:00
Charl Wentzel
812677615d Merge branch 'master' of /home/development/source/core/redAcore into WatchdogCore 2017-07-05 17:20:13 +02:00
Charl Wentzel
b6a7969894 Merge branch 'master' of /home/development/source/core/redAcore into InterAfrica 2017-07-05 17:16:51 +02:00
Charl Wentzel
1b64fd17f9 Minor update:
- BufferCore:
  - Add Overwrite parameter for ReadFromFD
  - Bug fix: ReadFromFD MaxRead size
- SignalCore:
  - ProcessName is external pointer
2017-07-05 17:16:29 +02:00
Charl Wentzel
168253acbc Merge branch 'master' into WatchdogCore 2017-07-05 17:08:43 +02:00
Charl Wentzel
04edaf6e34 Major update:
- Add CWatchdogCore component.  Sends ping to watchdog server
2017-07-05 17:06:31 +02:00
Charl Wentzel
748b62d235 Important Update:
- SelectableCore:
  - Made GetType() & GetState() public methods
  - Update logs in Input()
- FunctionCore:
  - Add Input/OutputEnabled parameters with Get/Set methods.
  - Update logging in Input() and Output()
  - Check if input/output enabled in Input() and Output()
2017-07-05 10:59:24 +02:00
Charl Wentzel
c50d920f94 Important update:
- Log signals direct to StdErr if no Log instance
- Bug fix: ProcessName is external pointer, not literal
2017-07-01 12:07:34 +02:00
Charl Wentzel
706cd9caf6 Bug fix:
- Validate File Path and add '/' when saving JSON file
2017-06-22 17:21:28 +02:00
Charl Wentzel
9677052042 Important Update:
- Bug fix JSONparseCore: Allow for blank path in file name
- Added new Class LiteProtocolCore for basic protocol
2017-04-30 17:32:19 +02:00
Charl Wentzel
ee29625b9a Important update:
- DataTree->GetStr return Member->Value or NULL if not found
- Rename DeviceCore EDataType to EMBDataType, avoid conflict with JSONpaser
- Add DataTree to FunctionCore with LoadConfig() method
- Change ProcessName to char * (from char[])
- JSONparse:
  - Rename RootPath to BasePath on all methods to reduce confusion
  - Allow FilePath to be NULL, add '/' if not present
  - Fixed Parsing sequence in ParseObject & ParseArray
2017-04-10 21:33:14 +02:00
Charl Wentzel
9b42d516a1 Important Update:
- Implemented basic child element navigation:
  GetFirstChild(), GetNextChild(), GetIndexChild()
- Bug fix: Faulty name comparison using length
2017-04-06 06:56:03 +02:00
Charl Wentzel
23db2539d9 Important Update:
- Bug fix: Create wrong member name because not zero terminated
- Bug fix: Only create array element if brackets empty
2017-04-06 05:35:30 +02:00
Charl Wentzel
200f7e1f8b Important Update:
- Improve "printing" for JSON with single & multi line objects
- Fix bugs in getting, setting & creating array elements
- "array[]" allowed to create/add element at end of an array
- No longer duplicate get() path (reduce memory allocation)
  - added NameLen to TMember to eliminate zero-terminate requirement
- Fix ReadfromXXX() return values
2017-04-05 08:07:53 +02:00
Charl Wentzel
66fc4bc123 Important Update:
- Bug fix: incorrect memory allocation in SetValue()
- Implement conversion of escaped chars during parsing
- Implement escaping chars during printing
2017-04-03 21:48:29 +02:00
Charl Wentzel
2e2ba113f1 Major Update:
- Update printing: Do not use '\n' if indent = 0
- Implement refilling of buffer (from fd) while parsing
  - No longer use LineMark, but keep track of char position with CharNo
  - Use Mark to reference point for shifting buffer on refill
- SkipWhiteSpace no longer inline method
  - Refill buffer if required, change Mark & CharNo on line break
- CreateBuffer(), RefillBuffer() & FreeBuffer() now public methods
- Make Loading and Saving more flexible:
  - Refactor from LoadFromFile():
    ReadFromFile(), ReadFromHandle(), ReadFromBuffer()
  - Refactor from SaveToFile() & PrintToScreen:
    WriteToFile(), WriteToScreen, WriteToHandle()
2017-04-02 19:44:44 +02:00
Charl Wentzel
8f39adb0f3 Important update:
- Buffer:
  - fix undefined value: zero terminate buffer when loading from FD
- DataTree:
  - fix memory leak: destroy temporary search path
  - improve delete(): delete all children for member if no path given
  - bug fix: initiate object with 0 length (not -1)
- JSONparse:
  - Remove level parameter
  - Add path to load/save/print methods (print only portion of tree)
  - fix memory leak: destroy temporary object name
2017-03-29 21:27:28 +02:00
Charl Wentzel
5691b22df9 Minor Update:
- Pass printf Mask for Int/Float values on Get/Set methods
  - On GetValue use mask for default value
- Add SetArray() method
- Bug fix: Incorrect malloc size in SetValue()
- Bug fix: Len not calculated if -1 passed to SetValue()
- Set default value for Len = -1 on SetValue() methods
- Don't pass Len to SetValue() unless required
2017-03-27 04:29:11 +02:00
Charl Wentzel
a22f60b152 Major Update:
- Bug fix: BufferCore - set correct auto buffer size
- Change Get/Set methods to use BaseReference and full path instead of
    ParentPath and MemberName
- Add Create param to all Get methods (create if not found)
- Implement arrays & parsing of arrays
- Set CJSONparse as friend class to DataTree (access protected methods)
- Print JSON to screen
2017-03-26 22:26:52 +02:00
Charl Wentzel
b823bd7ea7 Important Update: (incomplete)
- Split CConfigCore into two classes:
  - DataTreeCore.h - Tree data structure and access
  - JSONparseCore.h - JSON parsing functionality
- Renamed TConfigParam struct to TDataMember
- Renamed most of CDataTreeCore methods
2017-03-23 20:53:32 +02:00
Charl Wentzel
ad4d8e8b5f Important update: (untested)
- Switch from FILE pointers to file descriptors (e.g. fopen() -> open())
- Replace internal buffer with CShiftBuffer
2017-03-23 13:21:21 +02:00