AgIsoStack++
A control-function-focused implementation of the major ISOBUS and J1939 protocols
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
isobus::ControlFunctionFunctionalities Class Reference

Manages the control function functionalities message. More...

#include <isobus_functionalities.hpp>

Classes

class  FunctionalityData
 Stores the raw byte data associated with a functionality based on what the user has enabled and what options the user has set for that functionality. More...
 

Public Types

enum class  Functionalities : std::uint8_t {
  MinimumControlFunction = 0 , UniversalTerminalServer = 1 , UniversalTerminalWorkingSet = 2 , AuxOInputs = 3 ,
  AuxOFunctions = 4 , AuxNInputs = 5 , AuxNFunctions = 6 , TaskControllerBasicServer = 7 ,
  TaskControllerBasicClient = 8 , TaskControllerGeoServer = 9 , TaskControllerGeoClient = 10 , TaskControllerSectionControlServer = 11 ,
  TaskControllerSectionControlClient = 12 , BasicTractorECUServer = 13 , BasicTractorECUImplementClient = 14 , TractorImplementManagementServer = 15 ,
  TractorImplementManagementClient = 16 , FileServer = 17 , FileServerClient = 18 , ReservedRangeBegin = 19 ,
  MaxFunctionalityReserved = 255
}
 Enumerates the different functionalities that an ISOBUS ECU can report in the control function functionalities message. More...
 
enum class  MinimumControlFunctionOptions : std::uint8_t {
  NoOptions = 0x00 , Type1ECUInternalWeakTermination = 0x01 , Type2ECUInternalEndPointTermination = 0x02 , SupportOfHeartbeatProducer = 0x04 ,
  SupportOfHeartbeatConsumer = 0x08 , Reserved = 0xF0
}
 This parameter reports which minimum control function functionality options are supported. More...
 
enum class  AuxOOptions : std::uint8_t {
  NoOptions = 0x00 , SupportsType0Function = 0x01 , SupportsType1Function = 0x02 , SupportsType2Function = 0x04 ,
  Reserved = 0xF8
}
 This parameter reports which auxiliary control type 1 functionality type functions are supported by an implement working set auxiliary function or an auxiliary function input unit. More...
 
enum class  AuxNOptions : std::uint16_t {
  NoOptions = 0x00 , SupportsType0Function = 0x01 , SupportsType1Function = 0x02 , SupportsType2Function = 0x04 ,
  SupportsType3Function = 0x08 , SupportsType4Function = 0x10 , SupportsType5Function = 0x20 , SupportsType6Function = 0x40 ,
  SupportsType7Function = 0x80 , SupportsType8Function = 0x100 , SupportsType9Function = 0x200 , SupportsType10Function = 0x400 ,
  SupportsType11Function = 0x800 , SupportsType12Function = 0x1000 , SupportsType13Function = 0x2000 , SupportsType14Function = 0x4000 ,
  Reserved = 0x8000
}
 This parameter reports which auxiliary control type 2 functionality type functions are supported by an implement working set auxiliary function or an auxiliary function input unit. More...
 
enum class  TaskControllerGeoServerOptions : std::uint8_t { NoOptions = 0x00 , PolygonBasedPrescriptionMapsAreSupported = 0x01 , Reserved = 0xFE }
 This option byte reports which task controller geo functionality options are supported by an implement working set master or a task controller. More...
 
enum class  BasicTractorECUOptions : std::uint8_t {
  TECUNotMeetingCompleteClass1Requirements = 0x00 , Class1NoOptions = 0x01 , Class2NoOptions = 0x02 , ClassRequiredLighting = 0x04 ,
  NavigationOption = 0x08 , FrontHitchOption = 0x10 , GuidanceOption = 0x20 , Reserved = 0xC0
}
 This parameter reports which tractor ECU class and functionality options are supported by an implement working set master or a tractor ECU. More...
 
enum class  TractorImplementManagementOptions {
  NoOptions = 0 , FrontPTODisengagementIsSupported , FrontPTOEngagementCCWIsSupported , FrontPTOengagementCWIsSupported ,
  FrontPTOspeedCCWIsSupported , FrontPTOspeedCWIsSupported , RearPTODisengagementIsSupported , RearPTOEngagementCCWIsSupported ,
  RearPTOEngagementCWIsSupported , RearPTOSpeedCCWIsSupported , RearPTOSpeedCWIsSupported , FrontHitchMotionIsSupported ,
  FrontHitchPositionIsSupported , RearHitchMotionIsSupported , RearHitchPositionIsSupported , VehicleSpeedInForwardDirectionIsSupported ,
  VehicleSpeedInReverseDirectionIsSupported , VehicleSpeedStartMotionIsSupported , VehicleSpeedStopMotionIsSupported , VehicleSpeedForwardSetByServerIsSupported ,
  VehicleSpeedReverseSetByServerIsSupported , VehicleSpeedChangeDirectionIsSupported , GuidanceCurvatureIsSupported
}
 This parameter reports which TIM options are supported by a TIM server or an implement working set master. More...
 

Public Member Functions

 ControlFunctionFunctionalities (std::shared_ptr< InternalControlFunction > sourceControlFunction)
 Constructor for a ControlFunctionFunctionalities object.
 
 ~ControlFunctionFunctionalities ()
 Destructor for a ControlFunctionFunctionalities object.
 
void set_functionality_is_supported (Functionalities functionality, std::uint8_t functionalityGeneration, bool isSupported)
 Adds or removes a supported functionality.
 
bool get_functionality_is_supported (Functionalities functionality)
 Returns if a functionality was previously configured with set_functionality_is_supported.
 
std::uint8_t get_functionality_generation (Functionalities functionality)
 Returns the generation that was set for the specified functionality when set_functionality_is_supported was called for that functionality.
 
void set_minimum_control_function_option_state (MinimumControlFunctionOptions option, bool optionState)
 Sets a minimum control function functionality option to a new state.
 
bool get_minimum_control_function_option_state (MinimumControlFunctionOptions option)
 Returns the current state of the specified minimum control function functionality option.
 
void set_aux_O_inputs_option_state (AuxOOptions option, bool optionState)
 Sets an AUX-O inputs functionality option to a new state.
 
bool get_aux_O_inputs_option_state (AuxOOptions option)
 Gets the state of an AUX-O inputs functionality option.
 
void set_aux_O_functions_option_state (AuxOOptions option, bool optionState)
 Sets an AUX-O functions functionality option to a new state.
 
bool get_aux_O_functions_option_state (AuxOOptions option)
 Gets the state of an AUX-O functions functionality option.
 
void set_aux_N_inputs_option_state (AuxNOptions option, bool optionState)
 Sets an AUX-N inputs functionality option to a new state.
 
bool get_aux_N_inputs_option_state (AuxNOptions option)
 Gets the state of an AUX-N inputs functionality option.
 
void set_aux_N_functions_option_state (AuxNOptions option, bool optionState)
 Sets an AUX-N functions functionality option to a new state.
 
bool get_aux_N_functions_option_state (AuxNOptions option)
 Gets the state of an AUX-N functions functionality option.
 
void set_task_controller_geo_server_option_state (TaskControllerGeoServerOptions option, bool optionState)
 Sets a task controller geo server functionality option to a new state.
 
bool get_task_controller_geo_server_option_state (TaskControllerGeoServerOptions option)
 Gets the state of a TC GEO server functionality option.
 
void set_task_controller_geo_client_option (std::uint8_t numberOfControlChannels)
 Sets a task controller geo client's only functionality option, which is the number of control channels.
 
std::uint8_t get_task_controller_geo_client_option ()
 Gets the state of the only TC GEO client functionality option, which is the number of control channels.
 
void set_task_controller_section_control_server_option_state (std::uint8_t numberOfSupportedBooms, std::uint8_t numberOfSupportedSections)
 Sets a task controller section control server's options.
 
std::uint8_t get_task_controller_section_control_server_number_supported_booms ()
 Gets the number of supported booms for the TC section control server functionality.
 
std::uint8_t get_task_controller_section_control_server_number_supported_sections ()
 Gets the number of supported sections for the TC section control server functionality.
 
void set_task_controller_section_control_client_option_state (std::uint8_t numberOfSupportedBooms, std::uint8_t numberOfSupportedSections)
 Sets a task controller section control client's options.
 
std::uint8_t get_task_controller_section_control_client_number_supported_booms ()
 Gets the number of supported booms for the TC section control client functionality.
 
std::uint8_t get_task_controller_section_control_client_number_supported_sections ()
 Gets the number of supported sections for the TC section control client functionality.
 
void set_basic_tractor_ECU_server_option_state (BasicTractorECUOptions option, bool optionState)
 Sets a tractor ECU server functionality option to a new state.
 
bool get_basic_tractor_ECU_server_option_state (BasicTractorECUOptions option)
 Gets the state of a basic tractor ECU server functionality option.
 
void set_basic_tractor_ECU_implement_client_option_state (BasicTractorECUOptions option, bool optionState)
 Sets a tractor ECU client functionality option to a new state.
 
bool get_basic_tractor_ECU_implement_client_option_state (BasicTractorECUOptions option)
 Gets the state of a basic tractor ECU implement client functionality option.
 
void set_tractor_implement_management_server_option_state (TractorImplementManagementOptions option, bool optionState)
 Sets a tractor implement management (TIM) server functionality option to a new state.
 
bool get_tractor_implement_management_server_option_state (TractorImplementManagementOptions option)
 Gets the state of a basic tractor implement management client functionality option.
 
void set_tractor_implement_management_server_aux_valve_option (std::uint8_t auxValveIndex, bool stateSupported, bool flowSupported)
 Sets a tractor implement management (TIM) server aux valve's functionality options to a new state.
 
bool get_tractor_implement_management_server_aux_valve_state_supported (std::uint8_t auxValveIndex)
 Returns if a particular aux valve's state control is supported in the TIM server functionality.
 
bool get_tractor_implement_management_server_aux_valve_flow_supported (std::uint8_t auxValveIndex)
 Returns if a particular aux valve's flow control is supported in the TIM server functionality.
 
void set_tractor_implement_management_client_option_state (TractorImplementManagementOptions option, bool optionState)
 Sets a tractor implement management (TIM) client functionality option to a new state.
 
bool get_tractor_implement_management_client_option_state (TractorImplementManagementOptions option)
 Gets the state of a TIM client functionality option.
 
void set_tractor_implement_management_client_aux_valve_option (std::uint8_t auxValveIndex, bool stateSupported, bool flowSupported)
 Sets a tractor implement management (TIM) client aux valve's functionality options to a new state.
 
bool get_tractor_implement_management_client_aux_valve_state_supported (std::uint8_t auxValveIndex)
 Returns if a particular aux valve's state control is supported in the TIM client functionality.
 
bool get_tractor_implement_management_client_aux_valve_flow_supported (std::uint8_t auxValveIndex)
 Returns if a particular aux valve's flow control is supported in the TIM client functionality.
 
void update ()
 The diagnostic protocol will call this update function, make sure to call DiagnosticProtocol::update() in your update loop.
 

Protected Member Functions

void get_message_content (std::vector< std::uint8_t > &messageData)
 Populates a vector with the message data needed to send PGN 0xFC8E.
 

Private Types

enum class  TransmitFlags : std::uint32_t { ControlFunctionFunctionalitiesMessage = 0 , NumberOfFlags }
 Enumerates a set of flags representing messages to be transmitted by this interfaces. More...
 

Private Member Functions

std::list< FunctionalityData >::iterator get_functionality (Functionalities functionalityToRetrieve)
 Checks for the existence of a functionality in the list of previously configured functionalities and returns an iterator to that functionality in the list.
 
bool get_functionality_byte_option (Functionalities functionality, std::uint8_t byteIndex, std::uint8_t option)
 A wrapper to to get an option from the first byte of a functionalities' data.
 
std::uint8_t get_tim_option_byte_index (TractorImplementManagementOptions option) const
 Returns the byte index of the specified TIM option in the CF Functionalities message data associated with wither TIM server or TIM client functionalities.
 
std::uint8_t get_tim_option_bit_index (TractorImplementManagementOptions option) const
 Returns the bit offset of a specified TIM functionality option into the TIM client and server functionality message data.
 

Static Private Member Functions

static bool pgn_request_handler (std::uint32_t parameterGroupNumber, std::shared_ptr< ControlFunction > requestingControlFunction, bool &acknowledge, AcknowledgementType &acknowledgeType, void *parentPointer)
 Handles PGN requests for the control function functionalities message.
 
static void process_flags (std::uint32_t flag, void *parentPointer)
 Processes set transmit flags to send messages.
 

Private Attributes

std::shared_ptr< InternalControlFunctionmyControlFunction
 The control function to send messages as.
 
std::list< FunctionalityDatasupportedFunctionalities
 A list of all configured functionalities and their data.
 
ProcessingFlags txFlags
 Handles retries for sending the CF functionalities message.
 
Mutex functionalitiesMutex
 Since messages come in on a different thread than the main app (probably), this mutex protects the functionality data.
 

Static Private Attributes

static constexpr std::uint8_t NUMBER_TIM_AUX_VALVES_PER_BYTE = 4
 The number of aux valves per byte of TIM functionality message data.
 
static constexpr std::uint8_t NUMBER_TIM_AUX_VALVES = 32
 The max number of TIM aux valves.
 

Detailed Description

Manages the control function functionalities message.

Definition at line 29 of file isobus_functionalities.hpp.

Member Enumeration Documentation

◆ AuxNOptions

enum class isobus::ControlFunctionFunctionalities::AuxNOptions : std::uint16_t
strong

This parameter reports which auxiliary control type 2 functionality type functions are supported by an implement working set auxiliary function or an auxiliary function input unit.

Definition at line 86 of file isobus_functionalities.hpp.

◆ AuxOOptions

enum class isobus::ControlFunctionFunctionalities::AuxOOptions : std::uint8_t
strong

This parameter reports which auxiliary control type 1 functionality type functions are supported by an implement working set auxiliary function or an auxiliary function input unit.

Definition at line 74 of file isobus_functionalities.hpp.

◆ BasicTractorECUOptions

This parameter reports which tractor ECU class and functionality options are supported by an implement working set master or a tractor ECU.

Definition at line 120 of file isobus_functionalities.hpp.

◆ Functionalities

Enumerates the different functionalities that an ISOBUS ECU can report in the control function functionalities message.

Definition at line 34 of file isobus_functionalities.hpp.

◆ MinimumControlFunctionOptions

This parameter reports which minimum control function functionality options are supported.

Definition at line 61 of file isobus_functionalities.hpp.

◆ TaskControllerGeoServerOptions

This option byte reports which task controller geo functionality options are supported by an implement working set master or a task controller.

Definition at line 110 of file isobus_functionalities.hpp.

◆ TractorImplementManagementOptions

This parameter reports which TIM options are supported by a TIM server or an implement working set master.

Definition at line 134 of file isobus_functionalities.hpp.

◆ TransmitFlags

enum class isobus::ControlFunctionFunctionalities::TransmitFlags : std::uint32_t
strongprivate

Enumerates a set of flags representing messages to be transmitted by this interfaces.

Enumerator
ControlFunctionFunctionalitiesMessage 

A flag to send the CF Functionalities message.

NumberOfFlags 

The number of flags enumerated in this enum.

Definition at line 416 of file isobus_functionalities.hpp.

Constructor & Destructor Documentation

◆ ControlFunctionFunctionalities()

isobus::ControlFunctionFunctionalities::ControlFunctionFunctionalities ( std::shared_ptr< InternalControlFunction > sourceControlFunction)
explicit

Constructor for a ControlFunctionFunctionalities object.

Parameters
[in]sourceControlFunctionThe control function to use when sending messages

Definition at line 19 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ ~ControlFunctionFunctionalities()

isobus::ControlFunctionFunctionalities::~ControlFunctionFunctionalities ( )

Destructor for a ControlFunctionFunctionalities object.

Definition at line 35 of file isobus_functionalities.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ get_aux_N_functions_option_state()

bool isobus::ControlFunctionFunctionalities::get_aux_N_functions_option_state ( AuxNOptions option)

Gets the state of an AUX-N functions functionality option.

Parameters
[in]optionThe option to get
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 182 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_aux_N_inputs_option_state()

bool isobus::ControlFunctionFunctionalities::get_aux_N_inputs_option_state ( AuxNOptions option)

Gets the state of an AUX-N inputs functionality option.

Parameters
[in]optionThe option to get
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 162 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_aux_O_functions_option_state()

bool isobus::ControlFunctionFunctionalities::get_aux_O_functions_option_state ( AuxOOptions option)

Gets the state of an AUX-O functions functionality option.

Parameters
[in]optionThe option to get
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 142 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_aux_O_inputs_option_state()

bool isobus::ControlFunctionFunctionalities::get_aux_O_inputs_option_state ( AuxOOptions option)

Gets the state of an AUX-O inputs functionality option.

Parameters
[in]optionThe option to get
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 124 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_basic_tractor_ECU_implement_client_option_state()

bool isobus::ControlFunctionFunctionalities::get_basic_tractor_ECU_implement_client_option_state ( BasicTractorECUOptions option)

Gets the state of a basic tractor ECU implement client functionality option.

Parameters
[in]optionThe option to get
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 361 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_basic_tractor_ECU_server_option_state()

bool isobus::ControlFunctionFunctionalities::get_basic_tractor_ECU_server_option_state ( BasicTractorECUOptions option)

Gets the state of a basic tractor ECU server functionality option.

Parameters
[in]optionThe option to get
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 326 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_functionality()

std::list< ControlFunctionFunctionalities::FunctionalityData >::iterator isobus::ControlFunctionFunctionalities::get_functionality ( Functionalities functionalityToRetrieve)
private

Checks for the existence of a functionality in the list of previously configured functionalities and returns an iterator to that functionality in the list.

Parameters
[in]functionalityToRetrieveThe functionality to return
Returns
Iterator to the desired functionality, or supportedFunctionalities.end() if not found

Definition at line 649 of file isobus_functionalities.cpp.

Here is the caller graph for this function:

◆ get_functionality_byte_option()

bool isobus::ControlFunctionFunctionalities::get_functionality_byte_option ( Functionalities functionality,
std::uint8_t byteIndex,
std::uint8_t option )
private

A wrapper to to get an option from the first byte of a functionalities' data.

Parameters
[in]functionalityThe functionality associated to the option being retrieved
[in]byteIndexThe index of the option byte to query within
[in]optionThe option bit to get the state for
Returns
The state of the bit that was requested

Definition at line 654 of file isobus_functionalities.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_functionality_generation()

std::uint8_t isobus::ControlFunctionFunctionalities::get_functionality_generation ( Functionalities functionality)

Returns the generation that was set for the specified functionality when set_functionality_is_supported was called for that functionality.

Parameters
[in]functionalityThe functionality to check against
Returns
The generation associated with the specified functionality, or 0 if not configured

Definition at line 80 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_functionality_is_supported()

bool isobus::ControlFunctionFunctionalities::get_functionality_is_supported ( Functionalities functionality)

Returns if a functionality was previously configured with set_functionality_is_supported.

Parameters
[in]functionalityThe functionality to check against
Returns
true if the specified functionality will be reported as being supported, otherwise false

Definition at line 66 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_message_content()

void isobus::ControlFunctionFunctionalities::get_message_content ( std::vector< std::uint8_t > & messageData)
protected

Populates a vector with the message data needed to send PGN 0xFC8E.

Parameters
[in,out]messageDataThe buffer to populate with data (will be cleared before use)

Definition at line 668 of file isobus_functionalities.cpp.

Here is the caller graph for this function:

◆ get_minimum_control_function_option_state()

bool isobus::ControlFunctionFunctionalities::get_minimum_control_function_option_state ( MinimumControlFunctionOptions option)

Returns the current state of the specified minimum control function functionality option.

Parameters
[in]optionThe option to check the state of
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 106 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_task_controller_geo_client_option()

std::uint8_t isobus::ControlFunctionFunctionalities::get_task_controller_geo_client_option ( )

Gets the state of the only TC GEO client functionality option, which is the number of control channels.

Returns
The number of supported TC GEO client control channels that are supported

Definition at line 218 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_task_controller_geo_server_option_state()

bool isobus::ControlFunctionFunctionalities::get_task_controller_geo_server_option_state ( TaskControllerGeoServerOptions option)

Gets the state of a TC GEO server functionality option.

Parameters
[in]optionThe option to get
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 200 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_task_controller_section_control_client_number_supported_booms()

std::uint8_t isobus::ControlFunctionFunctionalities::get_task_controller_section_control_client_number_supported_booms ( )

Gets the number of supported booms for the TC section control client functionality.

Returns
The number of supported booms being reported in the TC section control client functionality

Definition at line 287 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_task_controller_section_control_client_number_supported_sections()

std::uint8_t isobus::ControlFunctionFunctionalities::get_task_controller_section_control_client_number_supported_sections ( )

Gets the number of supported sections for the TC section control client functionality.

Returns
The number of supported sections being reported in the TC section control client functionality

Definition at line 300 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_task_controller_section_control_server_number_supported_booms()

std::uint8_t isobus::ControlFunctionFunctionalities::get_task_controller_section_control_server_number_supported_booms ( )

Gets the number of supported booms for the TC section control server functionality.

Returns
The number of supported booms being reported in the TC section control server functionality

Definition at line 246 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_task_controller_section_control_server_number_supported_sections()

std::uint8_t isobus::ControlFunctionFunctionalities::get_task_controller_section_control_server_number_supported_sections ( )

Gets the number of supported sections for the TC section control server functionality.

Returns
The number of supported sections being reported in the TC section control server functionality

Definition at line 259 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_tim_option_bit_index()

std::uint8_t isobus::ControlFunctionFunctionalities::get_tim_option_bit_index ( TractorImplementManagementOptions option) const
private

Returns the bit offset of a specified TIM functionality option into the TIM client and server functionality message data.

Parameters
[in]optionThe option for which you want to know the bit index into the TIM functionality message data
Returns
The bit offset/index of the specified option int the TIM functionality message data

Definition at line 761 of file isobus_functionalities.cpp.

Here is the caller graph for this function:

◆ get_tim_option_byte_index()

std::uint8_t isobus::ControlFunctionFunctionalities::get_tim_option_byte_index ( TractorImplementManagementOptions option) const
private

Returns the byte index of the specified TIM option in the CF Functionalities message data associated with wither TIM server or TIM client functionalities.

Parameters
[in]optionThe option for which you want to know the byte index
Returns
The byte index of the specified option in the TIM functionalities' message data

Definition at line 694 of file isobus_functionalities.cpp.

Here is the caller graph for this function:

◆ get_tractor_implement_management_client_aux_valve_flow_supported()

bool isobus::ControlFunctionFunctionalities::get_tractor_implement_management_client_aux_valve_flow_supported ( std::uint8_t auxValveIndex)

Returns if a particular aux valve's flow control is supported in the TIM client functionality.

Parameters
[in]auxValveIndexThe index of the aux valve to check
Returns
true if the aux valve you specified is being reported as "supported".

Definition at line 541 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_tractor_implement_management_client_aux_valve_state_supported()

bool isobus::ControlFunctionFunctionalities::get_tractor_implement_management_client_aux_valve_state_supported ( std::uint8_t auxValveIndex)

Returns if a particular aux valve's state control is supported in the TIM client functionality.

Parameters
[in]auxValveIndexThe index of the aux valve to check
Returns
true if the aux valve's state you specified is being reported as "supported".

Definition at line 527 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_tractor_implement_management_client_option_state()

bool isobus::ControlFunctionFunctionalities::get_tractor_implement_management_client_option_state ( TractorImplementManagementOptions option)

Gets the state of a TIM client functionality option.

Parameters
[in]optionThe option to get
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 479 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_tractor_implement_management_server_aux_valve_flow_supported()

bool isobus::ControlFunctionFunctionalities::get_tractor_implement_management_server_aux_valve_flow_supported ( std::uint8_t auxValveIndex)

Returns if a particular aux valve's flow control is supported in the TIM server functionality.

Parameters
[in]auxValveIndexThe index of the aux valve to check
Returns
true if the aux valve you specified is being reported as "supported".

Definition at line 453 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_tractor_implement_management_server_aux_valve_state_supported()

bool isobus::ControlFunctionFunctionalities::get_tractor_implement_management_server_aux_valve_state_supported ( std::uint8_t auxValveIndex)

Returns if a particular aux valve's state control is supported in the TIM server functionality.

Parameters
[in]auxValveIndexThe index of the aux valve to check
Returns
true if the aux valve's state you specified is being reported as "supported".

Definition at line 439 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ get_tractor_implement_management_server_option_state()

bool isobus::ControlFunctionFunctionalities::get_tractor_implement_management_server_option_state ( TractorImplementManagementOptions option)

Gets the state of a basic tractor implement management client functionality option.

Parameters
[in]optionThe option to get
Returns
The state of the option. If true, the option is being reported as "supported".

Definition at line 402 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ pgn_request_handler()

bool isobus::ControlFunctionFunctionalities::pgn_request_handler ( std::uint32_t parameterGroupNumber,
std::shared_ptr< ControlFunction > requestingControlFunction,
bool & acknowledge,
AcknowledgementType & acknowledgeType,
void * parentPointer )
staticprivate

Handles PGN requests for the control function functionalities message.

Parameters
[in]parameterGroupNumberThe PGN that was requested
[in]requestingControlFunctionThe control function that is requesting the PGN
[out]acknowledgeTells the PGN request protocol to ACK ack the request
[out]acknowledgeTypeTells the PGN request protocol what kind of ACK to use
[in]parentPointerA generic context variable, usually the "this" pointer of the registrant for callbacks
Returns
true if the PGN was handled, otherwise false

Definition at line 833 of file isobus_functionalities.cpp.

Here is the caller graph for this function:

◆ process_flags()

void isobus::ControlFunctionFunctionalities::process_flags ( std::uint32_t flag,
void * parentPointer )
staticprivate

Processes set transmit flags to send messages.

Parameters
[in]flagThe flag to process
[in]parentPointerA pointer back to an instance of this interface

Definition at line 852 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_aux_N_functions_option_state()

void isobus::ControlFunctionFunctionalities::set_aux_N_functions_option_state ( AuxNOptions option,
bool optionState )

Sets an AUX-N functions functionality option to a new state.

Options set to true will be reported as "supported" to a requester of your control function functionalities within the "AUX-N functions" functionality section of the message.

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 167 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_aux_N_inputs_option_state()

void isobus::ControlFunctionFunctionalities::set_aux_N_inputs_option_state ( AuxNOptions option,
bool optionState )

Sets an AUX-N inputs functionality option to a new state.

Options set to true will be reported as "supported" to a requester of your control function functionalities within the "AUX-N inputs" functionality section of the message.

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 147 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_aux_O_functions_option_state()

void isobus::ControlFunctionFunctionalities::set_aux_O_functions_option_state ( AuxOOptions option,
bool optionState )

Sets an AUX-O functions functionality option to a new state.

Options set to true will be reported as "supported" to a requester of your control function functionalities within the "AUX-O functions" functionality section of the message.

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 129 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_aux_O_inputs_option_state()

void isobus::ControlFunctionFunctionalities::set_aux_O_inputs_option_state ( AuxOOptions option,
bool optionState )

Sets an AUX-O inputs functionality option to a new state.

Options set to true will be reported as "supported" to a requester of your control function functionalities within the "AUX-O inputs" functionality section of the message.

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 111 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_basic_tractor_ECU_implement_client_option_state()

void isobus::ControlFunctionFunctionalities::set_basic_tractor_ECU_implement_client_option_state ( BasicTractorECUOptions option,
bool optionState )

Sets a tractor ECU client functionality option to a new state.

The values set here will be reported as "supported" to a requester of your CF's functionalities

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 348 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_basic_tractor_ECU_server_option_state()

void isobus::ControlFunctionFunctionalities::set_basic_tractor_ECU_server_option_state ( BasicTractorECUOptions option,
bool optionState )

Sets a tractor ECU server functionality option to a new state.

The values set here will be reported as "supported" to a requester of your CF's functionalities

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 313 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_functionality_is_supported()

void isobus::ControlFunctionFunctionalities::set_functionality_is_supported ( Functionalities functionality,
std::uint8_t functionalityGeneration,
bool isSupported )

Adds or removes a supported functionality.

Parameters
[in]functionalityThe functionality to change
[in]functionalityGenerationThe generation of the functionality to report
[in]isSupportedIf true, this class will add reporting as such on the ISOBUS. If false, it will not be reported on the bus.
Note
Minimum Control Function is enabled by default, and generally should not be disabled.

Definition at line 43 of file isobus_functionalities.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_minimum_control_function_option_state()

void isobus::ControlFunctionFunctionalities::set_minimum_control_function_option_state ( MinimumControlFunctionOptions option,
bool optionState )

Sets a minimum control function functionality option to a new state.

Options set to true will be reported as "supported" to a requester of your control function functionalities within the "minimum control function" functionality section of the message.

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 93 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_task_controller_geo_client_option()

void isobus::ControlFunctionFunctionalities::set_task_controller_geo_client_option ( std::uint8_t numberOfControlChannels)

Sets a task controller geo client's only functionality option, which is the number of control channels.

The value you set will be reported to the requestor of your CF's functionalities within the "task controller geo client" functionality section of the message.

Parameters
[in]numberOfControlChannelsThe number of control channels your ECU supports for TC GEO (client side)

Definition at line 205 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_task_controller_geo_server_option_state()

void isobus::ControlFunctionFunctionalities::set_task_controller_geo_server_option_state ( TaskControllerGeoServerOptions option,
bool optionState )

Sets a task controller geo server functionality option to a new state.

Options set to true will be reported as "supported" to a requester of your control function functionalities within the "task controller geo server" functionality section of the message.

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 187 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_task_controller_section_control_client_option_state()

void isobus::ControlFunctionFunctionalities::set_task_controller_section_control_client_option_state ( std::uint8_t numberOfSupportedBooms,
std::uint8_t numberOfSupportedSections )

Sets a task controller section control client's options.

The values set here will be reported as "supported" to a requester of your CF's functionalities

Parameters
[in]numberOfSupportedBoomsThe number of booms your application TC client supports
[in]numberOfSupportedSectionsThe number of sections your application TC client supports

Definition at line 272 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_task_controller_section_control_server_option_state()

void isobus::ControlFunctionFunctionalities::set_task_controller_section_control_server_option_state ( std::uint8_t numberOfSupportedBooms,
std::uint8_t numberOfSupportedSections )

Sets a task controller section control server's options.

The values set here will be reported as "supported" to a requester of your CF's functionalities

Parameters
[in]numberOfSupportedBoomsThe number of booms your application TC server supports
[in]numberOfSupportedSectionsThe number of sections your application TC server supports

Definition at line 231 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_tractor_implement_management_client_aux_valve_option()

void isobus::ControlFunctionFunctionalities::set_tractor_implement_management_client_aux_valve_option ( std::uint8_t auxValveIndex,
bool stateSupported,
bool flowSupported )

Sets a tractor implement management (TIM) client aux valve's functionality options to a new state.

The values set here will be reported as "supported" to a requester of your CF's functionalities

Parameters
[in]auxValveIndexThe index of the aux valve to set, between 0 and 31
[in]stateSupportedSet to true to indicate you support the state of this valve, otherwise false
[in]flowSupportedSet to true to indicate your support aux valve flow with this valve

Definition at line 515 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_tractor_implement_management_client_option_state()

void isobus::ControlFunctionFunctionalities::set_tractor_implement_management_client_option_state ( TractorImplementManagementOptions option,
bool optionState )

Sets a tractor implement management (TIM) client functionality option to a new state.

The values set here will be reported as "supported" to a requester of your CF's functionalities

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 467 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_tractor_implement_management_server_aux_valve_option()

void isobus::ControlFunctionFunctionalities::set_tractor_implement_management_server_aux_valve_option ( std::uint8_t auxValveIndex,
bool stateSupported,
bool flowSupported )

Sets a tractor implement management (TIM) server aux valve's functionality options to a new state.

The values set here will be reported as "supported" to a requester of your CF's functionalities

Parameters
[in]auxValveIndexThe index of the aux valve to set, between 0 and 31
[in]stateSupportedSet to true to indicate you support the state of this valve, otherwise false
[in]flowSupportedSet to true to indicate your support aux valve flow with this valve

Definition at line 426 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ set_tractor_implement_management_server_option_state()

void isobus::ControlFunctionFunctionalities::set_tractor_implement_management_server_option_state ( TractorImplementManagementOptions option,
bool optionState )

Sets a tractor implement management (TIM) server functionality option to a new state.

The values set here will be reported as "supported" to a requester of your CF's functionalities

Parameters
[in]optionThe option to set
[in]optionStateThe state to set for the associated option

Definition at line 383 of file isobus_functionalities.cpp.

Here is the call graph for this function:

◆ update()

void isobus::ControlFunctionFunctionalities::update ( )

The diagnostic protocol will call this update function, make sure to call DiagnosticProtocol::update() in your update loop.

Definition at line 555 of file isobus_functionalities.cpp.

Here is the caller graph for this function:

Member Data Documentation

◆ functionalitiesMutex

Mutex isobus::ControlFunctionFunctionalities::functionalitiesMutex
private

Since messages come in on a different thread than the main app (probably), this mutex protects the functionality data.

Definition at line 472 of file isobus_functionalities.hpp.

◆ myControlFunction

std::shared_ptr<InternalControlFunction> isobus::ControlFunctionFunctionalities::myControlFunction
private

The control function to send messages as.

Definition at line 469 of file isobus_functionalities.hpp.

◆ NUMBER_TIM_AUX_VALVES

constexpr std::uint8_t isobus::ControlFunctionFunctionalities::NUMBER_TIM_AUX_VALVES = 32
staticconstexprprivate

The max number of TIM aux valves.

Definition at line 467 of file isobus_functionalities.hpp.

◆ NUMBER_TIM_AUX_VALVES_PER_BYTE

constexpr std::uint8_t isobus::ControlFunctionFunctionalities::NUMBER_TIM_AUX_VALVES_PER_BYTE = 4
staticconstexprprivate

The number of aux valves per byte of TIM functionality message data.

Definition at line 466 of file isobus_functionalities.hpp.

◆ supportedFunctionalities

std::list<FunctionalityData> isobus::ControlFunctionFunctionalities::supportedFunctionalities
private

A list of all configured functionalities and their data.

Definition at line 470 of file isobus_functionalities.hpp.

◆ txFlags

ProcessingFlags isobus::ControlFunctionFunctionalities::txFlags
private

Handles retries for sending the CF functionalities message.

Definition at line 471 of file isobus_functionalities.hpp.


The documentation for this class was generated from the following files: