ISOBUS Shortcut Button (ISB) API

This is an interface for communicating as or from an ISOBUS shortcut button (ISB). This functionality is defined in AEF Guideline 004 - ISB and at https://www.isobus.net (ISO 11783-7).

You can choose to either receive this message, send it, or both. An ISB is essentially a command to all implements to enter a safe state. See the descriptions located at https://www.isobus.net/isobus/pGNAndSPN/?type=PGN by searching “All implements stop operations switch state”, ISO 11783-7, or https://www.aef-online.org/fileadmin/user_upload/Content/pdfs/AEF_One_Pager.pdf for more details.

Warning

If you consume this message, you MUST implement an associated alarm in your VT object pool, along with an icon or other indication on your home screen that your working set master supports ISB, as required for AEF conformance.

class ShortcutButtonInterface

An interface for communicating as or interpreting the messages of ISOBUS Shortcut Buttons.

This interface parses the “All implements stop operations switch state” message that is sent by ISOBUS shortcut buttons, and also allows you to optionally transmit the same message as an ISOBUS shortcut button.

This message may be sent by any control function connected to the implement bus on forestry or agriculture implements providing to connected systems the current state of the all implement stop operations switch. At least one of these switches shall be in each operator location of the connected system.

All implements shall start a process to stop all operations when this broadcast message is received from any CF with a value of “Stop implement operations” (SPN 5140). Before an implement turns off all implement operations, it shall assume a failsafe condition. If an implement is operating in an automation mode, it may enter a failsafe condition before requesting the tractor ECU to exit the automation mode, e.g. PTO, Auxiliary valve, and/or tractor movement.

The working set master for the implement shall then inform the operator that the implement has stopped all operations due to the activation of the Stop All Implement Operations switch. Implement working set masters shall include, on their home screen, an indication, e.g. icon or a function name, if it supports Stop All Implement Operations. The Working Set shall monitor the number of transitions for each ISB server upon receiving first the message from a given ISB server. A Working Set shall consider an increase in the transitions without detecting a corresponding transition of the Stop all implement operations state as an error and react accordingly.

Note

This interface must be cyclically updated from your application since it’s an application layer message. Be sure to call “update” from time to time. Suggested rate is at least every 500ms, but ideally every 100ms or faster.

Public Types

enum class StopAllImplementOperationsState : std::uint8_t

Enumerates the states that can be sent in the main ISB message (pgn 64770, 0xFD02)

Values:

enumerator StopImplementOperations

Stop implement operations.

enumerator PermitAllImplementsToOperationOn

Permit all implements to operation ON.

enumerator Error

Error indication.

enumerator NotAvailable

Not available.

Public Functions

ShortcutButtonInterface(std::shared_ptr<InternalControlFunction> internalControlFunction, bool serverEnabled = false)

Constructor for a ShortcutButtonInterface.

Parameters:
  • internalControlFunction[in] The InternalControlFunction that the interface will use to send messages (not nullptr)

  • serverEnabled[in] Enables the interface’s transmission of the “Stop all implement operations” message.

virtual ~ShortcutButtonInterface()

Destructor for a ShortcutButtonInterface.

void initialize()

Used to initialize the interface. Registers for PGNs with the network manager.

bool get_is_initialized() const

Returns if the interface has been initialized.

Returns:

true if the interface has been initialized

EventDispatcher<StopAllImplementOperationsState> &get_stop_all_implement_operations_state_event_dispatcher()

Gets the event dispatcher for when the assigned bus’ ISB state changes. The assigned bus is determined by which internal control function you pass into the constructor.

Returns:

The event dispatcher which can be used to register callbacks/listeners to

void set_stop_all_implement_operations_state(StopAllImplementOperationsState newState)

Sets the state that the interface will broadcast on the bus.

Note

This is only used when the interface was created as a server.

Parameters:

newState[in] The state to broadcast on the bus if the interface is a server

StopAllImplementOperationsState get_state() const

Returns the current ISB state for the bus, which is a combination of the internal commanded state and the states reported by all other CFs.

Returns:

The current ISB state for the bus associated with the interface’s internal control function

void update()

This must be called cyclically to update the interface. This processes transmits and timeouts.