From 36bfd7c66ad1332eaedecde3b6273f4db0559103 Mon Sep 17 00:00:00 2001 From: Romeo Disca Date: Fri, 7 Aug 2020 18:04:29 +0200 Subject: chore: create simple command submitter --- src/commands.rs | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100755 src/commands.rs (limited to 'src/commands.rs') diff --git a/src/commands.rs b/src/commands.rs new file mode 100755 index 0000000..d84d9cd --- /dev/null +++ b/src/commands.rs @@ -0,0 +1,99 @@ + +use num_enum::TryFromPrimitive; +use num_enum::IntoPrimitive; +use tokio::io::*; +use tokio::net::TcpStream; + +use super::enums::LatencyMode; + +/// Commands + +pub enum Command { + GetInfo, + CreateScanner { + scan_id: u32, + }, + RemoveScanner { + scan_id: u32, + }, + CreateConnectionChannel { + conn_id: u32, + bd_addr: String, + latency_mode: LatencyMode, + auto_disconnect_time: i16, + }, + RemoveConnectionChannel { + conn_id: u32, + }, + ForceDisconnect { + bd_addr: String, + }, + ChangeModeParameters { + conn_id: u32, + latency_mode: LatencyMode, + auto_disconnect_time: i16, + }, + Ping { + ping_id: u32, + }, + GetButtonInfo { + bd_addr: String, + }, + CreateScanWizard { + scan_wizard_id: u32, + }, + CancelScanWizard { + scan_wizard_id: u32, + }, + DeleteButton { + bd_addr: String, + }, + CreateBatteryStatusListener { + listener_id: u32, + bd_addr: String, + }, + RemoveBatteryStatusListener { + listener_id: u32, + }, +} + +impl Command { + pub fn opcode(&self) -> u8 { + match self { + Self::GetInfo{..} => 0, + Self::CreateScanner{..} => 1, + Self::RemoveScanner{..} => 2, + Self::CreateConnectionChannel{..} => 3, + Self::RemoveConnectionChannel{..} => 4, + Self::ForceDisconnect{..} => 5, + Self::ChangeModeParameters{..} => 6, + Self::Ping{..} => 7, + Self::GetButtonInfo{..} => 8, + Self::CreateScanWizard{..} => 9, + Self::CancelScanWizard{..} => 10, + Self::DeleteButton{..} => 11, + Self::CreateBatteryStatusListener{..} => 12, + Self::RemoveBatteryStatusListener{..} => 13, + } + } + pub fn write_command(&self, writer: &mut TcpStream) -> Result<()> { + match self { + Self::GetInfo{..} => 0, + Self::CreateScanner{..} => 1, + Self::RemoveScanner{..} => 2, + Self::CreateConnectionChannel{..} => 3, + Self::RemoveConnectionChannel{..} => 4, + Self::ForceDisconnect{..} => 5, + Self::ChangeModeParameters{..} => 6, + Self::Ping{..} => 7, + Self::GetButtonInfo{..} => 8, + Self::CreateScanWizard{..} => 9, + Self::CancelScanWizard{..} => 10, + Self::DeleteButton{..} => 11, + Self::CreateBatteryStatusListener{..} => 12, + Self::RemoveBatteryStatusListener{..} => 13, + }; + + Ok(()) + } +} \ No newline at end of file -- cgit v1.2.3