From 7766d9b91d7e37d2412597cb8cc2dc6305d726ce Mon Sep 17 00:00:00 2001 From: Albin Chaboissier Date: Wed, 25 Mar 2026 13:27:46 +0100 Subject: [PATCH] Better tag interface, starting bpsk --- Cargo.lock | 15 ++ examples/bfsk-modem/src/main.rs | 39 +--- examples/bfsk-modem/src/receiver.rs | 12 +- examples/bfsk-modem/src/transmitter.rs | 42 ++--- examples/dpsk-modem/Cargo.toml | 15 ++ examples/dpsk-modem/mod.wav | Bin 0 -> 191854 bytes examples/dpsk-modem/src/main.rs | 153 ++++++++++++++++ oxydsp-dsp/src/blocks/ted/early_late.rs | 15 +- oxydsp-dsp/src/blocks/utilities/iter.rs | 17 +- .../oxydsp-flowgraph-macros/src/sync.rs | 4 +- oxydsp-flowgraph/src/graph.rs | 2 +- oxydsp-flowgraph/src/io.rs | 38 ++-- oxydsp-flowgraph/src/tag.rs | 172 ++++++++++++------ 13 files changed, 360 insertions(+), 164 deletions(-) create mode 100644 examples/dpsk-modem/Cargo.toml create mode 100644 examples/dpsk-modem/mod.wav create mode 100644 examples/dpsk-modem/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 44d606f..8504b79 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -892,6 +892,21 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +[[package]] +name = "dpsk-modem" +version = "0.1.0" +dependencies = [ + "cpal", + "eframe", + "egui", + "egui_plot", + "hound", + "num", + "oxydsp-dsp", + "oxydsp-flowgraph", + "rand", +] + [[package]] name = "ecolor" version = "0.33.3" diff --git a/examples/bfsk-modem/src/main.rs b/examples/bfsk-modem/src/main.rs index 954db26..c3dd93f 100644 --- a/examples/bfsk-modem/src/main.rs +++ b/examples/bfsk-modem/src/main.rs @@ -1,40 +1,3 @@ -use std::collections::VecDeque; -use std::fs::File; -use std::io; -use std::io::Write; -use std::sync::mpsc; - -use cpal::traits::DeviceTrait; -use cpal::traits::HostTrait; -use eframe::NativeOptions; -use egui::Color32; -use egui_plot::Line; -use egui_plot::PlotPoints; -use num::Complex; -use num::Zero; -use oxydsp_dsp::blocks::filtering::fir::FirFilter; -use oxydsp_dsp::blocks::iq::zero_if::ZeroIf; -use oxydsp_dsp::blocks::math::basic::Adder; -use oxydsp_dsp::blocks::math::basic::Multiplier; -use oxydsp_dsp::blocks::synthesis::Nco; -use oxydsp_dsp::blocks::synthesis::OscillatorSource; -use oxydsp_dsp::blocks::ted::early_late::EarlyLateGate; -use oxydsp_dsp::blocks::utilities::adapters::Map; -use oxydsp_dsp::blocks::utilities::adapters::MapResultTagged; -use oxydsp_dsp::blocks::utilities::adapters::NullSink; -use oxydsp_dsp::blocks::utilities::adapters::Repeat; -use oxydsp_dsp::blocks::utilities::adapters::Scan; -use oxydsp_dsp::blocks::utilities::adapters::ScanTagged; -use oxydsp_dsp::blocks::utilities::channels::RxSource; -use oxydsp_dsp::blocks::utilities::iter::IterSource; -use oxydsp_dsp::blocks::utilities::squelch::Squelch; -use oxydsp_dsp::filtering::fir::Fir; -use oxydsp_dsp::units::DigitalFrequency; -use oxydsp_flowgraph::block::BlockResult; -use oxydsp_flowgraph::flowgraph; -use oxydsp_flowgraph::graph::FlowGraph; -use rand::random; - use crate::receiver::RadioReceiver; use crate::transmitter::Transmitter; @@ -51,7 +14,7 @@ fn main() loop { let mut user_input = String::new(); - io::stdin().read_line(&mut user_input).unwrap(); + std::io::stdin().read_line(&mut user_input).unwrap(); println!("Transmitting ..."); tx.transmit(user_input.as_bytes().to_vec()); } diff --git a/examples/bfsk-modem/src/receiver.rs b/examples/bfsk-modem/src/receiver.rs index 830102d..00783e7 100644 --- a/examples/bfsk-modem/src/receiver.rs +++ b/examples/bfsk-modem/src/receiver.rs @@ -28,6 +28,7 @@ use oxydsp_flowgraph::flowgraph; use oxydsp_flowgraph::graph::FlowGraph; use oxydsp_flowgraph::tag::Tag; use oxydsp_flowgraph::tag::Tagged; +use oxydsp_flowgraph::tag::Tags; use crate::CARRIER; use crate::DEVIATION; @@ -149,6 +150,7 @@ impl RadioReceiver pub fn start_new() -> Self { let carrier = DigitalFrequency::from_time_frequency(CARRIER, SAMPLE_RATE as f64); + let mut tags = Tags::default(); let (audio_tx, audio_rx) = mpsc::channel(); let (packet_tx, packet_rx) = mpsc::channel::>(); @@ -174,11 +176,13 @@ impl RadioReceiver let mut elg_loop = Fir(vec![1. / 20.; 30]); *elg_loop.0.last_mut().unwrap() = 1.; - let (elg, arg) = EarlyLateGate::new(arg, elg_loop, SAMPLE_PER_SYMBOL); + let symbol_tag = tags.allocate_tag("early late gate symbol"); + let (elg, arg) = EarlyLateGate::new(arg, elg_loop, SAMPLE_PER_SYMBOL, symbol_tag.clone()); // // Eye diagram let (tx, rx) = mpsc::channel::<(Vec, f32)>(); //let (eye_sender, arg) = ScanTagged::new(arg, VecDeque::<()>::new(), move |history, x| { + let symbol_tag2 = symbol_tag.clone(); let (eye_sender, arg) = ScanTagged::new(arg, VecDeque::new(), move |history, x| { let cloned_tag = x.1.clone(); if history.len() == 2 * SAMPLE_PER_SYMBOL @@ -188,9 +192,9 @@ impl RadioReceiver let mut error: f32 = 0.; let is_symbol_center = x.1.as_ref().is_some_and(|t| { - if let Some(err) = t.retrieve("elg_symbol") + if let Some(err) = t.retrieve(symbol_tag2.clone()) { - error = *err.downcast().unwrap(); + error = *err; true } else @@ -216,7 +220,7 @@ impl RadioReceiver if sample .1 .as_ref() - .is_some_and(|t| t.retrieve("elg_symbol").is_some()) + .is_some_and(|t| t.retrieve(symbol_tag.clone()).is_some()) && let Some(packet) = builder.next_bit(sample.0 < 0.) { let _ = packet_tx.send(packet); diff --git a/examples/bfsk-modem/src/transmitter.rs b/examples/bfsk-modem/src/transmitter.rs index ecd831e..9eb607a 100644 --- a/examples/bfsk-modem/src/transmitter.rs +++ b/examples/bfsk-modem/src/transmitter.rs @@ -1,44 +1,16 @@ -use std::collections::VecDeque; -use std::fs::File; -use std::io::Write; -use std::iter::FusedIterator; -use std::net::UdpSocket; -use std::ops::BitXor; -use std::sync::mpsc; -use std::sync::mpsc::Receiver; -use std::sync::mpsc::Sender; -use std::sync::mpsc::SyncSender; -use std::sync::mpsc::sync_channel; -use std::thread::JoinHandle; -use std::time::Duration; - use cpal::Stream; use cpal::traits::DeviceTrait; use cpal::traits::HostTrait; -use eframe::NativeOptions; -use egui::Color32; -use egui::output; -use egui_plot::Line; -use egui_plot::PlotPoints; use num::Complex; -use num::Zero; use oxydsp_dsp::blocks::filtering::fir::FirFilter; -use oxydsp_dsp::blocks::iq::zero_if::ZeroIf; -use oxydsp_dsp::blocks::math::basic::Adder; use oxydsp_dsp::blocks::math::basic::Multiplier; use oxydsp_dsp::blocks::synthesis::Nco; use oxydsp_dsp::blocks::synthesis::OscillatorSource; -use oxydsp_dsp::blocks::ted::early_late::EarlyLateGate; use oxydsp_dsp::blocks::utilities::adapters::Map; -use oxydsp_dsp::blocks::utilities::adapters::MapResultTagged; -use oxydsp_dsp::blocks::utilities::adapters::NullSink; use oxydsp_dsp::blocks::utilities::adapters::Repeat; use oxydsp_dsp::blocks::utilities::adapters::Scan; -use oxydsp_dsp::blocks::utilities::adapters::ScanTagged; use oxydsp_dsp::blocks::utilities::channels::RxSource; use oxydsp_dsp::blocks::utilities::channels::TxSink; -use oxydsp_dsp::blocks::utilities::iter::IterSource; -use oxydsp_dsp::blocks::utilities::squelch::Squelch; use oxydsp_dsp::filtering::fir::Fir; use oxydsp_dsp::units::DigitalFrequency; use oxydsp_flowgraph::BlockIO; @@ -49,6 +21,14 @@ use oxydsp_flowgraph::graph::FlowGraph; use oxydsp_flowgraph::io::In; use oxydsp_flowgraph::io::Out; use rand::random; +use std::iter::FusedIterator; +use std::net::UdpSocket; +use std::ops::BitXor; +use std::sync::mpsc; +use std::sync::mpsc::Receiver; +use std::sync::mpsc::SyncSender; +use std::sync::mpsc::sync_channel; +use std::thread::JoinHandle; use crate::CARRIER; use crate::DEVIATION; @@ -200,11 +180,11 @@ impl Transmitter // gaussian fir let fir = Fir((0..SAMPLE_PER_SYMBOL) - .map(|x| gaussian(0.1, x as f32 / SAMPLE_PER_SYMBOL as f32)) + .map(|x| gaussian(0.8, x as f32 / SAMPLE_PER_SYMBOL as f32)) .collect()) .normalized(); - //let (bit_filter, bits) = FirFilter::new(bits, fir); + let (bit_filter, bits) = FirFilter::new(bits, fir); let (to_freq, freq) = Map::new(bits, move |x| { DigitalFrequency::from_time_frequency(DEVIATION * x as f64, SAMPLE_RATE as f64) }); @@ -240,7 +220,7 @@ impl Transmitter packet_rec, linearizer, //reverb, - //bit_filter, + bit_filter, udp_map, to_freq, repeat, diff --git a/examples/dpsk-modem/Cargo.toml b/examples/dpsk-modem/Cargo.toml new file mode 100644 index 0000000..917333e --- /dev/null +++ b/examples/dpsk-modem/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "dpsk-modem" +version = "0.1.0" +edition = "2024" + +[dependencies] +oxydsp-flowgraph = {path = "../../oxydsp-flowgraph/"} +oxydsp-dsp = {path = "../../oxydsp-dsp/"} +egui = "0.33.3" +egui_plot = "0.34.1" +eframe = { version = "0.33.3", features = ["default_fonts", "wayland"] } +num = "0.4.3" +hound = "3.5.1" +rand = "0.10.0" +cpal = "0.17.3" diff --git a/examples/dpsk-modem/mod.wav b/examples/dpsk-modem/mod.wav new file mode 100644 index 0000000000000000000000000000000000000000..e5654479c3bc5d141b49ad5f036a29e8c20ff34b GIT binary patch literal 191854 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

}*um-3Hk>G|C;$&hmZ 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%0AY9&N_+2_n>d!;C%W}S4A_$s1GeY2Z4=O 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û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 + .map(|x| (x.unwrap() as f32) / (i16::MAX as f32)) + .collect::>(); + + let (signal_source, signal) = IterSource::new(samples.into_iter()); + let (mut zero_if, baseband) = ZeroIf::new( + signal, + DigitalFrequency::from_time_frequency(CARRIER, SAMPLE_RATE as f64).into(), + ); + zero_if.set_fir(Fir::lowpass( + DigitalFrequency::from_time_frequency(CARRIER + 100., SAMPLE_RATE as f64), + 100, + )); + + let (constellation_tx, conbtellation_rx) = channel::>(); + let tx_sink = TxSink::new(baseband, constellation_tx); + + let graph = flowgraph![signal_source, zero_if, tx_sink]; + graph.run(); + + let mut constellation = VecDeque::new(); + let mut n = 0; + eframe::run_simple_native("Plot", NativeOptions::default(), move |ctx, _frame| { + while let Ok(sample) = conbtellation_rx.try_recv() + { + if constellation.len() >= 100_000 + { + let _ = constellation.pop_back(); + } + + if n.is_multiple_of(&SAMPLE_PER_SYMBOL) + { + constellation.push_front(sample); + } + n += 1; + } + + egui::CentralPanel::default().show(ctx, |ui| { + egui_plot::Plot::new("hello").show(ui, |plot_ui| { + plot_ui.points( + Points::new( + "constellation", + constellation + .iter() + .map(|s| [s.re as f64, s.im as f64]) + .collect::(), + ) + .id("constellation") + .color(Color32::GREEN), + ); + }); + ctx.request_repaint(); + }); + }) + .unwrap(); +} + +fn modulator() +{ + let random_source = (0..1000).map(|_| random_bool(0.5)); + + let mut tags = Tags::new(); + let (mut bit_source, bits) = IterSource::new(random_source); + let last_tag = tags.allocate_tag("finished"); + bit_source.tag_last_with(last_tag.clone()); + + let (phase_map, phase) = Scan::new(bits, 1., |state, bit| { + if bit + { + *state *= -1.; + } + *state + }); + let (repeater, phase) = Repeat::new(phase, SAMPLE_PER_SYMBOL); + + let (oscillator, passband) = OscillatorSource::::new( + DigitalFrequency::from_time_frequency(CARRIER, SAMPLE_RATE as f64).into(), + ); + let (multiplier, passband) = Multiplier::new(passband, phase); + let (output_tx, output_rx) = channel::>(); + let (tx_map, passband) = MapResultTagged::new(passband, move |s| { + let _ = output_tx.send(s.0); + if s.retrieve(&last_tag).is_some() + { + return (s, BlockResult::Exit); + } + (s, BlockResult::Ok) + }); + let null_sink = NullSink::new(passband); + + let graph = flowgraph![ + bit_source, phase_map, repeater, oscillator, multiplier, tx_map, null_sink + ]; + graph.run(); + + let spec = hound::WavSpec { + channels: 1, + sample_rate: SAMPLE_RATE as u32, + bits_per_sample: 16, + sample_format: hound::SampleFormat::Int, + }; + let mut writer = hound::WavWriter::create("mod.wav", spec).unwrap(); + for sample in output_rx.iter() + { + let amplitude = i16::MAX as f32; + writer + .write_sample(((sample.re + random::() * 0.2) * amplitude) as i16) + .unwrap(); + } + writer.finalize().unwrap(); +} diff --git a/oxydsp-dsp/src/blocks/ted/early_late.rs b/oxydsp-dsp/src/blocks/ted/early_late.rs index 4f81e51..59c3007 100644 --- a/oxydsp-dsp/src/blocks/ted/early_late.rs +++ b/oxydsp-dsp/src/blocks/ted/early_late.rs @@ -9,6 +9,7 @@ use oxydsp_flowgraph::io::In; use oxydsp_flowgraph::io::Out; use oxydsp_flowgraph::sync_block; use oxydsp_flowgraph::tag::Tag; +use oxydsp_flowgraph::tag::TagKey; use crate::filtering::fir::Fir; use crate::filtering::fir::FirFilter; @@ -37,13 +38,20 @@ pub struct EarlyLateGate, + + symbol_tag_key: TagKey, } impl EarlyLateGate where T: Float + Sum + Clone + 'static + Send + Sync + NumCast, { - pub fn new(input: In, loop_filter: Fir, symbol_length: usize) -> (Self, In) + pub fn new( + input: In, + loop_filter: Fir, + symbol_length: usize, + symbol_tag_key: TagKey, + ) -> (Self, In) { let (output, samples) = oxydsp_flowgraph::io::stream(); ( @@ -57,6 +65,7 @@ where next_sample: symbol_length as f32, // We assume that the first symbol is 1.5 windows into // the stream loop_filter: FirFilter::new(loop_filter), + symbol_tag_key, }, samples, ) @@ -102,9 +111,7 @@ where *state.next_sample -= *state.window_location as f32; *state.window_location = 0; - let new_tag = Tag::default(); - new_tag.tag("elg_symbol", error); - tag = Some(new_tag); + tag = Some(Tag::with_entry(state.symbol_tag_key.clone(), error)); } Some((sample, tag).into()) diff --git a/oxydsp-dsp/src/blocks/utilities/iter.rs b/oxydsp-dsp/src/blocks/utilities/iter.rs index 6175583..2f351a1 100644 --- a/oxydsp-dsp/src/blocks/utilities/iter.rs +++ b/oxydsp-dsp/src/blocks/utilities/iter.rs @@ -3,12 +3,11 @@ use std::iter::Peekable; use oxydsp_flowgraph::BlockIO; use oxydsp_flowgraph::block::Block; use oxydsp_flowgraph::block::BlockResult; -use oxydsp_flowgraph::block::SyncBlock; use oxydsp_flowgraph::io::In; use oxydsp_flowgraph::io::Out; use oxydsp_flowgraph::io::stream; -use oxydsp_flowgraph::sync_block; use oxydsp_flowgraph::tag::Tag; +use oxydsp_flowgraph::tag::TagKey; #[derive(BlockIO)] pub struct IterSource @@ -16,6 +15,7 @@ where I::Item: 'static, { iter: Peekable, + finished_tag: Option>, #[output] output: Out, @@ -32,11 +32,17 @@ where ( Self { iter: iter.peekable(), + finished_tag: None, output, }, items, ) } + + pub fn tag_last_with(&mut self, finished_tag: TagKey<()>) + { + self.finished_tag = Some(finished_tag); + } } impl Block for IterSource @@ -53,11 +59,10 @@ where if let Some(element) = self.iter.next() { let mut tag = None; - if self.iter.peek().is_none() + if let Some(tag_key) = &self.finished_tag + && self.iter.peek().is_none() { - let new_tag = Tag::default(); - new_tag.tag("itersource_finished", ()); - tag = Some(new_tag); + tag = Some(Tag::with_entry(tag_key.clone(), ())); } let _ = writer.push((element, tag).into()); } diff --git a/oxydsp-flowgraph/oxydsp-flowgraph-macros/src/sync.rs b/oxydsp-flowgraph/oxydsp-flowgraph-macros/src/sync.rs index 11160d7..502c8b4 100644 --- a/oxydsp-flowgraph/oxydsp-flowgraph-macros/src/sync.rs +++ b/oxydsp-flowgraph/oxydsp-flowgraph-macros/src/sync.rs @@ -374,10 +374,10 @@ fn sync_block_block_impl_with_inputs( | { // Create output tag - let common_tag = oxydsp_flowgraph::tag::Tag::merge_tag_opts([ + let common_tag = oxydsp_flowgraph::tag::Tag::from_tag_opts([ @for (in_field in input_fields.iter()) { - {{in_field.ident.clone().unwrap() | ident:"{}_tag_opt"}}.clone(), + &{{in_field.ident.clone().unwrap() | ident:"{}_tag_opt"}}, } ]); diff --git a/oxydsp-flowgraph/src/graph.rs b/oxydsp-flowgraph/src/graph.rs index 79726e3..182e092 100644 --- a/oxydsp-flowgraph/src/graph.rs +++ b/oxydsp-flowgraph/src/graph.rs @@ -8,7 +8,7 @@ macro_rules! flowgraph ($($x:ident),* $(,)?) => { { - let mut flowgraph = FlowGraph::new(); + let mut flowgraph = oxydsp_flowgraph::graph::FlowGraph::new(); $( flowgraph.add_block($x); )* diff --git a/oxydsp-flowgraph/src/io.rs b/oxydsp-flowgraph/src/io.rs index 9f7079b..1164193 100644 --- a/oxydsp-flowgraph/src/io.rs +++ b/oxydsp-flowgraph/src/io.rs @@ -13,12 +13,13 @@ use crate::stream::StreamReader; use crate::stream::StreamWriter; use crate::stream::{self}; use crate::tag::Tag; +use crate::tag::TagSlot; use crate::tag::Tagged; pub struct In { stream: Option>, - tag_stream: Option>, + tag_stream: Option>, // Will rarely be accessed edge: Arc>, @@ -27,7 +28,7 @@ pub struct In pub struct Out { stream: Option>, - tag_stream: Option>, + tag_stream: Option>, // Will rarely be accessed edge: Arc>, @@ -36,13 +37,13 @@ pub struct Out pub struct InReader<'a, T> { data_reader: StreamReader<'a, T>, - tag_reader: StreamReader<'a, Tag>, + tag_reader: StreamReader<'a, TagSlot>, } pub struct OutWriter<'a, T> { data_writer: StreamWriter<'a, T>, - tag_writer: StreamWriter<'a, Tag>, + tag_writer: StreamWriter<'a, TagSlot>, } pub fn stream() -> (Out, In) @@ -119,7 +120,7 @@ impl Out ) -> (AnonymousStreamProducer, AnonymousStreamConsumer) { let (tx, rx) = stream::bounded_queue::(capacity); - let (tx_tag, rx_tag) = stream::bounded_queue::(capacity); + let (tx_tag, rx_tag) = stream::bounded_queue::(capacity); ((tx, tx_tag).into(), (rx, rx_tag).into()) } @@ -182,7 +183,7 @@ impl InReader<'_, T> { tag = self.tag_reader.pop(); } - Some((data, tag).into()) + Some((data, tag.map(|t| t.tag)).into()) } else { @@ -210,12 +211,9 @@ impl OutWriter<'_, T> pub fn push(&self, data: Tagged) -> Result<(), Tagged> { - let (data, mut tag) = data.into(); + let (data, tag) = data.into(); let position = self.data_writer.next_index(); - if let Some(tag) = &mut tag - { - tag.position = position - } + let tag = tag.map(|t| TagSlot { position, tag: t }); match self.data_writer.push(data) { @@ -225,7 +223,7 @@ impl OutWriter<'_, T> Ok(()) } Ok(_) => Ok(()), - Err(data) => Err((data, tag).into()), + Err(data) => Err((data, tag.map(|t| t.tag)).into()), } } @@ -303,18 +301,18 @@ impl_iterator_for_pop_iter_tuple! {12} pub struct AnonymousStreamProducer { inner: Box, - inner_tag: StreamProducer, + inner_tag: StreamProducer, } pub struct AnonymousStreamConsumer { inner: Box, - inner_tag: StreamConsumer, + inner_tag: StreamConsumer, } -impl From<(StreamProducer, StreamProducer)> for AnonymousStreamProducer +impl From<(StreamProducer, StreamProducer)> for AnonymousStreamProducer { - fn from(value: (StreamProducer, StreamProducer)) -> Self + fn from(value: (StreamProducer, StreamProducer)) -> Self { AnonymousStreamProducer { inner: Box::new(value.0), @@ -323,9 +321,9 @@ impl From<(StreamProducer, StreamProducer)> for AnonymousStr } } -impl From<(StreamConsumer, StreamConsumer)> for AnonymousStreamConsumer +impl From<(StreamConsumer, StreamConsumer)> for AnonymousStreamConsumer { - fn from(value: (StreamConsumer, StreamConsumer)) -> Self + fn from(value: (StreamConsumer, StreamConsumer)) -> Self { AnonymousStreamConsumer { inner: Box::new(value.0), @@ -336,7 +334,7 @@ impl From<(StreamConsumer, StreamConsumer)> for AnonymousStr impl AnonymousStreamProducer { - pub fn downcast(self) -> (StreamProducer, StreamProducer) + pub(crate) fn downcast(self) -> (StreamProducer, StreamProducer) { ( *self.inner.downcast::>().unwrap(), @@ -347,7 +345,7 @@ impl AnonymousStreamProducer impl AnonymousStreamConsumer { - pub fn downcast(self) -> (StreamConsumer, StreamConsumer) + pub(crate) fn downcast(self) -> (StreamConsumer, StreamConsumer) { ( *self.inner.downcast::>().unwrap(), diff --git a/oxydsp-flowgraph/src/tag.rs b/oxydsp-flowgraph/src/tag.rs index cb261aa..8e5869a 100644 --- a/oxydsp-flowgraph/src/tag.rs +++ b/oxydsp-flowgraph/src/tag.rs @@ -46,32 +46,41 @@ use std::marker::PhantomData; use std::ops::Deref; use std::ops::DerefMut; use std::sync::Arc; -use std::sync::Mutex; +use std::sync::RwLock; -pub struct Tags +/// Object to allocate tags +struct TagAllocator { // Counter to uniquely identify allocated tags counter: usize, // Keeps readable tag type and label(s) for the tags - tag_data: HashMap, -} - -pub struct TagKey -{ - key: usize, - _phantom: PhantomData, + labels: HashMap, } // Label for a tag like : "symbol", "packet_start", "error" -pub struct TagLabel +struct TagLabel { label: String, } +// Front for tag allocator +pub struct Tags +{ + allocator: Arc>, +} + +#[derive(Clone)] +pub struct TagKey +{ + key: usize, + owner: Arc>, + _phantom: PhantomData, +} + // Tags a particular sample within a specific stream #[derive(Clone)] -pub struct Tag +pub(crate) struct TagSlot { // Position of the sample this tag is tied to. // The position is in terms of the stream front index when the @@ -81,7 +90,14 @@ pub struct Tag // TODO: Make it such that when a tag is duplicated, the data seems to be too: // When adding on a duplicate, it should not replicate on others, but without // requiring a deep copy. - pub data: Arc>>>, + pub tag: Tag, +} + +// Tag key value pairs +#[derive(Clone)] +pub struct Tag +{ + data: Arc>>>, } impl Tags @@ -89,19 +105,40 @@ impl Tags pub fn new() -> Self { Self { - counter: 0, - tag_data: HashMap::new(), + allocator: Arc::new(RwLock::new(TagAllocator { + counter: 0, + labels: HashMap::default(), + })), } } - pub fn allocate_tag(&mut self) -> TagKey + pub fn allocate_tag(&mut self, label: impl AsRef) -> TagKey { - let new_tag = TagKey { - key: self.counter, + let k = self.allocator.write().unwrap().allocate_tag::(label); + TagKey { + key: k, + owner: self.allocator.clone(), _phantom: Default::default(), - }; + } + } +} + +impl TagAllocator +{ + pub fn allocate_tag(&mut self, label: impl AsRef) -> usize + { + let key = self.counter; + self.labels.insert( + self.counter, + ( + std::any::type_name::(), + TagLabel { + label: label.as_ref().to_owned(), + }, + ), + ); self.counter += 1; - new_tag + key } } @@ -118,32 +155,65 @@ impl Tag pub fn new() -> Self { Self { - position: 0, data: Default::default(), } } - pub fn merge_tag_opts(tag_opts: [Option; N]) -> Option + pub fn with_entry(key: TagKey, value: T) -> Self { - let mut out_tag = None; - for tag in tag_opts.iter() + let new_tag = Self::default(); + new_tag.add_entry(key, value); + new_tag + } + + pub fn from_tags(tag_opts: [&Tag; N]) -> Tag + { + let new_tag = Self::default(); { - out_tag = out_tag.merge(tag); + let mut writer = new_tag.data.write().unwrap(); + + for tag in tag_opts.iter() + { + let reader = tag.data.read().unwrap(); + writer.extend(reader.iter().map(|x| (*x.0, x.1.clone()))); + } } - out_tag + new_tag } - pub fn tag(&self, key: impl AsRef, value: T) + pub fn from_tag_opts(tag_opts: [&Option; N]) -> Option { - self.data - .lock() - .unwrap() - .insert(key.as_ref().to_owned(), Arc::new(value)); + if tag_opts.iter().all(|t| t.is_none()) + { + return None; + } + + let new_tag = Self::default(); + { + let mut writer = new_tag.data.write().unwrap(); + + for tag in tag_opts.iter().filter(|t| t.is_some()) + { + let reader = tag.as_ref().unwrap().data.read().unwrap(); + writer.extend(reader.iter().map(|x| (*x.0, x.1.clone()))); + } + } + Some(new_tag) } - pub fn retrieve(&self, key: impl AsRef) -> Option> + pub fn add_entry(&self, key: TagKey, value: T) { - self.data.lock().unwrap().get(key.as_ref()).cloned() + self.data.write().unwrap().insert(key.key, Arc::new(value)); + } + + pub fn retrieve(&self, key: &TagKey) -> Option> + { + let element = self.data.read().unwrap().get(&key.key).cloned(); + + // TODO: When available : downcast unchecked, the type should be guaranteed + // by the TagKey's generic + // (But there might be an issue if the key comes from somewhere else) + element.map(|x| x.downcast().unwrap()) } } @@ -167,19 +237,7 @@ impl TagMergable for Tag { fn merge(&self, other: &Self) -> Self { - // TODO: More performant merge - let mut new = other.clone(); - - new.position = self.position; - { - let mut data_locked = new.data.lock().unwrap(); - for (k, v) in self.data.lock().unwrap().iter() - { - data_locked.insert(k.clone(), v.clone()); - } - } - - new + Self::from_tags([self, other]) } } @@ -187,15 +245,7 @@ impl TagMergable> for Option { fn merge(&self, other: &Self) -> Self { - match self - { - Some(first) => match other - { - Some(other) => Some(first.merge(other)), - None => Some(first.clone()), - }, - None => other.clone(), - } + Tag::from_tag_opts([self, other]) } } @@ -215,10 +265,6 @@ impl Tagged { pub fn new(inner: T, tag: Option) -> Self { - if tag.is_none() - { - //println!("data has no tag"); - } Self(inner, tag) } @@ -243,6 +289,16 @@ impl Tagged self.1 = Some(tag); t } + + pub fn retrieve(&self, key: &TagKey) -> Option> + { + self.1.as_ref().and_then(|t| t.retrieve(key)) + } + + pub fn add_entry(&mut self, key: TagKey, value: D) + { + self.1.get_or_insert(Tag::default()).add_entry(key, value); + } } impl Tagged