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.
-
enumerator StopImplementOperations
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.
-
enum class StopAllImplementOperationsState : std::uint8_t