78 lines
1.6 KiB
Rust
78 lines
1.6 KiB
Rust
#![no_std]
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Serialize, Deserialize, Debug, PartialEq)]
|
|
pub enum DeviceMessage {
|
|
Status(StatusMessage),
|
|
PLLSettings(PLLSettings),
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, PartialEq)]
|
|
pub enum HostMessage {
|
|
RequestStatus,
|
|
SetPLLSettings(PLLSettings),
|
|
GetPllSettings,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
|
|
pub struct StatusMessage {
|
|
pub measured_frequency: u64,
|
|
pub average_frequency: u64,
|
|
pub pwm: u16,
|
|
}
|
|
|
|
impl Default for StatusMessage {
|
|
fn default() -> Self {
|
|
Self {
|
|
measured_frequency: 0u64,
|
|
average_frequency: 0u64,
|
|
pwm: 0u16,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
|
|
pub struct PLLSettings {
|
|
pub ms1_frequency: u32,
|
|
pub ms2_frequency: u32,
|
|
pub outputs: [OutputSettings; 3],
|
|
}
|
|
|
|
impl Default for PLLSettings {
|
|
fn default() -> Self {
|
|
Self {
|
|
ms1_frequency: 800_000_000,
|
|
ms2_frequency: 800_000_000,
|
|
outputs: [
|
|
OutputSettings::default(),
|
|
OutputSettings::default(),
|
|
OutputSettings::default(),
|
|
],
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
|
|
pub struct OutputSettings {
|
|
pub frequency: u32,
|
|
pub enable: bool,
|
|
pub source: Multisynth,
|
|
}
|
|
|
|
impl Default for OutputSettings {
|
|
fn default() -> Self {
|
|
Self {
|
|
frequency: 10_000_000,
|
|
enable: false,
|
|
source: Multisynth::MS1,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
|
|
pub enum Multisynth {
|
|
MS1,
|
|
MS2,
|
|
}
|