12#ifndef ISOBUS_DEVICE_DESCRIPTOR_OBJECT_POOL_HELPERS_HPP
13#define ISOBUS_DEVICE_DESCRIPTOR_OBJECT_POOL_HELPERS_HPP
40 explicit operator bool()
const;
54 std::int32_t
get()
const;
104 std::vector<ProductControlInformation>
rates;
113 std::vector<ProductControlInformation>
rates;
128 std::vector<ProductControlInformation>
rates;
153 std::shared_ptr<task_controller_object::DeviceElementObject> elementObject,
161 std::shared_ptr<task_controller_object::DeviceElementObject> elementObject);
168 std::shared_ptr<task_controller_object::DeviceElementObject> elementObject);
175 std::shared_ptr<task_controller_object::DeviceElementObject> elementObject);
182 const std::shared_ptr<task_controller_object::DevicePropertyObject> &property,
190 const std::shared_ptr<task_controller_object::DeviceProcessDataObject> &processData,
199 const std::shared_ptr<task_controller_object::Object> &
object,
208 const std::shared_ptr<task_controller_object::Object> &
object,
217 const std::shared_ptr<task_controller_object::Object> &
object,
226 const std::shared_ptr<task_controller_object::Object> &
object,
235 const std::shared_ptr<task_controller_object::Object> &
object,
General constants used throughout this library.
A helper class that describes a boom This is used to describe a boom, or more generally,...
std::vector< ProductControlInformation > rates
If the boom has rates, this will contain the associated data needed to control the product.
ObjectPoolValue zOffset_mm
The z offset of the sub boom in mm. Z offsets are up+/down-.
std::vector< SubBoom > subBooms
The sub booms of the boom.
ObjectPoolValue xOffset_mm
The x offset of the sub boom in mm. X offsets are fore+/aft-.
ObjectPoolValue yOffset_mm
The y offset of the sub boom in mm. Y offsets are left-/right+.
std::uint16_t elementNumber
The element number of the boom, which can be used to avoid further parsing of the DDOP when issuing c...
std::vector< Section > sections
The sections of the boom.
A helper class that describes an implement based on its DDOP.
std::vector< Boom > booms
The booms of the implement.
A wrapper for a DDOP value which tells you if the value was actually supplied by the DDOP.
bool exists() const
Returns if this variable exists. A variable exists if it was either provided in the DDOP,...
bool isSettable
Stores if the value can be set, such as on a DPD's value.
std::int32_t get() const
Returns the value. If the value doesn't exist this will return 0.
bool editable() const
Returns if this value is editable. DPDs are editable. DPTs are not.
bool isValuePresent
Stores if the value has ever been set.
std::int32_t value
The value being wrapped by this object.
ObjectPoolValue()=default
Default constructor for ObjectPoolValue which defaults the value to being non-existant and not settab...
A helper class that describes an individual section of a boom. This is used to describe the sections ...
ObjectPoolValue zOffset_mm
The z offset of the section in mm. Z offsets are up+/down-.
ObjectPoolValue yOffset_mm
The y offset of the section in mm. Y offsets are left-/right+.
std::vector< ProductControlInformation > rates
If the section has rates, this will contain the associated data needed to control the product.
std::uint16_t elementNumber
The element number of the section, which can be used to avoid further parsing of the DDOP when issuin...
ObjectPoolValue xOffset_mm
The x offset of the section in mm. X offsets are fore+/aft-.
ObjectPoolValue width_mm
The width of the section in mm.
A helper class that describes a sub boom (not all devices support this)
ObjectPoolValue xOffset_mm
The x offset of the sub boom in mm. X offsets are fore+/aft-.
std::uint16_t elementNumber
The element number of the sub boom , which can be used to avoid further parsing of the DDOP when issu...
ObjectPoolValue zOffset_mm
The z offset of the sub boom in mm. Z offsets are up+/down-.
ObjectPoolValue width_mm
The width of the sub boom in mm.
std::vector< Section > sections
The sections of the sub boom.
ObjectPoolValue yOffset_mm
The y offset of the sub boom in mm. Y offsets are left-/right+.
std::vector< ProductControlInformation > rates
If the sub-boom has rates, this will contain the associated data needed to control the product.
Helper object for parsing DDOPs.
static void set_product_control_information_actual_rate(ProductControlInformation &productControlInformation, const std::shared_ptr< task_controller_object::Object > &object, std::uint16_t ddi)
Sets the actual rate field of the product control information based on the supplied object if the DDI...
static void set_product_control_information_setpoint_rate(ProductControlInformation &productControlInformation, const std::shared_ptr< task_controller_object::Object > &object, std::uint16_t ddi)
Sets the setpoint rate field of the product control information based on the supplied object if the D...
static void set_value_from_property(ObjectPoolValue &objectPoolValue, const std::shared_ptr< task_controller_object::DevicePropertyObject > &property, DataDescriptionIndex ddi)
Sets the value and presence based on a DDI match.
static SubBoom parse_sub_boom(DeviceDescriptorObjectPool &ddop, std::shared_ptr< task_controller_object::DeviceElementObject > elementObject)
Parse a sub boom element of the DDOP.
static void set_product_control_information_min_rate(ProductControlInformation &productControlInformation, const std::shared_ptr< task_controller_object::Object > &object, std::uint16_t ddi)
Sets the minimum rate field of the product control information based on the supplied object if the DD...
static void parse_element(DeviceDescriptorObjectPool &ddop, std::shared_ptr< task_controller_object::DeviceElementObject > elementObject, Implement &implementToPopulate)
Parse an element of the DDOP.
static void set_editable_from_process_data(ObjectPoolValue &objectPoolValue, const std::shared_ptr< task_controller_object::DeviceProcessDataObject > &processData, DataDescriptionIndex ddi)
Sets the settable flag based on a DDI match for process data.
static void set_product_control_information_max_rate(ProductControlInformation &productControlInformation, const std::shared_ptr< task_controller_object::Object > &object, std::uint16_t ddi)
Sets the max rate field of the product control information based on the supplied object if the DDI is...
static ProductControlInformation parse_bin(DeviceDescriptorObjectPool &ddop, std::shared_ptr< task_controller_object::DeviceElementObject > elementObject)
Parses a bin element of the DDOP.
static Section parse_section(DeviceDescriptorObjectPool &ddop, std::shared_ptr< task_controller_object::DeviceElementObject > elementObject)
Parse a section element of the DDOP.
static Implement get_implement_geometry(DeviceDescriptorObjectPool &ddop)
Get the implement description from the DDOP.
static void set_product_control_information_default_rate(ProductControlInformation &productControlInformation, const std::shared_ptr< task_controller_object::Object > &object, std::uint16_t ddi)
Sets the default rate field of the product control information based on the supplied object if the DD...
Defines a device descriptor object pool.
Defines an interface for creating a Task Controller DDOP.
Defines some standard DDIs. Does not include proprietary DDIs.
This namespace encompasses all of the ISO11783 stack's functionality to reduce global namespace pollu...
constexpr std::uint16_t NULL_OBJECT_ID
Special ID used to indicate no object.
DataDescriptionIndex
Enumerates a subset of standard ISOBUS DDIs.