Note: the test code in rpm.c has been changed to accommodate the changes made to the decoding functions but I have not tested the test code as I have not run the test suite.
Combining these lets you run bacepics against the localhost's Device at port 0xBAC0.
One small change in dlenv_init() to support this (don't force source port to 0xBAC0 if that's not what we want).
Now has proper support for State Text and Subordinate Annotations text arrays, even very large ones.
Now has 3 ways, of descending throughput, for all Objects and all their properties:
a) Get all object properties with RPM for ALL
b) Get individual properties with RP for Array_Index = ALL
c) Walk through a too-large array one index step at a time.
Put command line argument checking and usage printing into their own functions,
and added an optional argument to show values instead of '?' for properties like Present_Value.
Added screening of properties that should normally be replaced with '?' on output.
Added a few enums to bactext (Node_Type, Polarity).
Added a state machine which tries to get all properties in one RPM call first, then falls back to getting all object properties and calling RP once for each property, except the Device Object List, which calls RP once for each ObjectID in the list.
Adding support for Structured Views but not complete yet.
Made the epics pretty-printing generate shorter lines by only decoding 4 bits per line (hurts my byte-centered soul, but does look better).
Moved the big comment section out of demo/server/main.c out to a new header, server.h.
Provided doxygen links to the functions called in the server demo.
Embedded its PICS in the server documentation (hopefully a good idea).
Added a PrettyPrintPropertyValue() function to the epics program (hopefully OK format).
Added a function apdu_service_supported_to_index() to the apdu code to translate a SERVICE_SUPPORTED_ enum to its SERVICE_CONFIRMED_ or SERVICE_UNCONFIRMED_ index, and used it when PrettyPrinting services.
Two small code corrections in device.c:
a) Fixed the return value of Device_Write_Property() so that a -1 value would also return False.
b) Fixed the string length checked when writing PROP_OBJECT_NAME for the Device object.
Dropped the Latex output from default doxyfile.
Added a convenience starting point for HTML output, the only format that has worked well for this project on doxygen.
Fixed up numerous instances of the code assuming object instance and index into log info arrray were equivalent.
Added enable checking into the timer routine so date enable/disable works.