use crate::ThorlabsDevice;
use crate::messages::utils::short;
const REQ_STATUS_BITS: [u8; 2] = [0x29, 0x04];
const GET_STATUS_BITS: [u8; 2] = [0x2A, 0x04];
#[doc = include_str!("../documentation/get_status_bits.md")]
pub(crate) async fn get_status_bits<A, const CH: usize>(device: &A, channel: usize) -> u32
where
A: ThorlabsDevice<CH>,
{
log::info!("{device} CHANNEL {channel} GET_STATUS_BITS (requested)");
let rx = device.inner().receiver(&GET_STATUS_BITS, channel).await;
if rx.is_new() {
log::info!("{device} CHANNEL {channel} GET_STATUS_BITS (is new)");
let command = short(REQ_STATUS_BITS, channel as u8, 0);
device.inner().send(command).await;
}
let response = rx.receive().await;
log::info!("{device} CHANNEL {channel} GET_STATUS_BITS (success)");
u32::from_le_bytes([response[8], response[9], response[10], response[11]])
}