diff --git a/dispenser/dispenserclient.go b/dispenser/dispenserclient.go index 336972d..f7dc331 100644 --- a/dispenser/dispenserclient.go +++ b/dispenser/dispenserclient.go @@ -296,9 +296,10 @@ func (c *Client) DispenserStart(ctx context.Context) (string, error) { return stockStatus, fmt.Errorf("[%s] to encoder: %w", funcName, err) } - deadline := time.Now().Add(3 * time.Second) + deadline := time.Now().Add(6 * time.Second) for { + time.Sleep(delay * 2) if time.Now().After(deadline) { return stockStatus, fmt.Errorf("[%s] timeout waiting keycard at encoder position", funcName) } @@ -319,8 +320,6 @@ func (c *Client) DispenserStart(ctx context.Context) (string, error) { if isAtEncoderPosition(status) { return stockStatus, nil } - - time.Sleep(100 * time.Millisecond) } } @@ -333,8 +332,13 @@ func (c *Client) DispenserFinal(ctx context.Context) (string, error) { return stockStatus, fmt.Errorf("[%s] out of mouth: %w", funcName, err) } - time.Sleep(200 * time.Millisecond) + time.Sleep(delay) + status, err := c.do(ctx, cmdStatus) + if err == nil && len(status) >= 4 { + c.setStock(status) + } + time.Sleep(delay) if err := c.ToEncoder(ctx); err != nil { return stockStatus, fmt.Errorf("[%s] to encoder: %w", funcName, err) } @@ -343,20 +347,22 @@ func (c *Client) DispenserFinal(ctx context.Context) (string, error) { logStatus(status) }() - deadline := time.Now().Add(3 * time.Second) + deadline := time.Now().Add(6 * time.Second) for { + time.Sleep(delay * 2) if time.Now().After(deadline) { return stockStatus, nil } - status, err := c.do(ctx, cmdStatus) + status, err = c.do(ctx, cmdStatus) if err != nil { return stockStatus, nil } stockStatus = stockTake(status) c.setStock(status) + logStatus(status) if isCardWellEmpty(status) { return stockStatus, fmt.Errorf(stockStatus) @@ -365,8 +371,5 @@ func (c *Client) DispenserFinal(ctx context.Context) (string, error) { if isAtEncoderPosition(status) { return stockStatus, nil } - - time.Sleep(100 * time.Millisecond) } - } diff --git a/handlers/handlers.go b/handlers/handlers.go index 7e246cf..d0a175d 100644 --- a/handlers/handlers.go +++ b/handlers/handlers.go @@ -191,6 +191,7 @@ func (app *App) takePayment(w http.ResponseWriter, r *http.Request) { writeTransactionResult(w, http.StatusServiceUnavailable, theResponse) return } + } if r.Method == http.MethodOptions { diff --git a/main.go b/main.go index e98af9e..a7e65cd 100644 --- a/main.go +++ b/main.go @@ -29,7 +29,7 @@ import ( ) const ( - buildVersion = "1.2.3" + buildVersion = "1.2.4" serviceName = "hardlink" pollingFrequency = 8 * time.Second ) diff --git a/release notes.md b/release notes.md index ef45fc8..ec41352 100644 --- a/release notes.md +++ b/release notes.md @@ -2,6 +2,9 @@ builtVersion is a const in main.go +#### 1.2.4 - 18 March 2026 +added check if keycard at the encoder position before trying to encode key + #### 1.2.3 - 17 March 2026 added check if keycard at the encoder position before trying to encode key