Motion Master
Loading...
Searching...
No Matches
virtual_device.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <functional>
5#include <list>
6#include <map>
7#include <string>
8#include <variant>
9
10#define SYNAPTICON_VENDOR_ID 0x000022d2u
11#define SOMANET_NODE_PRODUCT_CODE 0x00000201u
12#define SOMANET_CIRCULO_PRODUCT_CODE 0x00000301u
13#define SOMANET_CIRCULO_SMM_PRODUCT_CODE 0x00000302u
14#define SOMANET_INTEGRO_PRODUCT_CODE 0x00000401u
15#define DIGITAL_IO_PRODUCT_CODE 0x00000202u
16
19
21 public:
22 enum class Protocol { kUnspecified = 0, kMock, kEcat, kSerial };
23
25
26 inline static const std::map<std::pair<uint32_t, uint32_t>, Type>
37
38 virtual ~VirtualDevice() = default;
39
45 [[nodiscard]] virtual uint16_t get_device_id() const = 0;
46
52 [[nodiscard]] virtual uint16_t get_hardware_id() const = 0;
53
59 [[nodiscard]] virtual Protocol get_protocol() const {
61 }
62
68 [[nodiscard]] virtual Type get_device_type() const {
69 return Type::kUnspecified;
70 }
71
72 /******************************* PARAMETERS *******************************/
78 [[nodiscard]] virtual std::list<VirtualParameter*>
80
90 uint16_t index, uint8_t subindex) = 0;
91
92 /**************************** FILE OPERATIONS ****************************/
98 [[nodiscard]] virtual std::variant<MotionMasterError, std::list<std::string>>
100
108 [[nodiscard]] virtual std::variant<MotionMasterError, std::vector<uint8_t>>
109 read_file(const std::string& file_name) = 0;
110
121 const std::string& file_name, const std::vector<uint8_t>& content,
122 std::function<void(uint8_t)> progress_callback) = 0;
123
131 virtual MotionMasterError remove_file(const std::string& file_name) = 0;
132
133 // TODO: Should be implemented through the fake OD entry system
134 /********************************* OTHER *********************************/
140 [[nodiscard]] virtual bool is_operational() const = 0;
141};
Definition: motion_master_error.h:6
Definition: virtual_device.h:20
Protocol
Definition: virtual_device.h:22
virtual uint16_t get_hardware_id() const =0
Get the hardware ID.
virtual Protocol get_protocol() const
Get the protocol the device uses.
Definition: virtual_device.h:59
virtual std::variant< MotionMasterError, std::list< std::string > > get_file_list()=0
Get the list of available files on the device.
virtual std::list< VirtualParameter * > get_all_virtual_parameters()=0
Get all available configuration parameters on the virtual device.
virtual MotionMasterError remove_file(const std::string &file_name)=0
Remove the file from the flash memory.
virtual MotionMasterError write_file(const std::string &file_name, const std::vector< uint8_t > &content, std::function< void(uint8_t)> progress_callback)=0
Write the file to the flash memory.
virtual std::variant< MotionMasterError, std::vector< uint8_t > > read_file(const std::string &file_name)=0
Get the file content from a file from the flash memory.
virtual Type get_device_type() const
Get the device type.
Definition: virtual_device.h:68
static const std::map< std::pair< uint32_t, uint32_t >, Type > device_type_map_
Definition: virtual_device.h:27
virtual bool is_operational() const =0
Check if the device is operational.
virtual ~VirtualDevice()=default
virtual VirtualParameter * get_virtual_parameter(uint16_t index, uint8_t subindex)=0
Get a configuration parameter.
Type
Definition: virtual_device.h:24
virtual uint16_t get_device_id() const =0
Get the device ID.
Definition: virtual_parameter.h:9
uint16_t index
Definition: co_dictionary.h:0
#define SOMANET_INTEGRO_PRODUCT_CODE
Definition: virtual_device.h:14
#define SOMANET_CIRCULO_PRODUCT_CODE
Definition: virtual_device.h:12
#define SYNAPTICON_VENDOR_ID
Definition: virtual_device.h:10
#define SOMANET_CIRCULO_SMM_PRODUCT_CODE
Definition: virtual_device.h:13
#define SOMANET_NODE_PRODUCT_CODE
Definition: virtual_device.h:11
#define DIGITAL_IO_PRODUCT_CODE
Definition: virtual_device.h:15