8#ifndef ARDUINO_GPIO_NXP_ARD_H
9#define ARDUINO_GPIO_NXP_ARD_H
14#include <I2C_device.h>
21enum access_word : uint8_t
65 GPIO_base( uint8_t i2c_address,
int nbits,
const uint8_t* arp, uint8_t ai );
75 GPIO_base( TwoWire& wire, uint8_t i2c_address,
int nbits,
const uint8_t* arp, uint8_t ai );
89 virtual void begin( board env = NONE );
99 virtual void output(
int port, uint8_t value, uint8_t mask = 0 );
107 virtual void output(
const uint8_t *vp );
116 virtual uint8_t
input(
int port );
125 virtual uint8_t*
input( uint8_t *vp );
135 virtual void config(
int port, uint8_t
config, uint8_t mask = 0 );
143 virtual void config(
const uint8_t* vp );
152 virtual void write_port( access_word w,
const uint8_t* vp );
161 virtual void write_port16( access_word w,
const uint16_t* vp );
171 virtual uint8_t*
read_port( access_word w, uint8_t* vp );
181 virtual uint16_t*
read_port16( access_word w, uint16_t* vp );
191 virtual void write_port( access_word w, uint8_t value,
int port_num = 0 );
201 virtual void write_port16( access_word w, uint16_t value,
int port_num = 0 );
211 virtual uint8_t
read_port( access_word w,
int port_num = 0 );
221 virtual uint16_t
read_port16( access_word w,
int port_num = 0 );
223 static void print_bin( uint8_t v );
226 const uint8_t auto_increment;
232 static constexpr int RESET_PIN = 8;
233 static constexpr int ADDR_PIN = 9;
257 PCA9554( uint8_t i2c_address = (0x40 >> 1) + 0 );
264 PCA9554( TwoWire& wire, uint8_t i2c_address = (0x40 >> 1) + 0 );
269 static constexpr uint8_t access_ref[ NUM_access_word ] = {
315 void output(
int port, uint8_t value, uint8_t mask = 0 );
407 void write_port( access_word w, uint8_t value,
int port_num = 0 );
452 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
461 int reg_w( uint8_t reg_adr, uint8_t data );
470 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
519 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
520 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
534 Input_Port_0, Input_Port_1,
535 Output_Port_0, Output_Port_1,
536 Polarity_Inversion_Port_0, Polarity_Inversion_Port_1,
537 Configuration_Port_0, Configuration_Port_1,
544 PCA9555( uint8_t i2c_address = (0x40 >> 1) + 0 );
551 PCA9555( TwoWire& wire, uint8_t i2c_address = (0x40 >> 1) + 0 );
556 static constexpr uint8_t access_ref[ NUM_access_word ] = {
559 Polarity_Inversion_Port_0,
560 Configuration_Port_0,
602 void output(
int port, uint8_t value, uint8_t mask = 0 );
694 void write_port( access_word w, uint8_t value,
int port_num = 0 );
739 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
748 int reg_w( uint8_t reg_adr, uint8_t data );
757 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
806 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
807 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
821 PCAL6xxx_base( uint8_t i2c_address,
const int nbits,
const uint8_t arp[], uint8_t ai );
822 PCAL6xxx_base( TwoWire& wire, uint8_t i2c_address,
const int nbits,
const uint8_t arp[], uint8_t ai );
840 Output_drive_strength_0 = 0x40,
841 Output_drive_strength_1,
843 Pull_up_pull_down_enable,
844 Pull_up_pull_down_selection,
847 Output_port_configuration,
854 PCAL6408A( uint8_t i2c_address = (0x40 >> 1) + 0 );
861 PCAL6408A( TwoWire& wire, uint8_t i2c_address = (0x40 >> 1) + 0 );
866 static constexpr uint8_t access_ref[ NUM_access_word ] = {
871 Output_drive_strength_0,
873 Pull_up_pull_down_enable,
874 Pull_up_pull_down_selection,
877 Output_port_configuration,
912 void output(
int port, uint8_t value, uint8_t mask = 0 );
1004 void write_port( access_word w, uint8_t value,
int port_num = 0 );
1049 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
1058 int reg_w( uint8_t reg_adr, uint8_t data );
1067 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
1116 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1117 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
1130 Input_Port_0, Input_Port_1,
1131 Output_Port_0, Output_Port_1,
1132 Polarity_Inversion_port_0, Polarity_Inversion_port_1,
1133 Configuration_port_0, Configuration_port_1,
1134 Output_drive_strength_register_0=0x40, Output_drive_strength_register_0B,
1135 Output_drive_strength_register_1, Output_drive_strength_register_1B,
1136 Input_latch_register_0, Input_latch_register_1,
1137 Pull_up_pull_down_enable_register_0, Pull_up_pull_down_enable_register_1,
1138 Pull_up_pull_down_selection_register_0, Pull_up_pull_down_selection_register_1,
1139 Interrupt_mask_register_0, Interrupt_mask_register_1,
1140 Interrupt_status_register_0, Interrupt_status_register_1,
1141 Output_port_configuration_register,
1148 PCAL6416A( uint8_t i2c_address = (0x40 >> 1) + 0 );
1155 PCAL6416A( TwoWire& wire, uint8_t i2c_address = (0x40 >> 1) + 0 );
1160 static constexpr uint8_t access_ref[ NUM_access_word ] = {
1163 Polarity_Inversion_port_0,
1164 Configuration_port_0,
1165 Output_drive_strength_register_0,
1166 Input_latch_register_0,
1167 Pull_up_pull_down_enable_register_0,
1168 Pull_up_pull_down_selection_register_0,
1169 Interrupt_mask_register_0,
1170 Interrupt_status_register_0,
1171 Output_port_configuration_register,
1206 void output(
int port, uint8_t value, uint8_t mask = 0 );
1298 void write_port( access_word w, uint8_t value,
int port_num = 0 );
1343 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
1352 int reg_w( uint8_t reg_adr, uint8_t data );
1361 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
1410 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1411 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
1424 Input_Port_0, Input_Port_1, Input_Port_2, reserved0,
1425 Output_Port_0, Output_Port_1, Output_Port_2, reserved1,
1426 Polarity_Inversion_port_0, Polarity_Inversion_port_1, Polarity_Inversion_port_2, reserved2,
1427 Configuration_port_0, Configuration_port_1, Configuration_port_2,
1428 Output_drive_strength_register_port_0A=0x40, Output_drive_strength_register_port_0B,
1429 Output_drive_strength_register_port_1A, Output_drive_strength_register_port_1B,
1430 Output_drive_strength_register_port_2A, Output_drive_strength_register_port_2B,
1431 reserved3, reserved4,
1432 Input_latch_register_port_0, Input_latch_register_port_1, Input_latch_register_port_2, reserved5,
1433 Pull_up_pull_down_enable_register_port_0, Pull_up_pull_down_enable_register_port_1, Pull_up_pull_down_enable_register_port_2, reserved6,
1434 Pull_up_pull_down_selection_register_port_0, Pull_up_pull_down_selection_register_port_1, Pull_up_pull_down_selection_register_port_2, reserved7,
1435 Interrupt_mask_register_port_0, Interrupt_mask_register_port_1, Interrupt_mask_register_port_2, reserved8,
1436 Interrupt_status_register_port_0, Interrupt_status_register_port_1, Interrupt_status_register_port_2, reserved9,
1437 Output_port_configuration_register, reserved10, reserved11, reserved12,
1438 Interrupt_edge_register_port_0A, Interrupt_edge_register_port_0B,
1439 Interrupt_edge_register_port_1A, Interrupt_edge_register_port_1B,
1440 Interrupt_edge_register_port_2A, Interrupt_edge_register_port_2B,
1441 reserved13, reserved14,
1442 Interrupt_clear_register_port_0, Interrupt_clear_register_port_1, Interrupt_clear_register_port_2, reserved15,
1443 Input_status_port_0, Input_status_port_1, Input_status_port_2, reserved16,
1444 Individual_pin_output_port_0_configuration_register, Individual_pin_output_port_1_configuration_register, Individual_pin_output_port_2_configuration_register, reserved17,
1445 Switch_debounce_enable_0, Switch_debounce_enable_1, Switch_debounce_count,
1452 PCAL6524( uint8_t i2c_address = (0x44 >> 1) + 0 );
1459 PCAL6524( TwoWire& wire, uint8_t i2c_address = (0x44 >> 1) + 0 );
1464 static constexpr uint8_t access_ref[ NUM_access_word ] = {
1467 Polarity_Inversion_port_0,
1468 Configuration_port_0,
1469 Output_drive_strength_register_port_0A,
1470 Input_latch_register_port_0,
1471 Pull_up_pull_down_enable_register_port_0,
1472 Pull_up_pull_down_selection_register_port_0,
1473 Interrupt_mask_register_port_0,
1474 Interrupt_status_register_port_0,
1475 Output_port_configuration_register,
1510 void output(
int port, uint8_t value, uint8_t mask = 0 );
1602 void write_port( access_word w, uint8_t value,
int port_num = 0 );
1647 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
1656 int reg_w( uint8_t reg_adr, uint8_t data );
1665 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
1714 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1715 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
1728 Input_Port_0, Input_Port_1, Input_Port_2, Input_Port_3, Input_Port_4,
1729 Output_Port_0, Output_Port_1, Output_Port_2, Output_Port_3, Output_Port_4,
1730 Polarity_Inversion_port_0, Polarity_Inversion_port_1, Polarity_Inversion_port_2, Polarity_Inversion_port_3, Polarity_Inversion_port_4,
1731 Configuration_port_0, Configuration_port_1, Configuration_port_2, Configuration_port_3, Configuration_port_4,
1732 Output_drive_strength_register_port_0A = 0x30, Output_drive_strength_register_port_0B,
1733 Output_drive_strength_register_port_1A, Output_drive_strength_register_port_1B,
1734 Output_drive_strength_register_port_2A, Output_drive_strength_register_port_2B,
1735 Output_drive_strength_register_port_3A, Output_drive_strength_register_port_3B,
1736 Output_drive_strength_register_port_4A, reserved0,
1737 Input_latch_register_port_0, Input_latch_register_port_1, Input_latch_register_port_2, Input_latch_register_port_3, Input_latch_register_port_4,
1738 Pull_up_pull_down_enable_register_port_0, Pull_up_pull_down_enable_register_port_1, Pull_up_pull_down_enable_register_port_2, Pull_up_pull_down_enable_register_port_3, Pull_up_pull_down_enable_register_port_4,
1739 Pull_up_pull_down_selection_register_port_0, Pull_up_pull_down_selection_register_port_1, Pull_up_pull_down_selection_register_port_2, Pull_up_pull_down_selection_register_port_3, Pull_up_pull_down_selection_register_port_4,
1740 Interrupt_mask_register_port_0, Interrupt_mask_register_port_1, Interrupt_mask_register_port_2, Interrupt_mask_register_port_3, Interrupt_mask_register_port_4,
1741 Interrupt_status_register_port_0, Interrupt_status_register_port_1, Interrupt_status_register_port_2, Interrupt_status_register_port_3, Interrupt_status_register_port_4,
1742 Output_port_configuration_register,
1743 Interrupt_edge_register_port_0A, Interrupt_edge_register_port_0B,
1744 Interrupt_edge_register_port_1A, Interrupt_edge_register_port_1B,
1745 Interrupt_edge_register_port_2A, Interrupt_edge_register_port_2B,
1746 Interrupt_edge_register_port_3A, Interrupt_edge_register_port_3B,
1747 Interrupt_edge_register_port_4A, reserved1,
1748 Interrupt_clear_register_port_0, Interrupt_clear_register_port_1, Interrupt_clear_register_port_2, Interrupt_clear_register_port_3, Interrupt_clear_register_port_4,
1749 Input_status_port_0, Input_status_port_1, Input_status_port_2, Input_status_port_3, Input_status_port_4,
1750 Individual_pin_output_port_0_configuration_register, Individual_pin_output_port_1_configuration_register, Individual_pin_output_port_2_configuration_register, Individual_pin_output_port_3_configuration_register, Individual_pin_output_port_4_configuration_register,
1751 Switch_debounce_enable_0, Switch_debounce_enable_1,
1752 Switch_debounce_count,
1759 PCAL6534( uint8_t i2c_address = (0x44 >> 1) + 0 );
1766 PCAL6534( TwoWire& wire, uint8_t i2c_address = (0x44 >> 1) + 0 );
1771 static constexpr uint8_t access_ref[ NUM_access_word ] = {
1774 Polarity_Inversion_port_0,
1775 Configuration_port_0,
1776 Output_drive_strength_register_port_0A,
1777 Input_latch_register_port_0,
1778 Pull_up_pull_down_enable_register_port_0,
1779 Pull_up_pull_down_selection_register_port_0,
1780 Interrupt_mask_register_port_0,
1781 Interrupt_status_register_port_0,
1782 Output_port_configuration_register,
1817 void output(
int port, uint8_t value, uint8_t mask = 0 );
1909 void write_port( access_word w, uint8_t value,
int port_num = 0 );
1954 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
1963 int reg_w( uint8_t reg_adr, uint8_t data );
1972 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
2021 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
2022 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
2034 GPIO_SPI( uint8_t device_address,
int nbits,
const uint8_t* arp, uint8_t ai );
2047 virtual int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
2056 virtual int reg_w( uint8_t reg_adr, uint8_t data );
2065 virtual int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
2074 virtual uint8_t
reg_r( uint8_t reg_adr );
2087 PCAL97xx_base( uint8_t dev_address,
const int nbits,
const uint8_t arp[], uint8_t ai );
2100 Input_Port_0, Input_Port_1, Input_Port_2, reserved0,
2101 Output_Port_0, Output_Port_1, Output_Port_2, reserved1,
2102 Polarity_Inversion_port_0, Polarity_Inversion_port_1, Polarity_Inversion_port_2, reserved2,
2103 Configuration_port_0, Configuration_port_1, Configuration_port_2,
2104 Output_drive_strength_register_port_0A=0x40, Output_drive_strength_register_port_0B,
2105 Output_drive_strength_register_port_1A, Output_drive_strength_register_port_1B,
2106 Output_drive_strength_register_port_2A, Output_drive_strength_register_port_2B,
2107 reserved3, reserved4,
2108 Input_latch_register_port_0, Input_latch_register_port_1, Input_latch_register_port_2, reserved5,
2109 Pull_up_pull_down_enable_register_port_0, Pull_up_pull_down_enable_register_port_1, Pull_up_pull_down_enable_register_port_2, reserved6,
2110 Pull_up_pull_down_selection_register_port_0, Pull_up_pull_down_selection_register_port_1, Pull_up_pull_down_selection_register_port_2, reserved7,
2111 Interrupt_mask_register_port_0, Interrupt_mask_register_port_1, Interrupt_mask_register_port_2, reserved8,
2112 Interrupt_status_register_port_0, Interrupt_status_register_port_1, Interrupt_status_register_port_2, reserved9,
2113 Output_port_configuration_register, reserved10, reserved11, reserved12,
2114 Interrupt_edge_register_port_0A, Interrupt_edge_register_port_0B,
2115 Interrupt_edge_register_port_1A, Interrupt_edge_register_port_1B,
2116 Interrupt_edge_register_port_2A, Interrupt_edge_register_port_2B,
2117 reserved13, reserved14,
2118 Interrupt_clear_register_port_0, Interrupt_clear_register_port_1, Interrupt_clear_register_port_2, reserved15,
2119 Input_status_port_0, Input_status_port_1, Input_status_port_2, reserved16,
2120 Individual_pin_output_port_0_configuration_register, Individual_pin_output_port_1_configuration_register, Individual_pin_output_port_2_configuration_register, reserved17,
2121 Switch_debounce_enable_0, Switch_debounce_enable_1, Switch_debounce_count,
2129 PCAL9722( uint8_t dev_address = (0x40 >> 1) + 0 );
2145 static constexpr uint8_t access_ref[ NUM_access_word ] = {
2148 Polarity_Inversion_port_0,
2149 Configuration_port_0,
2150 Output_drive_strength_register_port_0A,
2151 Input_latch_register_port_0,
2152 Pull_up_pull_down_enable_register_port_0,
2153 Pull_up_pull_down_selection_register_port_0,
2154 Interrupt_mask_register_port_0,
2155 Interrupt_status_register_port_0,
2156 Output_port_configuration_register,
2160 static constexpr int RESET_PIN_PCAL9722 = 6;
2184 void output(
int port, uint8_t value, uint8_t mask = 0 );
2276 void write_port( access_word w, uint8_t value,
int port_num = 0 );
2315 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
2324 int reg_w( uint8_t reg_adr, uint8_t data );
2333 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
2382 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
2383 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
virtual int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
GPIO_SPI(uint8_t device_address, int nbits, const uint8_t *arp, uint8_t ai)
virtual int reg_w(uint8_t reg_adr, const uint8_t *data, uint16_t size)
virtual uint16_t * read_port16(access_word w, uint16_t *vp)
virtual void write_port(access_word w, const uint8_t *vp)
virtual void config(int port, uint8_t config, uint8_t mask=0)
GPIO_base(uint8_t i2c_address, int nbits, const uint8_t *arp, uint8_t ai)
virtual void write_port16(access_word w, const uint16_t *vp)
virtual void output(int port, uint8_t value, uint8_t mask=0)
virtual void begin(board env=NONE)
virtual uint8_t input(int port)
virtual uint8_t * read_port(access_word w, uint8_t *vp)
void config(const uint8_t *vp)
int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
void output(const uint8_t *vp)
void write_r16(uint8_t reg, uint16_t val)
void write_port16(access_word w, const uint16_t *vp)
void write_port16(access_word w, uint16_t value, int port_num=0)
uint8_t read_r8(uint8_t reg)
void write_r8(uint8_t reg, uint8_t val)
uint8_t reg_r(uint8_t reg_adr)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
int reg_w(uint8_t reg_adr, const uint8_t *data, uint16_t size)
uint16_t read_port16(access_word w, int port_num=0)
void output(int port, uint8_t value, uint8_t mask=0)
uint16_t * read_port16(access_word w, uint16_t *vp)
int reg_w(uint8_t reg_adr, uint8_t data)
void config(int port, uint8_t config, uint8_t mask=0)
uint8_t * input(uint8_t *vp)
void begin(board env=NONE)
void write_port(access_word w, const uint8_t *vp)
uint8_t * read_port(access_word w, uint8_t *vp)
uint16_t read_r16(uint8_t reg)
PCA9554(uint8_t i2c_address=(0x40 > > 1)+0)
void write_port(access_word w, uint8_t value, int port_num=0)
uint8_t read_port(access_word w, int port_num=0)
void write_r8(uint8_t reg, uint8_t val)
uint8_t * read_port(access_word w, uint8_t *vp)
void config(int port, uint8_t config, uint8_t mask=0)
uint16_t read_port16(access_word w, int port_num=0)
void output(const uint8_t *vp)
void write_port(access_word w, uint8_t value, int port_num=0)
void write_port16(access_word w, uint16_t value, int port_num=0)
void output(int port, uint8_t value, uint8_t mask=0)
uint16_t read_r16(uint8_t reg)
int reg_w(uint8_t reg_adr, uint8_t data)
uint8_t reg_r(uint8_t reg_adr)
uint8_t read_r8(uint8_t reg)
void write_port(access_word w, const uint8_t *vp)
uint16_t * read_port16(access_word w, uint16_t *vp)
int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
void write_r16(uint8_t reg, uint16_t val)
int reg_w(uint8_t reg_adr, const uint8_t *data, uint16_t size)
uint8_t * input(uint8_t *vp)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void write_port16(access_word w, const uint16_t *vp)
PCA9555(uint8_t i2c_address=(0x40 > > 1)+0)
void begin(board env=NONE)
void config(const uint8_t *vp)
uint8_t read_port(access_word w, int port_num=0)
uint16_t * read_port16(access_word w, uint16_t *vp)
uint8_t read_r8(uint8_t reg)
void output(const uint8_t *vp)
void config(const uint8_t *vp)
PCAL6408A(uint8_t i2c_address=(0x40 > > 1)+0)
uint8_t * input(uint8_t *vp)
void write_port16(access_word w, uint16_t value, int port_num=0)
void begin(board env=NONE)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void write_r8(uint8_t reg, uint8_t val)
void write_r16(uint8_t reg, uint16_t val)
int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
uint8_t reg_r(uint8_t reg_adr)
int reg_w(uint8_t reg_adr, uint8_t data)
uint16_t read_port16(access_word w, int port_num=0)
uint8_t * read_port(access_word w, uint8_t *vp)
uint8_t read_port(access_word w, int port_num=0)
void config(int port, uint8_t config, uint8_t mask=0)
void write_port(access_word w, uint8_t value, int port_num=0)
void write_port(access_word w, const uint8_t *vp)
int reg_w(uint8_t reg_adr, const uint8_t *data, uint16_t size)
void write_port16(access_word w, const uint16_t *vp)
void output(int port, uint8_t value, uint8_t mask=0)
uint16_t read_r16(uint8_t reg)
uint16_t read_port16(access_word w, int port_num=0)
PCAL6416A(uint8_t i2c_address=(0x40 > > 1)+0)
void write_r8(uint8_t reg, uint8_t val)
void output(const uint8_t *vp)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void write_port(access_word w, const uint8_t *vp)
int reg_w(uint8_t reg_adr, uint8_t data)
void config(const uint8_t *vp)
uint8_t reg_r(uint8_t reg_adr)
void output(int port, uint8_t value, uint8_t mask=0)
int reg_w(uint8_t reg_adr, const uint8_t *data, uint16_t size)
int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
void begin(board env=NONE)
uint8_t read_port(access_word w, int port_num=0)
uint8_t * input(uint8_t *vp)
uint8_t * read_port(access_word w, uint8_t *vp)
uint16_t * read_port16(access_word w, uint16_t *vp)
uint8_t read_r8(uint8_t reg)
void config(int port, uint8_t config, uint8_t mask=0)
uint16_t read_r16(uint8_t reg)
void write_port16(access_word w, uint16_t value, int port_num=0)
void write_port(access_word w, uint8_t value, int port_num=0)
void write_r16(uint8_t reg, uint16_t val)
void write_port16(access_word w, const uint16_t *vp)
uint8_t read_port(access_word w, int port_num=0)
void output(const uint8_t *vp)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void config(int port, uint8_t config, uint8_t mask=0)
uint8_t * input(uint8_t *vp)
PCAL6524(uint8_t i2c_address=(0x44 > > 1)+0)
int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
void begin(board env=NONE)
void write_port(access_word w, const uint8_t *vp)
uint8_t * read_port(access_word w, uint8_t *vp)
int reg_w(uint8_t reg_adr, const uint8_t *data, uint16_t size)
void write_r8(uint8_t reg, uint8_t val)
uint16_t read_r16(uint8_t reg)
uint16_t * read_port16(access_word w, uint16_t *vp)
void output(int port, uint8_t value, uint8_t mask=0)
void write_r16(uint8_t reg, uint16_t val)
void write_port16(access_word w, const uint16_t *vp)
void config(const uint8_t *vp)
uint8_t reg_r(uint8_t reg_adr)
uint8_t read_r8(uint8_t reg)
void write_port16(access_word w, uint16_t value, int port_num=0)
uint16_t read_port16(access_word w, int port_num=0)
void write_port(access_word w, uint8_t value, int port_num=0)
int reg_w(uint8_t reg_adr, uint8_t data)
void write_r16(uint8_t reg, uint16_t val)
void write_port16(access_word w, uint16_t value, int port_num=0)
uint8_t reg_r(uint8_t reg_adr)
uint8_t * read_port(access_word w, uint8_t *vp)
void output(const uint8_t *vp)
uint16_t read_port16(access_word w, int port_num=0)
int reg_w(uint8_t reg_adr, const uint8_t *data, uint16_t size)
void config(const uint8_t *vp)
uint8_t read_port(access_word w, int port_num=0)
void write_port(access_word w, uint8_t value, int port_num=0)
void write_r8(uint8_t reg, uint8_t val)
void begin(board env=NONE)
int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
PCAL6534(uint8_t i2c_address=(0x44 > > 1)+0)
uint8_t read_r8(uint8_t reg)
uint16_t read_r16(uint8_t reg)
uint16_t * read_port16(access_word w, uint16_t *vp)
void config(int port, uint8_t config, uint8_t mask=0)
uint8_t * input(uint8_t *vp)
void write_port(access_word w, const uint8_t *vp)
void write_port16(access_word w, const uint16_t *vp)
void output(int port, uint8_t value, uint8_t mask=0)
int reg_w(uint8_t reg_adr, uint8_t data)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
void output(const uint8_t *vp)
void config(const uint8_t *vp)
void begin(board env=NONE)
void write_port(access_word w, uint8_t value, int port_num=0)
void write_port16(access_word w, uint16_t value, int port_num=0)
void write_r8(uint8_t reg, uint8_t val)
uint16_t * read_port16(access_word w, uint16_t *vp)
uint16_t read_r16(uint8_t reg)
uint8_t * read_port(access_word w, uint8_t *vp)
void write_port16(access_word w, const uint16_t *vp)
uint8_t read_port(access_word w, int port_num=0)
void write_port(access_word w, const uint8_t *vp)
PCAL9722(uint8_t dev_address=(0x40 > > 1)+0)
void output(int port, uint8_t value, uint8_t mask=0)
int reg_w(uint8_t reg_adr, uint8_t data)
int reg_r(uint8_t reg_adr, uint8_t *data, uint16_t size)
void config(int port, uint8_t config, uint8_t mask=0)
void write_r16(uint8_t reg, uint16_t val)
int reg_w(uint8_t reg_adr, const uint8_t *data, uint16_t size)
uint8_t reg_r(uint8_t reg_adr)
uint16_t read_port16(access_word w, int port_num=0)
uint8_t * input(uint8_t *vp)
void bit_op8(uint8_t reg, uint8_t mask, uint8_t value)
uint8_t read_r8(uint8_t reg)