aboutsummaryrefslogtreecommitdiff
path: root/pw_rpc/public/pw_rpc/packet_meta.h
diff options
context:
space:
mode:
Diffstat (limited to 'pw_rpc/public/pw_rpc/packet_meta.h')
-rw-r--r--pw_rpc/public/pw_rpc/packet_meta.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/pw_rpc/public/pw_rpc/packet_meta.h b/pw_rpc/public/pw_rpc/packet_meta.h
index efa5e5dba..e6dce0269 100644
--- a/pw_rpc/public/pw_rpc/packet_meta.h
+++ b/pw_rpc/public/pw_rpc/packet_meta.h
@@ -16,6 +16,7 @@
#include <cstdint>
#include "pw_rpc/internal/packet.h"
+#include "pw_rpc/internal/packet.pwpb.h"
#include "pw_rpc/method_id.h"
#include "pw_rpc/service_id.h"
#include "pw_span/span.h"
@@ -40,6 +41,12 @@ class PacketMeta {
constexpr bool destination_is_server() const {
return destination_ == internal::Packet::kServer;
}
+ constexpr bool type_is_client_error() const {
+ return type_ == internal::pwpb::PacketType::CLIENT_ERROR;
+ }
+ constexpr bool type_is_server_error() const {
+ return type_ == internal::pwpb::PacketType::SERVER_ERROR;
+ }
// Note: this `payload` is only valid so long as the original `data` buffer
// passed to `PacketMeta::FromBuffer` remains valid.
constexpr ConstByteSpan payload() const { return payload_; }
@@ -50,11 +57,13 @@ class PacketMeta {
service_id_(internal::WrapServiceId(packet.service_id())),
method_id_(internal::WrapMethodId(packet.method_id())),
destination_(packet.destination()),
+ type_(packet.type()),
payload_(packet.payload()) {}
uint32_t channel_id_;
ServiceId service_id_;
MethodId method_id_;
internal::Packet::Destination destination_;
+ internal::pwpb::PacketType type_;
ConstByteSpan payload_;
};