From 747cd994470e04c0baff7bfa616f7e4ea528e5b4 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sun, 22 Sep 2019 22:54:05 +0200 Subject: [PATCH] Fixed printer IRQ handling, hopefully it now operates correctly. --- src/printer/prt_escp.c | 3 ++- src/printer/prt_text.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/printer/prt_escp.c b/src/printer/prt_escp.c index 5d6b3fa31..e45dba752 100644 --- a/src/printer/prt_escp.c +++ b/src/printer/prt_escp.c @@ -519,6 +519,7 @@ static void reset_printer_hard(escp_t *dev) { dev->char_read = 0; + lpt_irq(dev->lpt, 1); timer_disable(&dev->timeout_timer); reset_printer(dev); } @@ -1590,7 +1591,6 @@ handle_char(escp_t *dev, uint8_t ch) double x_advance; dev->char_read = 1; - lpt_irq(dev->lpt, 1); if (dev->page == NULL) return; @@ -1762,6 +1762,7 @@ print_ack(escp_t *dev) { if (dev->char_read) { dev->char_read = 0; + lpt_irq(dev->lpt, 1); return 1; } diff --git a/src/printer/prt_text.c b/src/printer/prt_text.c index 5f24f9587..a25616c67 100644 --- a/src/printer/prt_text.c +++ b/src/printer/prt_text.c @@ -394,7 +394,6 @@ write_ctrl(uint8_t val, void *priv) /* ACK it, will be read on next READ STATUS. */ dev->ack = 1; - lpt_irq(dev->lpt, 1); timer_set_delay_u64(&dev->timeout_timer, 500000 * TIMER_USEC); } @@ -419,6 +418,7 @@ read_status(void *priv) /* Clear ACK after reading status. */ dev->ack = 0; + lpt_irq(dev->lpt, 1); return(ret); }