API Documentation

Welcome to the ISOAgLib Reference!

Please use the upper navigation bar to browse the documentation.

To get more information about ISOAgLib in general, please visit where you can find information about licensing, ISOAgLib as product, ISOAgLib's functions, principles and toolchain, the Tutorial Network, download and commercial services.


2.9.1 to

  • Fixes vt2iso compilation problem from 2.9.1
  • Warnings removed.


  • New Parse format (.csv) + Aux 2 Input Value Message decoded


  • Add reception of non-ISOBUS-conform GNSS information (i.e. missing/partial Address Claim, etc.)

2.9.0 to 2.9.1

  • Enhancement:
    • Added eventPointingEventOp for back-scaled Pointing Event positions
    • v4+ Pointing Event Enhancements (held/released)
    • Renamed some Enabled -> SecondOptions Bit; Added getEnabled that masks properly
    • Reduced the RAM usage for pools with many string objects
    • Added disconnect from VtServer for clean shutdown
    • Added lock/unlock mask
    • Added colour map object and commands
    • AUX-N PrefAssignment callback only available with setting USE_VTOBJECT_auxiliaryfunction2
  • Changes:
    • Always upload pool, just omit new features/objects
    • Graphics Context adapted to latest spec. (float instead int for zoom, etc.)
    • Do not downscale Line object to size 0 (just as Line Attributes as also min 1 always)
  • Bugfix:
    • Fix usage of StreamInput_c::get(std::string&) in eventStringValue()
    • Change Child Position now takes the dam/sk offset into account
    • AUX-N Functions:
      • Remove private constructor for iDtcContainer_c, so it can be stored to NV.
      • Don't send PA if Aux2Function is omitted from upload
      • If a PA is already queued, it will be replaced by a new one now. Before the new one was simply discarded (or assertion in DEBUG).
      • Recognition of Functionally Identical WS fixed to pass AEF CT.
    • AUX-N Inputs:
      • Standardchange: Timings adapted to 3rd Ed document
        • Minimum message timing 50ms instead of 200ms


  • Enhancement:
    • Added v4 Support, ExtStructLabel, send PACK on Start Measurement
    • Added handler for PdNAcks to API. (Also in direct CF<->CF PD Communication!)
    • Updated DDI-Defines.
    • Added a cmdSend class to better handle different send states (e.g. Running, Aborted, etc..)
    • Added more constructors/getters in device description.
    • Added CFF for Data Logger (Working Set)
    • Only do DDOP deactivation if version is 4+.


  • EEPROM-Cleanup: Some more assertions, faster read/write


  • Fix/Avoid memory reallocation on specific compilers.
  • ConnAbort correct stream when RTS comes in running stream.
  • ConnAbort (wrong) CTS with NextPacketNr=0.
  • Ignore premature EoMAck instead of internally aborting the stream (without ConnAbort msg) according to standard.
  • Removed an endless loop, triggered by a forced (E)TP Abort.
  • More detailed start functions (NW Resolution Problem/Success/Busy)
  • Report Aborts to iLibErr.


  • Bugfix:
    • Fixed (E)TP-Reception (OoB-access) when using StreamLinear
    • Fixed wrong BAM data bytes processing
  • ATTENTION: Limiting (E)TP-Reception to 0xFFFE bytes for now, would have crashed before due to uint16_t usage. Needs to be fixed if used!


  • Added '--virtual' parameter
  • Added '--init' parameter
  • General stability fixes
  • Added Version Number


  • Added TIM parsing, interpretation of ACKNOWLEDGE_PGN and NAME summary at the end
  • Added new log formats
  • Expanded the parsing of SK, Button and Pointing Event status


  • ThreadWrapper: additional mutex protection of ThreadWrapper::m_exit_code
  • Compilefixes for HAVE_STRUCT_TIMESPEC issue
  • More detailed ISOBUS CAN send message. (NW Resolution Problem/Success)


  • Added new class for Electronic Engine Controller


  • PC / System: Made System_c::getTime() thread-safe.
  • SocketCAN: Added diagnostics to iLibErr.

Project Generation:

  • conf2build
    • Use volatilememorywithsize_c for PRJ_ISO_VIRTUALTERMINAL_CLIENT
    • Correct project definition location so Release/Debug setting is not overwritten

2.8.2 to 2.9.0

  • Refactoring:
    • TimePosGps/TracGeneral/TracMove/TracHitch/TracPto/TracLight is marked obsolete. Please note that it will be removed in future version!
    • Introduced new classes (which contain the receiving Implement-side only!), with new settings in conf2build!
      • Tractor (contains KeySwitch, MaintainPower and Wheel Based Speed and Distance/Direction, Operator Direction, etc. Does answer to Requests for MAINTAIN_POWER_REQUEST_PGN)
      • TractorGroundBased (contains Ground Based Speed and Distance/Direction)
      • TractorMachineSelected (contains Machine Selected Speed and Distance/Direction)
      • TractorFrontHitch (contains Front Hitch position and status)
      • TractorRearHitch (contains Rear Hitch position and status)
      • TractorFrontPto (contains Front Power Take Off (PTO) information)
      • TractorRearPto (contains Rear Power Take Off (PTO) information)
      • TractorLighting (contains handling of Lighting Command and sending of Lighting Data)


  • Bugfix:
    • Crash after deregistering one of many Object Pools fixed.
    • Activation-Processing may have resulted in wrong Object ID, depending on the OR-order the compiler has chosen.
  • Enhancement:
    • Support "VT On User-Layout Hide/Show" message (VTs with Version 4 but can also be supported/sent from lower versioned VTs!)
    • Add support for own SKM-Handler


  • Bugfix:
    • Wrong 1,5 Timeout in DDOP/Command-handling removed
  • Enhancement:
    • Not using (old) Tractor-classes for retrieving speed/distance fro distance-based measurements Now a callback can be provided so the application can decide where to get the speed/distance from. (Will throw an isoaglib_assert when distance-based measurements are user but callback is not set!)
    • Added "Peer Control" for Setpoint Value Source / Setpoint Value User.


  • Bugfix: Fixed crash when shutting down during Initializing-FsCommand-phase
  • Enhancement: Allow FS-Client to be started during runtime.


  • Bugfix:
    • DM1 will now be be sent after startup if active DTCs were being loaded.


  • Now splitting the attributes/variables files into one for each object-type. (New option "-c" to create these files even when no object of the given type exists in the pool) Still compatible with the old file-names, as "" will still exist and simply include all the single files.


  • Cleanup: Rename getMaxOutputPwmFreq -> getMaxOutputPwm, move caching to HAL.


  • Builds under more recent WINCE now.

2.8.2 to

  • Bugfix:
    • DM1 will now be be sent after startup if active DTCs were being loaded.

2.8.1 to 2.8.2

  • Bugfix:
    • DM1 will now be properly sent again after quick Deactivate/Activate
    • Control Function Functionalities will now be answered Broadcast if request globally.
  • Enhancement: Added support for J1939-71 Vehicle Identification


  • Bugfix:
    • Support VTs that can reconfigure capabilities without changing their NAME.
    • AUX-N: Diagnostics CFF would cause a buffer-overflow when options (like Single Assignment, etc.) are set.
  • Enhancement:
    • AUX-N:
      • Allow application to set PA-Presets during runtime.
      • Allow application to clear PA-Presets during runtime.
      • Allow match of "functional identical WS", can be specified via callback.
      • Don't forward Input activations when some Learn-Mode bit is set.
      • Allow Function Attributes of Aux Function Type 2 objects to be modified before pool upload.
    • Command Queue: Supporting multiple send-queues now, based on priority. The number of queues can be set with CONFIG_VT_CLIENT_NUM_SEND_PRIORITIES
    • ATTENTION: Now erasing further matches in all queues when replacing a command! (takes more CPU time)
    • Allow replace of Change Active Mask command now, too.
    • Added defines for VT Version 4 Button/Key abort code.


  • Bugfix:
    • Only reflecting Task Totals Active bit now in Client Task Message.
    • On Timeout of some TC-Response don't accidentally call the ServerDisconnected callback when still in Preconnecting.
    • Memory-Leak when disconnecting during DDOP-Upload (with default allocation)


  • Bugfix: Now reading correct number of directory-entries.


  • Bugfix: When CAN-Card can't be opened, don't abort(), but exit().
  • Enhancement: Allow to be quit properly using "quit" or "exit".


  • README.TXT adapted regarding installing of Xerces library under newer Linux distributions.

Proprietary PGN:

  • Bugfix: Registering multiple PS/IdentItems in PropB and multiple IdentItem in PropA didn't work properly when done dynamically

2.8.0 to 2.8.1

  • Enhancement: Replay a CAN-log file.


  • Bugfix:
    • Allow do(nt)Connect to be done asyncronous later (resulted in repeated version requests on the bus)
    • Upload DDOP if Localization Label doesn't match
    • Fixed assertion/crash within deregisterClient()
  • Compilefixes: Interface-casts didn't work on all compilers, private c'tor missing in interface.
  • Enhancements:
    • Safely reconnect now: Wait 6s before connecting again.
    • Getters for Offset/Decimals/Scale added.
    • Added Checksum Calculation over DDOP for generation of unique structure label
    • DeviceObjectDPD is can now be empty-c'ted and init()ed later on!
    • Clear of DET now possible for reuse of the same Object-IDs during runtime.


  • Enhancement: Add "safeToPowerOff()" Added to detect if BIOS/OS/RTOS is ready/safe to be powered down (typically EEPROM writes in the background take some time, so it shouldn't be shut down before that!


  • Enhancement:
    • More Detailed NonFatal-Error report (Also Warn/Error when sending failed)
    • Allow disabling of Blocking in CAN-Send (Set CONFIG_CAN_BLOCK_TIME to 0)


  • Cleanup: Remove unnecessary include.
  • Enhancement:
    • Added getDigout(): Default implementation for current HALs
      • Store the value that was set and return it for getDigout().
      • Special HALs can directly ask the BIOS about the current value.
      • This could be changed for the STW platforms, too, on request.
    • PC


  • Bugfix/Change: TracMove is NOT handling GPS speed anymore! (Get GPS info from Gnss/TimePosGps instead!)
  • Bugfix: Set Selected Speed to ERROR if no valid value received


  • Bugfix: Avoid assertion on unsolicited response after reconnect
  • Enhancement:
    • Color Conversion "convertColour()" always done now
    • Also possible for Picture Graphic RAW data now (use CONFIG_VT_CLIENT_PICTURE_GRAPHIC_COLOUR_CONVERSION)
    • Now scale command setWidth/setHeight/setSize. If old behavior is wanted, simply set USE_VT_CLIENT_OLD_UNSCALED_SIZE_COMMANDS. The attributes will be updated to the given value, but on the bus the sizes are now transmitted scaled.


  • Bugfix: Fixed compile and logical errors (after refactoring in 2.8.0 it broke)


  • Bugfix: ObjectID in Change Active Mask Response fixed
  • Enhancement: Added Vehicle Spy 3 file format


  • Crashfix: Closing ISOAgLib a second time crashed


  • Bugfix from Refactoring (Split into TimeDate_c/Gnss_c): Removed MsgEventHandler and using BaseCommon_c's one.


  • Bugfix: Large Buffer-values could result in no packet being sent. (Only appears when special DEFINE values are being used, otherwise this works fine)

2.7.2 to 2.8.0

Network Management:
  • Bugfix: Do not kick out Remote Node on Late Address Claim When the AddressClaim is detected, but it was too late, do not kick out the Remote node. We missed kicking it out after the 250ms time-frame, but as it sent its Claim, it's (now) definitely to be considered on-line!


  • Refactoring: Split into TimeDate_c/Gnss_c
    • Replacing TimePosGps_c!
    • Added (i)TimeDate_c / (i)Gnss_c
    • Removed PRJ_BASE / USE_BASE
    • Moved MsgEventHandler to BaseCommon_c
    • Removed updateDistanceDirection() from iTracMove_c. Doesn't belong to API. Only called internally

ProcessData / TC-Client:

  • DirectPD:
    • Don't send PDNACK if msg was addressed to global
    • Added getter for DDI/element
  • Cleanup: Adding DVC Version Assertion
  • API-Fix: Renamed misleading "proprietaryServerRemovedFromMonitorList" Unified "proprietaryServerRemovedFromMonitorList" and "proprietaryServerAddedToMonitorList" to "proprietaryServer( const iIsoItem_c &, bool available )"
  • Update to TC-Version 3:
    • Error handling when Pool can't be uploaded.
    • Added Disconnected callback
    • Add AEF Functionalities.
    • Handling of server-selection changed (ConnectionRequest callback)
    • No more Delete-command on version-mismatch.
    • Added timeout detection.
    • Only process Responses when waiting for them!
    • Split up to preConnect/fullConnection
  • Bugfix: Timeout handling of DDOP-Upload fixed
    • If DDOP-Upload took longer then 1.5s, a (faulty) timeout was detected.
    • This is now fixed, timeout is counting from the EoMAck now instead of the start of the Tranport-Protocol...


  • Crashfix: Deactivate of Objectpool now stops (E)TP-Send
  • Bugfix: Now adapting colors during upload (again)
    • Bug was introduced in some refactoring. Colors weren't adapted anymore, so the pool was rejected on b/w and 16col. VTs most likely. (Nobody noticed this, so everybody seems to be working with 256col. VTs only.


  • Bugfix: Reconnecting to a power-cycled FS works now]
    • Did not delete the FsCommand_c instance when FS went offline
    • Did not again notify the application
    • Did not properly remove the initializing FsCommand_c when it went offline during retrieval of properties


  • Enhancement: Allow linker storage specification for bitmap-data (CONFIG_VT_CLIENT_OP_BITMAPS_MEMORY_MODIFIER)


  • Enhancement: Added output of more GNSS PGNs


  • Enhancement: Allow Change while it's enabled now This way it can be changed during the process-call. disable/close/init/enable doesn't work there, as it's iterating through the list (that is subject to be modified!) when calling the process-callbacks!


  • Bugfix: Respond to Requests for Maintain Power Request


  • Compliancefix: Trimming trailing option bytes now.
  • Enhancement
    • Allow access to DTCs from application
    • Added spnProprietary


  • Cleanup: Removed Fatal-Errors, weren't used anymore anyway.


  • Cleanup: Removed Flexible4ByteString_c


  • Enhancement: Override auto detect of endianness possible again

2.7.1 to 2.7.2

Project-Generation (conf2build):
  • Cleanup: Removed "cmake" directory, directly create projectName instead of cmake/projectName.
  • Cleanup: Endianess can not be specified anymore (as will be done by the HAL now)


  • Bugfix: Mutex/rxWaitBreak race condition fixed Different Linux-Scheduling did switch context directly after breaking the canRxWait which lead to the ISOAgLib thread sleeping to long.

Network Management:

  • Bugfix: Clear Possibly Offline when Address Claim received
  • Enhancement:
    • IsoRequestPgn: Set Address-Field now properly (Byte 5)
    • Improved detection of missing Address Claimed
      • Reduced detection window from 3s to 300ms. (officially 250ms + some rx/tx buffer)
      • Giving a Second Chance to the non-responding item is directed directly now (to keep bus traffic low)
      • Removed strange special case


  • Bugfix:
    • Broadcast frame space fixed As we're using millisecond accuracy only, we need to wait e.g. 51ms to get a min. frame space of 50ms.
    • No (wrong) retry for Broadcast anymore (Only relevant if ENABLE_MULTIPACKET_RETRY is defined.)
  • Change: MultiReceive/Send changed Priority from 6 -> 7 according to ISO11783.
  • Cleanup:
    • Removed senseless intermediate AwaitCts state at Broadcast
    • Remove obsolete/unused "setSendStreamDelay"


  • Bugfix: CAN-Server-Client did not allocate last channel, so it could've crashed
  • Enhancement:
    • Autodetect Endianess. Error if FLOAT_WORD_ORDER / ENDIANESS not given or given conflicted.
    • Enable 64bit timestamps
      • Enable with USE_TIMEBASE_INT64
      • Time-deltas are still 32bit!
      • Only works with SocketCAN, not (yet) CAN-Server!
    • Add diagnostics getter
  • Cleanup: Additionally clean up "hal_errcodes.h" to the appropriate places in supplementary_driver/hal.


  • Enhancement: Now "selectable" can be updated in preparation for a partial object pool update upload
  • Optimization: CommandHandler_c::queueOrReplace better structured and optimized.


  • Bugfix: Timeout now properly handled, some additional cleanup.


  • Bugfix: Call TaskActive only when Pool Activated and also when already Task Active Old behavior was:
    • Task was active and client connected afterwards: No notification for TaskStarted() was called.
    • Task Changes appeared while Pool was waiting 6s or uploading.
  • Enhancement: DDI Definition now generated
    • Old file kept for deprecated use. (Please adapt your code soon!)
    • New file can now be generated from Excel.
    • DDOP-Objects: Allow init during runtime (To allow placing objects into static RAM)
    • Assert Double Element-IDs
    • Added Get Object by Element-ID member function.

Proprietary PGN:

  • Enhancement: Added Broadcast flag and "finished" callback
  • Change: PropA::processA is now abstract to force application to change signature


  • Added new Log-format from Komodo
  • Added new J1939 PGNs and Requested PGN

2.7.0 to 2.7.1

Project-Generation (conf2build):
  • Enhancement: Added additional rudimental qmake-output


  • Enhancement: Allow HAL to be buffered, so all write-calls are basically just passed through!


  • Cleanup: Multiton: No Instance-Parameter only allowed if 1 instance
    • If there are more than 1 instances, you need to pass the instance number explicitly now. Only for one instance the call getXyzInstance() is allowed.
  • Enhancement: Added Version-Defines to isoaglib_config.h


  • Enhancement: Automatically set Endianess for WIN32 case.


  • Bugfix:
    • Memory-Leak for Current Directory fixed This also avoids Scheduler_c::close()-Assertion as FsCommand_c did not properly deregister from Scheduler as d'tor-call was missing.
    • Const-Correctness: Data to write only needs to be const
  • Enhancement: Introduced CONFIG_FS_CLIENT_MAX_WRITE_SIZE for larger block-writes
  • Wait-time set from 6500ms to 600ms and fix wrong TAN matching
    • Standard says to wait only 600ms when no busy bit is set.
    • response was processed in the wrong FsCommand_c when there was still the initializing-FsCommand_c there!


  • Enhancement: Extended dout_err_t:
    • Some HALs report these errors, so ISOAgLib needs to care, too.
    • Added dout_overvoltErr and dout_undervoltErr
    • Added CounterOn and DutyCycle to Inputs, 8.5V ref to System]
      • Not implemented for all platforms, but added an assertion in case it would be accessed/used.
    • Added getDiginDiagState/getAnalogInDiagState/getCounterDiagState
      • Not yet added to Inputs_c though. To be done later on request.


  • Enhancement: Added getDigoutDiagnose
  • Cleanup: Set 0 as default frequency in getDiginFreq()
  • Bugfix:
    • SegmentSize fixed


  • Enhancement: Forbid iIsoItem_c-construction in Application.


  • Output-Cleanup: Use "numObjects" and "numObjectsLang" variables to avoid redundant values
  • Enhancement: Allow double-IDs
    • Needed for special case when having multiple objects with same ID and omitting all but one during upload.


  • Enhancement:
    • Reserve-Capacity needs to be provided for PdPools/DevicePools now!
    • Refactoring/Enhancement for ECU-to_ECU PD-communication
    • Added important assertion to detect add of PD-Object with same ID.
  • Cleanup: Move ByteStreamBuffer_c -> util_funcs


  • Enhancement: Allow Proprietary Remote Server
    • Allows uploading a Device Description to a proprietary Server.
    • Communication is the same as to TC and DL.
  • Bugfix: Delete ServerInstance_c instances during TcClient_c::close()


  • Crashfix: TimePosGps_c::deregisterMsgEventHandler fixed (Iterator problem caused possible crash.)


  • Change: Defaulting to 2 retries with time-out of 1500ms now
    • Added
  • Bugfix:
    • Picture Graphic Object: Changing Options during runtime fixed
    • Update all Child-Positions on CCL/CCP in RAM, if b_updateObject==true
    • Position-changes are now scaled
      • Disable scaling to get old (wrong, unscaled behavior if you do not (yet) want to adapt your application-code: Define USE_VT_CLIENT_OLD_UNSCALED_CHILD_POSITIONING_COMMANDS
      • Problem before was also that if the Application passed in scaled values and would update the object, the scaled coords would be saved and on re-upload they would be scaled again! => So definitely better adapt your code than to define the above.
  • Enhancement:
    • Allow changing to "NULL" ActiveMask
      • This is possible in v6+, but other VTs may already support this for non-selectable Working-Sets now.
    • Allow Application to override VT's properties to influence scaling
  • Cleanup: Several pointers replaced by references


  • Enhancement:
    • Allow sending with prio other than the default prio (6)
    • override destination now possible


  • Bugfix:
    • Reservered too many instances PROP_INSTANCE_CNT is now used instead of wrong CAN_INSTANCE_CNT

2.6.2 to 2.7.0



  • Bugfix: Some Callbacks were not being called


  • Enhancement:
    • TimePosGps: Added sending in USE_J1939_VEHICLE_PGNS case
    • TracMove: Added specific timestamps/timeouts-detection to WBS/GBS/MSS
  • Workaroundfix: Close/ReInit had a problem with filters Small workaround fix to get filters recreated. No further change as TracClasses are subject for redesign anyway.


  • Added CSV log type
  • Added WTK log type support and MAINTAIN_POWER_REQUEST_PGN
  • Added Kvaser Memorator CSV log format
  • Added gpx-writing


  • Changed working, but invalid condition


  • EEPROM: Fixed wrong assertions in write/eofp/eofg
  • Bugfix HAL-Simulator: Range checks in I/O files


  • Enhancement: Added getter into internal interface


  • Enhancement
    • Define SA_REQUEST_PERIOD_MSEC to 0 to disable period SA requests when CONFIG_ISO_ITEM_MAX_AGE > 0
    • Callback reactOnWsAnnounceFinished() added to ControlFunctionStateHandler_c
    • Added proper getter getIsoBusInstance()
      • old one was getMultitonInst(), which is still there for backward-compatibility.
      • This one just adds an assertion!


  • Bugfix
    • Escape quotes correctly in input attributes validation string
    • Crash if language used that's not specified fixed


  • Bugfix: Properly (re)start measurement on TC changes
  • Change: Refactor connect/disconnect
  • Enhancement
    • Stop sending measurement when TC is lost; trigger eventTaskStopped if task was active
    • Add propertyDefaultSet()-getter
    • Add possibility to manually manage PD messages for proprietary manner
    • Warning: only use if you know what you are doing
      • implement and register iPdMessageHandler_c for receiving PD messages
      • use iTcClient_c::sendPdMessage for sending PD messages
  • Workaround: Added temporary ifdef'd Workaround for Mueller-TC Should not be used and by fixed by Mueller. This needs to be defined to enable it This will be removed in future from ISOAgLib.


  • Bugfix: Button-Content Scaling fixed as in vt-designer v1.6 New corrected button-content scaling is active by default. Use USE_VT_CLIENT_OLD_INCORRECT_BUTTON_CONTENT_SCALING if your objectpool is not yet adapted and you want the old incorrect scaling.
  • Enhancement
    • Response-Timeout-Detection added: This way the cause of a reconnect can be displayed to the operator
    • Temporary solution to work around missing responses from the VT.
      • ENABLE_VTCLIENT_RETRY: Will perform 2 retries when no response is being received ATTENTION: This leads to undefined behavior for "relative" commands like Change Child Location!!!
      • CONFIG_VT_CLIENT_ON_MISSING_RESPONSE_CONTINUE Finally, when the response is (even after possible retries) missing, continue (after having called eventAllRetriesFailedNowContinuing()) with the next command instead of completely disconnecting and reconnecting!
    • UTF-16 support added (VTv4+ only!) and removing spaces on Change String Value Both per defines USE_VT_UNICODE_SUPPORT and STRIP_TRAILING_SPACES_FROM_STRING_UPLOADS
  • VT-Workaround: Some VTs send responses to TP commands before the EoMAck
    • Such responses are now buffered.
    • Use WORKAROUND_PREMATURE_TP_RESPONSES to enable this (until those broken VTs get a firmware update in Nov 2014!)
    • This should not be enabled forever in production software, the VTs need to be fixed/updated!


  • Enhancement
    • Support interpreting new CTS-Limit requested in RTS
    • Added ENABLE_MULTIPACKET_RETRY Will now retry max. 2 times in a burst. It will wait until the last packet until it re-CTSes.


  • Enhancement
    • Implemented break on Windows in CAN-Server SOCKET
    • Make WIN PCAN version work with several canbus

2.6.1 to 2.6.2

  • Added module to support the ISB-Client functionality


  • Enhancement: "Move to next VT" added
  • Bugfixes:
    • AuxN:
      • Not sending PA to secondary VTs anymore.
      • Assertion fixed, now properly deregistering from Scheduler
    • Fixed 10s-response timeout detection (probably introduced in 2.6.1)


  • Enhancement:
    • Add isMethodSet in procdata
    • Remove assert in add(object)


  • Compilefixes:
    • Disabled isoaglib_assert(..) in HEADER files for now as this eventually causes conflicts when using as Library with other (Debug/Release) setting as the application
  • Some internal getters for local Diagnostics.
  • HAL-Simulator: Added defines for EEPROM (segment) size


  • Switched to new PCAN-Driver


  • Functionaliy TC-Geo adapted from 2nd Ed DIS to FDIS. Added Options


  • Reintroduced some I/O defines, although not used in the Driver

2.6.0 to 2.6.1

  • Cleanup:
    • NO_VAL/ERROR_VAL/MIN/MAX defines moved out of isoaglib_config.h.
    • conf_template/conf2build: Removed obsolete USE_FLOAT_DATA_TYPE.


  • Cleanup: Removed mc_tempFilterBox as not being used anymore.
  • Bugfix: Fixed segfault during CAN processing when deregistering during processMsg.

Network Management:

  • Bugfix: Also respond in 250ms-phase.


  • Enhancement: Adapted to latest 3rd Ed DIS / AEF Exceptions.
  • Bugfix:
    • Don't (N)ACK when DM3 requested to global.
    • Crash on DM1 sending fixed.
  • Cleanup:
    • Removed (i)TracCert_c.


  • PC-EEPROM: Increased PC-EEPROM to be 32kb instead of 8kb.
  • Older Linux Versions: Introduced USE_PIPE_INSTEAD_OF_PIPE2.
  • Cleanup:
    • Removed obsolete HAL_NEW_SEND_DELAY and moved defines out of namespace.
    • CAN-Server: HIGH PRIO mode removed
  • Bugfix: Socket-Server: Return proper value when trasmitting frames
  • SocketCAN: Fixed insertion of filters to respect std/xtd.


  • Optimization: Pools with many multilanguage objects now process faster]


  • Bugfix: TimePosGps_c - TIME_DATE_PGN parsing/sending fixed.


  • Several Compilefixes for Windows CE.


  • Fixes:
    • Avoid possible double connect.
    • Client does reconnect on TC restart.
    • Removed unused ProcData_c-parameter in MeasureSubProg.
  • Enhancement:
    • Added setter for SerialNumber.
    • Move and rename ddidefinition header to IsoAgLib space.
    • Add all missing DDIs.
    • Allow old uint8_t interface for TriggerMethods/Properties.
    • Clear of DevicePool_c/ServerStateHandler possible now.
    • Removed return-value for DevicePool_c::add(..).

Proprietary PGN:

  • Assert-forcing disableReception before close().


  • Bugfix: VT-Client did not query VtVersion if LoadVersion was used!
  • Enhancement: Support language-fallback
  • Cleanup:
    • Refactoring: Split vtclientconnection_c.cpp into commandhandler_c.cpp/uploadpoolstate_c.cpp
    • Removed DEBUG_VTCOMM_NO_STORE_VERSION, not needed.
    • Removed NO_GET_VERSIONS, from now on always the versions will be queried.
    • Comments cleaned up

2.5.3 to 2.6.0

  • Enhancement: Use pre-increment on STL-Iterators instead of post-increment for all STL iterators
  • Cleanup: Added eol-style native / Flipped some files to have consistent line endings


  • Enhancement: Allow multiple conf files as arguments for one generation run.
  • Cleanup: Removed obsolete DEBUG_ defines


  • Enhancement:
    • Added virtual getObjectType to all objects
    • Upload a v3 pool without Aux2 object to a v2 VT
  • Aux2-Bugfixes:
    • storeAux2Assignment now also called for empty list
    • Inputs' state is now sent with correct ECU_TO_VT_PGN in learn-mode
    • Still allow STILL_HELD to be sent for Inputs
    • Correct Transition-Count for (Non)LatchingBoolean Inputs


  • Enhancement: TracGeneral: Widened the interface for MaintainPower/Implement States (Not longer this restricted, application has the possibility now to set the fields completely individually.)


  • Enhancement: DigitalO-Interface extended with getter for channelNr()


  • Enhancement: Period changed from ms -> us
  • Cleanup: Duplicate comments/tabulators removed


  • PC: Enhancement: Allow defines like ANALOG_INPUT_MIN to be defined by Application


  • Enhancement: Added Product Identification Information PGN


  • Debug: Detect if measure-value was not yet set, but sent to TC already
  • Redesign: DDOP is not defined in XML anymore but in code. This allows more dynamic adaptation of the DDOP for different servers and also will help with language/unit changes in some later version of ISOAgLib.


  • Removed, because it is now obsolete with the new dynamic TC-Client approach.


  • Bugfix: Fixed dump of TP raw data
  • Enhancement: Store TP/IOP data on filesystem.
  • Cleanup: Command line parsinig


  • Optimization: Simple runtime ordering of Filterbox depending of process frequency
  • Bugfix:
    • Removed buggy copy constructor in CanPkgExt_c. (Now properly not-copyable)
    • deleteAllFiltersForCustomer() didn't forward the delection to the HAL


  • Bugfix Socket Variant: Disable SIGPIPE during send, if connection is broken

2.5.2 to 2.5.3

  • Cleanup, Commentaryfixes, compiles now properly with VS >= 2010 (include stdint.h in VS >= 2010 now to avoid conflicts)


  • Enhancement: Add new variable APP_PATH for conf_-files. Application files/paths can now be relative to APP_PATH instead of ISO_AG_LIB_PATH


  • Cleanup return type of processMsg to void.
  • Bugfix: CAN-Send: Don't delay complete 10ms when sendCanFreecnt < 1, recheck the sendCanFreecnt after 1ms as designed.
  • Bugfix: CAN-Server-Msq-Client: Correctly initialize startUpTime.
  • NOTE: The CanFifo is now always used. This is not unlimited as was the CAN-Server's system pipe, so be sure to definitely not delay ISOAgLib's (CAN-)processing!
  • Enable the HALs to be able to configure the filters to hardware (Full-CAN, e.g. CAN-Server, SocketCAN)
  • Reintroduced IsoFilterManager to be able to used filtering of the HAL (e.g. CAN-Server) to keep cpu-load down. Needs to be enable per HAL itself using HAL_USE_SPECIFIC_FILTERS


  • Removed -i=, added -r for changed Define-Prefix
  • Added -b/-bh parameters for specifying a base-class for the objectpool.
  • Support wrapping of long text-string.
  • Enhancement: Added support for VTU Unicode files.
  • Cleanup: Removed Legacy project ability, you need a VTP file now.
  • Bugfix: Line-Wrapping now works correctly even if \" present in string
  • Again allow empty/commentary lines in the language-file
  • Adapted to new attribute naming in XML to match vt-designer output: Auxiliary Control Designator Object Pointer's attribute "value" is named "auxiliary_object_id" in vt-designer output and the standard, so it's renamed now in vt2iso, too.
  • Version 4: Fixed Cmd-Byte 09 from VT_TO_ECU. Was implemented as an old pre-DIS version.
  • Added forgotten break; - was introduced in ISOAgLib 2.5.2


  • Fixed wrong double EoOP in upload-sequence. Index to VT's language wasn't set properly if an unsolicited LANGUAGE_PGN comes in too early.
  • Enhancement:
    • Add method for overriding OP version, only for special proprietary use.
    • Speedup: Move task functionality to connection
    • Add getter for current command send queue size
    • Aux2:
      • Bugfixes in messaging
    • Added workaround for GS2 to handle wrong response (DLC=2) on GetVersions simply after a time-out and upload the pool.
    • Added setAuxiliaryObjectId method to AuxiliaryControlDesignatorObjectPointer
      • Added load and store for preferred assignments
      • Added missing ECU_TO_VT filter
      • Added proper input status maintenance msg timeout checks
      • Handling/Responding NULL/Un-Assignment now correctly, was checking for Input's Maintenance Status even if Input's NAME was not given in Un-Assign case.


  • Cleanup: Rewrite IsoItem Management, replace exist/get with all-in-one functions, no more exist/get-function mechanism or search caches.
  • Bugfix: IsoRequestPgn_c: unregisterPGN fixed for case when all PGNs should be removed.
  • AEF-ConformanceTest:
    • ECU Identification added.
    • MinCF functionality added, set per default


  • Removed limits handling in Outputs_c
  • Removed management of AnalogI/DigitalI/CounterI, merged util/config.h -> isoaglib_config.h


  • Enhancements for 64 bit CPUs in IsoName_c, etc.
  • Renamed SUPPORTS_64BIT -> HAS_64BIT_INT_TYPE: All HALs supporting 64bit HAVE TO DEFINE "HAS_64BIT_INT_TYPE"!
  • Set RS232_SERIAL_DEV in the config file if something else than /dev/ttySx is needed.
  • HAL-PC:
    • Added missing return values, fixed select call argument
    • Fixed shutdown of msq driver


  • Fixed Crash with DLC=0.


  • Bugfix: Working again, compared to 2.5.1/2.5.2
  • Interface-Cleanup:
    • initFsClient -> registerFsClient
    • introduced deregisterFsClient

(Extended) Transport Protocol:

  • MultiSend: Revised timing for TP; slow down when only sending few packets]
  • MultiReceive: Bugfix: Correct cast to uint8_t of mui8_pkgRemainingInBurst
  • FastPacket Bugfix:
    • Processing of FP-bursts works again
    • Sending works again, was broken in 2.5.1/2.5.2
  • AEF-ConformanceTest: Added Connection Abort reason codes.
  • Adjusted timing to real CAN conditions (assuming not 3 but 2 packets per ms, so don't be too fast with sending!)
  • Now always part (without any define) of ISOAgLib


  • Removed assertion, since Lifetime totals are not setable
  • Bugfix: On program-end wrong ~ProcData did something which is now moved to close().
  • Fix: Trigger methods are only 5 bits instead of 6 now.


  • Fix: Allowing all characters in DVP's Unit Designator


  • Fix: TracGuidance's init wasn't called from IsoBus_c::init, was forgotten and hence had to be called manually.
  • Fix: Added forgotten break; in switch() regarding Maintain Power Message.

Proprietary PGN:

  • Bugfixes compared to 2.5.1/2.5.2:
    • Prop B's filter was set up with Prop A filter.
    • Fixed DP setting and sending of PropB. Interface changed

Diagnostics Services:

  • Added interface for DtcContainer: iDtcContainer.
  • AEF-ConformanceTest: Own PGN for Control Function Functionalities

2.5.1 to 2.5.2

  • Redesign:
    • Unified the CAN-HAL: Removed SYSTEM_WITH_ENHANCED_CAN_HAL. Now there's only one simple HAL.
    • Incoming packets are simply enqueued, no hardware filtering used.
    • No more need for dynamic reconfiguration of hardware-filters, hence no more runtime-blocks (for worst case several hundreds milliseconds) during reconfiguration.
    • Watchdog-triggering can now finally be done completely in the application. ISOAgLib's System does not care for the watchdog anymore!
    • Removed the watchdog-trigger-task.
    • CAN HAL always needs to work properly, no more Fatal Errors registered in iLibErr_c.

(Extended) Transport Protocol:

  • Sending timing improved and is now actually faster.


  • Optimization: Fast lookup for CAN-reception in CanPkgExt_c-constructor via IsoItem_c* array.

Proprietary bus:

  • Bugfix: iCanPkg_c::set now handles data bytes correctly

Proprietary PGN:

  • Rewritten due to change in CAN-processing.

Error Management:

  • Cleanup:
    • Finally (currently) no more Fatal Errors (from setup/init/close/etc.), will all be handled via assertions!
    • Only Non-Fatal Errors (occuring during runtime) will be registered for applications information.


  • Removed deprecated old "Makefile"s as everything is to be compiled via CMake/make now.

2.5.0 to 2.5.1

  • Restructuring:
    • Simplified Scheduler. All runnings tasks must be run-to-completion and short, hence no more getForcedMinExecTimeDefault().
    • Extended can_waitUntilCanReceiveOrTimeout() to take a 32bit value as paramter instead of 16bit.
    • Introducing iWatchdogTriggerTask_c and removed many of the internal triggerWd-calls (except for filter-reconfiguration)
    • CanIo_c's processMsg got a new parameter: processMsg( bool& stopCanProcessing ).
    • Removed updateEarlierAndLatestInterval()-calls, also getTaskName().
    • Removed return-type from timeEvent()-call.
    • Allow task-triggering based on fixed or flexible timestamps.
    • Renamed registering/deregistering.
    • Introduced OneShot-Timer and a register-delay.


  • Cleanup: "counter" changed to "total".


  • Making more robust if other VTs would send to us, which is a theoretical case only.


  • Compatibility: Improved by sending correct IS reserved fields.


  • Cleanup: Removed obsolete functions.

(Extended) Transport Protocol:

  • Receiving-speed now up to speed again when multiple (E)TPs are being received and kept for later processing (was only the case in VT-/TC-/FS-Servers).

  • Enhancement: Supply CMake template as parameter.

2.4.0 to 2.5.0

  • Compilefixes:
    • Visual Studio 10
    • Qt pathlength: Shortened file names to get it compile with Qt
    • IAR: Bitfieldwrapped fixed to work with IAR now.
  • Cleanup:
    • Removed all (known) warnings on all platforms once again.
    • Removed default parameters, replaced many checks overall with proper isoaglib_assert(..) calls.
    • Removed EXTERNAL_DEBUG_DEVICE - ISOAgLib doesn't tell you anymore how to debug your application, also the name was confusing. Only INTERNAL_DEBUG_DEVICE left for use within the library!
    • Removed USE_FLOAT_DATA_TYPE - float-code is now always enabled
    • Removed executable flag from source files
    • Several defines cleaned up (removed DEBUG_TIME_EVENTS, DEBUG_HEAP_USEAGE) and debug-code removed
    • Removed IStateExt_c
    • Removed NO_CAN_EN_CHECK / CONFIG_BUFFER_SHORT_CAN_EN_LOSS_MSEC: This functionaliy can easily be implemented in the application. Removed to avoid confusion due to defines declared in isoaglib_config.h
    • Replaced CanIo_c::init's default paramter 13 with (CONFIG_CAN_OBJ_CNT-1)
    • Removed YES/NO and _YN defines
    • Removed debug-statements in USE_RS232_FOR_DEBUG
    • Removed RS232_1 up to RS232_4
    • Removed HEAP debug statements
    • Removed PREPARE_VTGB/NO_BITMAP_SCALING/gluetoks/gluemacs as it's obsolete
    • Removed Shorten Symbol Names. Not needed for Tasking compilers anymore.
    • Renamed SIZEOF_INT to HAL_SIZEOF_INT because it's set by the HAL.
    • Replaced TRUE/FALSE to true/false, except for WinApi calls.
  • Restructuring:
    • Use isoaglib_config.h for accessing hal header now - this is the only file you need to include (to get the typedefs, etc.)


  • Fix: Corrected Alignment (now second, thire, etc. instances are properly aligned) and init-bool (Pointer-Array of instances wasn't initialized with 0; now done with a single static bool)
  • Cleanup:
    • Multitons now ALWAYS have an instance member, even if only one instance is created, hence being a "singleton"-kind...
    • Classes like System_c and EepromIo_c are now explicit "Singletons", they use their own macro for creation and do not store any "instance" member variable at all.


  • Redesigned error handling. Most errors are now handled via assertions. Only few runtime-errors left.
  • Added non fatal faults on SA and NAME conflicts


  • Bugfix: Didn't answer dest-spec. requests to ECU_ID/SW_ID anymore.


  • Cleanup:
    • Removed error check during system init (all platforms). Init must succeed.
    • Change getOnOffSwitch's return type to bool
    • PowerHold settings on init and close: When the system is initialized then the self holding power function is requested from the HAL. On shutdown it gets turned off to allow the controller to shut down.
    • canEn() is deprecated and replaced by switchedOn.
  • Enhancement:
    • System init/shutdown: User application has to call system init and close. This is not down anymore by Scheduler_c::init. Furthermore the shutdown strategy is implemented by the different HALs.


  • Bugfix:
    • PC: getAdc fixed: Now checking for ANALOG_INPUT_MAX instead of DIGITAL_INPUT_MAX.
    • STW-HALs: Rx path fix - copy data immediately at beginning of IRQ handler to secure it against overwriting
  • Cleanup:
    • Removed T_TASK_BASIC, should be needed only for STW platform an set in BIOS headers.
    • Removed GET_U_THRESHOLD from all HALs. Is defined for ESX and should only be used in ESX HAL.
    • Removed getLokalId from Dj1 and ESX Micro HAL.
    • Replaced CONFIG_EEPROM_PADDING_BYTE with hardcoded 0xFF. Shouldn't be used/received anyhow!
    • C2C: MAX_ADC_V changed to CONFIG_HAL_C2C_MAX_ADC_V
    • CAN fifo access cleaned up.
    • STW ESX specific functions and interface definitions removed. (startTaskTimer and init_task_call are specific for STW controllers and should not be decleared in IsoAgLibs HAL interface.)
    • ESX: Fixed double watchdog init
    • Obsolete HAL return types that are unused within IsoAgLib removed. (iSystem_c::init, iSystem_c::close, HAL::openSystem, HAL::closeSystem)
    • Renamed HAL::open_system to openSystem
    • Replaced EE_READY with HAL_NO_ERR in HAL inteface (EEPROM)
    • PC:
      • No more endianess/float-word-order defaults for obsolete platforms.
      • Needs to be specified explicitly and config.h will bail out if not set.
      • Shutting system down restructuted.


  • Improvement:
    • Proper timing for CTS sending/timeout detection, send CTS right away. Speeds up multi-packet reception.
    • Made it possible to start new (E)TP from Success/Abort-callback


  • Cleanup:
    • Renamed saclaimhandler_c.h -> cfstatehandler_c.h and removed SaClaimHandler_c typedef.
    • IsoItemModification_t replaced with iIsoItemAction_e
  • Bugfix: Fixed possible crash with strange loop condition in IsoItem (r5390)

  • Fix:
    • Removed problematic usage of the tee-command
    • Lineending changed to LF instead of native
  • Cleanup:
    • Removed --report option and feature_partition_rule.
    • Removed unused USE_STLPORT_HEADER
    • Following conf_-settings need to be put into the PRJ_DEFINES list now: USE_PCAN_LIB, USE_VT_UNICODE_SUPPORT
    • Adapted for simpler TC-Client
    • Removed obsolete/unused PROJECT_AUTHOR / PROJECT_AUTHOR_NAME
  • Enhancement: Added USE_EEPROM_DRIVER to be used by the configuration files.


  • Fix: Now properly checking invalid/uninteresting SA/DA.
  • Optimization: Usage of IdentItem in part 7 for address claim state checks
  • Cleanup:
    • Do not check for local member before adding filter: There's no need for a local iso member for track move to add the PG filters.
    • Removed "optimized" code in TracLight
    • Renamed Process_c -> TcClient.
    • Removed all obsolete code regarding the "old" process data. Only left what's needed for communication with a TC/DataLogger, etc.


  • Cleanup:
    • Replaced old not maintained makefile with cleaned up one.
    • Removed ProcessDataCombination.
  • Output files changed:
    • Created an initProcData() function optionally sets the handler on all ProcData-instances.


  • Certification:
    • Reversed GET_VERSIONS to NO_GET_VERSIONS, so retrieving the versions from the VT is default now (as needed for certification!)
  • Enhancement:
    • Added v4 features in iVtObjectButton_c (v4select, v4setOptions, v4enable, v4disable)
    • Added Delete Version command sendNonVolatileDeleteVersion(..);
    • Added possibility to omit objects from upload. Caution: Use at your own risk.
    • Done some TODOs regarding Multitons in AuxType2 classes, also fixed distribution of input values to own entities.
  • Cleanup:
    • VT-Client split into files, removed obsolete "aux3" files.
    • Renamed IsoTerminal -> VtClient
    • Renamed VtClientServerCommunication_c -> VtClientConnection_c
    • Renamed iIsoTerminalObjectPool_c -> iVtClientObjectPool_c
    • Renamed initAndRegisterIsoObjectPool -> initAndRegisterObjectPool


  • Cleanup:
    • Removed USE_FREE_IMAGE_LIB
    • Removed obsolete (unmaintained) Paintlib support.


  • Interfacefix:
    • Put enums into iInput_c
    • Added new file "supplementary_driver/driver/inputs/iinput_c.h"
    • Catching all errors in DigitalO_c now.
  • Enhancement:
    • Counter extended to 32 bit.
  • Cleanup:
    • Removed all "virtual" from the I/O classes, except the destructor.
    • Removed valLong().


  • Bugfix: The bits 7-3 of byte 7 ground based speed and distance are reserved and hence now set to 1. Note: This is not done for the other PGNs yet.


  • Cleanup: Assertion in tractor mode: An ident must be given as argument.


  • Enhancement: Added "GetEEPROM_FileName()" and added hal_simulator EEPROM Target Extension.


  • Filtering: Bugfix: Fixed input format for DA
  • Restructuring: Separated can_server.h out of ISOAgLib-usage: can_server.h only needs PC-HAL now, no more isoaglib_config.h or other ISOAgLib sources.


  • Bugfix: Fixed endless loop in processMsg() which occured at system shutdown when a message with a higher msgobj-number is in the queue and then filters got remove in between.
  • Corrected functions to get bus-load. (Note: This is only the sending load!)


  • Separated Flexible8ByteString_c/Flexible4ByteString_c into dedicated file.

2.3.0 to 2.4.0

Diagnostics Services / Certification issues:
  • Fix: According to Part 3, the diagnostic messages are now broadcast if requested via broadcast, else they are responded directly.
  • Enhancement: Added support of AEF functionality message. Please note that this is currently an AEF specification, which is reflected in the API. As soon as this will be official ISO-standard, it'll be renamed.
  • Fix: (Change/Clarification): Send DM1 only if at least one DTC active. Also fixed the timing.
  • SW-Identification now with correct '*' at the end (only one)
  • Transport Protocol: Timeouts set down to values from the standard for certification reasons.


  • Bugfix: Querying the KeySwitch works again. (backported to 2.3.0 and 2.2.1 also)


  • API-Cleanup: Removed some obsolete APIs like CANCustomer-typedef, IsoName with DIN-like constructors (devClass, devClassInst=0), etc.
  • Compiler-Cleanup: Many warnings removed for several platforms.


  • Renamed canEn() -> switchedOn(), because CAN-Enable is a DIN name. Kept canEn() as deprecated for backwards-compatibility until the next release


  • Bugfix: Proper address-verification added in all modules using processMsg/processMsgRequestPGN, don't NACK if unanswered PGN requested from NULL address.
  • Fix: Address-Claiming now properly tries addresses in the range of 0x80..0xEE cyclically from the start-address.
  • Enhancement: More exact timing while in the 250ms AdressClaim phase
  • Redesign: IsoName_c's "unspecified" is now an additional boolean, so NAMEs with all bits set (8 times FF) arenow valid ISO-nodes.


  • Fix: Getting Font-Properties from the VT now filters out the reserved bits (only valid for non-certified-VTs that send the reserved bit as 1).
  • Enhancement: First support for Multiple VTs: Application can store the "preferred VT" now via callback.
  • Enhancement: First Aux Type2 implementations added for testing - be aware that this is not implemented by 100% right now.
  • Enhancement: Query stored Versions before trying to load via Load Version. This needs to be enabled with "GET_VERSIONS" if desired.
  • Enhancement: Added getVtColorDepth() to iVtServerInstance_c.


  • Enhancement: Added interactive filtering


  • Fix: Proprietary PGN define was not generated, hence PropPGN-Module didn't work although enabled.
  • Cleanup: Removed PRJ_MULTIPACKET, as support for TP/ETP is now always included, regardless of any setting.
  • Enhancement: Improved conf2build's VisualC++ Makefile generation (via CMake). Will now split ISOAgLib/App files into groups.


  • Cleanup: Made the methods of iFsClient_c abstract.
  • API-Change: Now passing Whitelist per value instead of pointer in the std::vector, and the vector itself per const reference.


  • Fix for VRT: Don't send any PROCESS_DATA with SETPOINT_ERROR_COMMAND.


  • Enhancement: Added parser for SocketCAN tool 'candump'.


  • Enhancement: Added setup-hook for ISOAgLib-Thread (for setting of priority, etc.)

Multipacket (TP/ETP):

  • Fix: Don't accept ETP with <1786 bytes anymore. NOTE: This may cause issues with non-conformant/-certified implements that were using ETP instead of TP.
  • Enhancement: Buffer is now reserved with the correct size, so really no reallocation takes place as it was intended to be.

2.2.1 to 2.3.0

  • Enhancement: Added initial support for SocketCAN under Linux: Enable by using "sys" for "x86linux"
  • Bugfix: Not processing uninitialized CAN-busses anymore. (Avoid crashing)
  • Bugfix: If send-queue of CAN-device is full a certain amount of time (defaulting currently to 10 ms) is waited, if queue is still full, CAN-device-queue is cleared and new message inserted.
  • Bugfix: On removing filters check for empty filterbox-array was missing (only theoretical problem)
  • Bugfix: CanPkg_c::operator!= fixed. (Wasn't used in last release anyway)
  • Bugfix: No more busy waiting if send buffer full. (Introduced new HAL-function)
  • Bugfix: CAN-processing could crash in rare cases (canMsgToFilterBox was matching/processing idle Filterboxes)
  • Bugfix: Avoid possible crash by setting the FilterBox's BusNr directly at CanIo_c::insertFilter(..)
  • Bugfix: Properly shielding Init/Close now, close didn't close. (Maybe in previous versions it did)
  • Cleanup: Mask/Filter: Encapsulation of CAN mask/filter combinations
    • Removed DEFAULT_IDENT_TYPE, CanIo_c loses the IdentType
    • Removed Ident_c::empty() / setEmpty() functionality. Use iMaskFilter_c instead.
    • Removed 16bit filter functions. (Optimization not needed)
    • CanPkgExt_c: removed explicit can frame type argument
    • Introduced new file imaskfilter_c.h: iMaskFilter_c, iMaskFilterType_c
    • Renamed set method in CanPkg_c to setByte
    • Changed IsoFilter_s interface to make use of iFilterMask_c
  • Cleanup: Refacturing of complete CAN processing
    • Pass received CAN data a argument of processMsg
    • Removed static member of CanPkg/Ext
    • Removed flags2string/string2flags functionality
    • Removed getData()/data() declaration of CanCustomer Added filter and ability to receive Std CAN frames on IsoBus instance


  • Enhancement: Include vtl files that match <languagecode>.*.vtl: In order to split translation into seperate vtl files, vt2iso scans all dictionary directories for <languagecode>.*.vtl files, that will be parsed.
  • Enhancement: Added pedantic mode for translation value resolving: Added -k option to vt2iso that makes vt2iso abort when a translateable value is marked language specific in the xml, but no value is found for every associated language in the .vtl/.values* files.
  • Fix: Version-Checks added: Now checking the OP Version for different elements/attributes, e.g. if OutputLists are being used in a v2 pool, etc.
  • Fix: Conversion:
    • Allowing all characters now in Strings - they will be escaped now.
    • <stringvariable> now also properly escapes special characters just as the <output/inputstring> does.]

  • IMPORTANT: Renamed "" to "", which expresses more what this tool is about.
  • Enhancement: The CMakeLists.txt is extended by an additional target that creates tag files for cscope and ctags.
  • Enhancement: Generally improved the CMakeLists.txt output for Windows / Linux.
  • Bugfix: With external HALs: Now not collecting .cpp-files twice anymore.
  • Cleanup: Removed obsolete VC6 creation. (Use CMake instead!)
  • Cleanup: Removed kdevelop3 and Doxygen creation.


  • Enhancement: Added rough support for J1939 PGSs: Enable this feature with "USE_J1939_VEHICLE_PGNS". It's not on by default, because there may be a problem when both speeds are on the bus.
  • Bugfix TracMove:
    • Set selected Isoname on move msg reception, was ignored before somehow.
    • Fix selected distance direction usage for wheel based PGN.
  • Bugfix: Don't regard Sender with N/A Selected Speed Source at all, just discard msg. (Before a SenderConflict was registered in iLibErr.)


  • Enhancement: Added support for PCANExplorer log-files.
  • Enhancement: Extended with the Vehicle PGNs.
  • Enhancement: Updated JRF format-parsing to new (hex) format.
  • Enhancement: Now supporting Multiple (extended) transport protocol sessions.
  • Enhancement: (E)TP-Sessions output as single frames and also as complete chunk of data.
  • Enhancement: Added "Auxiliary valve estimated flow" and "Auxiliary valve measured flow".
  • Enhancement: Tracking addresses now.
  • Bugfix: Logalizer now recognizes RTE log which starts with REQUEST_MSG.


  • Enhancement: iLibErr_c interface enhanced with error observer.
  • Refactoring: CAN-/Singleton-API:
    • Introduced IsoBus_c/ProprietaryBus_c, cleaned up singleton mechanismn (removed "singletonInit")
    • IdentItem needs to be (de-)registered at IsoMonitor now explicitly.
    • Properly cleaned up init/close methods accordingly
    • BaseCommon_c-classed get "init_specialized" for clarification
    • Removed implicit System_c::init calls from differenct modules, application needs to properly init all modules (System, IsoBus, IdentItem, etc.) explicitly in the correct order now.
    • Singleton framework changed to work properly with all compilers (Singletons/multitons no longer rely on template classes.). No more unused scheduler instances.
    • Separated Container out of singletons.
  • Unicode: Now using ISOAGLIB_USE_UNICODE instead of UNICODE/_UNICODE.
  • Removed all warnings, even the Visual Studio deprecated ones...
  • Cleanup: Actor/Sensor: Changed names from (incorrectly named) Actor and Sensor to Inputs and Outputs.
  • Cleanup: Subsystem-Init/Close: Now wrong init/close sequences assert instead of ignoring.


  • Cleanup: proc2iso now generates an iIsoName instead of an iIdentItem

Network Management:

  • Bugfix: IsoRequestPgn - Request to Global wasn't registered as init() wasn't called!
  • Bugfix: IsoMonitor Destruction: ~IsoItem doesn't do any functionality anymore.
  • Bugfix/Interface: The storage of a successfully claimed SA is fixed and now handled by an instance of a iIdentDataStorage_c implementation.
  • Cleanup: Interface: An iIdentitem is no longer initialized via constructor. Parameters can be passed only with the init call. Furthermore the parameters are grouped by the usage of iIsoname_c.
  • Cleanup: Diagnostics-Handler: Replaced std::string with c-string
  • Cleanup: Address-Claiming: Send Req4AdrCl with 0xFE as SA always now, even if one IdentItem has already claimed an address.
  • Cleanup: Removed obsolete DiagnosticsMode "mc_serviceTool"


  • Cleanup: Interface now always has the channel-number so simplicity.
  • Cleanup: Removed std::string and std::deque from RS232-Interface.

Transport Protocol:

  • Enhancement: Added interface for aborting a stream.
  • Enhancement: Improvement MultiSend callback system (create base class MultiSendEventHandler for callback). Replace &SendSuccess with pointer to handler.
  • Bugfix: Fixed sending of ConnAbort for wrong sequence (on receive).
  • Bugfix: FP-Reception - Now FastPacket is processed properly again, messages were discarded before!
  • Cleanup: Removed sendIsoBroadcastOrSinglePacket


  • Refactoring: Moved from "IsoAgLib" mandatory modules to "supplementary_driver" - It's not mandatory anymore as the SA for the iIdentItems will be stored by the application now instead of ISOAgLib in the EEPROM.
  • Cleanup: Removed support for STW's ESX EEPROM Editor (via CAN & RS232)
  • Cleanup: Removed unnecessary RS232-include


  • Bugfix: Made IsoAgLibThread thread-safety
    • Ran into race-conditions (of course) when used from multiple threads as it was not designed for multiple threads in the first place (intentionally).
    • Now it mutexes itself, so it can be run from different threads


  • Enhancement: Allow interactive message sending.
  • Enhancement: You can start CAN-Server now before or after the ECUs. (Proper messages will be displayed)
  • Enhancement: Added return-value for Scheduler_c::init() to properly detect if e.g. CAN-Server is started as root and can't be connected to.
  • Bugfix: Potential crash on client-disconnection fixed
  • Bugfix SocketCAN: closeBusOnCard - only close if previously opened and set/reset mb_deviceConnected flag

Diagnostics Services:

  • Enhancement: Added support for DM1/DM2/DM3 messages (interface added to iIdentItem_c)


  • Bugfix: Now limiting Scheduler-Sleep to 50ms for proper WD-triggering.
    • If no CAN-Packets were on the bus and/or ISO wasn't enabled, the Scheduler could command a long sleep that may have triggered the watchdog.
    • Short term solution: We're now limiting the Scheduler-sleep to 50ms.
  • Bugfix: Properly shielding Init/Close now, close didn't close. (Maybe in previous versions it did)

Process-Data / TC-Client:

  • Cleanup:
    • Remove ProcDataRemote and rename option PRJ_PROCESS to PRJ_ISO_TASKCONTROLLER_CLIENT.
    • Moved all files to Part10-directory.
    • Not checking for USE_ISO_TASKCONTROLLER_CLIENT anymore, if Process_c is included, it always uses the DeviceDescription handler now.
  • Cleanup: Made TC-Client handler functions abstract because of the DDI-parameter addition, so you have to implement all of the handler functions.


  • Enhancement: Added feature to suppress sending of Commands to the VT (actually putting it into the queue), so the changes can be done locally and sent to the VT via Partial Objectpool Update.
  • Enhancement: Added "isClientActive()"-Function to iVtClientServerCommunication.
  • Bugfix: Fixed crash when a client is re-initialized completely during runtime (by API). Now the vtObject's init is protected to not double init itself with the attributes pointer.
  • Cleanup: Added const to char* for versionLabel in initAndRegisterIsoObjectpool()


  • Enhancement: Counter-Frequency changed from uint16 -> uint32.
  • Enhancement: Incorporated HAL-Simulator into PC-System-HAL.
    • Also adapted conf2build.
    • Added USE_OUTPUTS_DRIVER and USE_INPUTS_DRIVER for proper selection of the associated HAL.
    • Renamed some target extension files so the scheme is the same everywhere now.
    • CAN-Server-Socket-HAL-Simulator is now including the Socket-HAL directly to avoid code duplication.
  • Enhancement: Extended HAL-Simulator by some more functions.
  • Enhancement: Speed up waitUntilCanReceiveOrTimeout in the ESX, ESXµ and C2C HALs. For those embedded platforms a busy-loop-checking for received CAN-messages will be performed, because it's the lowest priority Task and even a delay_us() on the STW hardware will perform a busy-wait.
  • Bugfix: PC-System-HAL: On Linux >= 2.6.0 if the application is started with clock_gettime being negative, the startup was always re-generated.
  • Cleanup: System-HAL's wdReset() now has "void" return type. Wasn't consistent.
  • Cleanup: Proper HAL-interfaces created now. (HAL functions declared in hal_<module>.h now) HAL-implementations can't have a different signature now (as it should be)!
  • Cleanup: Moved implicit handling of main-relais from System-module to Outputs_c, where it belongs. It has to be switched on/off explicitly now by the application, ISOAgLib is not touching it anymore.
  • Cleanup: Watchdog is now disabled by defeault in all HALs. If the application needs the watchdog enabled, it needs to properly define the watchdog-time and enable it.
  • Cleanup: HALs for C2C and ESXµ are unified now.

Inputs: (former Sensor)

  • Enhancement: Promoted enums to API, add channelNr() to public API
  • Cleanup: CounterI: Value made unsigned to increase range - and HAL getter was already unsigned anyhow!

Outputs: (former Actor)

  • Cleanup: Outputs_c is not managing DigitalO_c-instances anymore
  • Cleanup: DigitalO_c now has a default-c'tor for array-initialization


  • Enhancement: Passing sender to process()-function now so application can respond destination specific even if the incoming message was broadcast.

2.2.0 to 2.2.1

General Enhancement/Changes/Cleanups:
  • Introduced an internal AutoBuildSystem which builds various application(variant)s to ensure correct compilation/linking on all Tutorial ECUs.
  • Change in philosophy: Calls to functions with invalid value (like NULL pointer where not allowed) won't be caught during runtime anymore, behavior is undefined!
    • Enable debugging, then you will get ISOAgLib's assertions during runtime.
    • This is the same behavior as for example the standard-library - a memcpy with NULL pointer(s) will also crash.
  • Internally no longer check size after push_front, push_back, because push-operations will crash when out-of-memory anyway.
  • Shortened/Unified commentary blocks at the beginning of each file.
  • Replaced slist by list for simplicity, because slist is not STL-standard.
  • Some left-over system-dependent code moved out of generic ISOAgLib files into the HALs/Compiler-Adaptation.
  • General directory structure cleanup.
  • Removed obsolete file "eeprom_adr.h".
  • Last DIN comments cleaned up ;-)
  • DEFINEs:
    • Now "#if" is preferred instead of "#ifdef".
    • SYSTEM_PC_VC: Replaced SYSTEM_PC_VC with _MSC_VER.
    • PC_OS_Linux / PC_OS_Win32: Removed those defines. Were used only in seldom places anyway. Replaced by WIN32 logic, because those defines were built on _WIN32.
    • Moved HAL_PC_RTE_DEFAULT_SERVER to hal/pc/config.h
    • Not undefining USE_EEPROM_IO in case a HAL doesn't provide EEPROM. PRJ_EEPROM needs to be disabled in the config file instead.
    • Removed ifdef SYSTEM_MITRON167 regarding CNAMESPACE from "can/impl/ident_c.h". Should better be in compiler_adaptation anyway.
    • Removed ifndef SYSTEM_PM167 regarding missing getBatteryVoltage/getExternalSensorPowerVoltagefrom "driver/system/impl/system_c.h".
    • DEBUG is globally replaced by several more specific defines DEBUG_<module> - so DEBUG can be used for the application now without disturbing ISOAgLib Debug output.
  • Inheritance hierarchy is simplified with regard to cancustomer, scheduler, isorequesthandler, saclaimhandler.
  • Shutdown stabilized (scheduler, receive-filters for MultiReceive), should not crash anymore.
  • API enhanced by control function state change handler (formerly internal SA claim handler)
  • TP/ETP: Filtering now considers sender-node.
  • Stabilized for multiple clients, multiple servers and when the server is offline.
  • Dealing properly with multiple ISOBUS instances.
  • Class IsoAgLibThread_c introduced.
  • Flexible4ByteString_c fixed particularly with regard to comparisions.
  • Assertions preferred to error signaling in util functions. If program behaves strange, simply disable "NDEBUG" to enable assertions.


  • Change: Default color conversion done by brightness rather than by type now.
  • Change: Switched from 2 command-retries after 1.5s to no retry and completely reconnecting after 10s without command-response.
  • Bugfix: enterSafeState was not called when no messages were read anymore at all. This is fixed now.
  • Bugfix: Appropriate reconnection after NACK.
  • Bugfix: Sending CAN-packets from the event-handlers will no longer disturb the further internal processing.
  • Added access for the iVtServerInstance_c in the VT-Client Interface.
  • Added method "bool connectedToVtServer()" in (i)VtClientServerCommunication_c to check if a connection to a VT-Server is established.
  • Allow Application to add additional IOP-data to the Objectpool(-Upload) for optimizing special cases.
  • Structural cleanup of Upload-Sequence.
  • Don't upload SKMs with too much SKs (regarding the VT's virtualSKs)
    • SKM-objects with more SKs than the amount of VT's supported virtual SKs are not uploaded to the VT.
    • The application needs to ensure that a >6 SK SKM is not initially connected to a datamask, because this would lead to a dangling reference during upload and a pool-rejection.
    • To be correct, construct the objectpool as following: Only connect <= 6 SK SKMs in Data-/Alarm-Masks. Only put additional >6 SK SKMs loose into the objectpool and change the associated SKM in the DM/AM during runtime.
  • Added "getSkPhysical()" and "getSkVirtual()" to "iVtServerInstance_c".
  • Added BUTTON_HAS_BEEN_RELEASED define, which was strangely missing.
  • Language-PGN processed only once now, it was called twice before although only being on the bus once.
  • Added missing features for operating the VT-Client as Slave.
  • Deal with InputList's attributes, even if they vary from v2 to v4.
  • Include paths <IsoAgLib/····> preferred to "../../····" to avoid too long paths in case ISOAgLib is placed deep in the filesystem.


  • Bugfix: Properly outputs the objects' initialization.
  • Writing out proper external declaration using namespaces. (Only had an effect when using namespaces).
  • Gives informative output on some more errors.
  • Allows any language-code to be used in the working-set (because they may be extended in the standard).
  • Allows picture graphics bigger than 480*480.
  • Supports FixedBitmap for VTP-files.


  • Bugfix: CAN Msg Receive (Windows): CAN-HAL used other startup-time than SYSTEM-HAL. This did cause time-stamps of received CAN messages to appear in future when compared to time-stamps from System's getTime().
  • Bugfix: Leave R-bit intact when setting the prio, also getDp() will now return 2 bits (EDP+DP) instead of only DP.
  • Removed CAN-send-pause-setting. Now always bursting out all messages (because send-pause can't be set for different types of messages).
  • Removed obsolete define CAN_BUS_CNT, because it was left in use only in some DEBUG parts of ESX (and A2). (Use HAL_CAN_MAX_BUS_NR instead!)

Data Link:

  • Allowing TP/ETP to run in parallel now, because this is needed in Server-side implementations.
  • Forbid TP/ETP (MultiReceive_c/MultiSend_c) to be used in the application, because it's too low-level for the application. (Removed iMultiSend_c)

Network Management:

  • Bugfix: Nodes were incorrectly thrown out because dest.spec. Req4AC was treated like glob. Req4AC.
  • Bugfix: Address-Claim sequence (sendRequestForClaimedAddress) will not be started before the scheduler-loop anymore.
  • Bugfix: React properly if AC has been stolen from known remote node (avoid that incoming and outcoming messages confuse each others).
  • API extended by method iIsoItem_c::getMaster(..).
  • Class IsoName_c: new value for unspecified name (all 64bits are 1s now), adapted constructor and conversions accordingly.


  • [Bugfix] [Part 3 PropMsg] [Send-Interval was not properly set internally]

  • Calling Handler::updateTimePeriod only worked properly from Handler::timeEvent
  • Now it also works when being called Handler::updateSchedulerInformation, it retriggers instead of setTimePeriod.
  • Handler::sendDate will now only send the data, not do anymore rescheduling.


  • Added new CAN-Format JRF.


  • PC
    • Debug Output cleaned up.
    • Increased Number of available CAN-Channels to 32.
    • Simulating Sensor HAL: Added frequency to ditigal simulation-files
  • ESX
    • Bugfix: Analog-Current-Measurement fixed, had wrong channel mapping (Didn't ever work!).
    • Bugfix: Wrong channel mapping was used (Digital instead of Analog), although Current measurement works on Analog inputs just as Voltage measurement.

  • Bugfix: File collecting for Sensor-part was missing an "-o" in the find statement - Effect was that project couldn't be linked.
  • Bugfix: USE_RS232 to be set automatically when PRJ_RS232 is set.
  • Added generation of IAR embedded Workbench IDE file and dependent files.
  • SYSTEM_XYZ define will not be generated by update_makefile anymore (removed USE_SYSTEM_DEFINE). It is now defined by the according hal/<platform>/config.h
  • Allow proprietary HALs to be used, even from an outside directory. Added USE_HAL_PATH for that reason.
  • From now on, HAL_PATH_ISOAGLIB_<SYSTEM/CAN/EEPROM> and HAL_PATH_SUPPLEMENTARY_<RS232/ACTOR/SENSOR/DATASTREAMS> will be written to the config_<project>.h file (instead of the SYSTEM_XYZ define)
  • Even less auto-feature adjusting (with Warning) now. Will "exit 2" with an Error instead.
  • Files in the "hal/" directories are now named hal_<module>.h to differentiate them from the hal/<target>/<module>/<module>.h files.
  • typedef.h moved into hal/ directory with the new name hal_typedef.h
  • Interface-Filelist will now simply collect all ".h" headers (from the "hal" dirs) from the general filelist. (Some few too much headers wouldn't mind)
  • Generated Makefile is now again the Makefile itself, not a linking shortcut.
  • Now auto-checking for the available HAL-modules (bail out if the mandatory ones are not available, and detect which ones of the supplementaries are available)
  • Not anymore generating the "config_header__"-files.
  • Added Option for debug-definition group, mostly used for autobuild-system.
  • Generates files (CMakeLists.txt) to be used by CMake to build for Linux or Win32.
  • Maps USE_MUTUAL_EXCLUSION option properly to source file list.
  • Now C-files can be built just as well as C++ files.


  • Added ESX/C2C/ESXµ conf_files for ready-to-go projects.


  • Bugfix: CAN-Server-Socket now properly closes handles on releaseClient.
  • Added new device driver LAWICEL CANUSB [Windows] for CAN-Server.
  • Removed hard-coded restriction to 4 channels, now more channels are possible.
  • Added daemonize option "--daemonize" for linux version. The interactive flag is turned off with this option.


  • Restructuring: HAL now included by one path per module, not via SYSTEM_XYZ define anymore
  • Replaced ifdef/include-chains by a generic expression using HAL_SUBDIR, so a new HAL doesn't need "yet another entry in the include-#ifdef-chain".
  • Removed "#ifndef STL_NAMESPACE #define STL_NAMESPACE std #endif" from config.h files because that's really the job of compiler_adaptation.h
  • RS232-over-CAN:
    • rs232_over_can module renamed to standard module-naming (rs232.h) and placed in its own directory.
    • PRJ_RS232_OVER_CAN does not implicitly enable PRJ_RS232. (conf_template comment adapted)
    • USE_RS232_OVER_CAN (from generated config_<project>.h) removed, not needed anymore with the new mechanism.
  • IsoAgLib configuration (include-files):
    • Reordered/cleaned up structure of include-dependencies of the files like "isoaglib_config.h/compiler_adaptation.h/hal_config.h/config.h:
    • Only "isoaglib_config.h" should be included, hal_config.h and compiler_adaptation.h needn't be included directly.
  • HALs for EES, AMS5, A2, PM167, IMI and Mitron167 have been removed.


  • Allowing bitrates up to 115200 bit/s now.
  • Added RS232 channel number -> Adapted conf_template.


  • Adapted message-parsing from DIS/FDIS to IS.


  • Bugfix: Fixed memory-leaks, hangups and slow TP-reception. Overall structural cleanup and enhancements.
  • Bugfix: Fixed counter overrun; fixed path length encoding for delete command; removed DIS support and cleaned up.
  • Bugfix: setFileAttributes response is detected correctly.
  • Change: Now also detect single-volume systems (that don't have a volume listing).


  • Bugfix: Fixed COG_SOG_RAPID_UPDATE message's length. (Wasn't always sent out with a DLC of 8 - depended on the CAN-packet before)
  • TimePosGps_c: Added Message-EventHandler and estimated time for Rapid Updates
  • Corrected priority for NMEA_GPS_POSITION_DATA_PGN


  • Don't NACK if tractor data is requested.
  • ISO-NAMEs preferred to source addresses.
  • Send and store language PGN.
  • API can now set and send engine speed.
  • API method processMsg indicates properly if a message has been processed.
  • Removed one overall VT-language in favor of future compatibility (there may be multiple VTs) separating VT-Client functionality from Tractor-functionality.

2.1.2 to 2.2.0

Repository restructuring:
  • All tools (including can_server) can now be found in the "tools" directory. Added the logalizer (can-log analyzer) tool. All needed libraries need to be put in the corresponding "tools/libs/<libname>" directory.
  • Removed "library/simulated_io"
  • Removed all svn:externals, no more user-authentication-checkout-problems:
    • Complete Tractor Data and Proprietary PGN handling now available to the public.
    • All commercial_BIOS externals removed. If you need to build for an embedded target, copy the BIOS files into the commercial_BIOS folder on your own, request access to the BIOS-repository at OSB's subversion-server or change the BIOS path in your conf_<projectname> file to the path where you have the BIOS already installed.
  • Restructured doc/html: Now there's an API and an ALL documentation
  • Cleanup of root and admin directory


  • Added new Tutorial Network ECU Display with ecu_main (including main-loop) and its three components.
  • Removed obsolete examples.

Diagnostics Services (ISO 11783-Part 12):

  • Added support in (i)IdentItem_c for Basic Diagnostics Services: ECU-Identification, SW-Identification, Certification-Data.


  • Improved output of the different tools such as CAN-Server, logalizer,, etc.
  • Enhanced logalizer with printing out ASCII and proper display of TP/ETP sessions. Also LANGUAGE_PGN decoding added.
  • Enhanced can_messenger with implementation of period and repeat parameter


  • Fixed bug in vt input element selection/pointing event callback-message.
  • vtObjectAlarmMask_c::setSoftKeyMask(NULL) did crash. Now correctly checks NULL-pointer as done in vtObjectDataMask_c.
  • Now adding language-code to the versionlabel if >= 1 languages
  • Added sendChangeActiveMaskCommand to iVtClientservercommunication
  • First simple support for WS slaves added.
  • Fixed signature of iVtObjectStringVariable_c::setValueCopy(char*..)
  • Allow unscaled pool upload via PROPRIETARY_NO_POOL_SCALING define

TC-Client / ProcessData:

  • Removed Float-Processdata and some old DIN-relicts
  • MeasureProgLocal_c::processMsg(): use backuped sender IsoName for processTcStatusMsg(), sendValForGroup() and processDefaultLoggingStart()
  • Comparison between LanguageLabels using operator< was wrong (only occurred in multi-language device descriptions]
  • Allow proprietary DevPropertyHandler
  • Fixed timing on TC-Client alive if the minimum time-dist is >2sec.


  • Added SilentMode, Object-IDs/KeyCodes are being grouped into namespace now, too - Generated DEFINEs changed to static const unsigned int.
  • Added -a / -a=abc parameter: Now using ProjectName from VTP for filename per default, if not overridden using -a/-a=abc
  • Added -x=prefix parameter: Generated language-objects can now get a prefix. iVtObjectX_1 => iVtObjectX_prefix1
  • Added option to provide an xml search path (-d= | -D=) [Attention: Usage() does not tell about the switch to avoid confusion!]
  • Enhanced informational output
  • put "Overriding values" warning into verbose mode.
  • -o=dir doesn't need to have the separator in it anymore.
  • Optimization for ROM-size usage: does now use a _sROM-list and a loop to initialize the iVtObject_c-instances.
  • Enhancement: Added eventPartialPoolUploaded()-handler.
  • "-direct"-files are NO MORE generated. Please switch to only using the "-derived"-files! (Please remove any old "" files to avoid confusion
  • Added support for specifying proprietary colors via vtsettings-file
  • Added linewrapping in generated <project>
  • Don't overwrite object-selection if no change of content
  • Fixed wrong generated code which didn't compile when using the "externalize"-option


  • Removed need for 'device_program_name' tag in <device> element, as it's currently unused


  • Cleaned output.
  • Added build-instructions for can_server with several CAN-devices
  • Enhancement: Introduced run modes "interactive" and "productive". Please refer to can_server for the usage description. (Interactive will be default)
  • Enhancement: Allowing multiple Busses with Sontheim and Socket-CAN-Server
  • Enhancement: Added support for Linux SocketCAN. Currently via CAN-Server. (Later via direct HAL)
  • Fix: WIN32: "send: no error"-message doesn't appear after disconnecting clients all the time in a loop anymore.
  • Fix: PEAK device: Now getting STD-messages on Windows and ID=0-messages on Linux
  • Fix: Std-Messages weren't broadcast to phy. bus if in ISOBUS-internal mode
  • Fix: [Windows: >1 PEAK Cards] Using multiple busses with only one card resulted in random distribution of CAN-messages
  • Fix: avoid message flooding after client reconnect
  • Fix: continue reading CAN device after disconnect of last client
  • Fix: CAN-Devices Multiple BUSses: Fixed check for valid bus nr.
  • Fix: Growing timestamp list in PEAK PCAN card device
  • Cleanup on (sleep-)timings and readFromBus strategy.

  • Removed Dev-C++ Support as Dev-C++ is a discontinued product. Focussing on Visual Studio Project-file generation instead.
  • Introduced "conf_template" as template for own project configurations. Originating from former examples' conf-files, but cleaned up / restructured.
  • Makefiles will no more automatically build a can_server-binary. The can_server-binary is available prebuilt in different flavors in the "bin" folder - thus removed USE_CAN_DEVICE_FOR_SERVER.
  • Project-defines with NAME=VALUE now properly generated into config_xy.h, too. (Gave warnings before)
  • Removed unit-test generation and outputting help if run without parameters
  • Added "conf_template" as basis to use for own projects.
  • Removed creation (and usage in isoaglib_config.h) of "version.h", which actually should be an application issue rather than an ISOAgLib issue.
  • Add new platform P1MC and CCS project handling
  • Improved generation speed.
  • New options --report and --report=REPORT_FILE. Separate reports from standard output in case the user wants this.
  • Change: Removed ISO_TERMINAL_SERVER support in - Use PRJ_MULTIPACKET and USE_WORKING_SET instead.
  • Removed senseless CAN_BUS_USED define in .txt/conf_/config_/
  • If wrong option/configuration is given, bail out instead of trying to adapt the option.
  • Fixed bug reported by Andy Skeel: LIBPATH = -LONELIBRARY -LANOTHERLIBRARY.
  • Fixed problem when using APP_PATH_EXCLUDE
  • Fixed problem in Tasking generation when multiple pathes are used. Now using semicolon in include path rather than comma
  • Fixed problem in gathering files given by APP_SRC_EXCLUDE

General Enhancements:

  • Adding new function to determine how many devices on the bus have a certain deviceclass and function.
  • Added the HALSimulator_c class to allow the application layer to handle HAL functions or print CAN communication.
  • Interface "iSchedulerTask_c" enhanced for setting the timePeriod and earlier/latest interval.
  • FastPacket now available in iMultiSend_c
  • Optimization: IsoMonitor_c: Remove obsolete/unnecessary std::vector.sort()
  • Adapt IsoAgLib for target without 8 bit char type (Add new NO_8BIT_CHAR_TYPE define for target that do not have 8 bit char type)
  • Added subset of Boost C++ libraries. Improved README files. Listed where libraries are used within IsoAgLib.
  • Addition of EES HAL
  • PC-HAL: Allow FLOAT_WORD_ORDER to be officially set with global DEFINEs

General Fixes:

  • TimePosGps_c: Fixed crash when calling localHour() at a very early stage (getTime() == 0) under Windows
  • TimePosGps_c: Added missing Long-modifier for calculations like 60*60*24, did overrun on 16bit systems.
  • TimePosGps_c: Was not properly handling different senders for Trac/GPS
  • CAN-HAL: Standard Identifier CAN-messages weren't handled properly
  • CAN-HAL PC: Fixed out of bounds array access
  • CanIo_c: Change, so that next call continues search in canMsg2FilterBox.
  • MultiSend: Fixing CTS-request while sending burst:
    • MultiSend cleaned up. TP/ETP are now handled more similar.
    • CTS while burst-sending is now handled correctly, too.
    • CTS can retrieve any position in Buffer
    • CTS can retrieve start or in middle of last burst when using MultiSendStreamer
    • Request-check now enhanced. Not only position is checked to be in-range, but also the length is considered now (can we supply all the queried data?)
  • Functionality-Fix: Address-Claiming: Removed the 2500ms wait on AddressClaiming when no other item online to act normal with 1250ms.
  • AddressClaim: Now correctly handling AddressStealing in the 250ms-phase
  • Ident_c::masked def.param: Corrected wrong default parameter
  • Windows RS232-HAL: Fixed first instance 0 to be COM1 instead of COM0
  • Using consequently COMx instead of //./COMx. Both should work of course.
  • PC-EEPROM: Cleaned up DEBUG-statements and Code
  • CAN-Reception Overflow with default value: Default CAN-Receive buffer increased from 16 to 256 messages (Caused problems when just too many messages were on the bus - in that example 56 address-claim messages were received, but the buffer of 16 was just too small.)
  • PC Sensor HAL: If simulated sensor-input-file was missing, it crashed
  • ECU didn't come up at all if secondly addressclaim-request was on the bus
  • Logalizer Output on Win32: Timestamp output is fixed now, using correct lli instead of Li
  • TP/ETP-Sending: Faster Cleanup of SendStream / Forbid ConnAbort on Finished Streams
  • iGenericData: Add default member in c'tors
  • Forbid copy construction of ProprietaryMessageClient_c
  • API-Fix in iMultiReceive_c: Added some missing 'MultiReceive_c::' qualifiers (resulted in self-calling endless-loop)
  • API-Enhancement in MultiReceive_c: Added methods to configure MultiReceive-timings: MultiReceive_c::setCtsDelays & MultiReceive_c::setExperimentalTimings
  • API-Change in iIsoName_c/IsoName_c: Changed behavior of default constructor iIsoName_c()/IsoName_c()
  • IsoMonitor: deleteIsoMember for Local Network Nodes ((i)IdentItem_c) did not take the cached active local item into account, hence it was dangling to some old memory and caused strange behavior
  • Proprietary-Message-Handling: Fixed registering with a NULL IdentItem

...and of course several warning-cleanups as found with newer compilers and lint...

2.1.1 to 2.1.2

  • More stable on wrong input
  • Support for VT-Designer Project files.
  • objectpointer value="" should not be parsed as 0 but NULL.
  • High object-IDs can now be set directly without having ID-collisions with automatically-numbered objects. (All given IDs are scanned in a first pass, so they are skipped in auto-numbering)
  • You should now be able to call vt2iso also from an other directory than the one where there .vtp file resides.
  • Console output is cleaned up. Use -m option for a verbose output now.
  • Fixing crash (mostly under Windows) when <macro> objects were used.
  • was renamed to <projectname>
  • Option -o to generate the files to a different directory than the XML/VTP dir.
  • Option -g added to allow output to be grouped into namespace BLA { [...] }
  • Check all option attributes for exact match or return error
  • remove "_" in following attribute values for better naming scheme: wrap_on_hyphen, valid_characters, invalid_characters, no_fill, not_used, suppress_border, transparent_background, no_border, live_editing
  • Enhanced buffer for bitmaps for special use, now larger than the old buffer of 480x480 pixels. (Even though larger bitmaps don't make much sense in "normal" clients)
  • Now converting directory separators to native platform in given paths.


  • DPT in Bytestream was wrongly generated: Property Value field was 4 bytes ASCII instead of 4 byte integer. (r3842)


  • VT-Client XML-Description: auxinput changed to auxiliaryinput. auxfunction changed to auxiliaryfunction.


  • (msq version): if directory "/root" is not useable for key generation (ftok), a fallback directory is created and used ("/tmp/can_server_key_dir")


  • Added callback-handler for 'VT Select Input Object' (H.8) (r3627)
  • Fix Big Endian issue with setting float values... (r3669)
  • Fix for handling of StoreVersion response in case it was triggered by the application during normal operation.
  • Add client command ESC (CommandID 146)
  • change signature of iIsoTerminalObjectPool_c::eventVtESC() to now also receive objectId.
  • Fix VT-Client Scheduler timing (r3626)


  • Added Support and Tutorial example

Other Fixes:

  • Endless loop in IsoItem_c::addSlave. Thanks to Joel Morton.
  • can_server_sontheim.cpp (r3613)
  • ifdef CONFIG_DO_NOT_START_RELAIS_ON_STARTUP with correct ifndef CONFIG_DO_NOT_START_RELAIS_ON_STARTUP in system_c.cpp (r3777)
  • (wrong value conversion) in TracMove_c: Selected Speed (mm/s) was wrongly set with GpsSpeed (cm/s). (missing x10). (r3773)
  • IsoMonitor_c: Fixed crash that occured eventually when an IsoItem was removed (r3691)
  • Project file generation for Dev-C++ (r3673)
  • several uninitialized variables (gave warnings)
  • Scheduler_c: Fix for >= 3 CAN-Instances (extra CAN-processing was only done for the 1st and 2nd CAN-Bus). (r3733)
  • provide proper initialization for Scheduler_Task_c::mb_alreadyClosed in constructor. Suggested By: Joel Morton (r3801)
  • MeasureProgBase_c: Fix that the correct SA is used in all commands which follow immediately init() (and not only commands after addSubProg() is called) (r3825)
  • Fix in FilterBox_c: bool was used for the return type of fifo_useMsgObjGet instead of int32_t. (r3828)
  • Process_c: Crashed (at least) in Windows when unregisterRemoteProcessData set the searchCacheIterator wrongly in case of an empty list. (r3838)
  • MultiSend-Retry: Wrong Sequence-Nr. was used. It was not reset along with the re-sending of the last burst.
  • Maintain-Power handling does now handle multiple power requests. (r3849)
  • Changed incorrect type of minObjNr in stopSendRetryOnErr() from bool to uint8_t. (r3856)
  • Corrected some ifdef ISO_TERMINAL by ifdef USE_WORKING_SET, because WORKSING_SET support can be set without ISO_TERMINAL enabled (r3712)
  • Changed incorrect type of minObjNr in stopSendRetryOnErr() from bool to uint8_t (r3856)
  • API-change: changed return type of selfConf() to bool (r3856)
  • HAL-CAN-Interface is again 100% compatible with release v2.1.1 now! (can-drivers can deliver 2 for ExtMsg again)
  • Network Management: Startup problems which didn't let nodes come online at all. (r3861)
  • Fixed proc2iso-xsd-Schema.
  • IState_c: Fixed enumeration.
  • PC CAN-HAL: receiving CAN-Pkts: Wrong check on returned error-code. (Had luckily no effect) (r3867)

Other Enhancements:

  • CanServerMessenger enhanced with "usage"-output.
  • WIN32: can_server server&client side: Changed getTime/getStartupTime to let the time count from program-start with 0 (instead of returning some absolute time), just as in the linux-case. (r3699)
  • Enhance LittleEndian input stream parsing in util_funcs. (r3821)
  • Added (i)TracFacilities_c class to add support for Tractor Facilities.
  • WinCE-Support built in.
  • Linux-Makefiles extended for some more uninstall/clean targets.
  • Added to interface class iSchedulerTask_c: registerClient(), unregisterClient(), clearAlreadyClosed(), setAlreadyClosed(), checkAlreadyClosed() (r3705)
  • Improvement of on Tasking project file generation and more
  • External references hooked to fix-revision numbers now, so checking out an older version is now consistent


  • Removed unused DEFINEs in isoaglib_config.h
  • Removed companySpecific directory
  • Moved "comm/Scheduler" to "scheduler"
  • API-change: changed return type of selfConf() to bool (r3856)
  • Avoiding many compiler warnings now. (If you still find some, please let us know!)
  • Removed obsolete "bios_pc.testserver" directory.
  • Removed links to commercial-bios "esx.small" and "bios.tum"

2.0 to 2.1

  • can_server: monitor mode added (to monitor can traffic in console)
  • Process Data: send activate device description pool command to TC after successfull structure/localization label negotiation
  • Network Management regarding SA-changes and SA-conflicts and IState rewritten, also SaClaimHandler
  • interface iSchedulerTask_c for IsoAgLib scheduler added
  • VT object pools: vt2iso now decides automatically which classes are necessary (smaller client size)
  • Process data: GeneralCommand_c renamed to ProcessCmd_c
  • bug fix in ManageMeasureProgLocal_c::timeEvent(): reset mpc_progCache after erase
  • vt-client: now no more overwriting in queue on ChangeActiveMask command
  • ManageMeasureProgLocal_c::insertMeasureprog() rewritten
  • remove DIN specific enum progType_t, use instead new flag mb_active in ProcessElementBase_c
  • Modified the constructor of AddressResolveResults_c to have a correct instantiation on embedded target of a static object
  • introduce new functions Ident_c::setWord() (set a uint16_t part of the identifier at once) and CanPkgExt_c::setIsoDpPf()
  • use MALLOC_TEMPLATE #define, which can be defined individual for compiler in compiler_adaption.h
  • changes when more than one protocol instances are used (singletonVecKey, ...)
  • MultiReceive filter-cleanup (removed manual 8dlc-check, added missing deleteFilter, adapted insertFilter)
  • new naming scheme (m-prefix for member-variables, ...)
  • ProcIdent_c and all derived classes (local and remote): parameter c_ownerISOName removed from init() and constructor
  • changed handling of received process data messages (first local then remote check)
  • usage of fast datatypes in cases where an integer variable only needs a specific minimum size (HANDLE_FAST_DATATYPE_AS_STRICT)
  • optional global mutex in Scheduler_c so that an application can have several parallel threads with access to the IsoAgLib data structures
  • the IsoAgLib core files ( "xgpl_src" "commercial_BIOS" and simulated_IO") have been moved together in a new folder "library"
  • some important folders and files have been renamed so the content should be easier to identify
    • folders below IsoAgLib/comm are now labeled like the related OSI layer
    • IsoAgLib_Examples -> examples with a new folder "src" inside containing the source files
    • Binaries like vt2iso and proc2ito are now being compiled to the new folder "bin".
    • compiler_projects has been moved into "examples" containing the config files of the examples.
    • The folder "build_utils" has been renamed to "build" and moved to library/xgpl_src/build
    • The class "ElementBase_c" has been renamed to "SchedulerTask_c" and moved to folder "Scheduler", like "CanPkExt_c" as well.
    • The classes "CanCustomer_c" and "CanPkg_C" have been moved to folder "/driver/can"
  • optimized scheduler resorting to avoid several HEAP malloc/free calls
  • added new DEFINEs for MultiReceive: refer to new generated config_xxx.h or isoaglib_config.h
  • vt2iso: special parsing of proprietary elements and attributes possible
  • bug fix in Scheduler_c::resortTaskList(): task list resorting corrected
  • added language-auto-detection to vt2iso
  • added support for Auxiliary Assignment and passing the AuxInputStatus message to the application
  • added functionality to Base-Classes to suppress PGNs using a bitmask
  • bug fix: Address-Claim now also sent out after the 250ms-period if requested in this 250ms-period
  • introduce new target hardware: AMS5 of ECU manufacturer Gesas
  • avoid any multiple inheritance in IsoAgLib
  • change HAL modules for PC-RTE so that they read the RTE server name from standard environment variable RTE_HOST
  • class names match now a strict camel case pattern (e.g. ISOMonitor_c renamed to IsoMonitor_c)
  • bug fix: replacement of the first item in VT-Client CommandQueue for replacement corrected
  • bug fix: devpropertyhandler corrected (incoming command-responses on ChangeDesignator)
  • new WorkingSet announce strategy: no more automatic announce on Address-Claim
  • can_server now with socket interface (Windows and Linux) and message queues (Linux only) with common CAN device extensions (PEAK can card, A1, Sontheim, ...)
  • Central CAN FIFO, so that the BIOS/OS doesn't need to provide individual FIFOs for each receive MsgObj
  • bug fix: use instead of HAL::getTime() in VtServerInstance
  • bug fix: VtServerInstance uses getLastProcessedCanPkgTime() now for detecting dropp offs
  • Get-functions can now be enabled in config files when needed (see EnableGetterFunctions)

2.0 (changes on maintained version)

  • rewritten and enhanced TimePosGps_c
  • use isUnspecified() for ISOName instead of 0xff
  • avoid STL container list method call, as at least std::list<T>::size() works very slow
  • use slist only for compiler, where its support is known: GCC and Tasking
  • introduce new target hardware: Dickey John standard platform
  • added OutputList to vt2iso and ISO_Terminal (will be there in VT Revision 3)
  • added SendPriority feature to can_server
  • new ISOName_c constructor with just DEV-CLASS as parameter
  • VtClientServerCommunication_c: fix for dequeueing commands if list is empty
  • add PWM handling on ESX Babyboard (from old IsoAgLib pre-2.0 tree) and some PWM/Digout_c HAL fixes
  • can_server: avoid sending of CAN messages when destination address is one of the local clients
  • vt2iso: enable live editing
  • bug fix in hal_can_interface: send buffer overflow during pool upload
  • inserted send/receive of Vt_Server Phase3 message Lock/Unlock Mask
  • handling of display activation message (iIsoTerminalObjectPool_c::eventDisplayActivation())
  • improved ISOMonitor_c::unifyIsoISOName() when there's a conflict on the ISOBUS
  • fixed endless loop in xgpl_src/IsoAgLib/util/impl/util_funcs.h's convertLittleEndi...
  • fixed FASTPACKET sendIsoFastPacketBroadcast
  • changed ISONameUnspecified from static to ISONameUnspecified() function (problem with static (singleton) classes)
  • buffering of targetfilestreaminput to speed up byte by byte reading (activate with USE_BUFFERED_READ define)
  • bug fix in ISOMonitor_c::sendRequestForClaimedAddress() to ensure correct timing in address claim sequence
  • bug fix in ISOTerminal_c::init() to avoid problems (not seen VTs) when ISOTerminal_c::init() is being called too late
  • fix wrong handling of std::list<T>::erase() in canio_c.cpp
  • fixed TIMEOUT values in vtclientservercommunication_c.cpp
  • fix scheduler handling when a task got into negative area
  • Added feature for MultiReceive to set the time-period to 5000 when nothing to do
  • bug fix in MeasureProgLocal_c::processMsg(): use current value for processMeasurementReset() call
  • better strategy for not interrupting important and short timeEvent() triggered actions
  • added function for hide/show of a container with direct UID usage

1.2.2(unofficial) to 2.0

  • removed DIN-related code, adapted proc2iso and rebuild all tutorials and their device descriptions
  • removed following folders and classes: IsoAgLib/comm/DIN_Terminal IsoAgLib/comm/Part7_ProcessData/igps_c.h IsoAgLib/comm/Part7_ProcessData/impl/gps_c.cpp IsoAgLib/comm/Part7_ProcessData/impl/gps_c.h IsoAgLib/comm/Part5_NetworkManagement/DIN9684
  • removed DIN-related tutorials: 0_1_AddressClaimDin 0_2_AddressClaimFlexible 0_4_LookupDin 1_1_ReadDin 1_3_WriteDin 1_5_WriteFlexibleDin 3_1_LBSTerminalDin
  • removed the no more needed conf-files in projectGeneration/
  • removed IsoAgLib/comm/Part5_NetworkManagement/impl/monitoritem_c.cpp IsoAgLib/comm/Part5_NetworkManagement/impl/monitoritem_c.h and adapted all affected classes
  • removed IsoAgLib/comm/Part5_NetworkManagement/impl/systemmgmt_c.cpp IsoAgLib/comm/Part5_NetworkManagement/impl/systemmgmt_c.h IsoAgLib/comm/Part5_NetworkManagement/isystemmgmt_c.h and replaced all missing function calls with appropriate function calls from the IsoMonitor_c
  • partly renaming of IsoMonitor_c functions
  • removed var2empfSend() and replaced with sendValDevKey() in ProcDataLocalBase_c and ProcDataRemoteBase_c
  • added LibErr_c::good() for test on errLocation AND errType
  • updated proc2iso documentation
  • MultiSend rewritten to use ISOName instead of SA
  • removed classes devKey_c.h and idevKey_c and replaced this classes by isoname_c.h/iisoname_c.h
  • cleanup of LibErr_c
  • enhancement and cleanup of process data
  • big cleanup of IdentItem_c , as no more dual use for DIN9684 and ISO11783
  • fixed INTERNAL/EXTERNAL debug-device use
  • all interface class do now strictly derive private from the internal base class, so that no application can access internal items by accident without directly refering to internal class
  • optimize merging of CAN receive filters to get more selective CAN message receive
  • Fixed Font-Downscaling. Now using more generic, simple (and faster) scaling.
  • Avoid compile errors with stricter checking c++ compilers
  • vt2iso now utilizing color-palette of BMP files. If BMP is palettized, it HAS to have the correct ISO-palette now. NOT supported by PAINTLIB wrapper class RIGHT NOW. --> Please use FREEIMAGE for now.
  • ISO VT Revision 3: getAttribute() , new Button styles , select input focus command can activate input dialog on demand
  • Added HUGE_MEM for objects now, too. (Not only PictureGraphic-RAW-Data anymore now)
  • proc2iso: do not add _"Nr" to DPD designator if only one DeviceProcessDataCombination is defined
  • change problematic source codes (esp. too big inline functions) which were indicated by the stricter warning level of gcc
  • add sending of Broadcast-TP with iMultiSendStreamer_c
  • add parallel receive of Broadcast-TP to FastPacket, so that all flavours of NMEA2000 senders should be matched by TimePosGps_c, the sending of FastPacket can be controlled with #define SEND_NMEA2000_FAST_PACKET
  • add IsoFilterBox_c to define receive filters based on ISONAME instead of SA
  • Now only enqueueing commands if pool is already uploaded
  • get support for PEAK CAN cards at Linux development hosts
  • integrate option to add application specific include paths in conf_xy file

1.2.1 to 1.2.2(unofficial)

  • support for proc2iso XML schema: new mandatory parameter -s=xxx.xsd for personalized path to xsd-file (see proc2iso --help). former only -s with a default path
  • support for processdata designators up to 30 chars to enable a differentiation between the deviceprocessdatacombination (DDI groups)
  • added special class IsoRequestPgn_c to answer REQUEST_PGN_MSG_PGN appropriate if any other class registered for that filter could not answer

1.2.0 to 1.2.1

  • fixes for Win32 RS232 HAL
  • added the hook function eventVtStatusMsg() that gets called immediately after recognizing an incoming VT status message
  • fix compilation problems for cases with more than one protocoll instance
  • project generation can now selectively incorporate tractor information subgroup classes, enhance the tractor information bases classes
  • implemented possibility to change ISONAME of a device during runtime for DeviceDescription upload to TaskController
  • Added explicit MultiPacket enabling in Added getLinearBuffer function to StreamLinear_c
  • include devpropertyhandler_c (DeviceDescription handling) only in projects which use LOCAL Process Data
  • different font used for outputstrings in buttons to enable different scaling factors depending on the size of the button
  • iProcDataLocalSimpleSetpoint_c::init() and iProcDataLocalSimpleMeasure_c::init() bugfix
  • periodic SA request (about one minute period) for early detect of lost nodes on the BUS to get early cleanup of monitor list ( this feature is only active, when the automatic deletion of stale ISO nodes is activated by #define CONFIG_ISO_ITEM_MAX_AGE > 0 )
  • Now supporting differentially scaled fontattributes in buttons
  • Changed Scaling to get more exact. removed 20bit fixpoint by factorM and factorD
  • Softkey child object positioning revised
  • fix useage of CAN last message object which is used to receive CAN messages while the normal message objects are reconfigured
  • give an ISOItem a second chance on a missed SA-Request; trigger periodic SA-Request every minute to get rid of stale entries in the monitor list
  • fix calculation of analog ADC voltage value to the correct formula given by ESX BIOS

1.1.0 to 1.2.0

  • ISOAgLib is meanwhile used for several commercial projects, and more people are using it, so that the overall quality is raised to a fairly well level
  • Vector-Informatik CAN card drivers can now be used with Dev-C++ due to new version of their driver (Please check Vector-Informatik download page for details)
  • Process data communication is now update to the new ISO 11783 format
  • XML based definition of Device Description
  • creation of directly compileable Device Description with tool proc2iso which creates also the class instantiations for all defined local process data, so that the list of construction parameters needn't be managed by hand
  • Upload of Device Description corresponding to current state of Task Controller standardization
  • fully functional support of Task Controller Client
  • Multi-Receive is now supported, so that Input Text fields can be used in Virtual Terminal masks without restriction
  • new Linux CAN HAL driver uses Linux kernel message queues for CAN communication between several local applications with or without real CAN cards --> several applications can easily constitude a CAN BUS without any hardware
  • class GetyPos_c was renamed to DevKey_c to express the meaning for users who don't know DIN 9684
  • new HAl adaptations to further STW ECU types supported by users
  • proper support of NMEA2000 GPS strings
  • several enhancements regarding VT client and network management
  • XML-Schema pre-validation of vt2iso XML files
  • Softkey size can now also be specified (sk_width="..." sk_height="...", just like the datamask-size (dimension="...")
  • Adapted many items (timeouts, font-encoding, Positions now SIGNED integer) to FIRST EDITION of 11783-Part 6 (Virtual Terminal)
  • "vtKeyCodeESC" is now "vtKeyCodeACK"
  • vt2iso: Filename-parameter doesn't need "./" prefixed any more if XML file is in current directory
  • minor fixes in IsoTerminal_c's close(), changeNumericValue's reserved byte changed to 0xFF
  • NACK-recognition implemented (eventEnterSafeState), although it needs some more testing
  • reaction on language (change) PGN now possible via hook-function
  • old class Base_c is subdivided into smaller classes, so that a project can better select the wanted information types. This allows also the better maintenance of anonymous accessible parts (most of the features existing in pre-1.2.0 release) and special extansions, that is only possible by personal access. Please contact Achim Spangler to gain access to the extension parts.

1.0.0 to 1.1.0

  • now using specific LAST CAN MESSAGE OBJECT of CAN controllers to store CAN messages during CAN reconfiguration process for later process ( avoid loss of messages )
    this is important to receive the very early triggered ISO 11783 command Request for Claimed Addresses
  • the script was extended to create also Microsoft Visual Studio VC++ version 6.0 DSP files; This needs the installation of STLport if VC6 is used, see Vc6StlPort for more information.
  • provided automatic CAN CARD HW selection for Vector-Informatik CAN CARDs so that:
    • either all CAN channels of real CAN cards can be counted
    • or just the CAN channels of the special virtual CAN device can be counted ( if no real CAN card is connected )
  • add driver for Sontheim CAN cards ( tested only with CANLPT, but in theory designed according general API documentation, as all card differences are handled by the driver, extract the files from the Sontheim API ZIP in the directory C:\Development\Sontheim if you want to use the tutorial project files without changes )
  • adapted the check for new messages in Win32 CAN cards to RTE style
  • added basic language handling and AUX functions handling into ISO Terminal
  • added ISO 11783 Virtual Terminal connection management, so that the pool is automatically reloaded on reconnection ( changed terminal properties are regarded )
  • done several cleanups and additions to ISO 11783 Virtual Terminal
  • enhance documentation for feature setup files for individual projects and reorganize the existing files, to make them easier to understand
  • enable HTTPS access to the subversion repository, as some proxies might hinder WebDAV access, which is needed by Subversion/Apache2
    so please try HTTPS access in case you have problems with accessing the repository, before you contact Achim Spangler
  • some cleanup of workarounds which are needed due to Tasking compiler faults - the STL of versions up to 7.56 have wrong includes ( see file "include.cpp/algorithm" which includes "include.cpp/stl_algobase.h" which includes "string.h" into global namespace; a C++ system header shall include C-Library functions into the "std::" namespace -> it should include <cstring> instead; other compilers do this correct )
  • introduce config setting for project config to select HEAP allocation strategy:
    • either allocate chunks of items ( for Tasking: 40 items per chunk ) to avoid HEAP defragmentation and to avoid memory allocation runtime as long as no new chunk is needed, which doesn't happen for most use cases, as the chunk size is pretty big in relation to the awaited numbers of mostly smaller than 10 items
    • or directly call malloc on each item creation, which causes greater overhead per item ( linkage of all malloced blocks in HEAP, whereas the chunks have a pretty efficient organization structure ) and which can cause longer malloc execution time on each item creation ( can be important, if large amount of monitor list entries, several measurement programs, setpoints occure, or if CAN filter setting must be reconfigured due to configuration change )
  • avoid allocation of HEAP for elements of temporal IsoAgLib::ManageMeasureProgLocal_c instances ( create default IsoAgLib::MeasureProgLocal_c instances on first real access )
  • optimize HEAP memory item size debug messages, so that real HEAP usage is reflected ( including overhead due to memory block linking in HEAP )
    Thanks to the help of Tasking support ( information on simple integration of _malloc.c into EDE projects )
  • change shell script to avoid calls to perl functions, as these are only part of standard LINUX systems, and are not part of MSYS system ; additionally replace UNIX style directory seperation from slash to backslash for Win32 compilers and use Windows stly newline
  • change device types and CAN channels of tutorial examples, so that e.g. 1_0_ReadIso.cpp and 1_2_WriteIso.cpp can interact ( a) different device types for both ECUs and b) different CAN channels so that two channels of one PC CAN card can be connected )
  • unify number intervals of CAN HAL for BUS and MsgObj numbers to start with 0 for each type of HAL ( avoid HAL dependent offset constants ).
  • change default path for Win32 CAN card manufacturer driver library files ( API DLLs and Headers ) to C:\Development so that all users can install their driver files to the corresponding location, if they want to avoid changing all default VC++ project files ( if pathes like C:\Development\CANLIB are still not acceptable, can be used to create VC++ DSP files based on adapted conf_x_y project feature setup files )
  • fix bug in handling of counter input, which prevented ESX BIOS counting functions from correct work ( these functions work only if now application IRQ handler is specified )
  • fix bug in handling of PWM output diagnose ( the state detection didn't work right ) and move this diagnose function in new ESX HAL file actor_target_extensions.cpp
  • add note on selection of right Vector-Informatik CAN card driver ( the "XL Driver Library" is not coupled to the "XL" CAN cards; you can use a XL CAN card with the CANLIB driver API also - this is the case for all users the maintainers know to date --> vector_canlib is the right selection in the conf_foo feature setup files )

1.0.0rc5 to 1.0.0

  • implemented all virtual terminal object types, which are defined in ISO 11783 ( thanks to Brad Cox )
  • implemented simple access function for easy change control of Vt-Object attributes like colour

1.0.0rc4 to 1.0.0rc5

  • added trigger request for claimed address as soon as local Ident is initialized as ISO 11783 ( avoid <DeviceType, DeviceTypeInst> clash in IsoAgLib::IsoMonitor_c )
  • implemented GPS decoding for ISO 11783 based on open accessible sources ( thanks to google ) ( please test and send changes, in case a reference system reveals wrong decoding; decoding of Longituge and Latitude are most probably correct, others?? )
    • CAN ID 0x00FFF3LU with GPS_STATE_PGN -> probably the GPS mode is in BYTE1???
    • CAN ID 0x00FEF3LU with GPS_LATITUDE_LONGITUDE_PGN -> a google'd example shows positioning and unit of latitude and longitude
    • CAN ID 0x00FEE8LU with GPS_SPEED_HEADING_ALTITUDE_PGN -> probably last 4 Bytes contain altitude
  • extended definition possibilities for application sources in project building script
  • fixed bug in vt2iso.cpp which prevented it creating bitmap arrays for the 480 resolution
  • fixed bug in FreeImage library handling, which places Y scanlines upsidedown in relation to "usual" graphic algorithms -> thus the bitmaps were flipped vertically

1.0.0rc3 to 1.0.0rc4

  • reordered main documentation blocks
  • changed device type of virtual terminal example to tillage so that conflicts with the tractor instance of CANoe are avoided

1.0.0rc2 to 1.0.0rc3

  • added support for Vector Informatik CAN driver libraries CANLIB and XL Driver Library ( integrate it in the project generation script, so that a Dev-C++ project can be simply created )
  • made management of Master Working Set state of a local IsoAgLib::IdentItem_c ( representing of local ISO 11783 node in the library ) more robust against SA and Device Type conflicts
  • enhanced some documentation
  • fixed some small problems in interaction with CANoe virtual terminal ( thanks to Brad Cox )

1.0.0rc1 to 1.0.0rc2

  • added several features to the project generation script to create project files for the Open Source Win32 IDE "Dev-C++" and for the Tasking EDE
  • enhanced documentation ( esp. Getting Started Guide, extended HTML links in examples to demonstrated features )
  • renamed all usages of "Announce" to the more standard conformant "Address Claim" and change "DPlus" to "CanEn" to make ISOAgLib terms easier to understand
  • enhanced overall integration into Win32 ( thanks to the help of Brad Cox )
  • integrated the virtual terminal mask handling tool vt2iso to Win32 build with Dev-C++ ( added alternative image manipulation library usage for Free Image )

0.2.1 to 1.0.0rc1

  • reorganization of source files
  • ISO 11783 at larger extend:
    • working set messages
    • virtual terminal
    • process data state of Spring 2003
    • some bugs of first ISO approach fixed
  • extended documentation with several examples and diagrams
  • global access to central service classes to avoid complicated access through several steps
  • reduced usage of heap memory
  • reorganized error handling
  • better integration in time schedule of application, as main function for periodic actions of ISOAgLib allows now to define a final time of return, where ISOAgLib returns at latest to the application
  • smarter structure of namespaces
  • several variants of process data, to restrict resource usage to needed level by selection of process data type, which provides exactly the needed features
  • simple integration of process data and local identity variables within the program scope -> better control of memory and activation

0.2.0 to 0.2.1

  • corrected some small errors of synchronisation between working 0.1.0 tree and the new 0.2.0
  • fixed bug in process data list management

0.1.0 to 0.2.0

  • optional basic set of ISO 11783 features
  • possibility of baud rate auto sensing on power up and on BUS OFF errors (with configurable wait time).
  • partitioning of sources in different packages. A base package contains system management, base tractor information and CAN driver. All optional modules like process data or EEPROM driver can now be downloaded as separate source archives.
  • ISOAgLib specific CAN driver module to ease hardware adaptation
  • collection of all files which must be edited for hardware adaptation to one directory and reduction of the amount of affected files

Copyright 2009 - 2019 OSB AG
Generated on Fri Apr 26 12:05:18 2019 by doxygen 1.5.5 For License Information please refer to Impressum