#include <cfg/compiler.h>
+#include <drv/i2c.h>
+
+#if COMPILER_C99
+ #define pcf8574_init(...) PP_CAT(pcf8574_init ## _, COUNT_PARMS(__VA_ARGS__)) (__VA_ARGS__)
+ #define pcf8574_get(...) PP_CAT(pcf8574_get ## _, COUNT_PARMS(__VA_ARGS__)) (__VA_ARGS__)
+ #define pcf8574_put(...) PP_CAT(pcf8574_put ## _, COUNT_PARMS(__VA_ARGS__)) (__VA_ARGS__)
+#else
+ #define pcf8574_init(args...) PP_CAT(pcf8574_init ## _, COUNT_PARMS(args)) (args)
+ #define pcf8574_get(args...) PP_CAT(pcf8574_get ## _, COUNT_PARMS(args)) (args)
+ #define pcf8574_put(args...) PP_CAT(pcf8574_put ## _, COUNT_PARMS(args)) (args)
+#endif
+
typedef uint8_t pcf8574_addr;
/**
#define PCF8574ID 0x40 ///< I2C address
-int pcf8574_get(Pcf8574 *pcf);
-bool pcf8574_put(Pcf8574 *pcf, uint8_t data);
-bool pcf8574_init(Pcf8574 *pcf, pcf8574_addr addr);
+DEPRECATED int pcf8574_get_1(Pcf8574 *pcf);
+DEPRECATED bool pcf8574_put_2(Pcf8574 *pcf, uint8_t data);
+DEPRECATED bool pcf8574_init_2(Pcf8574 *pcf, pcf8574_addr addr);
+
+
+int pcf8574_get_2(I2c *i2c, Pcf8574 *pcf);
+bool pcf8574_put_3(I2c *i2c, Pcf8574 *pcf, uint8_t data);
+bool pcf8574_init_3(I2c *i2c, Pcf8574 *pcf, pcf8574_addr addr);
#endif /* DRV_PCF8574_H */