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 );
230 const uint8_t auto_increment;
236 static constexpr int RESET_PIN = 8;
237 static constexpr int ADDR_PIN = 9;
261 PCA9554( uint8_t i2c_address = (0x40 >> 1) + 0 );
268 PCA9554( TwoWire& wire, uint8_t i2c_address = (0x40 >> 1) + 0 );
273 static constexpr uint8_t access_ref[ NUM_access_word ] = {
319 void output(
int port, uint8_t value, uint8_t mask = 0 );
411 void write_port( access_word w, uint8_t value,
int port_num = 0 );
456 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
464 int reg_w( uint8_t reg_adr, uint8_t data );
473 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
522 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
523 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
537 Input_Port_0, Input_Port_1,
538 Output_Port_0, Output_Port_1,
539 Polarity_Inversion_Port_0, Polarity_Inversion_Port_1,
540 Configuration_Port_0, Configuration_Port_1,
547 PCA9555( uint8_t i2c_address = (0x40 >> 1) + 0 );
554 PCA9555( TwoWire& wire, uint8_t i2c_address = (0x40 >> 1) + 0 );
559 static constexpr uint8_t access_ref[ NUM_access_word ] = {
562 Polarity_Inversion_Port_0,
563 Configuration_Port_0,
605 void output(
int port, uint8_t value, uint8_t mask = 0 );
697 void write_port( access_word w, uint8_t value,
int port_num = 0 );
742 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
750 int reg_w( uint8_t reg_adr, uint8_t data );
759 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
808 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
809 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
830 PCAL6xxx_base( uint8_t i2c_address,
const int nbits,
const uint8_t arp[], uint8_t ai );
840 PCAL6xxx_base( TwoWire& wire, uint8_t i2c_address,
const int nbits,
const uint8_t arp[], uint8_t ai );
860 Output_drive_strength_0 = 0x40,
861 Output_drive_strength_1,
863 Pull_up_pull_down_enable,
864 Pull_up_pull_down_selection,
867 Output_port_configuration,
874 PCAL6408A( uint8_t i2c_address = (0x40 >> 1) + 0 );
881 PCAL6408A( TwoWire& wire, uint8_t i2c_address = (0x40 >> 1) + 0 );
886 static constexpr uint8_t access_ref[ NUM_access_word ] = {
891 Output_drive_strength_0,
893 Pull_up_pull_down_enable,
894 Pull_up_pull_down_selection,
897 Output_port_configuration,
932 void output(
int port, uint8_t value, uint8_t mask = 0 );
1024 void write_port( access_word w, uint8_t value,
int port_num = 0 );
1069 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
1077 int reg_w( uint8_t reg_adr, uint8_t data );
1086 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
1135 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1136 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
1149 Input_Port_0, Input_Port_1,
1150 Output_Port_0, Output_Port_1,
1151 Polarity_Inversion_port_0, Polarity_Inversion_port_1,
1152 Configuration_port_0, Configuration_port_1,
1153 Output_drive_strength_register_0=0x40, Output_drive_strength_register_0B,
1154 Output_drive_strength_register_1, Output_drive_strength_register_1B,
1155 Input_latch_register_0, Input_latch_register_1,
1156 Pull_up_pull_down_enable_register_0, Pull_up_pull_down_enable_register_1,
1157 Pull_up_pull_down_selection_register_0, Pull_up_pull_down_selection_register_1,
1158 Interrupt_mask_register_0, Interrupt_mask_register_1,
1159 Interrupt_status_register_0, Interrupt_status_register_1,
1160 Output_port_configuration_register,
1167 PCAL6416A( uint8_t i2c_address = (0x40 >> 1) + 0 );
1174 PCAL6416A( TwoWire& wire, uint8_t i2c_address = (0x40 >> 1) + 0 );
1179 static constexpr uint8_t access_ref[ NUM_access_word ] = {
1182 Polarity_Inversion_port_0,
1183 Configuration_port_0,
1184 Output_drive_strength_register_0,
1185 Input_latch_register_0,
1186 Pull_up_pull_down_enable_register_0,
1187 Pull_up_pull_down_selection_register_0,
1188 Interrupt_mask_register_0,
1189 Interrupt_status_register_0,
1190 Output_port_configuration_register,
1225 void output(
int port, uint8_t value, uint8_t mask = 0 );
1317 void write_port( access_word w, uint8_t value,
int port_num = 0 );
1362 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
1370 int reg_w( uint8_t reg_adr, uint8_t data );
1379 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
1428 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1429 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
1442 Input_Port_0, Input_Port_1, Input_Port_2, reserved0,
1443 Output_Port_0, Output_Port_1, Output_Port_2, reserved1,
1444 Polarity_Inversion_port_0, Polarity_Inversion_port_1, Polarity_Inversion_port_2, reserved2,
1445 Configuration_port_0, Configuration_port_1, Configuration_port_2,
1446 Output_drive_strength_register_port_0A=0x40, Output_drive_strength_register_port_0B,
1447 Output_drive_strength_register_port_1A, Output_drive_strength_register_port_1B,
1448 Output_drive_strength_register_port_2A, Output_drive_strength_register_port_2B,
1449 reserved3, reserved4,
1450 Input_latch_register_port_0, Input_latch_register_port_1, Input_latch_register_port_2, reserved5,
1451 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,
1452 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,
1453 Interrupt_mask_register_port_0, Interrupt_mask_register_port_1, Interrupt_mask_register_port_2, reserved8,
1454 Interrupt_status_register_port_0, Interrupt_status_register_port_1, Interrupt_status_register_port_2, reserved9,
1455 Output_port_configuration_register, reserved10, reserved11, reserved12,
1456 Interrupt_edge_register_port_0A, Interrupt_edge_register_port_0B,
1457 Interrupt_edge_register_port_1A, Interrupt_edge_register_port_1B,
1458 Interrupt_edge_register_port_2A, Interrupt_edge_register_port_2B,
1459 reserved13, reserved14,
1460 Interrupt_clear_register_port_0, Interrupt_clear_register_port_1, Interrupt_clear_register_port_2, reserved15,
1461 Input_status_port_0, Input_status_port_1, Input_status_port_2, reserved16,
1462 Individual_pin_output_port_0_configuration_register, Individual_pin_output_port_1_configuration_register, Individual_pin_output_port_2_configuration_register, reserved17,
1463 Switch_debounce_enable_0, Switch_debounce_enable_1, Switch_debounce_count,
1470 PCAL6524( uint8_t i2c_address = (0x44 >> 1) + 0 );
1477 PCAL6524( TwoWire& wire, uint8_t i2c_address = (0x44 >> 1) + 0 );
1482 static constexpr uint8_t access_ref[ NUM_access_word ] = {
1485 Polarity_Inversion_port_0,
1486 Configuration_port_0,
1487 Output_drive_strength_register_port_0A,
1488 Input_latch_register_port_0,
1489 Pull_up_pull_down_enable_register_port_0,
1490 Pull_up_pull_down_selection_register_port_0,
1491 Interrupt_mask_register_port_0,
1492 Interrupt_status_register_port_0,
1493 Output_port_configuration_register,
1528 void output(
int port, uint8_t value, uint8_t mask = 0 );
1620 void write_port( access_word w, uint8_t value,
int port_num = 0 );
1665 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
1673 int reg_w( uint8_t reg_adr, uint8_t data );
1682 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
1731 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
1732 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
1745 Input_Port_0, Input_Port_1, Input_Port_2, Input_Port_3, Input_Port_4,
1746 Output_Port_0, Output_Port_1, Output_Port_2, Output_Port_3, Output_Port_4,
1747 Polarity_Inversion_port_0, Polarity_Inversion_port_1, Polarity_Inversion_port_2, Polarity_Inversion_port_3, Polarity_Inversion_port_4,
1748 Configuration_port_0, Configuration_port_1, Configuration_port_2, Configuration_port_3, Configuration_port_4,
1749 Output_drive_strength_register_port_0A = 0x30, Output_drive_strength_register_port_0B,
1750 Output_drive_strength_register_port_1A, Output_drive_strength_register_port_1B,
1751 Output_drive_strength_register_port_2A, Output_drive_strength_register_port_2B,
1752 Output_drive_strength_register_port_3A, Output_drive_strength_register_port_3B,
1753 Output_drive_strength_register_port_4A, reserved0,
1754 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,
1755 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,
1756 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,
1757 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,
1758 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,
1759 Output_port_configuration_register,
1760 Interrupt_edge_register_port_0A, Interrupt_edge_register_port_0B,
1761 Interrupt_edge_register_port_1A, Interrupt_edge_register_port_1B,
1762 Interrupt_edge_register_port_2A, Interrupt_edge_register_port_2B,
1763 Interrupt_edge_register_port_3A, Interrupt_edge_register_port_3B,
1764 Interrupt_edge_register_port_4A, reserved1,
1765 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,
1766 Input_status_port_0, Input_status_port_1, Input_status_port_2, Input_status_port_3, Input_status_port_4,
1767 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,
1768 Switch_debounce_enable_0, Switch_debounce_enable_1,
1769 Switch_debounce_count,
1776 PCAL6534( uint8_t i2c_address = (0x44 >> 1) + 0 );
1783 PCAL6534( TwoWire& wire, uint8_t i2c_address = (0x44 >> 1) + 0 );
1788 static constexpr uint8_t access_ref[ NUM_access_word ] = {
1791 Polarity_Inversion_port_0,
1792 Configuration_port_0,
1793 Output_drive_strength_register_port_0A,
1794 Input_latch_register_port_0,
1795 Pull_up_pull_down_enable_register_port_0,
1796 Pull_up_pull_down_selection_register_port_0,
1797 Interrupt_mask_register_port_0,
1798 Interrupt_status_register_port_0,
1799 Output_port_configuration_register,
1834 void output(
int port, uint8_t value, uint8_t mask = 0 );
1926 void write_port( access_word w, uint8_t value,
int port_num = 0 );
1971 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
1979 int reg_w( uint8_t reg_adr, uint8_t data );
1988 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
2037 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
2038 void bit_op16( uint8_t reg, uint16_t mask, uint16_t value );
2052 GPIO_SPI( uint8_t device_address,
int nbits,
const uint8_t* arp, uint8_t ai );
2065 virtual int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
2074 virtual int reg_w( uint8_t reg_adr, uint8_t data );
2083 virtual int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
2090 virtual uint8_t
reg_r( uint8_t reg_adr );
2103 PCAL97xx_base( uint8_t dev_address,
const int nbits,
const uint8_t arp[], uint8_t ai );
2104 virtual ~PCAL97xx_base();
2116 Input_Port_0, Input_Port_1, Input_Port_2, reserved0,
2117 Output_Port_0, Output_Port_1, Output_Port_2, reserved1,
2118 Polarity_Inversion_port_0, Polarity_Inversion_port_1, Polarity_Inversion_port_2, reserved2,
2119 Configuration_port_0, Configuration_port_1, Configuration_port_2,
2120 Output_drive_strength_register_port_0A=0x40, Output_drive_strength_register_port_0B,
2121 Output_drive_strength_register_port_1A, Output_drive_strength_register_port_1B,
2122 Output_drive_strength_register_port_2A, Output_drive_strength_register_port_2B,
2123 reserved3, reserved4,
2124 Input_latch_register_port_0, Input_latch_register_port_1, Input_latch_register_port_2, reserved5,
2125 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,
2126 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,
2127 Interrupt_mask_register_port_0, Interrupt_mask_register_port_1, Interrupt_mask_register_port_2, reserved8,
2128 Interrupt_status_register_port_0, Interrupt_status_register_port_1, Interrupt_status_register_port_2, reserved9,
2129 Output_port_configuration_register, reserved10, reserved11, reserved12,
2130 Interrupt_edge_register_port_0A, Interrupt_edge_register_port_0B,
2131 Interrupt_edge_register_port_1A, Interrupt_edge_register_port_1B,
2132 Interrupt_edge_register_port_2A, Interrupt_edge_register_port_2B,
2133 reserved13, reserved14,
2134 Interrupt_clear_register_port_0, Interrupt_clear_register_port_1, Interrupt_clear_register_port_2, reserved15,
2135 Input_status_port_0, Input_status_port_1, Input_status_port_2, reserved16,
2136 Individual_pin_output_port_0_configuration_register, Individual_pin_output_port_1_configuration_register, Individual_pin_output_port_2_configuration_register, reserved17,
2137 Switch_debounce_enable_0, Switch_debounce_enable_1, Switch_debounce_count,
2144 PCAL9722( uint8_t dev_address = (0x40 >> 1) + 0 );
2160 static constexpr uint8_t access_ref[ NUM_access_word ] = {
2163 Polarity_Inversion_port_0,
2164 Configuration_port_0,
2165 Output_drive_strength_register_port_0A,
2166 Input_latch_register_port_0,
2167 Pull_up_pull_down_enable_register_port_0,
2168 Pull_up_pull_down_selection_register_port_0,
2169 Interrupt_mask_register_port_0,
2170 Interrupt_status_register_port_0,
2171 Output_port_configuration_register,
2175 static constexpr int RESET_PIN_PCAL9722 = 6;
2199 void output(
int port, uint8_t value, uint8_t mask = 0 );
2291 void write_port( access_word w, uint8_t value,
int port_num = 0 );
2330 int reg_w( uint8_t reg_adr,
const uint8_t *data, uint16_t size );
2338 int reg_w( uint8_t reg_adr, uint8_t data );
2347 int reg_r( uint8_t reg_adr, uint8_t *data, uint16_t size );
2396 void bit_op8( uint8_t reg, uint8_t mask, uint8_t value );
2397 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)
static void print_bin(uint8_t v)
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)
PCAL6xxx_base(uint8_t i2c_address, const int nbits, const uint8_t arp[], uint8_t ai)
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)