Voyant API 0.8.0
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 Carbon = 3,
20 Simulated = 255
21 // Add more classes as we develop additional products
22};
23
29DeviceClass deviceClassFromDeviceId(const std::string &device_id);
30
36uint16_t deviceNumberFromDeviceId(const std::string &device_id);
37
44class VoyantHeaderWrapper : public CapnpWrapper<VoyantHeader>
45{
46private:
47 MessageType message_type_ = MessageType::UNKNOWN;
48 int64_t timestamp_seconds_ = 0;
50 uint32_t frame_index_ = 0;
52 uint16_t device_number_ = 0;
57
58public:
63
67 ~VoyantHeaderWrapper() override = default;
68
73 void fromProto(VoyantHeader::Reader reader) override;
74
79 void toProto(VoyantHeader::Builder &builder) const override;
80
85 void debugString(std::ostream &os) const override;
86
87 // Getters
92 std::string deviceId() const;
93
99
104 uint16_t deviceNumber() const { return device_number_; }
105
111
116 int64_t timestampSeconds() const { return timestamp_seconds_; }
117
123
128 uint32_t frameIndex() const { return frame_index_; }
129
135
141
147
153
159
165
171
177
178 // Setters
183 void setDeviceClass(DeviceClass value) { device_class_ = value; }
184
189 void setDeviceNumber(uint16_t value) { device_number_ = value; }
190
195 void setMessageType(MessageType value) { message_type_ = value; }
196
201 void setTimestampSeconds(int64_t value) { timestamp_seconds_ = value; }
202
207 void setTimestampNanoseconds(int32_t value) { timestamp_nanoseconds_ = value; }
208
213 void setFrameIndex(uint32_t value) { frame_index_ = value; }
214
224 bool setVersion(uint8_t major,
225 uint8_t minor,
226 uint8_t patch,
227 VersionStatus status,
228 VersionComponent component);
229};
Base template class for Cap'n Proto wrappers.
Definition capnp_wrapper.h:23
Wrapper for VoyantHeader messages.
Definition voyant_header_wrapper.hpp:45
MessageType message_type_
Definition voyant_header_wrapper.hpp:47
int32_t timestampNanoseconds() const
Get timestamp nanoseconds.
Definition voyant_header_wrapper.hpp:122
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.
int32_t timestamp_nanoseconds_
Definition voyant_header_wrapper.hpp:49
void setMessageType(MessageType value)
Set message type.
Definition voyant_header_wrapper.hpp:195
uint16_t device_number_
Definition voyant_header_wrapper.hpp:52
uint32_t frame_index_
Definition voyant_header_wrapper.hpp:50
VoyantVersionWrapper & apiVersionMut()
Get mutable API version object.
Definition voyant_header_wrapper.hpp:152
int64_t timestamp_seconds_
Definition voyant_header_wrapper.hpp:48
void setTimestampNanoseconds(int32_t value)
Set timestamp nanoseconds.
Definition voyant_header_wrapper.hpp:207
uint32_t frameIndex() const
Get frame index.
Definition voyant_header_wrapper.hpp:128
VoyantVersionWrapper & protoVersionMut()
Get mutable protocol version object.
Definition voyant_header_wrapper.hpp:140
const VoyantVersionWrapper & hdlVersion() const
Get HDL version information.
Definition voyant_header_wrapper.hpp:170
void setDeviceNumber(uint16_t value)
Set device number.
Definition voyant_header_wrapper.hpp:189
void setDeviceClass(DeviceClass value)
Set device class.
Definition voyant_header_wrapper.hpp:183
VoyantVersionWrapper proto_version_
Definition voyant_header_wrapper.hpp:53
~VoyantHeaderWrapper() override=default
Destructor.
int64_t timestampSeconds() const
Get timestamp seconds.
Definition voyant_header_wrapper.hpp:116
MessageType messageType() const
Get message type.
Definition voyant_header_wrapper.hpp:110
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:164
VoyantVersionWrapper & hdlVersionMut()
Get mutable HDL version object.
Definition voyant_header_wrapper.hpp:176
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:104
void setFrameIndex(uint32_t value)
Set frame index.
Definition voyant_header_wrapper.hpp:213
void debugString(std::ostream &os) const override
Generate a debug string representation.
VoyantVersionWrapper api_version_
Definition voyant_header_wrapper.hpp:54
DeviceClass deviceClass() const
Get device class.
Definition voyant_header_wrapper.hpp:98
VoyantVersionWrapper hdl_version_
Definition voyant_header_wrapper.hpp:56
DeviceClass device_class_
Definition voyant_header_wrapper.hpp:51
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:201
VoyantVersionWrapper firmware_version_
Definition voyant_header_wrapper.hpp:55
const VoyantVersionWrapper & apiVersion() const
Get API version information.
Definition voyant_header_wrapper.hpp:146
const VoyantVersionWrapper & firmwareVersion() const
Get firmware version information.
Definition voyant_header_wrapper.hpp:158
const VoyantVersionWrapper & protoVersion() const
Get protocol version information.
Definition voyant_header_wrapper.hpp:134
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.
@ Simulated
Simulated / test.
@ Unknown
Unknown device class (default)
@ Carbon
Carbon device class [IN DEVELOPMENT].
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