pub struct DeviceManager {
pub devices: Vec<Device>,
/* private fields */
}Expand description
Gerencia múltiplos devices: carrega configs JSON, conecta, despacha eventos.
§Uso básico
let mut manager = DeviceManager::new("examples/devices/configs");
manager.load_devices();
manager.connect_devices(false).await;Fields§
§devices: Vec<Device>Devices carregados.
Implementations§
Source§impl DeviceManager
impl DeviceManager
Sourcepub fn new<P: AsRef<Path>>(devices_path: P) -> Self
pub fn new<P: AsRef<Path>>(devices_path: P) -> Self
Cria um manager apontando para devices_path.
Sourcepub fn with_event_handler(self, handler: SharedEventHandler) -> Self
pub fn with_event_handler(self, handler: SharedEventHandler) -> Self
Define o handler de eventos (builder-style).
Sourcepub fn set_event_handler(&mut self, handler: SharedEventHandler)
pub fn set_event_handler(&mut self, handler: SharedEventHandler)
Substitui o handler de eventos.
Sourcepub fn load_devices(&mut self)
pub fn load_devices(&mut self)
Lê os arquivos .json de devices_path e popula self.devices.
Cada arquivo deve ter um campo "reader" ("X714" ou "R700_IOT").
O nome do arquivo (sem .json) vira o name do device.
Todos os outros campos são opcionais — padrões são aplicados automaticamente.
Chama assign_event_handler() ao final.
Sourcepub fn add_device(
&mut self,
name: &str,
device_type: &str,
data: HashMap<String, Value>,
)
pub fn add_device( &mut self, name: &str, device_type: &str, data: HashMap<String, Value>, )
Adiciona um device a partir de parâmetros já parseados.
O campo "name" é injetado automaticamente a partir do nome do arquivo.
Campos não informados usam os padrões de cada device.
Sourcepub fn assign_event_handler(&mut self)
pub fn assign_event_handler(&mut self)
Atribui o handler de eventos a todos os devices carregados.
Sourcepub async fn connect_devices(&mut self, force: bool)
pub async fn connect_devices(&mut self, force: bool)
Conecta todos os devices em background (tasks tokio).
- Se já existirem tasks ativas e
forceforfalse, é um no-op. - Se
forcefortrue, cancela as tasks anteriores, desconecta os devices, recarrega os JSONs e reconecta tudo.
Sourcepub async fn cancel_connect_tasks(&mut self)
pub async fn cancel_connect_tasks(&mut self)
Cancela todas as tasks de conexão ativas.
Sourcepub async fn disconnect_devices(&mut self)
pub async fn disconnect_devices(&mut self)
Fecha todos os devices e limpa a lista.
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
Sourcepub fn get_device_names(&self) -> Vec<String>
pub fn get_device_names(&self) -> Vec<String>
Retorna os nomes de todos os devices carregados.
Sourcepub fn get_device(&self, name: &str) -> Option<&Device>
pub fn get_device(&self, name: &str) -> Option<&Device>
Retorna referência para um device pelo nome.
Sourcepub fn get_device_mut(&mut self, name: &str) -> Option<&mut Device>
pub fn get_device_mut(&mut self, name: &str) -> Option<&mut Device>
Retorna referência mutável para um device pelo nome.
Sourcepub fn get_device_info(&self, name: Option<&str>) -> Vec<DeviceInfo>
pub fn get_device_info(&self, name: Option<&str>) -> Vec<DeviceInfo>
Snapshot de estado de um ou todos os devices.
Se name for None, retorna info de todos.
Sourcepub fn any_device_reading(&self) -> bool
pub fn any_device_reading(&self) -> bool
true se pelo menos um device está conectado e lendo.
Sourcepub fn get_serial_number(&self, name: &str) -> Option<String>
pub fn get_serial_number(&self, name: &str) -> Option<String>
Retorna o número de serial do device (apenas se conectado).
Sourcepub async fn start_inventory(&self, name: &str) -> Result<(), String>
pub async fn start_inventory(&self, name: &str) -> Result<(), String>
Inicia inventário em um device específico.
Sourcepub async fn stop_inventory(&self, name: &str) -> Result<(), String>
pub async fn stop_inventory(&self, name: &str) -> Result<(), String>
Para inventário em um device específico.
Sourcepub async fn start_inventory_all(&self) -> HashMap<String, bool>
pub async fn start_inventory_all(&self) -> HashMap<String, bool>
Inicia inventário em todos os devices RFID conectados.
Retorna mapa name → ok.
Sourcepub async fn stop_inventory_all(&self) -> HashMap<String, bool>
pub async fn stop_inventory_all(&self) -> HashMap<String, bool>
Para inventário em todos os devices RFID conectados.
Retorna mapa name → ok.
Sourcepub async fn write_epc(
&self,
name: &str,
target_identifier: Option<&str>,
target_value: Option<&str>,
new_epc: &str,
password: &str,
) -> Result<(), String>
pub async fn write_epc( &self, name: &str, target_identifier: Option<&str>, target_value: Option<&str>, new_epc: &str, password: &str, ) -> Result<(), String>
Escreve um novo EPC em uma tag.
target_identifier:Some("epc")ouSome("tid")(filtra a tag alvo);None= qualquer tag.target_value: valor do identificador alvo (obrigatório quandotarget_identifieréSome).