Motion Master 6.0.0-alpha.86
Next-generation motion control software
Loading...
Searching...
No Matches
integro_variant.h
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <cstdint>
5#include <expected>
6#include <nlohmann/json_fwd.hpp>
7#include <optional>
8#include <span>
9#include <string>
10#include <string_view>
11#include <vector>
12
13namespace mm::node {
14
48
54enum class VariantOperationMode : uint16_t {
55 kPassive = 0x51,
56 kTrial = 0x53,
57 kProduction = 0x55,
58 kLive = 0x57,
59};
60
62std::string_view toString(VariantOperationMode mode);
63
70 uint16_t id = 0;
71 std::string_view category;
72 std::string_view meaning;
73
76 std::span<const std::string_view> socVariables;
77
83 std::span<const uint16_t> incompatibleOptionIds;
84
87 std::span<const std::string_view> mpnSegmentCodes;
88};
89
104std::span<const IntegroVariantOption> integroVariantOptions();
105
115
117void to_json(nlohmann::json& j, const IntegroVariantOption& option);
118
124 uint32_t fileVersion = 0;
125 std::array<uint8_t, 64> signature{};
126 std::array<uint8_t, 12> chipId{};
127 std::string serialNumber;
128 std::string macAddress;
129 uint32_t customerId = 0;
130 uint16_t operationMode = 0;
131 std::vector<uint16_t> optionIds;
132};
133
139inline constexpr uint16_t kMaxVariantOptions = 32;
140
153std::expected<IntegroVariant, std::string> parseIntegroVariant(std::span<const uint8_t> content);
154
167std::optional<uint16_t> variantFieldbusProtocol(const IntegroVariant& variant);
168
175void to_json(nlohmann::json& j, const IntegroVariant& variant);
176
177} // namespace mm::node
Definition bus_health_source.h:7
std::optional< uint16_t > variantFieldbusProtocol(const IntegroVariant &variant)
The selected fieldbus protocol, for the tail of a full firmware descriptor (specification ยง3....
Definition integro_variant.cc:301
std::string_view toString(FirmwareMatch match)
What a match is called, for a message or a JSON body: "none", "assembly", "device".
Definition firmware_package.cc:295
const IntegroVariantOption * integroVariantOption(uint16_t id)
Looks a code up in the catalogue.
Definition integro_variant.cc:234
void to_json(nlohmann::json &j, const Cia402Status &s)
Serialises a Cia402Status. Emits state/modeName as human-readable strings alongside the numeric statu...
Definition cia402_drive.cc:13
VariantOperationMode
How the drive treats its variant options (firmware OPTIONS_MODE_*).
Definition integro_variant.h:54
constexpr uint16_t kMaxVariantOptions
The most options a file may carry (firmware MAX_VARIANTS_COUNT).
Definition integro_variant.h:139
std::span< const IntegroVariantOption > integroVariantOptions()
The whole catalogue, in code order.
Definition integro_variant.cc:232
std::expected< IntegroVariant, std::string > parseIntegroVariant(std::span< const uint8_t > content)
Decodes content as a .variant file.
Definition integro_variant.cc:255
One entry of the Integro runtime-variant option catalogue.
Definition integro_variant.h:69
std::string_view category
What the option selects, e.g. "Fieldbus Protocol".
Definition integro_variant.h:71
std::span< const uint16_t > incompatibleOptionIds
Definition integro_variant.h:83
std::span< const std::string_view > mpnSegmentCodes
Definition integro_variant.h:87
std::span< const std::string_view > socVariables
Definition integro_variant.h:76
std::string_view meaning
Which choice within that category, e.g. "EtherCAT".
Definition integro_variant.h:72
A parsed .variant file.
Definition integro_variant.h:123
std::vector< uint16_t > optionIds
Option codes, in the order the file lists them.
Definition integro_variant.h:131
std::array< uint8_t, 64 > signature
Opaque; verified by the drive, never here.
Definition integro_variant.h:125
uint16_t operationMode
Raw VariantOperationMode value.
Definition integro_variant.h:130
std::string serialNumber
The Integro's serial number, e.g. "9004-02-...".
Definition integro_variant.h:127
uint32_t customerId
Who the device was licensed to.
Definition integro_variant.h:129
std::string macAddress
Colon-separated, e.g. "40:49:8A:01:21:D6".
Definition integro_variant.h:128
std::array< uint8_t, 12 > chipId
netX chip id this file was issued for.
Definition integro_variant.h:126
uint32_t fileVersion
Format version; 1 in every file seen so far.
Definition integro_variant.h:124