diff --git a/.idea/wxbox.iml b/.idea/wxbox.iml
index 3d5e0bc..9261e8c 100644
--- a/.idea/wxbox.iml
+++ b/.idea/wxbox.iml
@@ -22,6 +22,12 @@
+
+
+
+
+
+
diff --git a/Cargo.lock b/Cargo.lock
index e2d1090..33beb46 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -324,12 +324,6 @@ version = "1.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540"
-[[package]]
-name = "byteorder"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
-
[[package]]
name = "byteorder-lite"
version = "0.1.0"
@@ -362,6 +356,24 @@ dependencies = [
"pkg-config",
]
+[[package]]
+name = "capnp"
+version = "0.20.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "053b81915c2ce1629b8fb964f578b18cb39b23ef9d5b24120d0dfc959569a1d9"
+dependencies = [
+ "embedded-io",
+]
+
+[[package]]
+name = "capnpc"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1aa3d5f01e69ed11656d2c7c47bf34327ea9bfb5c85c7de787fcd7b6c5e45b61"
+dependencies = [
+ "capnp",
+]
+
[[package]]
name = "cast"
version = "0.3.0"
@@ -621,6 +633,12 @@ version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+[[package]]
+name = "embedded-io"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
+
[[package]]
name = "encoding_rs"
version = "0.8.35"
@@ -2261,28 +2279,6 @@ dependencies = [
"windows-sys 0.52.0",
]
-[[package]]
-name = "rmp"
-version = "0.8.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4"
-dependencies = [
- "byteorder",
- "num-traits",
- "paste",
-]
-
-[[package]]
-name = "rmp-serde"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db"
-dependencies = [
- "byteorder",
- "rmp",
- "serde",
-]
-
[[package]]
name = "rustc-demangle"
version = "0.1.24"
@@ -3628,6 +3624,15 @@ dependencies = [
"wxbox-nommer",
]
+[[package]]
+name = "wxbox-interchange"
+version = "0.1.0"
+dependencies = [
+ "capnp",
+ "capnpc",
+ "wxbox-ar2",
+]
+
[[package]]
name = "wxbox-nommer"
version = "0.1.0"
@@ -3657,7 +3662,6 @@ dependencies = [
"quick-xml",
"rayon",
"reqwest",
- "rmp-serde",
"serde",
"strum",
"strum_macros",
@@ -3669,6 +3673,7 @@ dependencies = [
"wxbox-ar2",
"wxbox-common",
"wxbox-grib2",
+ "wxbox-interchange",
"wxbox-pal",
]
diff --git a/crates/interchange/Cargo.toml b/crates/interchange/Cargo.toml
new file mode 100644
index 0000000..d526102
--- /dev/null
+++ b/crates/interchange/Cargo.toml
@@ -0,0 +1,15 @@
+[package]
+name = "wxbox-interchange"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+capnp = "0.20"
+wxbox-ar2 = { path = "../ar2", optional = true }
+
+[features]
+default = []
+ar2 = ["dep:wxbox-ar2"]
+
+[build-dependencies]
+capnpc = "0.20"
\ No newline at end of file
diff --git a/crates/interchange/build.rs b/crates/interchange/build.rs
new file mode 100644
index 0000000..93a432d
--- /dev/null
+++ b/crates/interchange/build.rs
@@ -0,0 +1,10 @@
+fn main() {
+ capnpc::CompilerCommand::new()
+ .output_path("src/")
+ .src_prefix("schemas")
+ .file("schemas/schema.capnp")
+ .file("schemas/digitalRadarData.capnp")
+ .file("schemas/tilerStatusReport.capnp")
+ .run()
+ .expect("capnp compiles");
+}
\ No newline at end of file
diff --git a/crates/interchange/schemas/README.md b/crates/interchange/schemas/README.md
new file mode 100644
index 0000000..27dbfbe
--- /dev/null
+++ b/crates/interchange/schemas/README.md
@@ -0,0 +1,9 @@
+# wxbox data interchange format
+The wxbox data interchange format is a fast and compact protocol for interchanging weather data.
+Primarily intended for compact representations of radar radials, it will also eventually be extended to other types of
+weather information.
+
+## Supported Data Contents
+| Data Type | File extension | `Content-Type` | Inner data union type |
+|----------------------------------------------------------|----------------|------------------------------------------|-----------------------|
+| Digital Radial Radar Data - Momentary - single elevation | wxrad | `application/x.wxbox-digital-radar-data` | `DigitalRadarData` |
\ No newline at end of file
diff --git a/crates/interchange/schemas/digitalRadarData.capnp b/crates/interchange/schemas/digitalRadarData.capnp
new file mode 100644
index 0000000..c05353f
--- /dev/null
+++ b/crates/interchange/schemas/digitalRadarData.capnp
@@ -0,0 +1,53 @@
+@0xf91dcf1c056cf08a;
+
+struct DigitalRadarData {
+ vcpNumber @0 :UInt16;
+ elevationNumber @1 :UInt8;
+
+ radials @2 :List(Radial);
+}
+
+struct Radial {
+ collectionTimestamp @0 :Int64;
+
+ azimuthNumber @1 :UInt16;
+ azimuthAngleDegrees @2 :Float32;
+ azimuthSpacingDegrees @3 :Float32;
+
+ radialStatus @4 :RadialStatus;
+
+ elevationNumber @5 :UInt8;
+ elevationDegrees @6 :Float32;
+
+ requestedProduct :union {
+ unavailable @7 :Void;
+ available @8 :MomentaryProduct;
+ }
+}
+
+enum RadialStatus {
+ elevationStart @0;
+ intermediateRadialData @1;
+ elevationEnd @2;
+ volumeScanStart @3;
+ volumeScanEnd @4;
+ elevationStartVCPFinal @5; # start of new elevation, last elevation in VCP
+}
+
+struct MomentaryProduct {
+ productMetadata @0 :MomentaryProductMeta;
+ data @1 :MomentaryProductData;
+}
+
+struct MomentaryProductMeta {
+ productName @0 :Text;
+}
+struct MomentaryProductData {
+ scale @0 :Float32;
+ offset @1 :Float32;
+
+ startRange @2 :UInt16;
+ sampleInterval @3 :UInt16;
+
+ values @4 :List(UInt8);
+}
\ No newline at end of file
diff --git a/crates/interchange/schemas/schema.capnp b/crates/interchange/schemas/schema.capnp
new file mode 100644
index 0000000..38f40c9
--- /dev/null
+++ b/crates/interchange/schemas/schema.capnp
@@ -0,0 +1,8 @@
+@0xf4ec6bdd2faa25e6;
+
+struct Message {
+ union {
+ tilerStatusReport @0 :import "tilerStatusReport.capnp".TilerStatusReport;
+ digitalRadarData @1 :import "digitalRadarData.capnp".DigitalRadarData;
+ }
+}
\ No newline at end of file
diff --git a/crates/interchange/schemas/tilerStatusReport.capnp b/crates/interchange/schemas/tilerStatusReport.capnp
new file mode 100644
index 0000000..0fdaab1
--- /dev/null
+++ b/crates/interchange/schemas/tilerStatusReport.capnp
@@ -0,0 +1,10 @@
+@0xa53697f84202e60f;
+
+struct TilerStatusReport {
+ cacheInfo @0 :CacheInfo;
+}
+
+struct CacheInfo {
+ grib2CacheEntries @0 :UInt64;
+ nexradCacheEntries @1 :UInt64;
+}
\ No newline at end of file
diff --git a/crates/interchange/src/ar2.rs b/crates/interchange/src/ar2.rs
new file mode 100644
index 0000000..6458614
--- /dev/null
+++ b/crates/interchange/src/ar2.rs
@@ -0,0 +1,19 @@
+use wxbox_ar2::Scan;
+pub fn serialize_scan_to_cif_message(scan: &Scan, elevation_number: u8) -> Vec {
+ let mut message = capnp::message::Builder::new_default();
+ let cif_message = message.init_root::();
+ let mut digital_radar_data = cif_message.init_digital_radar_data();
+
+ digital_radar_data.set_vcp_number(scan.coverage_pattern_number);
+ digital_radar_data.set_elevation_number(elevation_number);
+
+ // find the elevation the user requested
+ let maybe_elevation = scan.sweeps.iter().find(|u| u.elevation_number == elevation_number);
+ if let Some(elevation) = maybe_elevation {
+
+ } else {
+ digital_radar_data.reborrow().init_radials(0); // no elevation is signalled by an empty radials field
+ }
+
+ todo!()
+}
\ No newline at end of file
diff --git a/crates/interchange/src/digitalRadarData_capnp.rs b/crates/interchange/src/digitalRadarData_capnp.rs
new file mode 100644
index 0000000..0a4be41
--- /dev/null
+++ b/crates/interchange/src/digitalRadarData_capnp.rs
@@ -0,0 +1,1838 @@
+// @generated by the capnpc-rust plugin to the Cap'n Proto schema compiler.
+// DO NOT EDIT.
+// source: digitalRadarData.capnp
+
+
+pub mod digital_radar_data {
+ #[derive(Copy, Clone)]
+ pub struct Owned(());
+ impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+ impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+ pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+ impl <> ::core::marker::Copy for Reader<'_,> {}
+ impl <> ::core::clone::Clone for Reader<'_,> {
+ fn clone(&self) -> Self { *self }
+ }
+
+ impl <> ::capnp::traits::HasTypeId for Reader<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> {
+ fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+ Self { reader, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> {
+ fn from(reader: Reader<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <> ::core::fmt::Debug for Reader<'_,> {
+ fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+ core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> {
+ fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(reader.get_struct(default)?.into())
+ }
+ }
+
+ impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> {
+ fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+ self.reader
+ }
+ }
+
+ impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> {
+ fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+ self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> Reader<'a,> {
+ pub fn reborrow(&self) -> Reader<'_,> {
+ Self { .. *self }
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.reader.total_size()
+ }
+ #[inline]
+ pub fn get_vcp_number(self) -> u16 {
+ self.reader.get_data_field::(0)
+ }
+ #[inline]
+ pub fn get_elevation_number(self) -> u8 {
+ self.reader.get_data_field::(2)
+ }
+ #[inline]
+ pub fn get_radials(self) -> ::capnp::Result<::capnp::struct_list::Reader<'a,crate::digitalRadarData_capnp::radial::Owned>> {
+ ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn has_radials(&self) -> bool {
+ !self.reader.get_pointer_field(0).is_null()
+ }
+ }
+
+ pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+ impl <> ::capnp::traits::HasStructSize for Builder<'_,> {
+ const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 };
+ }
+ impl <> ::capnp::traits::HasTypeId for Builder<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> {
+ fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+ Self { builder, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> {
+ fn from(builder: Builder<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> {
+ fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+ self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> {
+ fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+ builder.init_struct(::STRUCT_SIZE).into()
+ }
+ fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into())
+ }
+ }
+
+ impl <> ::capnp::traits::SetterInput> for Reader<'_,> {
+ fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
+ }
+
+ impl <'a,> Builder<'a,> {
+ pub fn into_reader(self) -> Reader<'a,> {
+ self.builder.into_reader().into()
+ }
+ pub fn reborrow(&mut self) -> Builder<'_,> {
+ Builder { builder: self.builder.reborrow() }
+ }
+ pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+ self.builder.as_reader().into()
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.builder.as_reader().total_size()
+ }
+ #[inline]
+ pub fn get_vcp_number(self) -> u16 {
+ self.builder.get_data_field::(0)
+ }
+ #[inline]
+ pub fn set_vcp_number(&mut self, value: u16) {
+ self.builder.set_data_field::(0, value);
+ }
+ #[inline]
+ pub fn get_elevation_number(self) -> u8 {
+ self.builder.get_data_field::(2)
+ }
+ #[inline]
+ pub fn set_elevation_number(&mut self, value: u8) {
+ self.builder.set_data_field::(2, value);
+ }
+ #[inline]
+ pub fn get_radials(self) -> ::capnp::Result<::capnp::struct_list::Builder<'a,crate::digitalRadarData_capnp::radial::Owned>> {
+ ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn set_radials(&mut self, value: ::capnp::struct_list::Reader<'_,crate::digitalRadarData_capnp::radial::Owned>) -> ::capnp::Result<()> {
+ ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+ }
+ #[inline]
+ pub fn init_radials(self, size: u32) -> ::capnp::struct_list::Builder<'a,crate::digitalRadarData_capnp::radial::Owned> {
+ ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), size)
+ }
+ #[inline]
+ pub fn has_radials(&self) -> bool {
+ !self.builder.is_pointer_field_null(0)
+ }
+ }
+
+ pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+ impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+ fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+ Self { _typeless: typeless, }
+ }
+ }
+ impl Pipeline {
+ }
+ mod _private {
+ pub static ENCODED_NODE: [::capnp::Word; 71] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(124, 221, 74, 204, 88, 181, 51, 199),
+ ::capnp::word(23, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(138, 240, 108, 5, 28, 207, 29, 249),
+ ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(22, 0, 0, 0, 143, 0, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 66, 1, 0, 0),
+ ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(33, 0, 0, 0, 175, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(100, 105, 103, 105, 116, 97, 108, 82),
+ ::capnp::word(97, 100, 97, 114, 68, 97, 116, 97),
+ ::capnp::word(46, 99, 97, 112, 110, 112, 58, 68),
+ ::capnp::word(105, 103, 105, 116, 97, 108, 82, 97),
+ ::capnp::word(100, 97, 114, 68, 97, 116, 97, 0),
+ ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(12, 0, 0, 0, 3, 0, 4, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(69, 0, 0, 0, 82, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(68, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(80, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(1, 0, 0, 0, 2, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(77, 0, 0, 0, 130, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(76, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(88, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(2, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(85, 0, 0, 0, 66, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(80, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(108, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(118, 99, 112, 78, 117, 109, 98, 101),
+ ::capnp::word(114, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(101, 108, 101, 118, 97, 116, 105, 111),
+ ::capnp::word(110, 78, 117, 109, 98, 101, 114, 0),
+ ::capnp::word(6, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(6, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(114, 97, 100, 105, 97, 108, 115, 0),
+ ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(52, 61, 253, 131, 10, 228, 32, 210),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ];
+ pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+ match index {
+ 0 => ::introspect(),
+ 1 => ::introspect(),
+ 2 => <::capnp::struct_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+ _ => panic!("invalid field index {}", index),
+ }
+ }
+ pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+ }
+ pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+ encoded_node: &ENCODED_NODE,
+ nonunion_members: NONUNION_MEMBERS,
+ members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+ members_by_name: MEMBERS_BY_NAME,
+ };
+ pub static NONUNION_MEMBERS : &[u16] = &[0,1,2];
+ pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+ pub static MEMBERS_BY_NAME : &[u16] = &[1,2,0];
+ pub const TYPE_ID: u64 = 0xc733_b558_cc4a_dd7c;
+ }
+}
+
+pub mod radial {
+ #[derive(Copy, Clone)]
+ pub struct Owned(());
+ impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+ impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+ pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+ impl <> ::core::marker::Copy for Reader<'_,> {}
+ impl <> ::core::clone::Clone for Reader<'_,> {
+ fn clone(&self) -> Self { *self }
+ }
+
+ impl <> ::capnp::traits::HasTypeId for Reader<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> {
+ fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+ Self { reader, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> {
+ fn from(reader: Reader<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <> ::core::fmt::Debug for Reader<'_,> {
+ fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+ core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> {
+ fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(reader.get_struct(default)?.into())
+ }
+ }
+
+ impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> {
+ fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+ self.reader
+ }
+ }
+
+ impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> {
+ fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+ self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> Reader<'a,> {
+ pub fn reborrow(&self) -> Reader<'_,> {
+ Self { .. *self }
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.reader.total_size()
+ }
+ #[inline]
+ pub fn get_collection_timestamp(self) -> i64 {
+ self.reader.get_data_field::(0)
+ }
+ #[inline]
+ pub fn get_azimuth_number(self) -> u16 {
+ self.reader.get_data_field::(4)
+ }
+ #[inline]
+ pub fn get_azimuth_angle_degrees(self) -> f32 {
+ self.reader.get_data_field::(3)
+ }
+ #[inline]
+ pub fn get_azimuth_spacing_degrees(self) -> f32 {
+ self.reader.get_data_field::(4)
+ }
+ #[inline]
+ pub fn get_radial_status(self) -> ::core::result::Result {
+ ::core::convert::TryInto::try_into(self.reader.get_data_field::(5))
+ }
+ #[inline]
+ pub fn get_elevation_number(self) -> u8 {
+ self.reader.get_data_field::(20)
+ }
+ #[inline]
+ pub fn get_elevation_degrees(self) -> f32 {
+ self.reader.get_data_field::(6)
+ }
+ #[inline]
+ pub fn get_requested_product(self) -> crate::digitalRadarData_capnp::radial::requested_product::Reader<'a> {
+ self.reader.into()
+ }
+ }
+
+ pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+ impl <> ::capnp::traits::HasStructSize for Builder<'_,> {
+ const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 4, pointers: 1 };
+ }
+ impl <> ::capnp::traits::HasTypeId for Builder<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> {
+ fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+ Self { builder, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> {
+ fn from(builder: Builder<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> {
+ fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+ self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> {
+ fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+ builder.init_struct(::STRUCT_SIZE).into()
+ }
+ fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into())
+ }
+ }
+
+ impl <> ::capnp::traits::SetterInput> for Reader<'_,> {
+ fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
+ }
+
+ impl <'a,> Builder<'a,> {
+ pub fn into_reader(self) -> Reader<'a,> {
+ self.builder.into_reader().into()
+ }
+ pub fn reborrow(&mut self) -> Builder<'_,> {
+ Builder { builder: self.builder.reborrow() }
+ }
+ pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+ self.builder.as_reader().into()
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.builder.as_reader().total_size()
+ }
+ #[inline]
+ pub fn get_collection_timestamp(self) -> i64 {
+ self.builder.get_data_field::(0)
+ }
+ #[inline]
+ pub fn set_collection_timestamp(&mut self, value: i64) {
+ self.builder.set_data_field::(0, value);
+ }
+ #[inline]
+ pub fn get_azimuth_number(self) -> u16 {
+ self.builder.get_data_field::(4)
+ }
+ #[inline]
+ pub fn set_azimuth_number(&mut self, value: u16) {
+ self.builder.set_data_field::(4, value);
+ }
+ #[inline]
+ pub fn get_azimuth_angle_degrees(self) -> f32 {
+ self.builder.get_data_field::(3)
+ }
+ #[inline]
+ pub fn set_azimuth_angle_degrees(&mut self, value: f32) {
+ self.builder.set_data_field::(3, value);
+ }
+ #[inline]
+ pub fn get_azimuth_spacing_degrees(self) -> f32 {
+ self.builder.get_data_field::(4)
+ }
+ #[inline]
+ pub fn set_azimuth_spacing_degrees(&mut self, value: f32) {
+ self.builder.set_data_field::(4, value);
+ }
+ #[inline]
+ pub fn get_radial_status(self) -> ::core::result::Result {
+ ::core::convert::TryInto::try_into(self.builder.get_data_field::(5))
+ }
+ #[inline]
+ pub fn set_radial_status(&mut self, value: crate::digitalRadarData_capnp::RadialStatus) {
+ self.builder.set_data_field::(5, value as u16);
+ }
+ #[inline]
+ pub fn get_elevation_number(self) -> u8 {
+ self.builder.get_data_field::(20)
+ }
+ #[inline]
+ pub fn set_elevation_number(&mut self, value: u8) {
+ self.builder.set_data_field::(20, value);
+ }
+ #[inline]
+ pub fn get_elevation_degrees(self) -> f32 {
+ self.builder.get_data_field::(6)
+ }
+ #[inline]
+ pub fn set_elevation_degrees(&mut self, value: f32) {
+ self.builder.set_data_field::(6, value);
+ }
+ #[inline]
+ pub fn get_requested_product(self) -> crate::digitalRadarData_capnp::radial::requested_product::Builder<'a> {
+ self.builder.into()
+ }
+ #[inline]
+ pub fn init_requested_product(mut self, ) -> crate::digitalRadarData_capnp::radial::requested_product::Builder<'a> {
+ self.builder.set_data_field::(11, 0);
+ self.builder.reborrow().get_pointer_field(0).clear();
+ self.builder.into()
+ }
+ }
+
+ pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+ impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+ fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+ Self { _typeless: typeless, }
+ }
+ }
+ impl Pipeline {
+ pub fn get_requested_product(&self) -> crate::digitalRadarData_capnp::radial::requested_product::Pipeline {
+ ::capnp::capability::FromTypelessPipeline::new(self._typeless.noop())
+ }
+ }
+ mod _private {
+ pub static ENCODED_NODE: [::capnp::Word; 145] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(52, 61, 253, 131, 10, 228, 32, 210),
+ ::capnp::word(23, 0, 0, 0, 1, 0, 4, 0),
+ ::capnp::word(138, 240, 108, 5, 28, 207, 29, 249),
+ ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(145, 0, 0, 0, 1, 2, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 242, 0, 0, 0),
+ ::capnp::word(33, 0, 0, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(29, 0, 0, 0, 199, 1, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(100, 105, 103, 105, 116, 97, 108, 82),
+ ::capnp::word(97, 100, 97, 114, 68, 97, 116, 97),
+ ::capnp::word(46, 99, 97, 112, 110, 112, 58, 82),
+ ::capnp::word(97, 100, 105, 97, 108, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(32, 0, 0, 0, 3, 0, 4, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(209, 0, 0, 0, 162, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(212, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(224, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(1, 0, 0, 0, 4, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(221, 0, 0, 0, 114, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(220, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(232, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(2, 0, 0, 0, 3, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(229, 0, 0, 0, 162, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(232, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(244, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(3, 0, 0, 0, 4, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(241, 0, 0, 0, 178, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(244, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(0, 1, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(4, 0, 0, 0, 5, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(253, 0, 0, 0, 106, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(252, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(8, 1, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(5, 0, 0, 0, 20, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 5, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(5, 1, 0, 0, 130, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(4, 1, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(16, 1, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(6, 0, 0, 0, 6, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 6, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(13, 1, 0, 0, 138, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 1, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(28, 1, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(53, 153, 198, 6, 37, 147, 62, 245),
+ ::capnp::word(25, 1, 0, 0, 138, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(99, 111, 108, 108, 101, 99, 116, 105),
+ ::capnp::word(111, 110, 84, 105, 109, 101, 115, 116),
+ ::capnp::word(97, 109, 112, 0, 0, 0, 0, 0),
+ ::capnp::word(5, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(5, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(97, 122, 105, 109, 117, 116, 104, 78),
+ ::capnp::word(117, 109, 98, 101, 114, 0, 0, 0),
+ ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(97, 122, 105, 109, 117, 116, 104, 65),
+ ::capnp::word(110, 103, 108, 101, 68, 101, 103, 114),
+ ::capnp::word(101, 101, 115, 0, 0, 0, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(97, 122, 105, 109, 117, 116, 104, 83),
+ ::capnp::word(112, 97, 99, 105, 110, 103, 68, 101),
+ ::capnp::word(103, 114, 101, 101, 115, 0, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(114, 97, 100, 105, 97, 108, 83, 116),
+ ::capnp::word(97, 116, 117, 115, 0, 0, 0, 0),
+ ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(20, 47, 43, 70, 56, 89, 113, 184),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(15, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(101, 108, 101, 118, 97, 116, 105, 111),
+ ::capnp::word(110, 78, 117, 109, 98, 101, 114, 0),
+ ::capnp::word(6, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(6, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(101, 108, 101, 118, 97, 116, 105, 111),
+ ::capnp::word(110, 68, 101, 103, 114, 101, 101, 115),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(114, 101, 113, 117, 101, 115, 116, 101),
+ ::capnp::word(100, 80, 114, 111, 100, 117, 99, 116),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ];
+ pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+ match index {
+ 0 => ::introspect(),
+ 1 => ::introspect(),
+ 2 => ::introspect(),
+ 3 => ::introspect(),
+ 4 => ::introspect(),
+ 5 => ::introspect(),
+ 6 => ::introspect(),
+ 7 => ::introspect(),
+ _ => panic!("invalid field index {}", index),
+ }
+ }
+ pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+ }
+ pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+ encoded_node: &ENCODED_NODE,
+ nonunion_members: NONUNION_MEMBERS,
+ members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+ members_by_name: MEMBERS_BY_NAME,
+ };
+ pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4,5,6,7];
+ pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+ pub static MEMBERS_BY_NAME : &[u16] = &[2,1,3,0,6,5,4,7];
+ pub const TYPE_ID: u64 = 0xd220_e40a_83fd_3d34;
+ }
+
+ pub mod requested_product {
+ pub use self::Which::{Unavailable,Available};
+
+ #[derive(Copy, Clone)]
+ pub struct Owned(());
+ impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+ impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+ pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+ impl <> ::core::marker::Copy for Reader<'_,> {}
+ impl <> ::core::clone::Clone for Reader<'_,> {
+ fn clone(&self) -> Self { *self }
+ }
+
+ impl <> ::capnp::traits::HasTypeId for Reader<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> {
+ fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+ Self { reader, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> {
+ fn from(reader: Reader<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <> ::core::fmt::Debug for Reader<'_,> {
+ fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+ core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> {
+ fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(reader.get_struct(default)?.into())
+ }
+ }
+
+ impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> {
+ fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+ self.reader
+ }
+ }
+
+ impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> {
+ fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+ self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> Reader<'a,> {
+ pub fn reborrow(&self) -> Reader<'_,> {
+ Self { .. *self }
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.reader.total_size()
+ }
+ #[inline]
+ pub fn has_available(&self) -> bool {
+ if self.reader.get_data_field::(11) != 1 { return false; }
+ !self.reader.get_pointer_field(0).is_null()
+ }
+ #[inline]
+ pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> {
+ match self.reader.get_data_field::(11) {
+ 0 => {
+ ::core::result::Result::Ok(Unavailable(
+ ()
+ ))
+ }
+ 1 => {
+ ::core::result::Result::Ok(Available(
+ ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+ ))
+ }
+ x => ::core::result::Result::Err(::capnp::NotInSchema(x))
+ }
+ }
+ }
+
+ pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+ impl <> ::capnp::traits::HasStructSize for Builder<'_,> {
+ const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 4, pointers: 1 };
+ }
+ impl <> ::capnp::traits::HasTypeId for Builder<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> {
+ fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+ Self { builder, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> {
+ fn from(builder: Builder<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> {
+ fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+ self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> {
+ fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+ builder.init_struct(::STRUCT_SIZE).into()
+ }
+ fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into())
+ }
+ }
+
+ impl <> ::capnp::traits::SetterInput> for Reader<'_,> {
+ fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
+ }
+
+ impl <'a,> Builder<'a,> {
+ pub fn into_reader(self) -> Reader<'a,> {
+ self.builder.into_reader().into()
+ }
+ pub fn reborrow(&mut self) -> Builder<'_,> {
+ Builder { builder: self.builder.reborrow() }
+ }
+ pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+ self.builder.as_reader().into()
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.builder.as_reader().total_size()
+ }
+ #[inline]
+ pub fn set_unavailable(&mut self, _value: ()) {
+ self.builder.set_data_field::(11, 0);
+ }
+ #[inline]
+ pub fn set_available(&mut self, value: crate::digitalRadarData_capnp::momentary_product::Reader<'_>) -> ::capnp::Result<()> {
+ self.builder.set_data_field::(11, 1);
+ ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+ }
+ #[inline]
+ pub fn init_available(self, ) -> crate::digitalRadarData_capnp::momentary_product::Builder<'a> {
+ self.builder.set_data_field::(11, 1);
+ ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+ }
+ #[inline]
+ pub fn has_available(&self) -> bool {
+ if self.builder.get_data_field::(11) != 1 { return false; }
+ !self.builder.is_pointer_field_null(0)
+ }
+ #[inline]
+ pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> {
+ match self.builder.get_data_field::(11) {
+ 0 => {
+ ::core::result::Result::Ok(Unavailable(
+ ()
+ ))
+ }
+ 1 => {
+ ::core::result::Result::Ok(Available(
+ ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+ ))
+ }
+ x => ::core::result::Result::Err(::capnp::NotInSchema(x))
+ }
+ }
+ }
+
+ pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+ impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+ fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+ Self { _typeless: typeless, }
+ }
+ }
+ impl Pipeline {
+ }
+ mod _private {
+ pub static ENCODED_NODE: [::capnp::Word; 52] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(53, 153, 198, 6, 37, 147, 62, 245),
+ ::capnp::word(30, 0, 0, 0, 1, 0, 4, 0),
+ ::capnp::word(52, 61, 253, 131, 10, 228, 32, 210),
+ ::capnp::word(1, 0, 7, 0, 1, 0, 2, 0),
+ ::capnp::word(11, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 122, 1, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(33, 0, 0, 0, 119, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(100, 105, 103, 105, 116, 97, 108, 82),
+ ::capnp::word(97, 100, 97, 114, 68, 97, 116, 97),
+ ::capnp::word(46, 99, 97, 112, 110, 112, 58, 82),
+ ::capnp::word(97, 100, 105, 97, 108, 46, 114, 101),
+ ::capnp::word(113, 117, 101, 115, 116, 101, 100, 80),
+ ::capnp::word(114, 111, 100, 117, 99, 116, 0, 0),
+ ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0),
+ ::capnp::word(0, 0, 255, 255, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(41, 0, 0, 0, 98, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(52, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(1, 0, 254, 255, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 8, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(49, 0, 0, 0, 82, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(48, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(60, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(117, 110, 97, 118, 97, 105, 108, 97),
+ ::capnp::word(98, 108, 101, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(97, 118, 97, 105, 108, 97, 98, 108),
+ ::capnp::word(101, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(145, 161, 46, 18, 18, 53, 76, 181),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ];
+ pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+ match index {
+ 0 => <() as ::capnp::introspect::Introspect>::introspect(),
+ 1 => ::introspect(),
+ _ => panic!("invalid field index {}", index),
+ }
+ }
+ pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+ }
+ pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+ encoded_node: &ENCODED_NODE,
+ nonunion_members: NONUNION_MEMBERS,
+ members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+ members_by_name: MEMBERS_BY_NAME,
+ };
+ pub static NONUNION_MEMBERS : &[u16] = &[];
+ pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[0,1];
+ pub static MEMBERS_BY_NAME : &[u16] = &[1,0];
+ pub const TYPE_ID: u64 = 0xf53e_9325_06c6_9935;
+ }
+ pub enum Which {
+ Unavailable(()),
+ Available(A0),
+ }
+ pub type WhichReader<'a,> = Which<::capnp::Result>>;
+ pub type WhichBuilder<'a,> = Which<::capnp::Result>>;
+ }
+}
+
+#[repr(u16)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+pub enum RadialStatus {
+ ElevationStart = 0,
+ IntermediateRadialData = 1,
+ ElevationEnd = 2,
+ VolumeScanStart = 3,
+ VolumeScanEnd = 4,
+ ElevationStartVCPFinal = 5,
+}
+
+impl ::capnp::introspect::Introspect for RadialStatus {
+ fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Enum(::capnp::introspect::RawEnumSchema { encoded_node: &radial_status::ENCODED_NODE, annotation_types: radial_status::get_annotation_types }).into() }
+}
+impl ::core::convert::From for ::capnp::dynamic_value::Reader<'_> {
+ fn from(e: RadialStatus) -> Self { ::capnp::dynamic_value::Enum::new(e.into(), ::capnp::introspect::RawEnumSchema { encoded_node: &radial_status::ENCODED_NODE, annotation_types: radial_status::get_annotation_types }.into()).into() }
+}
+impl ::core::convert::TryFrom for RadialStatus {
+ type Error = ::capnp::NotInSchema;
+ fn try_from(value: u16) -> ::core::result::Result>::Error> {
+ match value {
+ 0 => ::core::result::Result::Ok(Self::ElevationStart),
+ 1 => ::core::result::Result::Ok(Self::IntermediateRadialData),
+ 2 => ::core::result::Result::Ok(Self::ElevationEnd),
+ 3 => ::core::result::Result::Ok(Self::VolumeScanStart),
+ 4 => ::core::result::Result::Ok(Self::VolumeScanEnd),
+ 5 => ::core::result::Result::Ok(Self::ElevationStartVCPFinal),
+ n => ::core::result::Result::Err(::capnp::NotInSchema(n)),
+ }
+ }
+}
+impl From for u16 {
+ #[inline]
+ fn from(x: RadialStatus) -> u16 { x as u16 }
+}
+impl ::capnp::traits::HasTypeId for RadialStatus {
+ const TYPE_ID: u64 = 0xb871_5938_462b_2f14u64;
+}
+mod radial_status {
+pub static ENCODED_NODE: [::capnp::Word; 52] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(20, 47, 43, 70, 56, 89, 113, 184),
+ ::capnp::word(23, 0, 0, 0, 2, 0, 0, 0),
+ ::capnp::word(138, 240, 108, 5, 28, 207, 29, 249),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(3, 2, 0, 0, 224, 2, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 34, 1, 0, 0),
+ ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(33, 0, 0, 0, 151, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(100, 105, 103, 105, 116, 97, 108, 82),
+ ::capnp::word(97, 100, 97, 114, 68, 97, 116, 97),
+ ::capnp::word(46, 99, 97, 112, 110, 112, 58, 82),
+ ::capnp::word(97, 100, 105, 97, 108, 83, 116, 97),
+ ::capnp::word(116, 117, 115, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(24, 0, 0, 0, 1, 0, 2, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(65, 0, 0, 0, 122, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(1, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(61, 0, 0, 0, 186, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(2, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(61, 0, 0, 0, 106, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(3, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(57, 0, 0, 0, 130, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(4, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(53, 0, 0, 0, 114, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(5, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(49, 0, 0, 0, 186, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(101, 108, 101, 118, 97, 116, 105, 111),
+ ::capnp::word(110, 83, 116, 97, 114, 116, 0, 0),
+ ::capnp::word(105, 110, 116, 101, 114, 109, 101, 100),
+ ::capnp::word(105, 97, 116, 101, 82, 97, 100, 105),
+ ::capnp::word(97, 108, 68, 97, 116, 97, 0, 0),
+ ::capnp::word(101, 108, 101, 118, 97, 116, 105, 111),
+ ::capnp::word(110, 69, 110, 100, 0, 0, 0, 0),
+ ::capnp::word(118, 111, 108, 117, 109, 101, 83, 99),
+ ::capnp::word(97, 110, 83, 116, 97, 114, 116, 0),
+ ::capnp::word(118, 111, 108, 117, 109, 101, 83, 99),
+ ::capnp::word(97, 110, 69, 110, 100, 0, 0, 0),
+ ::capnp::word(101, 108, 101, 118, 97, 116, 105, 111),
+ ::capnp::word(110, 83, 116, 97, 114, 116, 86, 67),
+ ::capnp::word(80, 70, 105, 110, 97, 108, 0, 0),
+];
+pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+}
+}
+
+pub mod momentary_product {
+ #[derive(Copy, Clone)]
+ pub struct Owned(());
+ impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+ impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+ pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+ impl <> ::core::marker::Copy for Reader<'_,> {}
+ impl <> ::core::clone::Clone for Reader<'_,> {
+ fn clone(&self) -> Self { *self }
+ }
+
+ impl <> ::capnp::traits::HasTypeId for Reader<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> {
+ fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+ Self { reader, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> {
+ fn from(reader: Reader<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <> ::core::fmt::Debug for Reader<'_,> {
+ fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+ core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> {
+ fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(reader.get_struct(default)?.into())
+ }
+ }
+
+ impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> {
+ fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+ self.reader
+ }
+ }
+
+ impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> {
+ fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+ self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> Reader<'a,> {
+ pub fn reborrow(&self) -> Reader<'_,> {
+ Self { .. *self }
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.reader.total_size()
+ }
+ #[inline]
+ pub fn get_product_metadata(self) -> ::capnp::Result> {
+ ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn has_product_metadata(&self) -> bool {
+ !self.reader.get_pointer_field(0).is_null()
+ }
+ #[inline]
+ pub fn get_data(self) -> ::capnp::Result> {
+ ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(1), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn has_data(&self) -> bool {
+ !self.reader.get_pointer_field(1).is_null()
+ }
+ }
+
+ pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+ impl <> ::capnp::traits::HasStructSize for Builder<'_,> {
+ const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 2 };
+ }
+ impl <> ::capnp::traits::HasTypeId for Builder<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> {
+ fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+ Self { builder, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> {
+ fn from(builder: Builder<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> {
+ fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+ self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> {
+ fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+ builder.init_struct(::STRUCT_SIZE).into()
+ }
+ fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into())
+ }
+ }
+
+ impl <> ::capnp::traits::SetterInput> for Reader<'_,> {
+ fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
+ }
+
+ impl <'a,> Builder<'a,> {
+ pub fn into_reader(self) -> Reader<'a,> {
+ self.builder.into_reader().into()
+ }
+ pub fn reborrow(&mut self) -> Builder<'_,> {
+ Builder { builder: self.builder.reborrow() }
+ }
+ pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+ self.builder.as_reader().into()
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.builder.as_reader().total_size()
+ }
+ #[inline]
+ pub fn get_product_metadata(self) -> ::capnp::Result> {
+ ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn set_product_metadata(&mut self, value: crate::digitalRadarData_capnp::momentary_product_meta::Reader<'_>) -> ::capnp::Result<()> {
+ ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+ }
+ #[inline]
+ pub fn init_product_metadata(self, ) -> crate::digitalRadarData_capnp::momentary_product_meta::Builder<'a> {
+ ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+ }
+ #[inline]
+ pub fn has_product_metadata(&self) -> bool {
+ !self.builder.is_pointer_field_null(0)
+ }
+ #[inline]
+ pub fn get_data(self) -> ::capnp::Result> {
+ ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn set_data(&mut self, value: crate::digitalRadarData_capnp::momentary_product_data::Reader<'_>) -> ::capnp::Result<()> {
+ ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false)
+ }
+ #[inline]
+ pub fn init_data(self, ) -> crate::digitalRadarData_capnp::momentary_product_data::Builder<'a> {
+ ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(1), 0)
+ }
+ #[inline]
+ pub fn has_data(&self) -> bool {
+ !self.builder.is_pointer_field_null(1)
+ }
+ }
+
+ pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+ impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+ fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+ Self { _typeless: typeless, }
+ }
+ }
+ impl Pipeline {
+ pub fn get_product_metadata(&self) -> crate::digitalRadarData_capnp::momentary_product_meta::Pipeline {
+ ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+ }
+ pub fn get_data(&self) -> crate::digitalRadarData_capnp::momentary_product_data::Pipeline {
+ ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(1))
+ }
+ }
+ mod _private {
+ pub static ENCODED_NODE: [::capnp::Word; 51] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(145, 161, 46, 18, 18, 53, 76, 181),
+ ::capnp::word(23, 0, 0, 0, 1, 0, 0, 0),
+ ::capnp::word(138, 240, 108, 5, 28, 207, 29, 249),
+ ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(226, 2, 0, 0, 78, 3, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 66, 1, 0, 0),
+ ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(33, 0, 0, 0, 119, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(100, 105, 103, 105, 116, 97, 108, 82),
+ ::capnp::word(97, 100, 97, 114, 68, 97, 116, 97),
+ ::capnp::word(46, 99, 97, 112, 110, 112, 58, 77),
+ ::capnp::word(111, 109, 101, 110, 116, 97, 114, 121),
+ ::capnp::word(80, 114, 111, 100, 117, 99, 116, 0),
+ ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(41, 0, 0, 0, 130, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(52, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(49, 0, 0, 0, 42, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(44, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(56, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(112, 114, 111, 100, 117, 99, 116, 77),
+ ::capnp::word(101, 116, 97, 100, 97, 116, 97, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(120, 160, 228, 75, 58, 156, 246, 253),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(100, 97, 116, 97, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(8, 104, 131, 104, 171, 253, 43, 210),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ];
+ pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+ match index {
+ 0 => ::introspect(),
+ 1 => ::introspect(),
+ _ => panic!("invalid field index {}", index),
+ }
+ }
+ pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+ }
+ pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+ encoded_node: &ENCODED_NODE,
+ nonunion_members: NONUNION_MEMBERS,
+ members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+ members_by_name: MEMBERS_BY_NAME,
+ };
+ pub static NONUNION_MEMBERS : &[u16] = &[0,1];
+ pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+ pub static MEMBERS_BY_NAME : &[u16] = &[1,0];
+ pub const TYPE_ID: u64 = 0xb54c_3512_122e_a191;
+ }
+}
+
+pub mod momentary_product_meta {
+ #[derive(Copy, Clone)]
+ pub struct Owned(());
+ impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+ impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+ pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+ impl <> ::core::marker::Copy for Reader<'_,> {}
+ impl <> ::core::clone::Clone for Reader<'_,> {
+ fn clone(&self) -> Self { *self }
+ }
+
+ impl <> ::capnp::traits::HasTypeId for Reader<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> {
+ fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+ Self { reader, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> {
+ fn from(reader: Reader<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <> ::core::fmt::Debug for Reader<'_,> {
+ fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+ core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> {
+ fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(reader.get_struct(default)?.into())
+ }
+ }
+
+ impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> {
+ fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+ self.reader
+ }
+ }
+
+ impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> {
+ fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+ self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> Reader<'a,> {
+ pub fn reborrow(&self) -> Reader<'_,> {
+ Self { .. *self }
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.reader.total_size()
+ }
+ #[inline]
+ pub fn get_product_name(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
+ ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn has_product_name(&self) -> bool {
+ !self.reader.get_pointer_field(0).is_null()
+ }
+ }
+
+ pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+ impl <> ::capnp::traits::HasStructSize for Builder<'_,> {
+ const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+ }
+ impl <> ::capnp::traits::HasTypeId for Builder<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> {
+ fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+ Self { builder, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> {
+ fn from(builder: Builder<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> {
+ fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+ self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> {
+ fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+ builder.init_struct(::STRUCT_SIZE).into()
+ }
+ fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into())
+ }
+ }
+
+ impl <> ::capnp::traits::SetterInput> for Reader<'_,> {
+ fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
+ }
+
+ impl <'a,> Builder<'a,> {
+ pub fn into_reader(self) -> Reader<'a,> {
+ self.builder.into_reader().into()
+ }
+ pub fn reborrow(&mut self) -> Builder<'_,> {
+ Builder { builder: self.builder.reborrow() }
+ }
+ pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+ self.builder.as_reader().into()
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.builder.as_reader().total_size()
+ }
+ #[inline]
+ pub fn get_product_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
+ ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn set_product_name(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) {
+ ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
+ }
+ #[inline]
+ pub fn init_product_name(self, size: u32) -> ::capnp::text::Builder<'a> {
+ self.builder.get_pointer_field(0).init_text(size)
+ }
+ #[inline]
+ pub fn has_product_name(&self) -> bool {
+ !self.builder.is_pointer_field_null(0)
+ }
+ }
+
+ pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+ impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+ fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+ Self { _typeless: typeless, }
+ }
+ }
+ impl Pipeline {
+ }
+ mod _private {
+ pub static ENCODED_NODE: [::capnp::Word; 37] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(120, 160, 228, 75, 58, 156, 246, 253),
+ ::capnp::word(23, 0, 0, 0, 1, 0, 0, 0),
+ ::capnp::word(138, 240, 108, 5, 28, 207, 29, 249),
+ ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(80, 3, 0, 0, 137, 3, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 98, 1, 0, 0),
+ ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(100, 105, 103, 105, 116, 97, 108, 82),
+ ::capnp::word(97, 100, 97, 114, 68, 97, 116, 97),
+ ::capnp::word(46, 99, 97, 112, 110, 112, 58, 77),
+ ::capnp::word(111, 109, 101, 110, 116, 97, 114, 121),
+ ::capnp::word(80, 114, 111, 100, 117, 99, 116, 77),
+ ::capnp::word(101, 116, 97, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(13, 0, 0, 0, 98, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(112, 114, 111, 100, 117, 99, 116, 78),
+ ::capnp::word(97, 109, 101, 0, 0, 0, 0, 0),
+ ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ];
+ pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+ match index {
+ 0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
+ _ => panic!("invalid field index {}", index),
+ }
+ }
+ pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+ }
+ pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+ encoded_node: &ENCODED_NODE,
+ nonunion_members: NONUNION_MEMBERS,
+ members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+ members_by_name: MEMBERS_BY_NAME,
+ };
+ pub static NONUNION_MEMBERS : &[u16] = &[0];
+ pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+ pub static MEMBERS_BY_NAME : &[u16] = &[0];
+ pub const TYPE_ID: u64 = 0xfdf6_9c3a_4be4_a078;
+ }
+}
+
+pub mod momentary_product_data {
+ #[derive(Copy, Clone)]
+ pub struct Owned(());
+ impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+ impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+ pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+ impl <> ::core::marker::Copy for Reader<'_,> {}
+ impl <> ::core::clone::Clone for Reader<'_,> {
+ fn clone(&self) -> Self { *self }
+ }
+
+ impl <> ::capnp::traits::HasTypeId for Reader<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> {
+ fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+ Self { reader, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> {
+ fn from(reader: Reader<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <> ::core::fmt::Debug for Reader<'_,> {
+ fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+ core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> {
+ fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(reader.get_struct(default)?.into())
+ }
+ }
+
+ impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> {
+ fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+ self.reader
+ }
+ }
+
+ impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> {
+ fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+ self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> Reader<'a,> {
+ pub fn reborrow(&self) -> Reader<'_,> {
+ Self { .. *self }
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.reader.total_size()
+ }
+ #[inline]
+ pub fn get_scale(self) -> f32 {
+ self.reader.get_data_field::(0)
+ }
+ #[inline]
+ pub fn get_offset(self) -> f32 {
+ self.reader.get_data_field::(1)
+ }
+ #[inline]
+ pub fn get_start_range(self) -> u16 {
+ self.reader.get_data_field::(4)
+ }
+ #[inline]
+ pub fn get_sample_interval(self) -> u16 {
+ self.reader.get_data_field::(5)
+ }
+ #[inline]
+ pub fn get_values(self) -> ::capnp::Result<::capnp::primitive_list::Reader<'a,u8>> {
+ ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn has_values(&self) -> bool {
+ !self.reader.get_pointer_field(0).is_null()
+ }
+ }
+
+ pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+ impl <> ::capnp::traits::HasStructSize for Builder<'_,> {
+ const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 1 };
+ }
+ impl <> ::capnp::traits::HasTypeId for Builder<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> {
+ fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+ Self { builder, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> {
+ fn from(builder: Builder<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> {
+ fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+ self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> {
+ fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+ builder.init_struct(::STRUCT_SIZE).into()
+ }
+ fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into())
+ }
+ }
+
+ impl <> ::capnp::traits::SetterInput> for Reader<'_,> {
+ fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
+ }
+
+ impl <'a,> Builder<'a,> {
+ pub fn into_reader(self) -> Reader<'a,> {
+ self.builder.into_reader().into()
+ }
+ pub fn reborrow(&mut self) -> Builder<'_,> {
+ Builder { builder: self.builder.reborrow() }
+ }
+ pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+ self.builder.as_reader().into()
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.builder.as_reader().total_size()
+ }
+ #[inline]
+ pub fn get_scale(self) -> f32 {
+ self.builder.get_data_field::(0)
+ }
+ #[inline]
+ pub fn set_scale(&mut self, value: f32) {
+ self.builder.set_data_field::(0, value);
+ }
+ #[inline]
+ pub fn get_offset(self) -> f32 {
+ self.builder.get_data_field::(1)
+ }
+ #[inline]
+ pub fn set_offset(&mut self, value: f32) {
+ self.builder.set_data_field::(1, value);
+ }
+ #[inline]
+ pub fn get_start_range(self) -> u16 {
+ self.builder.get_data_field::(4)
+ }
+ #[inline]
+ pub fn set_start_range(&mut self, value: u16) {
+ self.builder.set_data_field::(4, value);
+ }
+ #[inline]
+ pub fn get_sample_interval(self) -> u16 {
+ self.builder.get_data_field::(5)
+ }
+ #[inline]
+ pub fn set_sample_interval(&mut self, value: u16) {
+ self.builder.set_data_field::(5, value);
+ }
+ #[inline]
+ pub fn get_values(self) -> ::capnp::Result<::capnp::primitive_list::Builder<'a,u8>> {
+ ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn set_values(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::primitive_list::Owned>) -> ::capnp::Result<()> {
+ ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+ }
+ #[inline]
+ pub fn init_values(self, size: u32) -> ::capnp::primitive_list::Builder<'a,u8> {
+ ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), size)
+ }
+ #[inline]
+ pub fn has_values(&self) -> bool {
+ !self.builder.is_pointer_field_null(0)
+ }
+ }
+
+ pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+ impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+ fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+ Self { _typeless: typeless, }
+ }
+ }
+ impl Pipeline {
+ }
+ mod _private {
+ pub static ENCODED_NODE: [::capnp::Word; 102] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(8, 104, 131, 104, 171, 253, 43, 210),
+ ::capnp::word(23, 0, 0, 0, 1, 0, 2, 0),
+ ::capnp::word(138, 240, 108, 5, 28, 207, 29, 249),
+ ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(138, 3, 0, 0, 48, 4, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 98, 1, 0, 0),
+ ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(37, 0, 0, 0, 31, 1, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(100, 105, 103, 105, 116, 97, 108, 82),
+ ::capnp::word(97, 100, 97, 114, 68, 97, 116, 97),
+ ::capnp::word(46, 99, 97, 112, 110, 112, 58, 77),
+ ::capnp::word(111, 109, 101, 110, 116, 97, 114, 121),
+ ::capnp::word(80, 114, 111, 100, 117, 99, 116, 68),
+ ::capnp::word(97, 116, 97, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(20, 0, 0, 0, 3, 0, 4, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(125, 0, 0, 0, 50, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(120, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(132, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(129, 0, 0, 0, 58, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(124, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(136, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(2, 0, 0, 0, 4, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 2, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(133, 0, 0, 0, 90, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(132, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(144, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(3, 0, 0, 0, 5, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 3, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(141, 0, 0, 0, 122, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(140, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(152, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(4, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 4, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(149, 0, 0, 0, 58, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(144, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(172, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(115, 99, 97, 108, 101, 0, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(111, 102, 102, 115, 101, 116, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(10, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(115, 116, 97, 114, 116, 82, 97, 110),
+ ::capnp::word(103, 101, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(115, 97, 109, 112, 108, 101, 73, 110),
+ ::capnp::word(116, 101, 114, 118, 97, 108, 0, 0),
+ ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(7, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(118, 97, 108, 117, 101, 115, 0, 0),
+ ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(6, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(14, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ];
+ pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+ match index {
+ 0 => ::introspect(),
+ 1 => ::introspect(),
+ 2 => ::introspect(),
+ 3 => ::introspect(),
+ 4 => <::capnp::primitive_list::Owned as ::capnp::introspect::Introspect>::introspect(),
+ _ => panic!("invalid field index {}", index),
+ }
+ }
+ pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+ }
+ pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+ encoded_node: &ENCODED_NODE,
+ nonunion_members: NONUNION_MEMBERS,
+ members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+ members_by_name: MEMBERS_BY_NAME,
+ };
+ pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3,4];
+ pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+ pub static MEMBERS_BY_NAME : &[u16] = &[1,3,0,2,4];
+ pub const TYPE_ID: u64 = 0xd22b_fdab_6883_6808;
+ }
+}
diff --git a/crates/interchange/src/lib.rs b/crates/interchange/src/lib.rs
new file mode 100644
index 0000000..a528b02
--- /dev/null
+++ b/crates/interchange/src/lib.rs
@@ -0,0 +1,9 @@
+#[allow(non_snake_case)]
+pub mod schema_capnp;
+#[allow(non_snake_case)]
+pub mod digitalRadarData_capnp;
+#[allow(non_snake_case)]
+pub mod tilerStatusReport_capnp;
+
+#[cfg(feature = ar2)]
+pub mod ar2;
\ No newline at end of file
diff --git a/crates/interchange/src/schema_capnp.rs b/crates/interchange/src/schema_capnp.rs
new file mode 100644
index 0000000..2d202ca
--- /dev/null
+++ b/crates/interchange/src/schema_capnp.rs
@@ -0,0 +1,287 @@
+// @generated by the capnpc-rust plugin to the Cap'n Proto schema compiler.
+// DO NOT EDIT.
+// source: schema.capnp
+
+
+pub mod message {
+ pub use self::Which::{TilerStatusReport,DigitalRadarData};
+
+ #[derive(Copy, Clone)]
+ pub struct Owned(());
+ impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+ impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+ pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+ impl <> ::core::marker::Copy for Reader<'_,> {}
+ impl <> ::core::clone::Clone for Reader<'_,> {
+ fn clone(&self) -> Self { *self }
+ }
+
+ impl <> ::capnp::traits::HasTypeId for Reader<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> {
+ fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+ Self { reader, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> {
+ fn from(reader: Reader<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <> ::core::fmt::Debug for Reader<'_,> {
+ fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+ core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> {
+ fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(reader.get_struct(default)?.into())
+ }
+ }
+
+ impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> {
+ fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+ self.reader
+ }
+ }
+
+ impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> {
+ fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+ self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> Reader<'a,> {
+ pub fn reborrow(&self) -> Reader<'_,> {
+ Self { .. *self }
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.reader.total_size()
+ }
+ #[inline]
+ pub fn has_tiler_status_report(&self) -> bool {
+ if self.reader.get_data_field::(0) != 0 { return false; }
+ !self.reader.get_pointer_field(0).is_null()
+ }
+ #[inline]
+ pub fn has_digital_radar_data(&self) -> bool {
+ if self.reader.get_data_field::(0) != 1 { return false; }
+ !self.reader.get_pointer_field(0).is_null()
+ }
+ #[inline]
+ pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> {
+ match self.reader.get_data_field::(0) {
+ 0 => {
+ ::core::result::Result::Ok(TilerStatusReport(
+ ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+ ))
+ }
+ 1 => {
+ ::core::result::Result::Ok(DigitalRadarData(
+ ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+ ))
+ }
+ x => ::core::result::Result::Err(::capnp::NotInSchema(x))
+ }
+ }
+ }
+
+ pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+ impl <> ::capnp::traits::HasStructSize for Builder<'_,> {
+ const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 1, pointers: 1 };
+ }
+ impl <> ::capnp::traits::HasTypeId for Builder<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> {
+ fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+ Self { builder, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> {
+ fn from(builder: Builder<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> {
+ fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+ self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> {
+ fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+ builder.init_struct(::STRUCT_SIZE).into()
+ }
+ fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into())
+ }
+ }
+
+ impl <> ::capnp::traits::SetterInput> for Reader<'_,> {
+ fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
+ }
+
+ impl <'a,> Builder<'a,> {
+ pub fn into_reader(self) -> Reader<'a,> {
+ self.builder.into_reader().into()
+ }
+ pub fn reborrow(&mut self) -> Builder<'_,> {
+ Builder { builder: self.builder.reborrow() }
+ }
+ pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+ self.builder.as_reader().into()
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.builder.as_reader().total_size()
+ }
+ #[inline]
+ pub fn set_tiler_status_report(&mut self, value: crate::tilerStatusReport_capnp::tiler_status_report::Reader<'_>) -> ::capnp::Result<()> {
+ self.builder.set_data_field::(0, 0);
+ ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+ }
+ #[inline]
+ pub fn init_tiler_status_report(self, ) -> crate::tilerStatusReport_capnp::tiler_status_report::Builder<'a> {
+ self.builder.set_data_field::(0, 0);
+ ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+ }
+ #[inline]
+ pub fn has_tiler_status_report(&self) -> bool {
+ if self.builder.get_data_field::(0) != 0 { return false; }
+ !self.builder.is_pointer_field_null(0)
+ }
+ #[inline]
+ pub fn set_digital_radar_data(&mut self, value: crate::digitalRadarData_capnp::digital_radar_data::Reader<'_>) -> ::capnp::Result<()> {
+ self.builder.set_data_field::(0, 1);
+ ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+ }
+ #[inline]
+ pub fn init_digital_radar_data(self, ) -> crate::digitalRadarData_capnp::digital_radar_data::Builder<'a> {
+ self.builder.set_data_field::(0, 1);
+ ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+ }
+ #[inline]
+ pub fn has_digital_radar_data(&self) -> bool {
+ if self.builder.get_data_field::(0) != 1 { return false; }
+ !self.builder.is_pointer_field_null(0)
+ }
+ #[inline]
+ pub fn which(self) -> ::core::result::Result, ::capnp::NotInSchema> {
+ match self.builder.get_data_field::(0) {
+ 0 => {
+ ::core::result::Result::Ok(TilerStatusReport(
+ ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+ ))
+ }
+ 1 => {
+ ::core::result::Result::Ok(DigitalRadarData(
+ ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+ ))
+ }
+ x => ::core::result::Result::Err(::capnp::NotInSchema(x))
+ }
+ }
+ }
+
+ pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+ impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+ fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+ Self { _typeless: typeless, }
+ }
+ }
+ impl Pipeline {
+ }
+ mod _private {
+ pub static ENCODED_NODE: [::capnp::Word; 52] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(207, 232, 53, 60, 199, 56, 142, 192),
+ ::capnp::word(13, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(230, 37, 170, 47, 221, 107, 236, 244),
+ ::capnp::word(1, 0, 7, 0, 0, 0, 2, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(22, 0, 0, 0, 219, 0, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 170, 0, 0, 0),
+ ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(25, 0, 0, 0, 119, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(115, 99, 104, 101, 109, 97, 46, 99),
+ ::capnp::word(97, 112, 110, 112, 58, 77, 101, 115),
+ ::capnp::word(115, 97, 103, 101, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0),
+ ::capnp::word(0, 0, 255, 255, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(41, 0, 0, 0, 146, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(44, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(56, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(1, 0, 254, 255, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(53, 0, 0, 0, 138, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(56, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(68, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(116, 105, 108, 101, 114, 83, 116, 97),
+ ::capnp::word(116, 117, 115, 82, 101, 112, 111, 114),
+ ::capnp::word(116, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(107, 210, 50, 88, 206, 228, 195, 255),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(100, 105, 103, 105, 116, 97, 108, 82),
+ ::capnp::word(97, 100, 97, 114, 68, 97, 116, 97),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(124, 221, 74, 204, 88, 181, 51, 199),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ];
+ pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+ match index {
+ 0 => ::introspect(),
+ 1 => ::introspect(),
+ _ => panic!("invalid field index {}", index),
+ }
+ }
+ pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+ }
+ pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+ encoded_node: &ENCODED_NODE,
+ nonunion_members: NONUNION_MEMBERS,
+ members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+ members_by_name: MEMBERS_BY_NAME,
+ };
+ pub static NONUNION_MEMBERS : &[u16] = &[];
+ pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[0,1];
+ pub static MEMBERS_BY_NAME : &[u16] = &[1,0];
+ pub const TYPE_ID: u64 = 0xc08e_38c7_3c35_e8cf;
+ }
+ pub enum Which {
+ TilerStatusReport(A0),
+ DigitalRadarData(A1),
+ }
+ pub type WhichReader<'a,> = Which<::capnp::Result>,::capnp::Result>>;
+ pub type WhichBuilder<'a,> = Which<::capnp::Result>,::capnp::Result>>;
+}
diff --git a/crates/interchange/src/tilerStatusReport_capnp.rs b/crates/interchange/src/tilerStatusReport_capnp.rs
new file mode 100644
index 0000000..f177313
--- /dev/null
+++ b/crates/interchange/src/tilerStatusReport_capnp.rs
@@ -0,0 +1,447 @@
+// @generated by the capnpc-rust plugin to the Cap'n Proto schema compiler.
+// DO NOT EDIT.
+// source: tilerStatusReport.capnp
+
+
+pub mod tiler_status_report {
+ #[derive(Copy, Clone)]
+ pub struct Owned(());
+ impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+ impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+ pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+ impl <> ::core::marker::Copy for Reader<'_,> {}
+ impl <> ::core::clone::Clone for Reader<'_,> {
+ fn clone(&self) -> Self { *self }
+ }
+
+ impl <> ::capnp::traits::HasTypeId for Reader<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> {
+ fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+ Self { reader, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> {
+ fn from(reader: Reader<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <> ::core::fmt::Debug for Reader<'_,> {
+ fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+ core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> {
+ fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(reader.get_struct(default)?.into())
+ }
+ }
+
+ impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> {
+ fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+ self.reader
+ }
+ }
+
+ impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> {
+ fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+ self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> Reader<'a,> {
+ pub fn reborrow(&self) -> Reader<'_,> {
+ Self { .. *self }
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.reader.total_size()
+ }
+ #[inline]
+ pub fn get_cache_info(self) -> ::capnp::Result> {
+ ::capnp::traits::FromPointerReader::get_from_pointer(&self.reader.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn has_cache_info(&self) -> bool {
+ !self.reader.get_pointer_field(0).is_null()
+ }
+ }
+
+ pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+ impl <> ::capnp::traits::HasStructSize for Builder<'_,> {
+ const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 0, pointers: 1 };
+ }
+ impl <> ::capnp::traits::HasTypeId for Builder<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> {
+ fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+ Self { builder, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> {
+ fn from(builder: Builder<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> {
+ fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+ self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> {
+ fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+ builder.init_struct(::STRUCT_SIZE).into()
+ }
+ fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into())
+ }
+ }
+
+ impl <> ::capnp::traits::SetterInput> for Reader<'_,> {
+ fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
+ }
+
+ impl <'a,> Builder<'a,> {
+ pub fn into_reader(self) -> Reader<'a,> {
+ self.builder.into_reader().into()
+ }
+ pub fn reborrow(&mut self) -> Builder<'_,> {
+ Builder { builder: self.builder.reborrow() }
+ }
+ pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+ self.builder.as_reader().into()
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.builder.as_reader().total_size()
+ }
+ #[inline]
+ pub fn get_cache_info(self) -> ::capnp::Result> {
+ ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
+ }
+ #[inline]
+ pub fn set_cache_info(&mut self, value: crate::tilerStatusReport_capnp::cache_info::Reader<'_>) -> ::capnp::Result<()> {
+ ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false)
+ }
+ #[inline]
+ pub fn init_cache_info(self, ) -> crate::tilerStatusReport_capnp::cache_info::Builder<'a> {
+ ::capnp::traits::FromPointerBuilder::init_pointer(self.builder.get_pointer_field(0), 0)
+ }
+ #[inline]
+ pub fn has_cache_info(&self) -> bool {
+ !self.builder.is_pointer_field_null(0)
+ }
+ }
+
+ pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+ impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+ fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+ Self { _typeless: typeless, }
+ }
+ }
+ impl Pipeline {
+ pub fn get_cache_info(&self) -> crate::tilerStatusReport_capnp::cache_info::Pipeline {
+ ::capnp::capability::FromTypelessPipeline::new(self._typeless.get_pointer_field(0))
+ }
+ }
+ mod _private {
+ pub static ENCODED_NODE: [::capnp::Word; 37] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(107, 210, 50, 88, 206, 228, 195, 255),
+ ::capnp::word(24, 0, 0, 0, 1, 0, 0, 0),
+ ::capnp::word(15, 230, 2, 66, 248, 151, 54, 165),
+ ::capnp::word(1, 0, 7, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(22, 0, 0, 0, 79, 0, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 82, 1, 0, 0),
+ ::capnp::word(41, 0, 0, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(37, 0, 0, 0, 63, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(116, 105, 108, 101, 114, 83, 116, 97),
+ ::capnp::word(116, 117, 115, 82, 101, 112, 111, 114),
+ ::capnp::word(116, 46, 99, 97, 112, 110, 112, 58),
+ ::capnp::word(84, 105, 108, 101, 114, 83, 116, 97),
+ ::capnp::word(116, 117, 115, 82, 101, 112, 111, 114),
+ ::capnp::word(116, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(4, 0, 0, 0, 3, 0, 4, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(13, 0, 0, 0, 82, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(12, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(24, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(99, 97, 99, 104, 101, 73, 110, 102),
+ ::capnp::word(111, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(134, 113, 226, 152, 133, 252, 175, 149),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(16, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ];
+ pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+ match index {
+ 0 => ::introspect(),
+ _ => panic!("invalid field index {}", index),
+ }
+ }
+ pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+ }
+ pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+ encoded_node: &ENCODED_NODE,
+ nonunion_members: NONUNION_MEMBERS,
+ members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+ members_by_name: MEMBERS_BY_NAME,
+ };
+ pub static NONUNION_MEMBERS : &[u16] = &[0];
+ pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+ pub static MEMBERS_BY_NAME : &[u16] = &[0];
+ pub const TYPE_ID: u64 = 0xffc3_e4ce_5832_d26b;
+ }
+}
+
+pub mod cache_info {
+ #[derive(Copy, Clone)]
+ pub struct Owned(());
+ impl ::capnp::introspect::Introspect for Owned { fn introspect() -> ::capnp::introspect::Type { ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types, annotation_types: _private::get_annotation_types }).into() } }
+ impl ::capnp::traits::Owned for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::OwnedStruct for Owned { type Reader<'a> = Reader<'a>; type Builder<'a> = Builder<'a>; }
+ impl ::capnp::traits::Pipelined for Owned { type Pipeline = Pipeline; }
+
+ pub struct Reader<'a> { reader: ::capnp::private::layout::StructReader<'a> }
+ impl <> ::core::marker::Copy for Reader<'_,> {}
+ impl <> ::core::clone::Clone for Reader<'_,> {
+ fn clone(&self) -> Self { *self }
+ }
+
+ impl <> ::capnp::traits::HasTypeId for Reader<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a,> {
+ fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
+ Self { reader, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Reader<'a> {
+ fn from(reader: Reader<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Reader::new(reader.reader, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <> ::core::fmt::Debug for Reader<'_,> {
+ fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::result::Result<(), ::core::fmt::Error> {
+ core::fmt::Debug::fmt(&::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self), f)
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerReader<'a> for Reader<'a,> {
+ fn get_from_pointer(reader: &::capnp::private::layout::PointerReader<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(reader.get_struct(default)?.into())
+ }
+ }
+
+ impl <'a,> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a,> {
+ fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
+ self.reader
+ }
+ }
+
+ impl <'a,> ::capnp::traits::Imbue<'a> for Reader<'a,> {
+ fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
+ self.reader.imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
+ }
+ }
+
+ impl <> Reader<'_,> {
+ pub fn reborrow(&self) -> Reader<'_,> {
+ Self { .. *self }
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.reader.total_size()
+ }
+ #[inline]
+ pub fn get_grib2_cache_entries(self) -> u64 {
+ self.reader.get_data_field::(0)
+ }
+ #[inline]
+ pub fn get_nexrad_cache_entries(self) -> u64 {
+ self.reader.get_data_field::(1)
+ }
+ }
+
+ pub struct Builder<'a> { builder: ::capnp::private::layout::StructBuilder<'a> }
+ impl <> ::capnp::traits::HasStructSize for Builder<'_,> {
+ const STRUCT_SIZE: ::capnp::private::layout::StructSize = ::capnp::private::layout::StructSize { data: 2, pointers: 0 };
+ }
+ impl <> ::capnp::traits::HasTypeId for Builder<'_,> {
+ const TYPE_ID: u64 = _private::TYPE_ID;
+ }
+ impl <'a,> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a,> {
+ fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
+ Self { builder, }
+ }
+ }
+
+ impl <'a,> ::core::convert::From> for ::capnp::dynamic_value::Builder<'a> {
+ fn from(builder: Builder<'a,>) -> Self {
+ Self::Struct(::capnp::dynamic_struct::Builder::new(builder.builder, ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema { generic: &_private::RAW_SCHEMA, field_types: _private::get_field_types::<>, annotation_types: _private::get_annotation_types::<>})))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::ImbueMut<'a> for Builder<'a,> {
+ fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
+ self.builder.imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
+ }
+ }
+
+ impl <'a,> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a,> {
+ fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
+ builder.init_struct(::STRUCT_SIZE).into()
+ }
+ fn get_from_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, default: ::core::option::Option<&'a [::capnp::Word]>) -> ::capnp::Result {
+ ::core::result::Result::Ok(builder.get_struct(::STRUCT_SIZE, default)?.into())
+ }
+ }
+
+ impl <> ::capnp::traits::SetterInput> for Reader<'_,> {
+ fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
+ }
+
+ impl <'a,> Builder<'a,> {
+ pub fn into_reader(self) -> Reader<'a,> {
+ self.builder.into_reader().into()
+ }
+ pub fn reborrow(&mut self) -> Builder<'_,> {
+ Builder { builder: self.builder.reborrow() }
+ }
+ pub fn reborrow_as_reader(&self) -> Reader<'_,> {
+ self.builder.as_reader().into()
+ }
+
+ pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
+ self.builder.as_reader().total_size()
+ }
+ #[inline]
+ pub fn get_grib2_cache_entries(self) -> u64 {
+ self.builder.get_data_field::(0)
+ }
+ #[inline]
+ pub fn set_grib2_cache_entries(&mut self, value: u64) {
+ self.builder.set_data_field::(0, value);
+ }
+ #[inline]
+ pub fn get_nexrad_cache_entries(self) -> u64 {
+ self.builder.get_data_field::(1)
+ }
+ #[inline]
+ pub fn set_nexrad_cache_entries(&mut self, value: u64) {
+ self.builder.set_data_field::(1, value);
+ }
+ }
+
+ pub struct Pipeline { _typeless: ::capnp::any_pointer::Pipeline }
+ impl ::capnp::capability::FromTypelessPipeline for Pipeline {
+ fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
+ Self { _typeless: typeless, }
+ }
+ }
+ impl Pipeline {
+ }
+ mod _private {
+ pub static ENCODED_NODE: [::capnp::Word; 54] = [
+ ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
+ ::capnp::word(134, 113, 226, 152, 133, 252, 175, 149),
+ ::capnp::word(24, 0, 0, 0, 1, 0, 2, 0),
+ ::capnp::word(15, 230, 2, 66, 248, 151, 54, 165),
+ ::capnp::word(0, 0, 7, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(81, 0, 0, 0, 170, 0, 0, 0),
+ ::capnp::word(21, 0, 0, 0, 18, 1, 0, 0),
+ ::capnp::word(37, 0, 0, 0, 7, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(33, 0, 0, 0, 119, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(116, 105, 108, 101, 114, 83, 116, 97),
+ ::capnp::word(116, 117, 115, 82, 101, 112, 111, 114),
+ ::capnp::word(116, 46, 99, 97, 112, 110, 112, 58),
+ ::capnp::word(67, 97, 99, 104, 101, 73, 110, 102),
+ ::capnp::word(111, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
+ ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(41, 0, 0, 0, 146, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(44, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(56, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0),
+ ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(53, 0, 0, 0, 154, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(56, 0, 0, 0, 3, 0, 1, 0),
+ ::capnp::word(68, 0, 0, 0, 2, 0, 1, 0),
+ ::capnp::word(103, 114, 105, 98, 50, 67, 97, 99),
+ ::capnp::word(104, 101, 69, 110, 116, 114, 105, 101),
+ ::capnp::word(115, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(110, 101, 120, 114, 97, 100, 67, 97),
+ ::capnp::word(99, 104, 101, 69, 110, 116, 114, 105),
+ ::capnp::word(101, 115, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(9, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
+ ];
+ pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
+ match index {
+ 0 => ::introspect(),
+ 1 => ::introspect(),
+ _ => panic!("invalid field index {}", index),
+ }
+ }
+ pub fn get_annotation_types(child_index: Option, index: u32) -> ::capnp::introspect::Type {
+ panic!("invalid annotation indices ({:?}, {}) ", child_index, index)
+ }
+ pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema = ::capnp::introspect::RawStructSchema {
+ encoded_node: &ENCODED_NODE,
+ nonunion_members: NONUNION_MEMBERS,
+ members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
+ members_by_name: MEMBERS_BY_NAME,
+ };
+ pub static NONUNION_MEMBERS : &[u16] = &[0,1];
+ pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
+ pub static MEMBERS_BY_NAME : &[u16] = &[0,1];
+ pub const TYPE_ID: u64 = 0x95af_fc85_98e2_7186;
+ }
+}
diff --git a/crates/tiler/Cargo.toml b/crates/tiler/Cargo.toml
index d129b71..a71a633 100644
--- a/crates/tiler/Cargo.toml
+++ b/crates/tiler/Cargo.toml
@@ -46,4 +46,4 @@ wxbox-common = { path = "../common" }
chrono = "0.4"
quick-xml = { version = "0.37", features = ["serialize"] }
-rmp-serde = { version = "1" }
+wxbox-interchange = { path = "../interchange" }
\ No newline at end of file
diff --git a/crates/tiler/src/nexrad.rs b/crates/tiler/src/nexrad.rs
index 5ebe65b..d5b0235 100644
--- a/crates/tiler/src/nexrad.rs
+++ b/crates/tiler/src/nexrad.rs
@@ -126,79 +126,7 @@ pub async fn nexrad_data_handler(
state.nexrad_data_cache.get(&data_id).await.unwrap()
};
- let filtered_scan = Scan {
- coverage_pattern_number: data.coverage_pattern_number,
- sweeps: data
- .sweeps
- .iter()
- .filter_map(|u| {
- if u.elevation_number != sweep {
- None
- } else {
- Some(Sweep {
- elevation_number: u.elevation_number,
- radials: u
- .radials
- .iter()
- .filter_map(|u| {
- Some(Radial {
- collection_timestamp: u.collection_timestamp,
- azimuth_number: u.azimuth_number,
- azimuth_angle_degrees: u.azimuth_angle_degrees,
- azimuth_spacing_degrees: u.azimuth_spacing_degrees,
- radial_status: u.radial_status,
- elevation_number: u.elevation_number,
- elevation_number_degrees: u.elevation_number_degrees,
- reflectivity: if product == "REF" {
- u.reflectivity.clone()
- } else {
- None
- },
- velocity: if product == "VEL" {
- u.velocity.clone()
- } else {
- None
- },
- spectrum_width: if product == "SW" {
- u.spectrum_width.clone()
- } else {
- None
- },
- differential_reflectivity: if product == "ZDR" {
- u.differential_reflectivity.clone()
- } else {
- None
- },
- differential_phase: if product == "PHI" {
- u.differential_phase.clone()
- } else {
- None
- },
- correlation_coefficient: if product == "RHO" {
- u.correlation_coefficient.clone()
- } else {
- None
- },
- specific_differential_phase: if product == "CFP" {
- u.specific_differential_phase.clone()
- } else {
- None
- },
- })
- })
- .collect(),
- })
- }
- })
- .collect(),
- };
-
- let data_bytes = rmp_serde::to_vec(data.as_ref())?;
-
- Ok((
- [(header::CONTENT_TYPE, "application/x-msgpack")],
- data_bytes,
- ))
+ todo!()
}
async fn load_nexrad_data(