#ifndef ASTRIBANK_H #define ASTRIBANK_H #include struct astribank *astribank_new(const char *path); void astribank_destroy(struct astribank *ab); void show_astribank_info(const struct astribank *ab); struct xusb_iface *astribank_xpp_open(struct astribank *ab); struct mpp_device *astribank_mpp_open(struct astribank *ab); struct xusb_device *xusb_dev_of_astribank(const struct astribank *ab); const char *astribank_devpath(const struct astribank *ab); const char *astribank_serial(const struct astribank *ab); int astribank_send(struct astribank *ab, int interface_num, const char *buf, int len, int timeout); int astribank_recv(struct astribank *ab, int interface_num, char *buf, size_t len, int timeout); #define AB_REPORT(report_type, astribank, fmt, ...) \ report_type("%s [%s]: " fmt, \ astribank_devpath(astribank), \ astribank_serial(astribank), \ ## __VA_ARGS__) #define AB_INFO(astribank, fmt, ...) \ AB_REPORT(INFO, astribank, fmt, ## __VA_ARGS__) #define AB_ERR(astribank, fmt, ...) \ AB_REPORT(ERR, astribank, fmt, ## __VA_ARGS__) #endif /* ASTRIBANK_H */