### getStartOnFullUnitOfDomain() Source: https://docs.opendaq.com/doxygen/struct_i_multi_reader_builder Gets the status of the 'start on full unit of domain' setting. ```APIDOC ## GET /websites/opendaq_doxygen/getStartOnFullUnitOfDomain ### Description Gets the status of the 'start on full unit of domain' setting. ### Method GET ### Endpoint /websites/opendaq_doxygen/getStartOnFullUnitOfDomain ### Parameters #### Query Parameters - **_enabled_** (Bool *) - Out - Indicates whether 'start on full unit of domain' is enabled or disabled. ### Response #### Success Response (200) - **ErrCode** (int) - Indicates success or failure of the operation. - **Bool** (boolean) - The enabled/disabled status. ``` -------------------------------- ### Add Standard Servers (C++) Source: https://docs.opendaq.com/doxygen/struct_i_instance Creates and adds standard streaming and OpenDAQOPCUA servers with default configurations. It returns a list of the added servers. ```cpp virtual ErrCode INTERFACE_FUNC | addStandardServers (IList **servers)=0 ``` -------------------------------- ### Get Unit Symbol (C++) Source: https://docs.opendaq.com/doxygen/struct_i_unit_builder Gets the symbol of the unit, for example, "m/s". This is a pure virtual function that returns an IString pointer. The pointer will be nullptr if the symbol is not set. ```cpp virtual ErrCode INTERFACE_FUNC getSymbol (IString **symbol) = 0; // Example Usage (Conceptual): // IString* unitSymbol = nullptr; // ErrCode status = builder->getSymbol(&unitSymbol); // if (status == OPENDAQ_SUCCESS && unitSymbol != nullptr) { // // Use unitSymbol // // Note: The caller does not own this string and should not releaseRef it. // } ``` -------------------------------- ### Create OpenDAAQ Server Source: https://docs.opendaq.com/doxygen/class_module_ptr Creates and returns a server instance of a specified type. Requires server type ID, root device, and an optional configuration object. If configuration is null, default settings are used. ```cpp daq::ServerPtr createServer(const daq::StringPtr& _serverTypeId_, const daq::DevicePtr& _rootDevice_, const daq::PropertyObjectPtr& _config_ = nullptr); ``` -------------------------------- ### Create Server (C++) Source: https://docs.opendaq.com/doxygen/struct_i_module Creates and returns a server object of a specified type. Requires the server type ID, root device, and an optional configuration object. ```cpp virtual ErrCode INTERFACE_FUNC | createServer (IServer **server, IString *serverTypeId, IDevice *rootDevice, IPropertyObject *config=nullptr)=0 ``` -------------------------------- ### Get Unit Quantity (C++) Source: https://docs.opendaq.com/doxygen/struct_i_unit_builder Gets the quantity represented by the unit, for example, "Velocity". This is a pure virtual function that returns an IString pointer. It returns nullptr if the quantity is not set. ```cpp virtual ErrCode INTERFACE_FUNC getQuantity (IString **quantity) = 0; // Example Usage (Conceptual): // IString* unitQuantity = nullptr; // ErrCode status = builder->getQuantity(&unitQuantity); // if (status == OPENDAQ_SUCCESS && unitQuantity != nullptr) { // // Use unitQuantity // // Note: The caller does not own this string and should not releaseRef it. // } ``` -------------------------------- ### Get Unit Name (C++) Source: https://docs.opendaq.com/doxygen/struct_i_unit_builder Gets the full name of the unit, for example, "meters per second". This is a pure virtual function that returns an IString pointer. It returns nullptr if the name is not set. ```cpp virtual ErrCode INTERFACE_FUNC getName (IString **name) = 0; // Example Usage (Conceptual): // IString* unitName = nullptr; // ErrCode status = builder->getName(&unitName); // if (status == OPENDAQ_SUCCESS && unitName != nullptr) { // // Use unitName // // Note: The caller does not own this string and should not releaseRef it. // } ``` -------------------------------- ### Instance Configuration and Settings Source: https://docs.opendaq.com/doxygen/struct_i_instance_builder Endpoints for setting authentication providers, component log levels, context, and default root device information. ```APIDOC ## POST /instance/authenticationProvider ### Description Sets the AuthenticationProvider for the Instance. ### Method POST ### Endpoint /instance/authenticationProvider ### Parameters #### Request Body - **authenticationProvider** (IAuthenticationProvider*) - Required - The AuthenticationProvider for the Instance. ### Response #### Success Response (200) - **message** (string) - Indicates successful setting of the authentication provider. ## POST /instance/componentLogLevel ### Description Sets the Logger level for a specific component of the Instance. Log messages related to that component will be processed according to the specified log level. ### Method POST ### Endpoint /instance/componentLogLevel ### Parameters #### Request Body - **component** (IString*) - Required - The name of Instance component. - **logLevel** (LogLevel) - Required - The log level of Instance component. ### Response #### Success Response (200) - **message** (string) - Indicates successful setting of the component log level. ## POST /instance/context ### Description Sets the Context object of the instance. This overwrites other context related settings such as logger, scheduler and module manager settings. ### Method POST ### Endpoint /instance/context ### Parameters #### Request Body - **context** (IContext*) - Required - The Context object for instance. ### Response #### Success Response (200) - **message** (string) - Indicates successful setting of the context. ## POST /instance/defaultRootDeviceInfo ### Description Sets the default device info of Instance. If device info has been set, method getInfo of Instance will return set device info if Root Device has not been set. ### Method POST ### Endpoint /instance/defaultRootDeviceInfo ### Parameters #### Request Body - **deviceInfo** (IDeviceInfo*) - Required - The device info of the default device of Instance. ### Response #### Success Response (200) - **message** (string) - Indicates successful setting of the default root device info. ``` -------------------------------- ### Get Device Class (C++) Source: https://docs.opendaq.com/doxygen/struct_i_device_info Retrieves the purpose or class of the device. For example, it could be 'TestMeasurementDevice'. The function returns an IString object. ```cpp virtual ErrCode INTERFACE_FUNC | getDeviceClass (IString **deviceClass)=0 ``` -------------------------------- ### Device and Streaming Configuration Helpers Source: https://docs.opendaq.com/doxygen/class_generic_mirrored_device_ptr Create default configuration objects for adding devices and streaming sources. ```APIDOC ## GET /devices/defaultAddDeviceConfig ### Description Creates a config object that can be used when adding a device. Contains Device and Streaming default configuration for all available Device/Streaming types. Also contains general add-device configuration settings. ### Method GET ### Endpoint /devices/defaultAddDeviceConfig ### Response #### Success Response (200) - **defaultConfig** (daq::PropertyObjectPtr) - The default configuration object. #### Response Example { "defaultConfig": { "deviceDefaults": { "type1": {"paramA": "defaultA"} }, "streamingDefaults": { "typeX": {"paramX": 100} }, "generalSettings": { "timeout": 30 } } } ``` -------------------------------- ### Get Device Manufacturer URI (C++) Source: https://docs.opendaq.com/doxygen/struct_i_device_info Retrieves the unique identifier (URI) of the device's manufacturer. This should be a fully qualified domain name or a GUID to ensure global uniqueness. ```cpp virtual ErrCode INTERFACE_FUNC getManufacturerUri(IString ** _manufacturerUri_) pure virtual ``` -------------------------------- ### Begin Batch Configuration Source: https://docs.opendaq.com/doxygen/class_generic_folder_config_ptr Initiates a batch configuration mode for the object. All subsequent changes will be grouped until endUpdate() is called. ```cpp void | beginUpdate () const ``` -------------------------------- ### Get Device Manufacturer URI (C++) Source: https://docs.opendaq.com/doxygen/struct_i_device_info Retrieves the unique identifier for the device's manufacturer. This identifier is expected to be a fully qualified domain name, but can also be a GUID or similar globally unique construct. ```cpp virtual ErrCode INTERFACE_FUNC | getManufacturerUri (IString **manufacturerUri)=0 ``` -------------------------------- ### Get Reference Domain Info Struct Type (C++) Source: https://docs.opendaq.com/doxygen/group__opendaq__reference__domain__info__factories Returns the StructType object that defines the structure of the Reference Domain Info. This is useful for introspection and understanding the data layout of Reference Domain Info objects. ```cpp StructTypePtr ReferenceDomainInfoStructType() { // Implementation details for returning the struct type } ``` -------------------------------- ### Configuration and Setting Methods Source: https://docs.opendaq.com/doxygen/functions_s This section details various methods used to configure and set properties for different components within the OpenDAQ framework. These include methods for managing device configurations, signal settings, reader parameters, and logging. ```APIDOC ## Configuration and Setting Methods ### Description This section details various methods used to configure and set properties for different components within the OpenDAQ framework. These include methods for managing device configurations, signal settings, reader parameters, and logging. ### Methods #### `saveConfiguration()` * **Method:** (Not specified, likely a setter) * **Description:** Saves the current configuration. #### `scaleData()` * **Method:** (Not specified, likely a calculation method) * **Description:** Calculates scaled data. #### `scheduleFunction()` * **Method:** (Not specified, likely a scheduling method) * **Description:** Schedules a function to be executed. #### `scheduleGraph()` * **Method:** (Not specified, likely a scheduling method) * **Description:** Schedules a graph for execution. #### `scheduleWork()` * **Method:** (Not specified, likely a scheduling method) * **Description:** Schedules a work item. #### `scheduleWorkOnMainLoop()` * **Method:** (Not specified, likely a scheduling method) * **Description:** Schedules work to be executed on the main loop. #### `sendPacket()` * **Method:** (Not specified, likely a sending method) * **Description:** Sends a single packet. #### `sendPacketAndStealRef()` * **Method:** (Not specified, likely a sending method) * **Description:** Sends a packet and steals its reference. #### `sendPacketRecursiveLock()` * **Method:** (Not specified, likely a sending method) * **Description:** Sends a packet with a recursive lock. #### `sendPackets()` * **Method:** (Not specified, likely a sending method) * **Description:** Sends multiple packets. #### `sendPacketsAndStealRef()` * **Method:** (Not specified, likely a sending method) * **Description:** Sends multiple packets and steals their references. #### `set()` * **Method:** (Not specified, likely a setter) * **Description:** Sets a value in a dictionary or struct. #### `setActive()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the active state of a component. #### `setActiveStreamingSource()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the active streaming source for a mirrored signal or port. #### `setAllowDifferentSamplingRates()` * **Method:** (Not specified, likely a builder setter) * **Description:** Allows different sampling rates for a multi-reader. #### `setAssetId()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the asset ID for device information. #### `setAuthenticatedOnly()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets whether authentication is required for module access. #### `setAuthenticationProvider()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the authentication provider for an instance. #### `setBlockSize()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the block size for a block reader. #### `setCallableInfo()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets callable information for a property. #### `setCoercer()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the coercer for a property. #### `setComponentConfig()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the configuration for a component. #### `setComponentLogLevel()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the log level for a component within an instance. #### `setConnectionString()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the connection string for device information. #### `setContext()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the context for an instance or packet buffer. #### `setCustomData()` * **Method:** (Not specified, likely a setter) * **Description:** Sets custom data for an input port. #### `setDefaultConfig()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the default configuration for a component type. #### `setDefaultRootDeviceInfo()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the default root device information for an instance. #### `setDefaultRootDeviceLocalId()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the default root device local ID for an instance. #### `setDefaultValue()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the default value for a property. #### `setDescription()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the description for a component, component type, or property. #### `setDescriptor()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the descriptor for a signal configuration. #### `setDeviceClass()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the device class for device information. #### `setDeviceManual()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the manual information for device information. #### `setDeviceRevision()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the device revision for device information. #### `setDeviceType()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the device type for device information. #### `setDimensions()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the dimensions for a data descriptor. #### `setDomainReadType()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the domain read type for various reader builders. #### `setDomainSignal()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the domain signal for a signal configuration. #### `setDomainTransformFunction()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the domain transformation function for a sample reader. #### `setErrorCode()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the error code. #### `setExternalListener()` * **Method:** (Not specified, likely a setter) * **Description:** Sets an external listener for a reader. #### `setFieldValues()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets field values for a struct builder. #### `setFileLine()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the file and line number for an error. #### `setFileName()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the file name for an error. #### `setGlobalLogLevel()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the global log level for an instance. #### `setHardwareRevision()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the hardware revision for device information. #### `setHistorySize()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the history size for a tail reader. #### `setId()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the ID for a component type or unit. #### `setInputDataType()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the input data type for a scaling operation. #### `setInputPort()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the input port for various reader builders. #### `setInputPortNotificationMethod()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the notification method for an input port on a multi-reader or stream reader. #### `setInputPortNotificationMethods()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets multiple notification methods for an input port on a multi-reader. #### `setItemAt()` * **Method:** (Not specified, likely a setter) * **Description:** Sets an item at a specific index in a list. #### `setLastValue()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the last value for a signal configuration. #### `setLevel()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the log level for a logger or logger component. #### `setListener()` * **Method:** (Not specified, likely a setter) * **Description:** Sets a listener for an input port. #### `setLocation()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the location for device information. #### `setLogger()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the logger for an instance. #### `setMacAddress()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the MAC address for device information. #### `setManufacturer()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the manufacturer for device information. #### `setManufacturerUri()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the manufacturer URI for device information. #### `setMaxValue()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the maximum value for a property. #### `setMessage()` * **Method:** (Not specified, likely a setter) * **Description:** Sets the message for an error. #### `setMetadata()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the metadata for a data descriptor. #### `setMinReadCount()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the minimum read count for a multi-reader. #### `setMinValue()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the minimum value for a property. #### `setModel()` * **Method:** (Not specified, likely a builder setter) * **Description:** Sets the model for device information. ``` -------------------------------- ### Doxygen Class Documentation Examples Source: https://docs.opendaq.com/doxygen/graph_legend Illustrates Doxygen comment syntax for documenting C++ classes and their inheritance. It shows how different comment styles and inheritance types (public, protected, private) affect Doxygen's graph generation. ```cpp /*! Invisible class because of truncation */ class Invisible { }; /*! Truncated class, inheritance relation is hidden */ class Truncated : public Invisible { }; /* Class not documented with doxygen comments */ class Undocumented { }; /*! Class that is inherited using public inheritance */ class PublicBase : public Truncated { }; /*! A template class */ template class Templ { }; /*! Class that is inherited using protected inheritance */ class ProtectedBase { }; /*! Class that is inherited using private inheritance */ class PrivateBase { }; /*! Class that is used by the Inherited class */ class Used { }; /*! Super class that inherits a number of other classes */ class Inherited : public PublicBase, protected ProtectedBase, private PrivateBase, public Undocumented, public Templ { private: Used *m_usedClass; }; ``` -------------------------------- ### addServer Source: https://docs.opendaq.com/doxygen/class_generic_device_ptr Creates and adds a server to the device with the provided unique type ID and returns it. Configuration can be provided for custom settings. ```APIDOC ## POST /servers ### Description Creates and adds a server to the device with the provided unique type ID and returns it. Configuration can be provided for custom settings. ### Method POST ### Endpoint /servers ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **typeId** (String) - Required - The unique type ID of the server. Can be obtained from its corresponding Server type object. - **config** (PropertyObject) - Required - A config object to configure a server with custom settings specific to that server type. ### Request Example ```json { "typeId": "my_server_type", "config": { "port": 9000 } } ``` ### Response #### Success Response (200) - **server** (ServerPtr) - The added server. #### Response Example ```json { "server": "" } ``` ``` -------------------------------- ### POST /loadConfiguration Source: https://docs.opendaq.com/doxygen/class_generic_device_ptr Loads the configuration of the device from a string. ```APIDOC ## POST /loadConfiguration ### Description Loads the configuration of the device from a string. ### Method POST ### Endpoint /loadConfiguration ### Parameters #### Request Body - **configuration** (daq::StringPtr) - Required - Serialized configuration of the device. - **config** (daq::UpdateParametersPtr) - Optional - Update parameters for the configuration. ### Request Example { "configuration": "", "config": { "updateMode": "replace" } } ### Response #### Success Response (200) - **message** (string) - Confirmation message indicating successful loading. #### Response Example { "message": "Configuration loaded successfully." } ``` -------------------------------- ### GET /getLogFileInfos Source: https://docs.opendaq.com/doxygen/class_generic_device_ptr Gets a list of available log files. ```APIDOC ## GET /getLogFileInfos ### Description Gets a list of available log files. ### Method GET ### Endpoint /getLogFileInfos ### Parameters None ### Response #### Success Response (200) - **logFileInfos** (daq::ListPtr) - The list of available log files. #### Response Example { "logFileInfos": [ { "id": "log_1", "name": "System.log", "size": 1024 }, { "id": "log_2", "name": "Error.log", "size": 512 } ] } ``` -------------------------------- ### Get Available Count API Source: https://docs.opendaq.com/doxygen/struct_i_stream_reader Gets the number of segments available to read. ```APIDOC ## GET /websites/opendaq_doxygen/getAvailableCount ### Description Gets the number of segments available to read. ### Method GET ### Endpoint /websites/opendaq_doxygen/getAvailableCount ### Parameters #### Query Parameters - **count** (SizeT*) - Required - Pointer to a SizeT variable to store the available count. ### Request Example ```json { "count": "count_variable_address" } ``` ### Response #### Success Response (200) - **ErrCode** - Indicates success or failure of the operation. #### Response Example ```json { "ErrCode": 0 } ``` ``` -------------------------------- ### Get Instance Options Source: https://docs.opendaq.com/doxygen/class_instance_builder_ptr Retrieves a dictionary of instance options for the OpenDAAQ instance. These options can configure various aspects of the instance. ```cpp daq::DictPtr getOptions() const; ``` -------------------------------- ### Get Available Packet Count Source: https://docs.opendaq.com/doxygen/class_packet_reader_ptr Gets the number of segments available to read from the data stream. ```APIDOC ## GET /websites/opendaq_doxygen/getAvailableCount ### Description Gets the number of segments available to read. ### Method GET ### Endpoint /websites/opendaq_doxygen/getAvailableCount ### Parameters #### Query Parameters None #### Request Body None ### Response #### Success Response (200) - **count** (daq::SizeT) - The number of available segments. #### Response Example { "count": 10 } ``` -------------------------------- ### Instance Methods Source: https://docs.opendaq.com/doxygen/class_instance_ptr-members Methods for managing the instance, including device and server operations, configuration loading and saving, and operation modes. ```APIDOC ## Instance Management API ### Description Provides methods for managing the device instance, including adding/removing devices and servers, loading/saving configurations, and setting operation modes. ### Methods #### `getTicksSinceOrigin()` - **Description**: Retrieves the number of ticks since the origin. - **Method**: GET - **Endpoint**: Not applicable (method call) #### `getUpdating()` - **Description**: Checks if the instance is currently updating. - **Method**: GET - **Endpoint**: Not applicable (method call) #### `isLocked()` - **Description**: Checks if the instance is locked. - **Method**: GET - **Endpoint**: Not applicable (method call) #### `loadConfiguration(const daq::StringPtr &configuration, const daq::UpdateParametersPtr &config=nullptr)` - **Description**: Loads a configuration for the instance. - **Method**: POST - **Endpoint**: Not applicable (method call) - **Parameters**: - **configuration** (daq::StringPtr) - Required - The configuration string. - **config** (daq::UpdateParametersPtr) - Optional - Update parameters. #### `lock()` - **Description**: Locks the instance. - **Method**: POST - **Endpoint**: Not applicable (method call) #### `removeDevice(const daq::GenericDevicePtr< daq::IDevice > &device)` - **Description**: Removes a device from the instance. - **Method**: DELETE - **Endpoint**: Not applicable (method call) - **Parameters**: - **device** (daq::GenericDevicePtr< daq::IDevice >) - Required - The device to remove. #### `removeFunctionBlock(const daq::FunctionBlockPtr &functionBlock)` - **Description**: Removes a function block from the instance. - **Method**: DELETE - **Endpoint**: Not applicable (method call) - **Parameters**: - **functionBlock** (daq::FunctionBlockPtr) - Required - The function block to remove. #### `removeServer(const daq::ServerPtr &server)` - **Description**: Removes a server from the instance. - **Method**: DELETE - **Endpoint**: Not applicable (method call) - **Parameters**: - **server** (daq::ServerPtr) - Required - The server to remove. #### `saveConfiguration()` - **Description**: Saves the current configuration of the instance. - **Method**: POST - **Endpoint**: Not applicable (method call) #### `setOperationMode(daq::OperationModeType modeType)` - **Description**: Sets the operation mode for the instance. - **Method**: POST - **Endpoint**: Not applicable (method call) - **Parameters**: - **modeType** (daq::OperationModeType) - Required - The desired operation mode. #### `setOperationModeRecursive(daq::OperationModeType modeType)` - **Description**: Sets the operation mode for the instance and all its children recursively. - **Method**: POST - **Endpoint**: Not applicable (method call) - **Parameters**: - **modeType** (daq::OperationModeType) - Required - The desired operation mode. #### `setRootDevice(const daq::StringPtr &connectionString, const daq::PropertyObjectPtr &config=nullptr)` - **Description**: Sets the root device for the instance. - **Method**: POST - **Endpoint**: Not applicable (method call) - **Parameters**: - **connectionString** (daq::StringPtr) - Required - The connection string for the root device. - **config** (daq::PropertyObjectPtr) - Optional - Configuration object for the root device. #### `unlock()` - **Description**: Unlocks the instance. - **Method**: POST - **Endpoint**: Not applicable (method call) ``` -------------------------------- ### Component and Property Object Navigation (OpenDAQ C++) Source: https://docs.opendaq.com/doxygen/class_generic_signal_config_ptr-members Offers utility functions for navigating the OpenDAQ object hierarchy and managing object states. This includes finding components by ID, checking if an object is updating, and managing property visibility. ```cpp endUpdate() const| GenericPropertyObjectPtr< InterfaceType >| inline findComponent(const daq::StringPtr &id) const| GenericComponentPtr< InterfaceType >| inline getUpdating() const| GenericPropertyObjectPtr< InterfaceType >| inline getVisibleProperties() const| GenericPropertyObjectPtr< InterfaceType >| inline ``` -------------------------------- ### GET /getTicksSinceOrigin Source: https://docs.opendaq.com/doxygen/class_generic_device_ptr Gets the number of ticks passed since the device's absolute origin. ```APIDOC ## GET /getTicksSinceOrigin ### Description Gets the number of ticks passed since the device's absolute origin. To scale the ticks into a domain unit, the Device's Domain should be used. ### Method GET ### Endpoint /getTicksSinceOrigin ### Parameters None ### Response #### Success Response (200) - **ticks** (daq::UInt) - The number of ticks. #### Response Example { "ticks": 123456789 } ``` -------------------------------- ### Get Available Sample Count from OpenDAQ Reader Source: https://docs.opendaq.com/doxygen/struct_i_stream_reader Gets the number of data segments currently available to be read from the reader. ```cpp virtual ErrCode INTERFACE_FUNC | getAvailableCount (SizeT *count)=0 ``` -------------------------------- ### Instance Options and Root Device Source: https://docs.opendaq.com/doxygen/struct_i_instance_builder Endpoints for retrieving instance options and root device connection strings or configurations. ```APIDOC ## GET /instance/options ### Description Retrieves the dictionary of instance options. ### Method GET ### Endpoint /instance/options ### Parameters #### Query Parameters - **options** (IDict*) - [out] - The dictionary of instance options. ### Response #### Success Response (200) - **options** (IDict*) - The dictionary of instance options. ## GET /instance/rootDevice ### Description Retrieves the connection string for the default root device of the Instance. Returns nullptr if the root device connection string has not been set. ### Method GET ### Endpoint /instance/rootDevice ### Parameters #### Query Parameters - **connectionString** (IString*) - [out] - The connection string for the root device of Instance. ### Response #### Success Response (200) - **connectionString** (IString*) - The connection string for the root device of Instance. ## GET /instance/rootDeviceConfig ### Description Retrieves the configuration property object for the default root device of the Instance. Returns nullptr for the default configuration property object. ### Method GET ### Endpoint /instance/rootDeviceConfig ### Parameters #### Query Parameters - **config** (IPropertyObject*) - [out] - The configuration property object for the root device of Instance. ### Response #### Success Response (200) - **config** (IPropertyObject*) - The configuration property object for the root device of Instance. ``` -------------------------------- ### Component Configuration Methods Source: https://docs.opendaq.com/doxygen/class_mirrored_signal_config_ptr-members This section covers methods for configuring and managing components, including setting names, descriptions, and active states. ```APIDOC ## Component Configuration Methods ### Description Provides methods for manipulating component configurations, such as setting names, descriptions, and active states. ### Methods #### `setActive(daq::Bool active)` - **Description**: Sets the active state of the component. - **Method**: `const` - **Endpoint**: N/A (Class method) #### `setDescription(const daq::StringPtr &description)` - **Description**: Sets the description for the component. - **Method**: `const` - **Endpoint**: N/A (Class method) #### `setName(const daq::StringPtr &name)` - **Description**: Sets the name of the component. - **Method**: `const` - **Endpoint**: N/A (Class method) ### Request Example ```json { "name": "MyComponent", "description": "This is my custom component.", "active": true } ``` ### Response #### Success Response (200) - **status** (string) - Indicates the success of the operation. ``` -------------------------------- ### Get Read Mode API Source: https://docs.opendaq.com/doxygen/struct_i_stream_reader Gets the reader's read mode, which determines if the reader will also scale the read data or not. ```APIDOC ## GET /websites/opendaq_doxygen/getReadMode ### Description Gets the reader's read mode which determines if the reader will also scale the read data or not. ### Method GET ### Endpoint /websites/opendaq_doxygen/getReadMode ### Parameters #### Query Parameters - **mode** (ReadMode*) - Required - Pointer to a ReadMode variable to store the result. ### Request Example ```json { "mode": "read_mode_variable_address" } ``` ### Response #### Success Response (200) - **ErrCode** - Indicates success or failure of the operation. #### Response Example ```json { "ErrCode": 0 } ``` ``` -------------------------------- ### Create Folder Instance (C++) Source: https://docs.opendaq.com/doxygen/group__opendaq__folder__factories This code snippet shows how to instantiate a Folder object directly. It takes a Context, a parent Component, and a local ID string as parameters. This is a common way to create folder objects within the openDAQ framework. ```cpp template FolderConfigPtr Folder(const ContextPtr &context, const ComponentPtr &parent, const StringPtr &localId) ``` -------------------------------- ### Get Available Data Count - C++ Source: https://docs.opendaq.com/doxygen/class_generic_sample_reader_ptr Gets the number of segments available to read from the reader. This is an inherited function from GenericReaderPtr. ```cpp daq::SizeT getAvailableCount () const ``` -------------------------------- ### Folder and Input/Output Management Source: https://docs.opendaq.com/doxygen/class_instance_ptr-members APIs for managing folders and input/output related structures. ```APIDOC ## GET /folders/inputs/outputs ### Description Retrieves the folder for inputs and outputs. ### Method GET ### Endpoint /folders/inputs/outputs ### Response #### Success Response (200) - **folder** (object) - The input/output folder object. #### Response Example ```json { "folder": { "name": "InputOutputFolder", "id": "io_folder" } } ``` ``` -------------------------------- ### Get Metadata Field Value Source: https://docs.opendaq.com/doxygen/struct_i_property_metadata_read_args Gets the current value of a metadata field. This is essential for reading the state of metadata within the opendaq system. ```C++ virtual ErrCode INTERFACE_FUNC | getValue (IBaseObject **value)=0 ``` -------------------------------- ### Get Available Operation Modes Source: https://docs.opendaq.com/doxygen/struct_i_device Gets a list of all operation modes that the device supports. The output is an IList containing the available operation modes. ```cpp virtual ErrCode INTERFACE_FUNC getAvailableOperationModes(IList ** _availableOpModes_) ``` -------------------------------- ### Device Creation and Configuration Source: https://docs.opendaq.com/doxygen/class_generic_device_ptr Provides methods for creating default configuration objects for adding devices and retrieving available device types. ```APIDOC ## POST /devices/default-config ### Description Creates a default configuration object that can be used when adding a device. This object contains default settings for Device, Streaming, and general add-device configurations. ### Method POST ### Endpoint /devices/default-config ### Parameters #### Query Parameters None #### Request Body None ### Request Example ```json { "message": "POST request to create default add device configuration" } ``` ### Response #### Success Response (200) - **configObject** (object) - The configuration object containing default settings for adding a device. It includes 'General', 'Device', and 'Streaming' sections. #### Response Example ```json { "configObject": { "General": { "AutomaticallyConnectStreaming": true }, "Device": { "": { ... }, "": { ... } }, "Streaming": { "": { ... }, "": { ... } } } } ``` ``` ```APIDOC ## GET /devices/types ### Description Retrieves a dictionary of all available device types supported by the system. This is useful for understanding which devices can be added and their configurations. ### Method GET ### Endpoint /devices/types ### Parameters #### Query Parameters None ### Request Example ```json { "message": "GET request to retrieve available device types" } ``` ### Response #### Success Response (200) - **deviceTypes** (dict) - A dictionary where keys are device type IDs (string) and values are device type objects. #### Response Example ```json { "deviceTypes": { "NativeSerial": { ... }, "OpcUa": { ... } } } ``` ``` -------------------------------- ### Property Manipulation in openDAQ Source: https://docs.opendaq.com/doxygen/struct_i_input_port Handles property operations for openDAQ objects. Includes functions to get the class name, set and get property values, retrieve selected property values, clear property values, check for property existence, get property objects, and add properties. ```C++ virtual ErrCode INTERFACE_FUNC | getClassName (IString **className)=0 | Gets the name of the class the Property object was constructed with. More... virtual ErrCode INTERFACE_FUNC | setPropertyValue (IString *propertyName, IBaseObject *value)=0 | Sets the value of the Property with the given name. More... virtual ErrCode INTERFACE_FUNC | getPropertyValue (IString *propertyName, IBaseObject **value)=0 | Gets the value of the Property with the given name. More... virtual ErrCode INTERFACE_FUNC | getPropertySelectionValue (IString *propertyName, IBaseObject **value)=0 | Gets the selected value of the Property, if the Property is a Selection property. More... virtual ErrCode INTERFACE_FUNC | clearPropertyValue (IString *propertyName)=0 | Clears the Property value from the Property object. More... virtual ErrCode INTERFACE_FUNC | hasProperty (IString *propertyName, Bool *hasProperty)=0 | Checks if the Property object contains a property named `propertyName`. More... virtual ErrCode INTERFACE_FUNC | getProperty (IString *propertyName, IProperty **property)=0 | Gets the Property with the given `propertyName`. More... virtual ErrCode INTERFACE_FUNC | addProperty (IProperty *property)=0 | Adds the property to the Property object. More... virtual ErrCode INTERFACE_FUNC | removeProperty (IString *propertyName)=0 ``` -------------------------------- ### Get Product Instance URI (C++) Source: https://docs.opendaq.com/doxygen/struct_i_device_info Retrieves the globally unique resource identifier for the product instance. The recommended format is /, where the string is unique for that manufacturer. ```cpp virtual ErrCode INTERFACE_FUNC | getProductInstanceUri (IString **productInstanceUri)=0 ``` -------------------------------- ### Add Discovery Server Source: https://docs.opendaq.com/doxygen/struct_i_instance_builder Adds a discovery server to the openDAQ context. The 'mdns' server is supported by default but must be explicitly added to the instance builder to be enabled. ```cpp virtual ErrCode INTERFACE_FUNC | addDiscoveryServer (IString *serverName)=0 ``` -------------------------------- ### Get Block Size (C++) Source: https://docs.opendaq.com/doxygen/struct_i_block_reader_builder Gets the current block size configuration. This function is part of the OpenDA library and is declared as a pure virtual function. ```cpp virtual ErrCode INTERFACE_FUNC | getBlockSize (SizeT *size)=0 ``` -------------------------------- ### Get Enumerator Count (C++) Source: https://docs.opendaq.com/doxygen/class_enumeration_type_ptr Gets the total number of enumerators present within the Enumeration Type. This function returns a SizeT representing the count. ```cpp SizeT | getCount () const ``` -------------------------------- ### GenericMirroredDevicePtr Methods Source: https://docs.opendaq.com/doxygen/class_generic_mirrored_device_ptr-members This section details the methods available for GenericMirroredDevicePtr, including adding devices and managing connections. ```APIDOC ## GenericMirroredDevicePtr Methods ### Description Provides methods for managing devices within the OpenDAQS framework, including adding single devices or multiple devices with optional configurations and error handling. ### Method - `addDevice` - `addDevices` ### Endpoint N/A (This is a class method, not a REST endpoint) ### Parameters #### addDevice - **connectionString** (daq::StringPtr) - Required - The connection string for the device. - **config** (daq::PropertyObjectPtr) - Optional - Configuration object for the device. #### addDevices - **connectionArgs** (daq::DictPtr< daq::IString, daq::IPropertyObject >) - Required - A dictionary of connection arguments for multiple devices. - **errCodes** (daq::DictPtr< daq::IString, daq::IInteger >) - Optional - A dictionary to store error codes for each connection attempt. - **errorInfos** (daq::DictPtr< daq::IString, daq::IErrorInfo >) - Optional - A dictionary to store detailed error information for each connection attempt. ### Request Example ```json // addDevice example (conceptual) const daq::GenericDevicePtr device = mirroredDevicePtr.addDevice("opc://localhost/Device1"); // addDevices example (conceptual) const daq::DictPtr connections = ...; const daq::DictPtr errors = ...; daq::GenericDevicePtr addedDevices = mirroredDevicePtr.addDevices(connections, errors); ``` ### Response #### Success Response - **addDevice**: Returns a `GenericDevicePtr` representing the added device. - **addDevices**: Returns a `GenericDevicePtr` representing the collection of added devices. #### Response Example ```json // Success response for addDevice (conceptual) { "devicePtr": "" } // Success response for addDevices (conceptual) { "devicesPtr": "" } ``` ``` -------------------------------- ### Get Overlap (C++) Source: https://docs.opendaq.com/doxygen/struct_i_block_reader_builder Gets the current overlap size configuration between data blocks. This function is part of the OpenDA library and is declared as a pure virtual function. ```cpp virtual ErrCode INTERFACE_FUNC | getOverlap (SizeT *overlap)=0 ``` -------------------------------- ### Begin Batch Update Source: https://docs.opendaq.com/doxygen/struct_i_channel Initiates a batch configuration mode for the object. All subsequent modifications are batched until `endUpdate` is called. ```cpp virtual ErrCode INTERFACE_FUNC | beginUpdate ()=0 ``` -------------------------------- ### Get Signal from Block Reader (C++) Source: https://docs.opendaq.com/doxygen/struct_i_block_reader_builder Gets the signal associated with the block reader. This function is part of the OpenDA library and is declared as a pure virtual function. ```cpp virtual ErrCode INTERFACE_FUNC | getSignal (ISignal **signal)=0 ``` -------------------------------- ### Add Server to Device (C++) Source: https://docs.opendaq.com/doxygen/struct_i_mirrored_device_config Creates and adds a server to the device with a specified unique type ID and configuration. The function returns the newly created server object. ```cpp virtual ErrCode INTERFACE_FUNC | addServer (IString *typeId, IPropertyObject *config, IServer **server)=0 | Creates and adds to the device a server with the provided unique type ID and returns it. More... ``` -------------------------------- ### Configuration Management Source: https://docs.opendaq.com/doxygen/class_generic_device_ptr Save and load device configurations. ```APIDOC ## GET /device/configuration/save ### Description Saves the configuration of the device to string. ### Method GET ### Endpoint /device/configuration/save ### Parameters #### Query Parameters None ### Request Example None ### Response #### Success Response (200) - **configuration** (daq::StringPtr) - The saved device configuration as a string. #### Response Example ```json { "configuration": "..." } ``` ``` ```APIDOC ## POST /device/configuration/load ### Description Loads the configuration of the device from string. ### Method POST ### Endpoint /device/configuration/load ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **configuration** (daq::StringPtr) - Required - The device configuration string to load. - **config** (daq::UpdateParametersPtr) - Optional - Update parameters for loading the configuration. ### Request Example ```json { "configuration": "...", "config": { "updateMode": "Replace" } } ``` ### Response #### Success Response (200) - **status** (string) - Indicates success or failure of the operation. #### Response Example ```json { "status": "Configuration loaded successfully." } ``` ``` -------------------------------- ### Get Wrapped Interface Pointer (C++) Source: https://docs.opendaq.com/doxygen/class_enumeration_type_ptr Gets the raw pointer to the interface currently managed by the smart pointer. Returns nullptr if the smart pointer is empty. ```cpp T * | getObject () const ``` -------------------------------- ### Create Scheduler Instance (C++) Source: https://docs.opendaq.com/doxygen/group__opendaq__scheduler__factories Demonstrates how to create a Scheduler instance with a specified number of worker threads. The logger is a required dependency. If numWorkers is 0, the system's maximum concurrency is utilized. ```C++ /** * @brief Creates an instance of a Scheduler with the specified amount of numWorker threads. * * @param logger The logger instance to use for the scheduler. * @param numWorkers The amount of worker threads. If 0 then maximum number of concurrent threads supported by the implementation is used. * @return A Scheduler instance with the specified amount of worker threads. */ SchedulerPtr Scheduler(LoggerPtr logger, SizeT numWorkers = 0); ``` -------------------------------- ### Get Dimension Unit (C++) Source: https://docs.opendaq.com/doxygen/struct_i_dimension_builder Gets the unit of the dimension's labels. This function retrieves the current unit associated with the dimension. ```cpp virtual ErrCode INTERFACE_FUNC getUnit (IUnit **unit)=0 ``` -------------------------------- ### Get Skip Events (C++) Source: https://docs.opendaq.com/doxygen/struct_i_block_reader_builder Gets the current setting for skipping events during data processing. This function is part of the OpenDA library and is declared as a pure virtual function. ```cpp virtual ErrCode INTERFACE_FUNC | getSkipEvents (Bool *skipEvents)=0 ``` -------------------------------- ### Get Discovery Servers List Source: https://docs.opendaq.com/doxygen/struct_i_instance_builder Fetches a list of discovery server names. The output is a pointer to an IList object. ```cpp virtual ErrCode INTERFACE_FUNC getDiscoveryServers(IList** _serverNames_) pure virtual ``` -------------------------------- ### Get Read Mode (C++) Source: https://docs.opendaq.com/doxygen/struct_i_block_reader_builder Gets the current read mode, which can be Unscaled, Scaled, or RawValue. This function is part of the OpenDA library and is declared as a pure virtual function. ```cpp virtual ErrCode INTERFACE_FUNC | getReadMode (ReadMode *mode)=0 ``` -------------------------------- ### Instance Builder Core Methods Source: https://docs.opendaq.com/doxygen/struct_i_instance_builder-members Core methods for building and managing the lifecycle of an OpenDAQ instance. ```APIDOC ## Instance Builder Core Methods ### Description Core methods for initializing, building, and managing the lifecycle of an OpenDAQ instance. ### Methods #### `build(IInstance **instance)` Builds and returns the configured OpenDAQ instance. #### `dispose()` Disposes of the instance builder and releases resources. #### `enableStandardProviders(Bool flag)` Enables or disables standard providers for the instance. ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None (Methods are typically called directly on an instance builder object) ### Request Example ```cpp // Example of building an instance IInstance* instance; instanceBuilder->build(&instance); // Example of disposing the builder instanceBuilder->dispose(); ``` ### Response #### Success Response (build method) - **instance** (IInstance*) - A pointer to the newly built OpenDAQ instance. #### Response Example ```cpp // For build method, 'instance' will be populated with a valid IInstance pointer upon success. ``` ```