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 SOMANET_JASPER_PRODUCT_CODE 0x00000501u
16#define DIGITAL_IO_PRODUCT_CODE 0x00000202u
17
18#define SENSODRIVE_VENDOR_ID 0x0000063au
19
22
24 public:
25 enum class Protocol { kUnspecified = 0, kMock, kEcat, kSerial };
26
28
29 inline static const std::map<std::pair<uint32_t, uint32_t>, Type>
44
45 virtual ~VirtualDevice() = default;
46
52 [[nodiscard]] virtual uint16_t get_device_id() const = 0;
53
59 [[nodiscard]] virtual uint16_t get_hardware_id() const = 0;
60
66 [[nodiscard]] virtual Protocol get_protocol() const {
68 }
69
75 [[nodiscard]] virtual Type get_device_type() const {
76 return Type::kUnspecified;
77 }
78
79 /******************************* PARAMETERS *******************************/
85 [[nodiscard]] virtual std::list<VirtualParameter*>
87
88 // Subclasses should override this with an O(1) check (e.g. map.empty()).
89 // The default falls back to building the full parameter list, which is O(n).
90 [[nodiscard]] virtual bool has_virtual_parameters() {
91 return !get_all_virtual_parameters().empty();
92 }
93
103 uint16_t index, uint8_t subindex) = 0;
104
105 /**************************** FILE OPERATIONS ****************************/
111 [[nodiscard]] virtual std::variant<MotionMasterError, std::list<std::string>>
113
121 [[nodiscard]] virtual std::variant<MotionMasterError, std::vector<uint8_t>>
122 read_file(const std::string& file_name) = 0;
123
134 const std::string& file_name, const std::vector<uint8_t>& content,
135 std::function<void(uint8_t)> progress_callback) = 0;
136
144 virtual MotionMasterError remove_file(const std::string& file_name) = 0;
145
146 // TODO(msankovic): Should be implemented through the fake OD entry system
147 /********************************* OTHER *********************************/
153 [[nodiscard]] virtual bool is_operational() const = 0;
154};
Definition motion_master_error.h:6
Definition virtual_device.h:23
Protocol
Definition virtual_device.h:25
@ kEcat
Definition virtual_device.h:25
@ kUnspecified
Definition virtual_device.h:25
@ kMock
Definition virtual_device.h:25
@ kSerial
Definition virtual_device.h:25
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:66
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:75
static const std::map< std::pair< uint32_t, uint32_t >, Type > device_type_map_
Definition virtual_device.h:30
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:27
@ kDigitalIo
Definition virtual_device.h:27
@ kCia402Drive
Definition virtual_device.h:27
@ kUnspecified
Definition virtual_device.h:27
virtual bool has_virtual_parameters()
Definition virtual_device.h:90
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 SOMANET_JASPER_PRODUCT_CODE
Definition virtual_device.h:15
#define DIGITAL_IO_PRODUCT_CODE
Definition virtual_device.h:16
#define SENSODRIVE_VENDOR_ID
Definition virtual_device.h:18