44 lines
1.6 KiB
C
44 lines
1.6 KiB
C
/*
|
|
* libptouch — internal declarations (not installed)
|
|
*
|
|
* Author: knb
|
|
* Email: knb@artif.org
|
|
*/
|
|
|
|
#ifndef LIBPTOUCH_INTERNAL_H
|
|
#define LIBPTOUCH_INTERNAL_H
|
|
|
|
#include "libptouch.h"
|
|
|
|
#include <libusb.h>
|
|
#include <stddef.h>
|
|
|
|
struct libptouch_ctx {
|
|
libptouch_err_t last_code;
|
|
char last_msg[256];
|
|
int usb_open;
|
|
struct libusb_context *usb_ctx;
|
|
struct libusb_device_handle *usb_handle;
|
|
int claimed_interface; /* -1 if none */
|
|
uint8_t bulk_out_ep;
|
|
uint8_t bulk_in_ep;
|
|
uint16_t usb_pid; /* 0 if USB not open; used to pick 128- vs 560-dot raster */
|
|
};
|
|
|
|
/* ctx に最終エラー(コードとメッセージ)を記録する。公開 API のエラー返却前に使う。 */
|
|
void ptouch_set_error(libptouch_ctx *ctx, libptouch_err_t code, const char *msg);
|
|
/* libusb のエラー番号を人が読めるメッセージにして ptouch_set_error に渡す。 */
|
|
void ptouch_set_error_usb(libptouch_ctx *ctx, int libusb_err, const char *what);
|
|
|
|
/* bulk OUT 転送。成功時 0、失敗時 libusb の負のエラーコード。 */
|
|
int ptouch_bulk_out(libusb_device_handle *h, uint8_t ep, const uint8_t *data,
|
|
int len, unsigned int timeout_ms);
|
|
/* bulk IN で len バイトを揃えるまで読む。成功時 0、失敗時 libusb の負のエラーコード。 */
|
|
int ptouch_bulk_in_exact(libusb_device_handle *h, uint8_t ep, uint8_t *buf,
|
|
int len, unsigned int timeout_ms);
|
|
/* ctx の bulk OUT エンドポイントへ buf を送る。印刷ジョブのチャンク送信用。 */
|
|
libptouch_err_t ptouch_bulk_send_job(libptouch_ctx *ctx, const uint8_t *buf,
|
|
size_t len, const char *what);
|
|
|
|
#endif /* LIBPTOUCH_INTERNAL_H */
|