}
void PacketDef::GenRustBuilderStructImpls(std::ostream& s) const {
+ if (complement_ != nullptr) {
+ auto complement_root = complement_->GetRootDef();
+ auto complement_root_accessor = util::CamelCaseToUnderScore(complement_root->name_);
+ s << "impl CommandExpectations for " << name_ << "Builder {";
+ s << " type ResponseType = " << complement_->name_ << "Packet;";
+ s << " fn _to_response_type(pkt: EventPacket) -> Self::ResponseType { ";
+ s << complement_->name_ << "Packet::new(pkt." << complement_root_accessor << ".clone())";
+ s << " }";
+ s << "}";
+ }
+
s << "impl " << name_ << "Builder {";
s << "pub fn build(self) -> " << name_ << "Packet {";
auto lineage = GetAncestors();
s << "}\n";
s << "}\n";
+ lineage = GetAncestors();
+ for (auto it = lineage.begin(); it != lineage.end(); it++) {
+ auto def = *it;
+ s << "impl Into<" << def->name_ << "Packet> for " << name_ << "Builder {";
+ s << " fn into(self) -> " << def->name_ << "Packet { self.build().into() }";
+ s << "}\n";
+ }
}
void PacketDef::GenRustDef(std::ostream& s) const {
macro_rules! assert_success {
($hci:ident.send($builder:expr)) => {
- assert!($hci.send($builder.build()).await.get_status() == ErrorCode::Success);
+ assert!($hci.send($builder).await.get_status() == ErrorCode::Success);
};
}
//! Host Controller Interface (HCI)
+/// HCI controller info
+pub mod controller;
/// HCI errors
pub mod error;
/// HCI layer facade service
pub mod facade;
-/// HCI controller info
-pub mod controller;
use bt_common::time::Alarm;
use bt_hal::HalExports;
};
assert!(
- exports.send(ResetBuilder {}.build()).await.get_status() == ErrorCode::Success,
+ exports.send(ResetBuilder {}).await.get_status() == ErrorCode::Success,
"reset did not complete successfully"
);