Voyant API 0.2.1
Loading...
Searching...
No Matches
voyant_header_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"
8#include <cstdint>
9#include <string>
10
14enum class DeviceClass : uint8_t
15{
16 Unknown = 0,
17 Mdl = 1,
18 Ldk = 2
19 // Add more classes as we develop additional products
20};
21
27DeviceClass deviceClassFromDeviceId(const std::string &device_id);
28
34uint16_t deviceNumberFromDeviceId(const std::string &device_id);
35
42class VoyantHeaderWrapper : public CapnpWrapper<VoyantHeader>
43{
44private:
45 MessageType message_type_ = MessageType::UNKNOWN;
46 int64_t timestamp_seconds_ = 0;
47 int32_t timestamp_nanoseconds_ = 0;
48 uint32_t frame_index_ = 0;
49 DeviceClass device_class_ = DeviceClass::Unknown;
50 uint16_t device_number_ = 0;
51 VoyantVersionWrapper proto_version_;
52 VoyantVersionWrapper api_version_;
53 VoyantVersionWrapper firmware_version_;
54 VoyantVersionWrapper hdl_version_;
55
56public:
61
65 ~VoyantHeaderWrapper() override = default;
66
71 void fromProto(VoyantHeader::Reader reader) override;
72
77 void toProto(VoyantHeader::Builder &builder) const override;
78
83 void debugString(std::ostream &os) const override;
84
85 // Getters
90 std::string deviceId() const;
91
96 DeviceClass deviceClass() const { return device_class_; }
97
102 uint16_t deviceNumber() const { return device_number_; }
103
108 MessageType messageType() const { return message_type_; }
109
114 int64_t timestampSeconds() const { return timestamp_seconds_; }
115
120 int32_t timestampNanoseconds() const { return timestamp_nanoseconds_; }
121
126 uint32_t frameIndex() const { return frame_index_; }
127
132 const VoyantVersionWrapper &protoVersion() const { return proto_version_; }
133
138 VoyantVersionWrapper &protoVersionMut() { return proto_version_; }
139
144 const VoyantVersionWrapper &apiVersion() const { return api_version_; }
145
150 VoyantVersionWrapper &apiVersionMut() { return api_version_; }
151
156 const VoyantVersionWrapper &firmwareVersion() const { return firmware_version_; }
157
162 VoyantVersionWrapper &firmwareVersionMut() { return firmware_version_; }
163
168 const VoyantVersionWrapper &hdlVersion() const { return hdl_version_; }
169
174 VoyantVersionWrapper &hdlVersionMut() { return hdl_version_; }
175
176 // Setters
181 void setDeviceClass(DeviceClass value) { device_class_ = value; }
182
187 void setDeviceNumber(uint16_t value) { device_number_ = value; }
188
193 void setMessageType(MessageType value) { message_type_ = value; }
194
199 void setTimestampSeconds(int64_t value) { timestamp_seconds_ = value; }
200
205 void setTimestampNanoseconds(int32_t value) { timestamp_nanoseconds_ = value; }
206
211 void setFrameIndex(uint32_t value) { frame_index_ = value; }
212
222 bool setVersion(uint8_t major,
223 uint8_t minor,
224 uint8_t patch,
225 VersionStatus status,
226 VersionComponent component);
227};
Base template class for Cap'n Proto wrappers.
Definition capnp_wrapper.h:23
Wrapper for VoyantHeader messages.
Definition voyant_header_wrapper.hpp:43
int32_t timestampNanoseconds() const
Get timestamp nanoseconds.
Definition voyant_header_wrapper.hpp:120
bool setVersion(uint8_t major, uint8_t minor, uint8_t patch, VersionStatus status, VersionComponent component)
Helper method to set version details for a specific component.
void setMessageType(MessageType value)
Set message type.
Definition voyant_header_wrapper.hpp:193
VoyantVersionWrapper & apiVersionMut()
Get mutable API version object.
Definition voyant_header_wrapper.hpp:150
void setTimestampNanoseconds(int32_t value)
Set timestamp nanoseconds.
Definition voyant_header_wrapper.hpp:205
uint32_t frameIndex() const
Get frame index.
Definition voyant_header_wrapper.hpp:126
VoyantVersionWrapper & protoVersionMut()
Get mutable protocol version object.
Definition voyant_header_wrapper.hpp:138
const VoyantVersionWrapper & hdlVersion() const
Get HDL version information.
Definition voyant_header_wrapper.hpp:168
void setDeviceNumber(uint16_t value)
Set device number.
Definition voyant_header_wrapper.hpp:187
void setDeviceClass(DeviceClass value)
Set device class.
Definition voyant_header_wrapper.hpp:181
~VoyantHeaderWrapper() override=default
Destructor.
int64_t timestampSeconds() const
Get timestamp seconds.
Definition voyant_header_wrapper.hpp:114
MessageType messageType() const
Get message type.
Definition voyant_header_wrapper.hpp:108
void toProto(VoyantHeader::Builder &builder) const override
Write wrapper fields to a Cap'n Proto builder.
VoyantVersionWrapper & firmwareVersionMut()
Get mutable firmware version object.
Definition voyant_header_wrapper.hpp:162
VoyantVersionWrapper & hdlVersionMut()
Get mutable HDL version object.
Definition voyant_header_wrapper.hpp:174
void fromProto(VoyantHeader::Reader reader) override
Update wrapper fields from a Cap'n Proto reader.
uint16_t deviceNumber() const
Get device number.
Definition voyant_header_wrapper.hpp:102
void setFrameIndex(uint32_t value)
Set frame index.
Definition voyant_header_wrapper.hpp:211
void debugString(std::ostream &os) const override
Generate a debug string representation.
DeviceClass deviceClass() const
Get device class.
Definition voyant_header_wrapper.hpp:96
std::string deviceId() const
Get formatted device ID string.
VoyantHeaderWrapper()=default
Default constructor.
void setTimestampSeconds(int64_t value)
Set timestamp seconds.
Definition voyant_header_wrapper.hpp:199
const VoyantVersionWrapper & apiVersion() const
Get API version information.
Definition voyant_header_wrapper.hpp:144
const VoyantVersionWrapper & firmwareVersion() const
Get firmware version information.
Definition voyant_header_wrapper.hpp:156
const VoyantVersionWrapper & protoVersion() const
Get protocol version information.
Definition voyant_header_wrapper.hpp:132
Definition header.capnp.h:138
Definition header.capnp.h:86
Wrapper for VoyantVersion messages.
Definition voyant_version_wrapper.hpp:43
MessageType_811118aae8b7ce84
Definition header.capnp.h:24
DeviceClass deviceClassFromDeviceId(const std::string &device_id)
Extract device class from device ID string.
uint16_t deviceNumberFromDeviceId(const std::string &device_id)
Extract device number from device ID string.
DeviceClass
Device class types for Voyant hardware.
Definition voyant_header_wrapper.hpp:15
@ Ldk
Lark Dev Kit (legacy) device class.
@ Mdl
MeadowLark device class.
@ Unknown
Unknown device class (default)
VersionStatus
Version status, stored in bits 3-0 of the flags field.
Definition voyant_version_wrapper.hpp:28
VersionComponent
Component type for a version, stored in bits 7-4 of the flags field.
Definition voyant_version_wrapper.hpp:14