pyHydrabus package¶
Submodules¶
pyHydrabus.hydrabus module¶
-
class
pyHydrabus.hydrabus.Hydrabus(port='')¶ Bases:
objectBase class for all modes.
Manages all serial communication
-
close()¶ Close the serial port
-
connected¶ Check if serial port is opened
Returns: Bool
-
enter_bbio()¶ Enter BBIO mode.
This should be done prior all further operations
Returns: Bool
-
exit_bbio()¶ Reset Hydrabus to CLI mode
Returns: Bool
-
flush_input()¶ Flush input buffer (data from Hydrabus)
-
identify()¶ Identify the current mode
Returns: Current mode Return type: str
-
in_waiting¶ Return the number of bytes in the receive buffer.
Returns: Number of bytes Return type: int
-
read(length=1)¶ Base read primitive
Parameters: length (int) – Number of bytes to read Returns: Read data Return type: bytes
-
reset()¶ Force reset to BBIO main mode
Returns: Bool
-
timeout¶ Serial port read timeout
Returns: timeout Return type: int
-
write(data=b'')¶ Base write primitive
Parameters: data (bytes) – Bytes to write
-
pyHydrabus.i2c module¶
-
class
pyHydrabus.i2c.I2C(port='')¶ Bases:
pyHydrabus.protocol.ProtocolI2C protocol handler
Example: >>> #Read data from an EEPROM >>> import pyHydrabus >>> i=pyHydrabus.I2C('/dev/hydrabus') >>> i.set_speed(pyHydrabus.I2C.I2C_SPEED_100K) >>> i.pullup=1 >>> i.start();i.bulk_write(b' ');print(i.write_read(b'¡',64))
-
I2C_SPEED_100K= 1¶
-
I2C_SPEED_1M= 3¶
-
I2C_SPEED_400K= 2¶
-
I2C_SPEED_50K= 0¶
-
bulk_write(data=b'')¶ Bulk write on I2C bus https://github.com/hydrabus/hydrafw/wiki/HydraFW-Binary-I2C-mode-guide#bulk-i2c-write-0b0001xxxx
Parameters: data (bytes) – Data to be sent Returns: ACK status of the written bytes (b’‘=ACK, b’’=NACK) Return type: list
-
pullup¶ Pullup status (0=off, 1=on)
-
read(length=0)¶ Read on I2C bus
Parameters: length (int) – Number of bytes to read Returns: Read data Return type: bytes
-
read_byte()¶ Read a byte from the I2C bus
-
scan()¶ Scan I2C bus and returns all available device addresses in a list
Returns: List of available device addresses Return type: list
-
send_ack()¶ Send an ACK Used with the read_byte() function
-
send_nack()¶ Send a NACK Used with the read_byte() function
-
set_speed(speed)¶ Set I2C bus speed
Parameters: speed – Select any of the defined speeds (I2C_SPEED_*)
-
start()¶ Send a I2C start condition
-
stop()¶ Send a I2C stop condition
-
write(data=b'')¶ Write on I2C bus
Parameters: data (bytes) – data to be sent
-
write_read(data=b'', read_len=0)¶ Write-then-read operation https://github.com/hydrabus/hydrafw/wiki/HydraFW-Binary-I2C-mode-guide#i2c-write-then-read-0b00001000
This method sends a start condition before writing and a stop condition after reading.
Parameters: - data (bytes) – Data to be sent
- read_len (int) – Number of bytes to read
Returns: Read data
Return type: bytes
-
pyHydrabus.onewire module¶
-
class
pyHydrabus.onewire.OneWire(port='')¶ Bases:
pyHydrabus.protocol.ProtocolOne wire protocol handler
Example: TODO
-
bulk_write(data=b'')¶ Bulk write on 1-Wire bus https://github.com/hydrabus/hydrafw/wiki/HydraFW-binary-1-Wire-mode-guide#bulk-1-wire-transfer-0b0001xxxx
Parameters: data (bytes) – Data to be sent
-
pullup¶ Pullup status (0=off, 1=on)
-
read(read_len=0)¶ Read on 1-Wire bus
Parameters: read_len – Number of bytes to be read Return read_len: int Returns: Read data Return type: bytes
-
read_byte()¶ Read a byte from the 1-Wire bus
-
reset()¶ Send a 1-Wire reset
-
write(data=b'')¶ Write on 1-Wire bus
Parameters: data (bytes) – data to be sent
-
pyHydrabus.protocol module¶
-
class
pyHydrabus.protocol.Protocol(name='', fname='', mode_byte=b'x00', port='')¶ Bases:
objectBase class for all supported protocols
Parameters: - name (str) – Name of the protocol (returned by Hydrabus) eg. SPI1
- fname (str) – Full name of the protocol
- mode_byte (bytes) – Byte used to enter the mode (eg. for SPI)
- port (str) – The port name
-
close()¶ Close the communication channel and resets Hydrabus
-
hydrabus¶ Return _hydrabus instance to access Hydrabus class functions and serial methods from any protocol classes instances
Returns: _hydrabus class instance
-
identify()¶ Identify the current mode
Returns: The current mode identifier (4 bytes) Return type: str
-
timeout¶
pyHydrabus.rawwire module¶
-
class
pyHydrabus.rawwire.RawWire(port='')¶ Bases:
pyHydrabus.protocol.ProtocolRaw wire protocol handler
Example: >>> import pyHydrabus >>> r=pyHydrabus.RawWire('/dev/hydrabus') >>> # Set SDA to high >>> r.sda = 1 >>> # Send two clock ticks >>> r.clocks(2) >>> # Read two bytes >>> data = r.read(2)
-
bulk_ticks(num)¶ Sends a bulk of clock ticks (1 to 16) https://github.com/hydrabus/hydrafw/wiki/HydraFW-binary-raw-wire-mode-guide#bulk-clock-ticks-0b0010xxxx
Parameters: num (int) – Number of clock ticks to send
-
bulk_write(data=b'')¶ Bulk write on Raw-Wire https://github.com/hydrabus/hydrafw/wiki/HydraFW-binary-raw-wire-mode-guide#bulk-raw-wire-transfer-0b0001xxxx
Parameters: data (bytes) – Data to be sent
-
clk¶ CLK pin status
-
clock()¶ Send a clock tick
-
clocks(num)¶ Sends a number of clock ticks
Parameters: num (int) – Number of clock ticks to send
-
gpio_mode¶ Raw-Wire GPIO mode (0=Push-Pull, 1=Open Drain)
-
read(length=0)¶ Read on Raw-Wire bus
Parameters: length (int) – Number of bytes to read Returns: Read data Return type: bytes
-
read_bit()¶ Sends a clock tick, and return the read bit value
-
read_byte()¶ Read a byte from the raw wire
Returns: The read byte Return type: bytes
-
sda¶ SDA pin status
-
set_speed(speed)¶ Sets the clock max speed.
Parameters: speed – speed in Hz. Possible values : TODO
-
wires¶ Raw-Wire mode (2=2-Wire, 3=3-Wire)
-
write(data=b'')¶ Write on Raw-Wire bus
Parameters: data (bytes) – data to be sent Returns: Read bytes Return type: bytes
-
write_bits(data=b'', num_bits=0)¶ Write bits on Raw-Wire bus Bits are sent MSB first.
Parameters: - data (int) – data to be sent
- num_bits – number of bits to send
Returns: Read bytes
Return type: bytes
-
pyHydrabus.smartcard module¶
-
class
pyHydrabus.smartcard.Smartcard(port='')¶ Bases:
pyHydrabus.protocol.ProtocolSmartcard protocol handler
Example: >>> #Read ATR from a smartcard >>> import pyHydrabus >>> sm=pyHydrabus.Smartcard('/dev/hydrabus') >>> sm.prescaler=12 >>> sm.baud=9600 >>> sm.rst=1;sm.rst=0;sm.read(1)
-
baud¶ Baud rate
-
get_atr()¶ Get smartcard ATR
-
guardtime¶ Guard time value
-
prescaler¶ Prescaler value
-
pullup¶
-
read(read_len=0)¶ Read on smartard
Parameters: read_len (int) – number of bytes to be read
-
rst¶ RST pin status
-
write(data=b'')¶ Write on smartard
Parameters: data – data to be sent
-
write_read(data=b'', read_len=0)¶ Write-then-read operation https://github.com/hydrabus/hydrafw/wiki/HydraFW-binary-SMARTCARD-mode-guide#write-then-read-operation-0b00000100
Parameters: - data – Data to be sent
- read_len (int) – number of bytes to read
-
pyHydrabus.spi module¶
-
class
pyHydrabus.spi.SPI(port='')¶ Bases:
pyHydrabus.protocol.ProtocolSPI protocol handler
Example: TODO
-
SPI1_SPEED_10M= 5¶
-
SPI1_SPEED_1M= 2¶
-
SPI1_SPEED_21M= 6¶
-
SPI1_SPEED_2M= 3¶
-
SPI1_SPEED_320K= 0¶
-
SPI1_SPEED_42M= 7¶
-
SPI1_SPEED_5M= 4¶
-
SPI1_SPEED_650K= 1¶
-
SPI2_SPEED_10M= 6¶
-
SPI2_SPEED_160K= 0¶
-
SPI2_SPEED_1M= 3¶
-
SPI2_SPEED_21M= 7¶
-
SPI2_SPEED_2M= 4¶
-
SPI2_SPEED_320K= 1¶
-
SPI2_SPEED_5M= 5¶
-
SPI2_SPEED_650M= 2¶
-
bulk_write(data=b'')¶ Bulk write on SPI bus https://github.com/hydrabus/hydrafw/wiki/HydraFW-Binary-SPI-mode-guide#bulk-spi-transfer-0b0001xxxx
Parameters: data (bytes) – Data to be sent Returns: Bytes read during the transfer Return type: bytes
-
cs¶ Chip-Select (CS) status getter
-
device¶ SPI device to use (1=spi1, 0=spi2)
-
phase¶ SPI clock phase
-
polarity¶ SPI polarity
-
read(read_len=0, drive_cs=0)¶ Read on SPI bus
Parameters: - read_len (int) – Number of bytes to be read
- drive_cs (int) – Whether to enable chip select before writing/reading (0=yes, 1=no)
Returns: Read data
Return type: bytes
-
set_speed(speed)¶ Set SPI bus speed
Parameters: speed – Select any of the defined speeds (SPI_SPEED_*)
-
write(data=b'', drive_cs=0)¶ Write on SPI bus
Parameters: - data (bytes) – data to be sent
- drive_cs (int) – Whether to enable chip select before writing/reading (0=yes, 1=no)
-
write_read(data=b'', read_len=0, drive_cs=0)¶ Write-then-read operation https://github.com/hydrabus/hydrafw/wiki/HydraFW-Binary-SPI-mode-guide#write-then-read-operation-0b00000100—0b00000101
Parameters: - data (bytes) – Data to be sent
- read_len (int) – Number of bytes to read
- drive_cs (int) – Whether to enable chip select before writing/reading (0=yes, 1=no)
Returns: Read data
Return type: bytes
-
pyHydrabus.Utils module¶
Utilities available in hydrafw
| param port: | The port name |
|---|---|
| type port: | str |
-
pyHydrabus.Utils.adc¶ Read ADC value
Returns: ADC value (10 bits) Return type: int
pyHydrabus.uart module¶
UART protocol handler
| example: | TODO |
|---|
>>> #Read data from an EEPROM
>>> import pyHydrabus
>>> u=pyHydrabus.UART('/dev/hydrabus')
>>> u.baud=115200
>>> u.echo=1
-
pyHydrabus.UART.baud¶ Baud rate
-
pyHydrabus.UART.echo¶ Local echo (0=No, 1=Yes)
-
pyHydrabus.UART.hydrabus¶ Return _hydrabus instance to access Hydrabus class functions and serial methods from any protocol classes instances
Returns: _hydrabus class instance
-
pyHydrabus.UART.timeout¶
pyHydrabus.swd module¶
SWD protocol handler
| example: |
|---|
>>> import pyHydrabus
>>> swd = pyHydrabus.SWD('/dev/ttyACM0')
>>> swd.bus_init()
>>> swd.read_dp(0)
>>> swd.write_dp(4, 0x50000000)
>>> swd.scan_bus()
-
pyHydrabus.SWD.clk¶ CLK pin status
-
pyHydrabus.SWD.gpio_mode¶ Raw-Wire GPIO mode (0=Push-Pull, 1=Open Drain)
-
pyHydrabus.SWD.hydrabus¶ Return _hydrabus instance to access Hydrabus class functions and serial methods from any protocol classes instances
Returns: _hydrabus class instance
-
pyHydrabus.SWD.sda¶ SDA pin status
-
pyHydrabus.SWD.timeout¶
-
pyHydrabus.SWD.wires¶ Raw-Wire mode (2=2-Wire, 3=3-Wire)
pyHydrabus.aux module¶
-
class
pyHydrabus.auxpin.AUXPin(number, hydrabus)¶ Bases:
objectAuxilary pin base class
This class is meant to be used in any mode and is instanciated in the Protocol class
Example: >>> import pyHydrabus >>> i=pyHydrabus.RawWire('/dev/hydrabus') >>> # Set AUX pin 0 (PC4) to output >>> i.AUX[0].direction = pyHydrabus.OUTPUT >>> # Set AUX pin to logical 1 >>> i.AUX[0].value = 1 >>> # Read Auxiliary pin 2 (PC5) value >>> i.AUX[1].value
-
INPUT= 1¶
-
OUTPUT= 0¶
-
direction¶ Auxiliary pin direction getter
Returns: The pin direction (0=output, 1=input) Return type: int
-
pullup¶ Auxiliary pin pullup getter
Returns: Auxiliary pin pullup status (1=enabled, 0=disabled”) Return type: int
-
toggle()¶ Toggle pin state
-
value¶ Auxiliary pin getter
-
pyHydrabus.nfc module¶
-
class
pyHydrabus.nfc.NFC(port='')¶ Bases:
pyHydrabus.protocol.ProtocolNFC protocol handler
Example: >>> import pyHydrabus >>> n=pyHydrabus.NFC('/dev/hydrabus') >>> # Set mode to ISO 14443A >>> n.mode = pyHydrabus.NFC.MODE_ISO_14443A >>> # Set radio ON >>> n.rf = 1 >>> # Send REQA, get ATQA >>> n.write_bits(b'&', 7) >>> # Send anticol, read ID >>> n.write(b' ', 0).hex()
-
MODE_ISO_14443A= 0¶
-
MODE_ISO_15693= 1¶
-
mode¶
-
rf¶
-
write(data=b'', crc=0)¶ Write bytes on NFC https://github.com/hydrabus/hydrafw/wiki/HydraFW-binary-NFC-Reader-mode-guide#send-bytes-0b00000101
Parameters: data (bytes) – Data to be sent
-
write_bits(data=b'', num_bits=0)¶ Write bits on NFC https://github.com/hydrabus/hydrafw/wiki/HydraFW-binary-NFC-Reader-mode-guide#send-bits-0b00000100
Parameters: - data (byte) – Data to be sent
- num_bits (int) – number of bits to send
-