Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion example/workbook-icd/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#![cfg_attr(not(feature = "use-std"), no_std)]

use postcard_rpc::{endpoints, topics, TopicDirection};
use postcard_schema::Schema;
use postcard_schema_ng::Schema;
use serde::{Deserialize, Serialize};

// ---
Expand Down
25 changes: 15 additions & 10 deletions source/postcard-rpc-test/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions source/postcard-rpc-test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ features = ["derive"]
path = "../postcard-rpc"
features = ["use-std", "test-utils"]

[dependencies.postcard-schema]
version = "0.2.1"
[dependencies.postcard-schema-ng]
version = "0.3.0"
features = ["derive"]

[dependencies.tokio]
Expand All @@ -26,3 +26,7 @@ features = ["rt", "macros", "sync", "time"]
[features]
default = ["alpha"]
alpha = []

[patch.crates-io.postcard-schema]
git = "https://github.com/rslawson/postcard"
features = ["derive"]
4 changes: 2 additions & 2 deletions source/postcard-rpc-test/tests/basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use core::{
};
use std::{sync::Arc, time::Instant};

use postcard_schema::{schema::owned::OwnedNamedType, Schema};
use postcard_schema_ng::{schema::owned::OwnedDataModelType, Schema};
use serde::{Deserialize, Serialize};
use tokio::{sync::mpsc, task::yield_now, time::timeout};

Expand Down Expand Up @@ -520,7 +520,7 @@ fn device_map() {
println!("## Types");
println!();
for ty in app.device_map.types {
let ty = OwnedNamedType::from(*ty);
let ty = OwnedDataModelType::from(*ty);
println!("* {ty}");
}

Expand Down
2 changes: 1 addition & 1 deletion source/postcard-rpc-test/tests/subscrobble.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use core::{
};
use std::sync::Arc;

use postcard_schema::Schema;
use postcard_schema_ng::Schema;
use serde::{Deserialize, Serialize};
use tokio::{sync::mpsc, time::{sleep, timeout}};

Expand Down
6 changes: 3 additions & 3 deletions source/postcard-rpc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ defmt = { version = "0.3.5", optional = true }
heapless = "0.8.0"
postcard = { version = "1.0.10" }
serde = { version = "1.0.192", default-features = false, features = ["derive"] }
postcard-schema = { version = "0.2.1", features = ["derive"] }
postcard-schema-ng = { version = "0.3.0", features = ["derive"] }

#
# std-only features
Expand Down Expand Up @@ -165,12 +165,12 @@ features = ["std"]

[features]
default = []
test-utils = ["use-std", "postcard-schema/use-std"]
test-utils = ["use-std", "postcard-schema-ng/use-std"]
use-std = [
"dep:maitake-sync",
"dep:tokio",
"postcard/use-std",
"postcard-schema/use-std",
"postcard-schema-ng/use-std",
"dep:thiserror",
"dep:tracing",
"dep:trait-variant",
Expand Down
6 changes: 3 additions & 3 deletions source/postcard-rpc/src/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,7 @@ impl VarHeader {
remain = remain2;
let mut buf = [0u8; 8];
buf.copy_from_slice(keybs);
VarKey::Key8(unsafe { Key::from_bytes(buf) })
VarKey::Key8(Key::from_bytes(buf))
}
// Impossible: all bits covered
_ => unreachable!(),
Expand Down Expand Up @@ -632,9 +632,9 @@ mod test {
),
(
VarHeader {
key: VarKey::Key8(unsafe {
key: VarKey::Key8(
Key::from_bytes([0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, 0x89])
}),
),
seq_no: VarSeq::Seq4(0x42_AF_AA_BB),
},
&[
Expand Down
54 changes: 28 additions & 26 deletions source/postcard-rpc/src/host_client/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use maitake_sync::{
wait_map::{WaitError, WakeOutcome},
WaitMap,
};
use postcard_schema::{schema::owned::OwnedNamedType, Schema};
use postcard_schema_ng::{schema::owned::OwnedDataModelType, Schema};
use serde::{de::DeserializeOwned, Deserialize, Serialize};
use tokio::{
select,
Expand Down Expand Up @@ -983,7 +983,7 @@ pub struct SchemaReport {
/// All custom types spoken by the device (on any endpoint or topic),
/// as well as all primitive types. In the future, primitive types may
/// be removed.
pub types: HashSet<OwnedNamedType>,
pub types: HashSet<OwnedDataModelType>,
/// All incoming (client to server) topics reported by the device
pub topics_in: Vec<TopicReport>,
/// All outgoing (server to client) topics reported by the device
Expand All @@ -1003,45 +1003,47 @@ impl Default for SchemaReport {

// We need to pre-populate all of the types we consider primitives:
// DataModelType::Bool
me.add_type(OwnedNamedType::from(<bool as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<bool as Schema>::SCHEMA));
// DataModelType::I8
me.add_type(OwnedNamedType::from(<i8 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<i8 as Schema>::SCHEMA));
// DataModelType::U8
me.add_type(OwnedNamedType::from(<u8 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<u8 as Schema>::SCHEMA));
// DataModelType::I16
me.add_type(OwnedNamedType::from(<i16 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<i16 as Schema>::SCHEMA));
// DataModelType::I32
me.add_type(OwnedNamedType::from(<i32 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<i32 as Schema>::SCHEMA));
// DataModelType::I64
me.add_type(OwnedNamedType::from(<i64 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<i64 as Schema>::SCHEMA));
// DataModelType::I128
me.add_type(OwnedNamedType::from(<i128 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<i128 as Schema>::SCHEMA));
// DataModelType::U16
me.add_type(OwnedNamedType::from(<u16 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<u16 as Schema>::SCHEMA));
// DataModelType::U32
me.add_type(OwnedNamedType::from(<u32 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<u32 as Schema>::SCHEMA));
// DataModelType::U64
me.add_type(OwnedNamedType::from(<u64 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<u64 as Schema>::SCHEMA));
// DataModelType::U128
me.add_type(OwnedNamedType::from(<u128 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<u128 as Schema>::SCHEMA));
// // DataModelType::Usize
// me.add_type(OwnedNamedType::from(<usize as Schema>::SCHEMA));
// me.add_type(OwnedDataModelType::from(<usize as Schema>::SCHEMA));
// // DataModelType::Isize
// me.add_type(OwnedNamedType::from(<isize as Schema>::SCHEMA));
// me.add_type(OwnedDataModelType::from(<isize as Schema>::SCHEMA));
// DataModelType::F32
me.add_type(OwnedNamedType::from(<f32 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<f32 as Schema>::SCHEMA));
// DataModelType::F64
me.add_type(OwnedNamedType::from(<f64 as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<f64 as Schema>::SCHEMA));
// DataModelType::Char
me.add_type(OwnedNamedType::from(<char as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<char as Schema>::SCHEMA));
// DataModelType::String
me.add_type(OwnedNamedType::from(<String as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<String as Schema>::SCHEMA));
// DataModelType::ByteArray
me.add_type(OwnedNamedType::from(<Vec<u8> as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<Vec<u8> as Schema>::SCHEMA));
// DataModelType::Unit
me.add_type(OwnedNamedType::from(<() as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(<() as Schema>::SCHEMA));
// DataModelType::Schema
me.add_type(OwnedNamedType::from(<OwnedNamedType as Schema>::SCHEMA));
me.add_type(OwnedDataModelType::from(
<OwnedDataModelType as Schema>::SCHEMA,
));

me
}
Expand All @@ -1055,7 +1057,7 @@ pub struct TopicReport {
/// The Key of the topic (which hashes the path and type)
pub key: Key,
/// The schema of the type of the message
pub ty: OwnedNamedType,
pub ty: OwnedDataModelType,
}

/// A description of a single Endpoint
Expand All @@ -1066,11 +1068,11 @@ pub struct EndpointReport {
/// The Key of the request (which hashes the path and type)
pub req_key: Key,
/// The schema of the request type
pub req_ty: OwnedNamedType,
pub req_ty: OwnedDataModelType,
/// The Key of the response (which hashes the path and type)
pub resp_key: Key,
/// The schema of the response type
pub resp_ty: OwnedNamedType,
pub resp_ty: OwnedDataModelType,
}

/// An error that denotes we were unable to resolve the type used by a given key
Expand All @@ -1079,7 +1081,7 @@ pub struct UnableToFindType;

impl SchemaReport {
/// Insert a new type
pub fn add_type(&mut self, t: OwnedNamedType) {
pub fn add_type(&mut self, t: OwnedDataModelType) {
self.types.insert(t);
}

Expand Down
10 changes: 5 additions & 5 deletions source/postcard-rpc/src/host_client/raw_nusb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use nusb::{
transfer::{Direction, EndpointType, Queue, RequestBuffer, TransferError},
DeviceInfo, InterfaceInfo,
};
use postcard_schema::Schema;
use postcard_schema_ng::Schema;
use serde::de::DeserializeOwned;

use crate::{
Expand Down Expand Up @@ -58,7 +58,7 @@ where
/// use postcard_rpc::host_client::HostClient;
/// use postcard_rpc::header::VarSeqKind;
/// use serde::{Serialize, Deserialize};
/// use postcard_schema::Schema;
/// use postcard_schema_ng::Schema;
///
/// /// A "wire error" type your server can use to respond to any
/// /// kind of request, for example if deserializing a request fails
Expand Down Expand Up @@ -132,7 +132,7 @@ where
/// use postcard_rpc::host_client::HostClient;
/// use postcard_rpc::header::VarSeqKind;
/// use serde::{Serialize, Deserialize};
/// use postcard_schema::Schema;
/// use postcard_schema_ng::Schema;
///
/// /// A "wire error" type your server can use to respond to any
/// /// kind of request, for example if deserializing a request fails
Expand Down Expand Up @@ -198,7 +198,7 @@ where
/// use postcard_rpc::host_client::HostClient;
/// use postcard_rpc::header::VarSeqKind;
/// use serde::{Serialize, Deserialize};
/// use postcard_schema::Schema;
/// use postcard_schema_ng::Schema;
///
/// /// A "wire error" type your server can use to respond to any
/// /// kind of request, for example if deserializing a request fails
Expand Down Expand Up @@ -300,7 +300,7 @@ where
/// use postcard_rpc::host_client::HostClient;
/// use postcard_rpc::header::VarSeqKind;
/// use serde::{Serialize, Deserialize};
/// use postcard_schema::Schema;
/// use postcard_schema_ng::Schema;
///
/// /// A "wire error" type your server can use to respond to any
/// /// kind of request, for example if deserializing a request fails
Expand Down
4 changes: 2 additions & 2 deletions source/postcard-rpc/src/host_client/serial.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use std::{collections::VecDeque, future::Future};

use cobs::encode_vec;
use postcard_schema::Schema;
use postcard_schema_ng::Schema;
use serde::de::DeserializeOwned;
use tokio::io::{AsyncReadExt, AsyncWriteExt, ReadHalf, WriteHalf};
use tokio_serial::{SerialPortBuilderExt, SerialStream};
Expand Down Expand Up @@ -34,7 +34,7 @@ where
/// use postcard_rpc::host_client::HostClient;
/// use postcard_rpc::header::VarSeqKind;
/// use serde::{Serialize, Deserialize};
/// use postcard_schema::Schema;
/// use postcard_schema_ng::Schema;
///
/// /// A "wire error" type your server can use to respond to any
/// /// kind of request, for example if deserializing a request fails
Expand Down
2 changes: 1 addition & 1 deletion source/postcard-rpc/src/host_client/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use core::time::Duration;
use std::{fmt::Debug, sync::Arc};

use maitake_sync::WaitQueue;
use postcard_schema::Schema;
use postcard_schema_ng::Schema;
use serde::de::DeserializeOwned;
use tokio::{
select,
Expand Down
2 changes: 1 addition & 1 deletion source/postcard-rpc/src/host_client/webusb.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//! Implementation of transport using webusb

use gloo::utils::format::JsValueSerdeExt;
use postcard_schema::Schema;
use postcard_schema_ng::Schema;
use serde::de::DeserializeOwned;
use serde_json::json;
use tracing::info;
Expand Down
Loading