I *really* care about reliability and error detection!
This commit is contained in:
parent
81ca7b7ac9
commit
dcaf33ce01
2 changed files with 14 additions and 2 deletions
|
@ -26,6 +26,9 @@ typedef enum {
|
||||||
TABBY_PRINTER_OK = 0
|
TABBY_PRINTER_OK = 0
|
||||||
} tabby_printer_status;
|
} tabby_printer_status;
|
||||||
|
|
||||||
|
#define TABBY_PRINTER_WAIT 0x0e
|
||||||
|
#define TABBY_PRINTER_ERROR 0xf0
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TABBY_PRINTER_PACKET_INIT = 0x01,
|
TABBY_PRINTER_PACKET_INIT = 0x01,
|
||||||
TABBY_PRINTER_PACKET_JOB = 0x02,
|
TABBY_PRINTER_PACKET_JOB = 0x02,
|
||||||
|
|
|
@ -197,16 +197,25 @@ int tabby_printer_job_cancel(tabby_printer *printer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int tabby_printer_wait(tabby_printer *printer) {
|
int tabby_printer_wait(tabby_printer *printer) {
|
||||||
do {
|
while (1) {
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
|
||||||
if (tabby_printer_inquiry_send(printer) < 0) {
|
if (tabby_printer_inquiry_send(printer) < 0) {
|
||||||
goto error_inquiry_send;
|
goto error_inquiry_send;
|
||||||
}
|
}
|
||||||
} while (printer->status);
|
|
||||||
|
if (printer->status & (TABBY_PRINTER_WAIT | TABBY_PRINTER_SUM)) {
|
||||||
|
continue;
|
||||||
|
} else if (printer->status & TABBY_PRINTER_ERROR) {
|
||||||
|
goto error_printer;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
error_printer:
|
||||||
error_inquiry_send:
|
error_inquiry_send:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue