Main Page | Directories | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages | Examples

Management of Periodic PGN Base Information

The ISOAgLib stores the information of several base information, so that they can be easily evaluated from the application independent from the time relation between CAN-receive time and access time. Additionally the Base_c class can be configured to send these data types. In this case the application can update the data for send independend from the individual send time on BUS. Thus the afford for implementation of the correct send intervals is completely taken away from application to the ISOAgLib.

Overview on the handled PGN data

DIN 9684 and ISO 11783 Information

The ISOAgLib provides the following information both for DIN 9684 and ISO 11783:

Exclusive ISO 11783 Information

As the ISO 11783 specifies a lot of information types which can be periodically sent, the ISOAgLib provides just a part of this list. But this can easily extended on request:

Some exemplary data requests are presented below. All information can be read independend from the send time on the BUS. Thus the application can access the values when it needs the information, and is not forced to read and interprete when received.

 int16_t i16_realSpeed = IsoAgLib::getIBaseInstance().speedReal();
 int16_t i16_distTheor = IsoAgLib::getIBaseInstance().distTheor();
 int16_t i16_frontPto = IsoAgLib::getIBaseInstance().ptoFront();
 uint8_t ui8_rearHitch = IsoAgLib::getIBaseInstance().hitchRear();
 // check if since system start at least one calendat msg was received
 if ( IsoAgLib::getIBaseInstance().isCalendarReceived() ) {
   uint8_t ui8_hour = IsoAgLib::getIBaseInstance().hour();
 int32_t i32_frontHitchDraft = IsoAgLib::getIBaseInstance().hitchFrontDraft();
 if ( IsoAgLib::getIBaseInstance().ptoFrontEngaged() == IsoActive ) {
    iIsoActiveFlag_t t_active100Mode = IsoAgLib::getIBaseInstance().ptoFront1000();

Request of Power Maintenance

The ISOAgLib provides the possibility to requst the maintenance of tractor power with a single function call.

 if ( IsoAgLib::getIBaseInstance().keySwitch() == IsoInactive ) {
   IsoAgLib::getIBaseInstance().forceMaintainPower( true, false, IsoInactive, IsoInactive, IsoActive );
 uint8_t ui8_powerMaintenanceTimeMinute = IsoAgLib::getIBaseInstance().maxPowerTime();
 bool b_maintainEcuPower = IsoAgLib::getIBaseInstance().maintainEcuPower();
 IsoAgLib::getIBaseInstance().forceMaintainPower( false, false, IsoInactive, IsoInactive, IsoInactive );

Configure active send or read only mode

The application can configure the send mode in the following groups:

The base information group 2 includes in case of an ISO 11783 system all additional information like draft force. The default state for all groups is read only, so that a system that likes to send some base data types, has to activate the corresponding send group.

 const GetyPos_c cc_dummyCalendarSender( 1, 0 );
 if ( IsoAgLib::getIBaseInstance().senderGtp( BaseDataCalendar ) == cc_dummyCalendarSender ) {
   // start sending as this ECU has better calendar informaiton source
   // but stay for Grp1 and Grp2 in receive-only mode
   IsoAgLib::getIBaseInstance().config( pc_myGtp, false, false, true );

Setting of values for active sender

The functions for setting the base data values for send are defined in relation to the corresponding reading functions. If a read function is named speedReal(), the function to set the current driving speed is named setSpeedReal( int16_t ).

Some examples below:

 IsoAgLib::getIBaseInstance().setSpeedReal( i16_realSensorSpeed );
 IsoAgLib::getIBaseInstance().setDistReal( i32_realDistanceMm );
 IsoAgLib::getIBaseInstance().setPtoRear( i16_rearPtoRpm );

Generated on Wed Oct 13 15:16:11 2004 for IsoAgLib by  doxygen 1.3.8-20040913