Voyant API 0.2.1
Loading...
Searching...
No Matches
voyant_version_wrapper.hpp
Go to the documentation of this file.
1// Copyright (c) 2024-2025 Voyant Photonics, Inc.
2// All rights reserved.
3
4#pragma once
5#include "../capnp_wrapper.h"
6#include "header.capnp.h"
7#include <cstdint>
8#include <string>
9
13enum class VersionComponent : uint8_t
14{
15 Unknown = 0x0,
16 Proto = 0x1,
17 Api = 0x2,
18 Firmware = 0x3,
19 Hdl = 0x4
20};
21
27enum class VersionStatus : uint8_t
28{
29 Unknown = 0x0,
30 Development = 0x1,
31 Alpha = 0x2,
32 Beta = 0x3,
33 ReleaseCandidate = 0x4,
34 Stable = 0x5,
35 Deprecated = 0x6,
36 Legacy = 0x7
37};
38
42class VoyantVersionWrapper : public CapnpWrapper<VoyantVersion>
43{
44private:
45 uint8_t major_ = 0;
46 uint8_t minor_ = 0;
47 uint8_t patch_ = 0;
50
51public:
56
60 ~VoyantVersionWrapper() override = default;
61
71 uint8_t minor,
72 uint8_t patch,
75
88 static VoyantVersionWrapper fromU32Hash(uint32_t hash);
89
94 void fromProto(VoyantVersion::Reader reader) override;
95
100 void toProto(VoyantVersion::Builder &builder) const override;
101
106 void debugString(std::ostream &os) const override;
107
108 // Getters
113 uint8_t major() const { return major_; }
114
119 uint8_t minor() const { return minor_; }
120
125 uint8_t patch() const { return patch_; }
126
131 VersionStatus status() const { return status_; }
132
137 VersionComponent component() const { return component_; }
138
139 // Setters
144 void setMajor(uint8_t major) { major_ = major; }
145
150 void setMinor(uint8_t minor) { minor_ = minor; }
151
156 void setPatch(uint8_t patch) { patch_ = patch; }
157
163
169
170 // Helper methods
175 uint8_t flags() const;
176
181 void setFlags(uint8_t flags);
182
187 std::string toString() const;
188
193 std::string toVerboseString() const;
194
206 uint32_t toU32Hash() const;
207
215 bool isCompatible(const VoyantVersionWrapper &other) const;
216};
Base template class for Cap'n Proto wrappers.
Definition capnp_wrapper.h:23
Wrapper for VoyantVersion messages.
Definition voyant_version_wrapper.hpp:43
static VoyantVersionWrapper fromU32Hash(uint32_t hash)
Creates a VoyantVersionWrapper from a 32-bit hash.
void fromProto(VoyantVersion::Reader reader) override
Update wrapper fields from a reader.
uint8_t patch() const
Get patch version number.
Definition voyant_version_wrapper.hpp:125
void setFlags(uint8_t flags)
Set status and component from combined flags.
uint32_t toU32Hash() const
Convert version to a 32-bit hash.
void setComponent(VersionComponent component)
Set component type.
Definition voyant_version_wrapper.hpp:168
void debugString(std::ostream &os) const override
Generate a debug string representation.
void setMajor(uint8_t major)
Set major version number.
Definition voyant_version_wrapper.hpp:144
void toProto(VoyantVersion::Builder &builder) const override
Write wrapper fields to a builder.
std::string toVerboseString() const
Get detailed string representation.
VersionStatus status() const
Get version status.
Definition voyant_version_wrapper.hpp:131
void setPatch(uint8_t patch)
Set patch version number.
Definition voyant_version_wrapper.hpp:156
std::string toString() const
Get string representation in semver format.
VoyantVersionWrapper(uint8_t major, uint8_t minor, uint8_t patch, VersionStatus status, VersionComponent component)
Creates a new version with the specified components.
uint8_t major() const
Get major version number.
Definition voyant_version_wrapper.hpp:113
VoyantVersionWrapper()=default
Default constructor.
uint8_t minor() const
Get minor version number.
Definition voyant_version_wrapper.hpp:119
VersionComponent component() const
Get component type.
Definition voyant_version_wrapper.hpp:137
void setStatus(VersionStatus status)
Set version status.
Definition voyant_version_wrapper.hpp:162
uint8_t flags() const
Get combined status and component flags.
void setMinor(uint8_t minor)
Set minor version number.
Definition voyant_version_wrapper.hpp:150
~VoyantVersionWrapper() override=default
Destructor.
bool isCompatible(const VoyantVersionWrapper &other) const
Checks compatibility between proto versions.
Definition header.capnp.h:269
Definition header.capnp.h:232
VersionStatus
Version status, stored in bits 3-0 of the flags field.
Definition voyant_version_wrapper.hpp:28
@ Deprecated
Deprecated version - Maintained but scheduled for removal.
@ Beta
Beta version - Feature complete but in testing.
@ Legacy
Legacy version - No longer maintained.
@ Development
Development version - Not for external use.
@ Alpha
Alpha version - Early testing phase.
@ Unknown
Unknown version status (default)
@ ReleaseCandidate
Release Candidate - Final testing.
@ Stable
Stable version - Production-ready.
VersionComponent
Component type for a version, stored in bits 7-4 of the flags field.
Definition voyant_version_wrapper.hpp:14
@ Api
Application interface software components.
@ Unknown
Unknown component type (default)
@ Firmware
Device embedded software.
@ Proto
Protocol definitions and message formats.
@ Hdl
Hardware configuration for the FPGA.