use std::sync::Arc;
use derive_more::Debug;
use tokio_util::sync::CancellationToken;
use crate::{builder::BatteryServiceBuilder, core::device::Device, error::Error};
#[derive(Debug)]
pub struct BatteryService {
#[debug(skip)]
pub(crate) cancellation_token: CancellationToken,
pub device: Arc<Device>,
}
impl BatteryService {
pub async fn new() -> Result<Self, Error> {
Self::builder().build().await
}
pub fn builder() -> BatteryServiceBuilder {
BatteryServiceBuilder::new()
}
}
impl Drop for BatteryService {
fn drop(&mut self) {
self.cancellation_token.cancel();
}
}