96 lines
3.6 KiB
C
96 lines
3.6 KiB
C
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include "esp_err.h"
|
|
|
|
typedef enum {
|
|
PRINT_JOB_STATE_NONE = 0,
|
|
PRINT_JOB_STATE_QUEUED,
|
|
PRINT_JOB_STATE_RUNNING,
|
|
PRINT_JOB_STATE_SUCCESS,
|
|
PRINT_JOB_STATE_FAILED,
|
|
PRINT_JOB_STATE_CANCELED,
|
|
} print_job_state_t;
|
|
|
|
typedef struct {
|
|
uint32_t id;
|
|
print_job_state_t state;
|
|
uint8_t progress;
|
|
uint16_t width;
|
|
uint16_t height;
|
|
size_t data_len;
|
|
char density[16];
|
|
char error[96];
|
|
int64_t created_ms;
|
|
int64_t started_ms;
|
|
int64_t finished_ms;
|
|
} print_job_info_t;
|
|
|
|
typedef struct {
|
|
uint8_t major;
|
|
uint8_t minor;
|
|
uint8_t patch;
|
|
} printer_ota_version_t;
|
|
|
|
typedef struct {
|
|
bool connected;
|
|
bool notify_ready;
|
|
bool busy;
|
|
bool has_paper;
|
|
uint8_t battery_percent;
|
|
float temperature;
|
|
uint16_t mtu;
|
|
uint32_t queue_depth;
|
|
int64_t last_status_ms;
|
|
} printer_runtime_status_t;
|
|
|
|
typedef uint32_t printer_status_poll_pause_token_t;
|
|
|
|
esp_err_t printer_protocol_init(void);
|
|
esp_err_t printer_protocol_stop(uint32_t timeout_ms);
|
|
|
|
esp_err_t printer_protocol_connect(const char *target_name, uint32_t timeout_ms);
|
|
void printer_protocol_disconnect(void);
|
|
|
|
void printer_protocol_get_runtime_status(printer_runtime_status_t *out_status);
|
|
printer_status_poll_pause_token_t printer_protocol_status_poll_pause_acquire(void);
|
|
void printer_protocol_status_poll_pause_release(printer_status_poll_pause_token_t *token);
|
|
|
|
esp_err_t printer_protocol_submit_raster_job(const uint8_t *raster,
|
|
size_t raster_len,
|
|
uint16_t width,
|
|
uint16_t height,
|
|
const char *density,
|
|
uint32_t *out_job_id,
|
|
char *err,
|
|
size_t err_len);
|
|
|
|
bool printer_protocol_get_job(uint32_t job_id, print_job_info_t *out_info);
|
|
esp_err_t printer_protocol_list_jobs(print_job_info_t *out_jobs, size_t max_jobs, size_t *out_count);
|
|
esp_err_t printer_protocol_cancel_job(uint32_t job_id, char *err, size_t err_len);
|
|
size_t printer_protocol_cleanup_jobs(bool include_success, bool include_failed, bool include_canceled);
|
|
|
|
esp_err_t printer_protocol_gap_move(uint32_t timeout_ms, char *err, size_t err_len);
|
|
esp_err_t printer_protocol_get_label_offset(uint8_t *out_offset, uint32_t timeout_ms, char *err, size_t err_len);
|
|
esp_err_t printer_protocol_set_label_offset(uint8_t offset, uint32_t timeout_ms, char *err, size_t err_len);
|
|
|
|
esp_err_t printer_protocol_ota_jump_boot(uint32_t timeout_ms, char *err, size_t err_len);
|
|
esp_err_t printer_protocol_ota_jump_app(uint32_t timeout_ms, char *err, size_t err_len);
|
|
esp_err_t printer_protocol_ota_erase_page(uint16_t page_num, uint32_t timeout_ms, char *err, size_t err_len);
|
|
esp_err_t printer_protocol_ota_write_frame(uint16_t packet_num,
|
|
bool is_last_frame,
|
|
const uint8_t *data,
|
|
size_t data_len,
|
|
uint32_t timeout_ms,
|
|
char *err,
|
|
size_t err_len);
|
|
esp_err_t printer_protocol_ota_get_version(printer_ota_version_t *out_version,
|
|
uint32_t timeout_ms,
|
|
char *err,
|
|
size_t err_len);
|
|
|
|
const char *printer_protocol_job_state_str(print_job_state_t state);
|