use log::debug;
use m17app::adapter::StreamAdapter;
use m17app::app::TxHandle;
-use m17core::address::Address;
-use m17core::address::Callsign;
-use m17core::protocol::LsfFrame;
-use m17core::protocol::StreamFrame;
+use m17app::link_setup::LinkSetup;
+use m17app::link_setup::M17Address;
+use m17app::StreamFrame;
use std::collections::VecDeque;
use std::fs::File;
use std::io::Write;
fn tnc_closed(&self) {}
- fn stream_began(&self, _lsf: LsfFrame) {
+ fn stream_began(&self, _link_setup: LinkSetup) {
// for now we will assume:
// - unencrypted
// - data type is Voice (Codec2 3200), not Voice+Data
pub struct WavePlayer;
impl WavePlayer {
- pub fn play(path: PathBuf, tx: TxHandle) {
+ pub fn play(
+ path: PathBuf,
+ tx: TxHandle,
+ source: &M17Address,
+ destination: &M17Address,
+ channel_access_number: u8,
+ ) {
let mut reader = hound::WavReader::open(path).unwrap();
let mut samples = reader.samples::<i16>();
let mut next_tick = Instant::now() + TICK;
let mut frame_number = 0;
- // TODO: need a better way to create addresses from std strings
-
- let lsf = LsfFrame::new_voice(
- &Address::Callsign(Callsign(b"VK7XT ".clone())),
- &Address::Broadcast,
- );
-
- tx.transmit_stream_start(lsf.clone());
+ let mut setup = LinkSetup::new_voice(source, destination);
+ setup.set_channel_access_number(channel_access_number);
+ tx.transmit_stream_start(&setup);
loop {
let mut last_one = false;
}
codec.encode(&mut out, &in_buf);
}
- tx.transmit_stream_next(StreamFrame {
+ tx.transmit_stream_next(&StreamFrame {
lich_idx: lsf_chunk as u8,
- lich_part: lsf.0[lsf_chunk * 5..(lsf_chunk + 1) * 5]
- .try_into()
- .unwrap(),
+ lich_part: setup.lich_part(lsf_chunk as u8),
frame_number,
end_of_stream: last_one,
stream_data: out_buf.clone(),