From 20fcbe5499eeb1783ee06fb7e9242e9ea0b3b150 Mon Sep 17 00:00:00 2001 From: yurii Date: Mon, 20 Apr 2026 11:17:27 +0100 Subject: [PATCH] added the second attempt to send the card to the encoder after 6 seconds --- dispenser/dispenserclient.go | 20 ++++++++++++++++---- lockserver/assalockserver.go | 8 ++++---- main.go | 2 +- release notes.md | 3 +++ 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/dispenser/dispenserclient.go b/dispenser/dispenserclient.go index 39d8b75..a39f8a9 100644 --- a/dispenser/dispenserclient.go +++ b/dispenser/dispenserclient.go @@ -296,11 +296,17 @@ func (c *Client) DispenserStart(ctx context.Context) (string, error) { return stockStatus, fmt.Errorf("[%s] to encoder: %w", funcName, err) } - deadline := time.Now().Add(6 * time.Second) + halfway := time.Now().Add(6 * time.Second) + deadline := time.Now().Add(12 * time.Second) for { time.Sleep(delay * 2) - if time.Now().After(deadline) { + switch { + case time.Now().After(halfway): + if err := c.ToEncoder(ctx); err != nil { + return stockStatus, fmt.Errorf("[%s] to encoder: %w", funcName, err) + } + case time.Now().After(deadline): return stockStatus, nil } @@ -345,11 +351,17 @@ func (c *Client) DispenserFinal(ctx context.Context) (string, error) { logStatus(status) }() - deadline := time.Now().Add(6 * time.Second) + halfway := time.Now().Add(6 * time.Second) + deadline := time.Now().Add(12 * time.Second) for { time.Sleep(delay * 2) - if time.Now().After(deadline) { + switch { + case time.Now().After(halfway): + if err := c.ToEncoder(ctx); err != nil { + return stockStatus, fmt.Errorf("[%s] to encoder: %w", funcName, err) + } + case time.Now().After(deadline): return stockStatus, nil } diff --git a/lockserver/assalockserver.go b/lockserver/assalockserver.go index 973d41c..6794c8b 100644 --- a/lockserver/assalockserver.go +++ b/lockserver/assalockserver.go @@ -1,15 +1,16 @@ +// Package lockserver provides functionality for interacting with Assa Abloy lock servers. package lockserver import ( "fmt" "net" - "time" "strings" - + "time" + log "github.com/sirupsen/logrus" ) -// Build key encoding request command for the Assa Abloy lock server. +// BuildCommand builds a key encoding request command for the Assa Abloy lock server. func (lock *AssaLockServer) BuildCommand(doorReq DoorCardRequest, checkIn, checkOut time.Time) error { ci := checkIn.Format("200601021504") co := checkOut.Format("200601021504") @@ -71,4 +72,3 @@ func parseAssaResponse(raw string) (string, error) { } return "Success: " + clean, nil } - diff --git a/main.go b/main.go index 64408bf..7d3cf9e 100644 --- a/main.go +++ b/main.go @@ -29,7 +29,7 @@ import ( ) const ( - buildVersion = "1.2.5" + buildVersion = "1.2.6" serviceName = "hardlink" pollingFrequency = 8 * time.Second ) diff --git a/release notes.md b/release notes.md index 5820337..de8aaf8 100644 --- a/release notes.md +++ b/release notes.md @@ -2,6 +2,9 @@ builtVersion is a const in main.go +#### 1.2.6 - 20 April 2026 +added the second attempt to send the card to the encoder after 6 seconds + #### 1.2.5 - 20 March 2026 removed early return on error when checking dispenser status in the start and final loops.