use std::convert::Infallible;
use uuid::Uuid;
use crate::client::{DeviceBase, HlapiClient, HlapiClientError};
#[derive(Debug, Clone)]
pub struct Serial {
client: HlapiClient,
uuid: Uuid,
}
impl Serial {
pub fn get_address(&self) -> Result<u8, HlapiClientError> {
Ok(self.call("getAddress", &[], &[])?.0)
}
pub fn get_base_address(&self) -> Result<u64, HlapiClientError> {
Ok(self.call("getBaseAddress", &[], &[])?.0)
}
pub fn get_baud_rate(&self) -> Result<u32, HlapiClientError> {
Ok(self.call("getBaudRate", &[], &[])?.0)
}
pub fn get_noise_count(&self) -> Result<u32, HlapiClientError> {
Ok(self.call("getNoiseCount", &[], &[])?.0)
}
pub fn get_overrun_count(&self) -> Result<u32, HlapiClientError> {
Ok(self.call("getOverrunCount", &[], &[])?.0)
}
pub fn get_rx_error_count(&self) -> Result<u32, HlapiClientError> {
Ok(self.call("getRxErrorCount", &[], &[])?.0)
}
pub fn get_tx_error_count(&self) -> Result<u32, HlapiClientError> {
Ok(self.call("getTxErrorCount", &[], &[])?.0)
}
}
impl DeviceBase for Serial {
const TYPE: &'static str = "serial";
type Event = Infallible;
fn new(client: HlapiClient, uuid: Uuid) -> Result<Self, HlapiClientError> {
Ok(Self { client, uuid })
}
fn uuid_base(&self) -> Uuid {
self.uuid
}
fn client(&self) -> &HlapiClient {
&self.client
}
}