pub trait JoyConDriver {
const ACK_TRY: usize = 5usize;
Show 18 methods
// Required methods
fn valid_reply(&self) -> bool;
fn set_valid_reply(&mut self, valid: bool);
fn write(&self, data: &[u8]) -> JoyConResult<usize>;
fn read(&self, buf: &mut [u8]) -> JoyConResult<usize>;
fn read_timeout(&self, buf: &mut [u8], timeout: i32) -> JoyConResult<usize>;
fn global_packet_number(&self) -> u8;
fn increase_global_packet_number(&mut self);
fn set_rumble_status(
&mut self,
rumble_l_r: (Option<Rumble>, Option<Rumble>),
);
fn get_rumble_status(&self) -> (Option<Rumble>, Option<Rumble>);
fn enable_feature(&mut self, feature: JoyConFeature) -> JoyConResult<()>;
fn enabled_features(&self) -> &HashSet<JoyConFeature>;
fn devices(&self) -> Vec<Arc<Mutex<JoyConDevice>>>;
// Provided methods
fn rumble(
&mut self,
rumble_l_r: (Option<Rumble>, Option<Rumble>),
) -> JoyConResult<usize> { ... }
fn send_command_raw(
&mut self,
command: u8,
sub_command: u8,
data: &[u8],
) -> JoyConResult<usize> { ... }
fn send_sub_command_raw(
&mut self,
sub_command: u8,
data: &[u8],
) -> JoyConResult<SubCommandReply<[u8; 362]>> { ... }
fn send_command(
&mut self,
command: Command,
sub_command: SubCommand,
data: &[u8],
) -> JoyConResult<usize> { ... }
fn send_sub_command(
&mut self,
sub_command: SubCommand,
data: &[u8],
) -> JoyConResult<SubCommandReply<[u8; 362]>> { ... }
fn reset(&mut self) -> JoyConResult<()> { ... }
}
Provided Associated Constants§
Required Methods§
Sourcefn valid_reply(&self) -> bool
fn valid_reply(&self) -> bool
If true
, driver does not read and check reply of sub-command.
fn set_valid_reply(&mut self, valid: bool)
Sourcefn write(&self, data: &[u8]) -> JoyConResult<usize>
fn write(&self, data: &[u8]) -> JoyConResult<usize>
Send command to Joy-Con
Sourcefn read(&self, buf: &mut [u8]) -> JoyConResult<usize>
fn read(&self, buf: &mut [u8]) -> JoyConResult<usize>
Read reply from Joy-Con
Sourcefn read_timeout(&self, buf: &mut [u8], timeout: i32) -> JoyConResult<usize>
fn read_timeout(&self, buf: &mut [u8], timeout: i32) -> JoyConResult<usize>
- timeout - milli seconds
Sourcefn global_packet_number(&self) -> u8
fn global_packet_number(&self) -> u8
Get global packet number
Sourcefn increase_global_packet_number(&mut self)
fn increase_global_packet_number(&mut self)
Increase global packet number. Increment by 1 for each packet sent. It loops in 0x0 - 0xF range.
Sourcefn set_rumble_status(&mut self, rumble_l_r: (Option<Rumble>, Option<Rumble>))
fn set_rumble_status(&mut self, rumble_l_r: (Option<Rumble>, Option<Rumble>))
Set rumble status.
Sourcefn enable_feature(&mut self, feature: JoyConFeature) -> JoyConResult<()>
fn enable_feature(&mut self, feature: JoyConFeature) -> JoyConResult<()>
Enable Joy-Con’s feature. ex. IMU(6-Axis sensor), Vibration(Rumble)
Sourcefn enabled_features(&self) -> &HashSet<JoyConFeature>
fn enabled_features(&self) -> &HashSet<JoyConFeature>
Get Enabled features.
Provided Methods§
Sourcefn rumble(
&mut self,
rumble_l_r: (Option<Rumble>, Option<Rumble>),
) -> JoyConResult<usize>
fn rumble( &mut self, rumble_l_r: (Option<Rumble>, Option<Rumble>), ) -> JoyConResult<usize>
Set rumble status and send rumble command to JoyCon. If Joy-Con’s rumble feature isn’t activated, activate it.
Sourcefn send_command_raw(
&mut self,
command: u8,
sub_command: u8,
data: &[u8],
) -> JoyConResult<usize>
fn send_command_raw( &mut self, command: u8, sub_command: u8, data: &[u8], ) -> JoyConResult<usize>
Send command, sub-command, and data (sub-command’s arguments) with u8 integers This returns ACK packet for the command or Error.
Sourcefn send_sub_command_raw(
&mut self,
sub_command: u8,
data: &[u8],
) -> JoyConResult<SubCommandReply<[u8; 362]>>
fn send_sub_command_raw( &mut self, sub_command: u8, data: &[u8], ) -> JoyConResult<SubCommandReply<[u8; 362]>>
Send sub-command, and data (sub-command’s arguments) with u8 integers This returns ACK packet for the command or Error.
§Notice
If you are using non-blocking mode, it is more likely to fail to validate the sub command reply.
Sourcefn send_command(
&mut self,
command: Command,
sub_command: SubCommand,
data: &[u8],
) -> JoyConResult<usize>
fn send_command( &mut self, command: Command, sub_command: SubCommand, data: &[u8], ) -> JoyConResult<usize>
Send command, sub-command, and data (sub-command’s arguments) with Command
and SubCommand
This returns ACK packet for the command or Error.
§Notice
If you are using non-blocking mode, it is more likely to fail to validate the sub command reply.
Sourcefn send_sub_command(
&mut self,
sub_command: SubCommand,
data: &[u8],
) -> JoyConResult<SubCommandReply<[u8; 362]>>
fn send_sub_command( &mut self, sub_command: SubCommand, data: &[u8], ) -> JoyConResult<SubCommandReply<[u8; 362]>>
Send sub-command, and data (sub-command’s arguments) with Command
and SubCommand
This returns ACK packet for the command or Error.
Sourcefn reset(&mut self) -> JoyConResult<()>
fn reset(&mut self) -> JoyConResult<()>
Initialize Joy-Con’s status
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.