#![warn(clippy::all, clippy::pedantic, rust_2018_idioms)]
#![warn(missing_debug_implementations, clippy::unwrap_used)]
#![allow(
clippy::module_name_repetitions,
clippy::missing_errors_doc,
clippy::missing_panics_doc
)]
#![doc = include_str!("../README.md")]
pub mod client;
pub mod error;
pub mod handlers;
pub mod message;
pub mod protocol;
pub mod utilities;
use audiopus::{Channels, SampleRate};
pub use client::*;
pub use error::{Result, ZelloError};
pub use handlers::{handle_message, process_audio_output};
pub use message::{CodecHeader, Error, Event, IncomingMessage, Message, Response};
pub use protocol::Protocol;
pub use utilities::{
connect_to_zello, create_decoder, initialize_logging, load_credentials, load_dotenv,
setup_audio_output,
};
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const GIT_VERSION: &str = env!("GIT_VERSION");
pub const OPUS_CHANNELS: Channels = Channels::Mono;
pub const OPUS_SAMPLE_RATE: SampleRate = SampleRate::Hz16000;
pub const PCM_CHANNEL_CAPACITY: usize = 20;
pub const PCM_BUFFER_SIZE: usize = 1920;
pub const CPAL_SAMPLE_RATE: cpal::SampleRate = cpal::SampleRate(16000);
pub const CPAL_CHANNELS: u16 = 1;
pub const CPAL_VECTOR_QUEUE_CAPACITY: usize = 8192;
pub const PCM_I16_TO_F32: f32 = 1.0 / 32768.0;
#[allow(clippy::cast_possible_truncation)]
pub const CPAL_BUFFER_SIZE: cpal::BufferSize =
cpal::BufferSize::Fixed(PCM_BUFFER_SIZE as cpal::FrameCount);
pub const ZELLO_DEFAULT_URL: &str = "wss://zello.io/ws";
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version() {
assert!(!VERSION.is_empty());
}
#[test]
fn test_git_version() {
assert!(!GIT_VERSION.is_empty());
}
}