Struct CommandInterface

Source
pub struct CommandInterface<KINTF: KiibohdCommandInterface<H>, const TX: usize, const RX: usize, const N: usize, const H: usize, const S: usize, const ID: usize> {
    pub rx_bytebuf: Buffer<RX, N>,
    pub tx_bytebuf: Buffer<TX, N>,
    /* private fields */
}

Fields§

§rx_bytebuf: Buffer<RX, N>§tx_bytebuf: Buffer<TX, N>

Implementations§

Source§

impl<KINTF: KiibohdCommandInterface<H>, const TX: usize, const RX: usize, const N: usize, const H: usize, const S: usize, const ID: usize> CommandInterface<KINTF, TX, RX, N, H, S, ID>

Source

pub fn new( ids: &[HidIoCommandId], interface: KINTF, ) -> Result<CommandInterface<KINTF, TX, RX, N, H, S, ID>, CommandError>

Source

pub fn host_info_cached(&self) -> &HidIoHostInfo

Source

pub fn interface(&self) -> &KINTF

Reference to the customized interface The interface will likely have custom datastructures that you want access to (e.g. manufacturing toggles)

Source

pub fn mut_interface(&mut self) -> &mut KINTF

Mut reference to the customized interface The interface will likely have custom datastructures that you want access to (e.g. manufacturing toggles)

Source

pub fn rx_packetbuffer_decode(&mut self) -> Result<bool, CommandError>

Decode rx_bytebuf into a HidIoPacketBuffer Returns true if buffer ready, false if not

Source

pub fn process_rx(&mut self, count: u8) -> Result<u8, CommandError>

Process rx buffer until empty Handles flushing tx->rx, decoding, then processing buffers Returns the number of buffers processed

Source

pub fn term_buffer_flush(&mut self) -> Result<(), CommandError>

Flush the term buffer

Source

pub fn process_event(&mut self, event: HidIoEvent) -> Result<(), CommandError>

Process incoming events through HID-IO This is the preferred mechanism to interact with HID-IO (if possible for your situation)

Trait Implementations§

Source§

impl<KINTF: KiibohdCommandInterface<H>, const TX: usize, const RX: usize, const N: usize, const H: usize, const S: usize, const ID: usize> Commands<H, { MESSAGE_LEN - 1 }, { MESSAGE_LEN - 2 }, { MESSAGE_LEN - 4 }, ID> for CommandInterface<KINTF, TX, RX, N, H, S, ID>

CommandInterface for Commands TX - tx byte buffer size (in multiples of N) RX - tx byte buffer size (in multiples of N) N - Max payload length (HidIoPacketBuffer), used for default values H - Max data payload length (HidIoPacketBuffer) S - Serialization buffer size ID - Max number of HidIoCommandIds

Source§

fn h0001_info_cmd(&mut self, data: Cmd) -> Result<Ack<{ _ }>, Nak>

Uses the CommandInterface to send data directly

Source§

fn h0001_info_ack(&mut self, data: Ack<{ _ }>) -> Result<(), CommandError>

Uses the CommandInterface to store data rather than issue a callback

Source§

fn default_packet_chunk(&self) -> u32

Default packet chunk (Usual chunk sizes are 63 or 64)
Source§

fn tx_packetbuffer_send( &mut self, buf: &mut HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Given a HidIoPacketBuffer serialize (and resulting send bytes)
Source§

fn supported_id(&self, id: HidIoCommandId) -> bool

Check if id is valid for this interface (By default support all ids)
Source§

fn h0000_supported_ids_cmd(&mut self, _data: Cmd) -> Result<Ack<ID>, Nak>

Source§

fn h0002_test_cmd(&mut self, data: Cmd<H>) -> Result<Ack<H>, Nak>

Source§

fn h0016_flashmode_cmd(&mut self, data: Cmd) -> Result<Ack, Nak>

Source§

fn h001a_sleepmode_cmd(&mut self, data: Cmd) -> Result<Ack, Nak>

Source§

fn h0021_pixelsetting_cmd(&mut self, data: Cmd) -> Result<Ack, Nak>

Source§

fn h0021_pixelsetting_nacmd(&mut self, data: Cmd) -> Result<(), CommandError>

Source§

fn h0026_directset_cmd(&mut self, data: Cmd<{ _ }>) -> Result<Ack, Nak>

Source§

fn h0026_directset_nacmd( &mut self, data: Cmd<{ _ }>, ) -> Result<(), CommandError>

Source§

fn h0031_terminalcmd_cmd(&mut self, data: Cmd<H>) -> Result<Ack, Nak>

Source§

fn h0031_terminalcmd_nacmd(&mut self, data: Cmd<H>) -> Result<(), CommandError>

Source§

fn h0050_manufacturing_cmd(&mut self, data: Cmd) -> Result<Ack, Nak>

Source§

fn h0051_manufacturingres_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn empty_ack(&mut self, id: HidIoCommandId) -> Result<(), CommandError>

Simple empty ack
Source§

fn empty_nak(&mut self, id: HidIoCommandId) -> Result<(), CommandError>

Simple empty nak
Source§

fn byte_ack(&mut self, id: HidIoCommandId, byte: u8) -> Result<(), CommandError>

Simple byte ack
Source§

fn byte_nak(&mut self, id: HidIoCommandId, byte: u8) -> Result<(), CommandError>

Simple byte nak
Source§

fn short_ack( &mut self, id: HidIoCommandId, val: u16, ) -> Result<(), CommandError>

Simple short ack (16-bit)
Source§

fn short_nak( &mut self, id: HidIoCommandId, val: u16, ) -> Result<(), CommandError>

Simple short nak (16-bit)
Source§

fn rx_message_handling( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Process specific packet types Handles matching to interface functions
Source§

fn h0000_supported_ids(&mut self, _data: Cmd) -> Result<(), CommandError>

Source§

fn h0000_supported_ids_ack( &mut self, _data: Ack<ID>, ) -> Result<(), CommandError>

Source§

fn h0000_supported_ids_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0000_supported_ids_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0001_info(&mut self, data: Cmd) -> Result<(), CommandError>

Source§

fn h0001_info_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0001_info_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0002_test(&mut self, data: Cmd<H>, na: bool) -> Result<(), CommandError>

Source§

fn h0002_test_nacmd(&mut self, _data: Cmd<H>) -> Result<(), CommandError>

Source§

fn h0002_test_ack(&mut self, _data: Ack<H>) -> Result<(), CommandError>

Source§

fn h0002_test_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0002_test_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0003_resethidio(&mut self, _data: Cmd) -> Result<(), CommandError>

Source§

fn h0003_resethidio_cmd(&mut self, _data: Cmd) -> Result<Ack, Nak>

Source§

fn h0003_resethidio_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0003_resethidio_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0003_resethidio_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0016_flashmode(&mut self, _data: Cmd) -> Result<(), CommandError>

Source§

fn h0016_flashmode_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0016_flashmode_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0016_flashmode_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0017_unicodetext( &mut self, data: Cmd<H>, na: bool, ) -> Result<(), CommandError>

Source§

fn h0017_unicodetext_cmd(&mut self, _data: Cmd<H>) -> Result<Ack, Nak>

Source§

fn h0017_unicodetext_nacmd(&mut self, _data: Cmd<H>) -> Result<(), CommandError>

Source§

fn h0017_unicodetext_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0017_unicodetext_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0017_unicodetext_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0018_unicodestate( &mut self, data: Cmd<H>, na: bool, ) -> Result<(), CommandError>

Source§

fn h0018_unicodestate_cmd(&mut self, _data: Cmd<H>) -> Result<Ack, Nak>

Source§

fn h0018_unicodestate_nacmd( &mut self, _data: Cmd<H>, ) -> Result<(), CommandError>

Source§

fn h0018_unicodestate_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0018_unicodestate_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0018_unicodestate_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h001a_sleepmode(&mut self, _data: Cmd) -> Result<(), CommandError>

Source§

fn h001a_sleepmode_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h001a_sleepmode_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h001a_sleepmode_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0020_klltrigger(&mut self, data: Cmd, na: bool) -> Result<(), CommandError>

Source§

fn h0020_klltrigger_cmd(&mut self, _data: Cmd) -> Result<Ack, Nak>

Source§

fn h0020_klltrigger_nacmd(&mut self, _data: Cmd) -> Result<(), CommandError>

Source§

fn h0020_klltrigger_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0020_klltrigger_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0020_klltrigger_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0021_pixelsetting( &mut self, data: Cmd, na: bool, ) -> Result<(), CommandError>

Source§

fn h0021_pixelsetting_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0021_pixelsetting_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0021_pixelsetting_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0026_directset( &mut self, data: Cmd<HSUB2>, na: bool, ) -> Result<(), CommandError>

Source§

fn h0026_directset_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0026_directset_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0026_directset_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0030_openurl(&mut self, data: Cmd<H>) -> Result<(), CommandError>

Source§

fn h0030_openurl_cmd(&mut self, _data: Cmd<H>) -> Result<Ack, Nak>

Source§

fn h0030_openurl_nacmd(&mut self, _data: Cmd<H>) -> Result<(), CommandError>

Source§

fn h0030_openurl_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0030_openurl_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0030_openurl_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0031_terminalcmd( &mut self, data: Cmd<H>, na: bool, ) -> Result<(), CommandError>

Source§

fn h0031_terminalcmd_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0031_terminalcmd_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0031_terminalcmd_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0034_terminalout( &mut self, data: Cmd<H>, na: bool, ) -> Result<(), CommandError>

Source§

fn h0034_terminalout_cmd(&mut self, _data: Cmd<H>) -> Result<Ack, Nak>

Source§

fn h0034_terminalout_nacmd(&mut self, _data: Cmd<H>) -> Result<(), CommandError>

Source§

fn h0034_terminalout_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0034_terminalout_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0034_terminalout_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0050_manufacturing(&mut self, data: Cmd) -> Result<(), CommandError>

Source§

fn h0050_manufacturing_ack(&mut self, _data: Ack) -> Result<(), CommandError>

Source§

fn h0050_manufacturing_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0050_manufacturing_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Source§

fn h0051_manufacturingres( &mut self, data: Cmd<HSUB4>, ) -> Result<(), CommandError>

Source§

fn h0051_manufacturingres_cmd(&mut self, _data: Cmd<HSUB4>) -> Result<Ack, Nak>

Source§

fn h0051_manufacturingres_nak(&mut self, _data: Nak) -> Result<(), CommandError>

Source§

fn h0051_manufacturingres_handler( &mut self, buf: HidIoPacketBuffer<H>, ) -> Result<(), CommandError>

Auto Trait Implementations§

§

impl<KINTF, const TX: usize, const RX: usize, const N: usize, const H: usize, const S: usize, const ID: usize> !Freeze for CommandInterface<KINTF, TX, RX, N, H, S, ID>

§

impl<KINTF, const TX: usize, const RX: usize, const N: usize, const H: usize, const S: usize, const ID: usize> !RefUnwindSafe for CommandInterface<KINTF, TX, RX, N, H, S, ID>

§

impl<KINTF, const TX: usize, const RX: usize, const N: usize, const H: usize, const S: usize, const ID: usize> Send for CommandInterface<KINTF, TX, RX, N, H, S, ID>
where KINTF: Send,

§

impl<KINTF, const TX: usize, const RX: usize, const N: usize, const H: usize, const S: usize, const ID: usize> !Sync for CommandInterface<KINTF, TX, RX, N, H, S, ID>

§

impl<KINTF, const TX: usize, const RX: usize, const N: usize, const H: usize, const S: usize, const ID: usize> Unpin for CommandInterface<KINTF, TX, RX, N, H, S, ID>
where KINTF: Unpin,

§

impl<KINTF, const TX: usize, const RX: usize, const N: usize, const H: usize, const S: usize, const ID: usize> UnwindSafe for CommandInterface<KINTF, TX, RX, N, H, S, ID>
where KINTF: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.