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> !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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.