fn clock_data_out(&mut self, mode: ClockDataOut, data: &[u8]) -> Result<(), TimeoutError> {
        if data.is_empty() {
            return Ok(());
        }

        let cmd = MpsseCmdBuilder::new().clock_data_out(mode, data);
        self.write_all(cmd.as_slice())
    }
/// Clock data out.
///
/// This will clock out bytes on TDI/DO.
/// No data is clocked into the device on TDO/DI.
///
/// # Example
///
/// ```no_run
/// use ftdi_mpsse::ClockDataOut;
/// use libftd2xx::{Ft232h, FtdiMpsse};
///
/// let mut ft = Ft232h::with_serial_number("FT5AVX6B")?;
/// ft.initialize_mpsse_default()?;
/// ft.set_clock(100_000)?;
/// ft.set_gpio_lower(0xFA, 0xFB)?;
/// ft.set_gpio_lower(0xF2, 0xFB)?;
/// ft.clock_data_out(ClockDataOut::MsbNeg, &[0x12, 0x34, 0x56])?;
/// ft.set_gpio_lower(0xFA, 0xFB)?;
/// # Ok::<(), std::boxed::Box<dyn std::error::Error>>(())
/// ```
Clock data out.
This will clock out bytes on TDI/DO.
No data is clocked into the device on TDO/DI.
Clock data out . This will clock out bytes on TDI / DO . No data is clocked into the device on TDO / DI .
fn clock_data_out(&mut self, mode: ClockDataOut, data: &[u8]) -> Result<(), TimeoutError> {
        if data.is_empty() {
            return Ok(());
        }
        let cmd = MpsseCmdBuilder::new().clock_data_out(mode, data);
        self.write_all(cmd.as_slice())
    }
fn clock_data_out ( & mut self , mode : ClockDataOut , data : & [ u8 ] ) -> Result < ( ) , TimeoutError > { if data . is_empty ( ) { return Ok ( ( ) ) ; } let cmd = MpsseCmdBuilder :: new ( ) . clock_data_out ( mode , data ) ; self . write_all ( cmd . as_slice ( ) ) }
Clock data out.
Clock data out .
&mut self
mode
ClockDataOut
data
&[u8]
&mut self
mode
ClockDataOut
data
&[u8]
example
```no_run
use ftdi_mpsse::ClockDataOut;
use libftd2xx::{Ft232h, FtdiMpsse}.


` ` ` no_run use ftdi_mpsse :: ClockDataOut ; use libftd2xx :: { Ft232h FtdiMpsse } .
ok::<(), std::boxed::box<dyn std::error::error>>(())
None