use serde::{Deserialize, Serialize};
use crate::{
types::{RegressionValuesInput, RegressionValuesOutput},
Range,
};
pub const MAX_MESSAGE_SIZE: usize = 384;
#[repr(u8)]
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub enum WriteReadCommand {
AdcGetVoltage(usize, Range),
GetStatus,
SysReset,
}
#[repr(u8)]
#[derive(Serialize, Deserialize, Debug, PartialEq)]
#[allow(clippy::large_enum_variant)]
pub enum WriteCommand {
CalibStart,
CalibSetRegValues(RegressionValuesInput, RegressionValuesOutput),
DacSetVoltage(usize, Range, u16),
SysReset,
}
#[repr(u8)]
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub enum Response {
Status(DeviceStatus),
Ack,
Error(ErrorCode),
AdcValue(usize, Range, u16),
}
#[repr(u8)]
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub enum DeviceStatus {
Idle,
Measuring,
Error,
}
#[repr(u8)]
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub enum ErrorCode {
InvalidCommand,
InvalidChannel,
MeasurementFailed,
}