Compare commits

..

No commits in common. "development" and "1.2.2" have entirely different histories.

4 changed files with 26 additions and 65 deletions

View File

@ -279,9 +279,7 @@ func (c *Client) DispenserStart(ctx context.Context) (string, error) {
return stockStatus, fmt.Errorf("[%s] check status: %w", funcName, err) return stockStatus, fmt.Errorf("[%s] check status: %w", funcName, err)
} }
defer func() {
logStatus(status) logStatus(status)
}()
stockStatus = stockTake(status) stockStatus = stockTake(status)
c.setStock(status) c.setStock(status)
@ -296,75 +294,48 @@ func (c *Client) DispenserStart(ctx context.Context) (string, error) {
return stockStatus, fmt.Errorf("[%s] to encoder: %w", funcName, err) return stockStatus, fmt.Errorf("[%s] to encoder: %w", funcName, err)
} }
deadline := time.Now().Add(6 * time.Second) time.Sleep(delay)
status, err = c.CheckStatus(ctx)
for { if err != nil {
time.Sleep(delay * 2) return stockStatus, fmt.Errorf("[%s] re-check status: %w", funcName, err)
if time.Now().After(deadline) {
return stockStatus, nil
} }
logStatus(status)
status, _ = c.do(ctx, cmdStatus)
stockStatus = stockTake(status) stockStatus = stockTake(status)
c.setStock(status) c.setStock(status)
logStatus(status)
// error states first
if isCardWellEmpty(status) {
return stockStatus, fmt.Errorf(stockStatus)
}
if isAtEncoderPosition(status) {
return stockStatus, nil return stockStatus, nil
}
}
} }
func (c *Client) DispenserFinal(ctx context.Context) (string, error) { func (c *Client) DispenserFinal(ctx context.Context) (string, error) {
const funcName = "DispenserFinal" const funcName = "DispenserFinal"
stockStatus := "" stockStatus := ""
var status []byte
if err := c.OutOfMouth(ctx); err != nil { if err := c.OutOfMouth(ctx); err != nil {
return stockStatus, fmt.Errorf("[%s] out of mouth: %w", funcName, err) return stockStatus, fmt.Errorf("[%s] out of mouth: %w", funcName, err)
} }
time.Sleep(delay) time.Sleep(delay)
status, err := c.do(ctx, cmdStatus) status, err := c.CheckStatus(ctx)
if err == nil && len(status) >= 4 { if err != nil {
c.setStock(status) return stockStatus, fmt.Errorf("[%s] check status: %w", funcName, err)
} }
logStatus(status)
stockStatus = stockTake(status)
c.setStock(status)
time.Sleep(delay) time.Sleep(delay)
if err := c.ToEncoder(ctx); err != nil { if err := c.ToEncoder(ctx); err != nil {
return stockStatus, fmt.Errorf("[%s] to encoder: %w", funcName, err) return stockStatus, fmt.Errorf("[%s] to encoder: %w", funcName, err)
} }
defer func() { time.Sleep(delay)
logStatus(status) status, err = c.CheckStatus(ctx)
}() if err != nil {
return stockStatus, fmt.Errorf("[%s] re-check status: %w", funcName, err)
deadline := time.Now().Add(6 * time.Second)
for {
time.Sleep(delay * 2)
if time.Now().After(deadline) {
return stockStatus, nil
} }
logStatus(status)
status, _ = c.do(ctx, cmdStatus)
stockStatus = stockTake(status) stockStatus = stockTake(status)
c.setStock(status) c.setStock(status)
logStatus(status)
if isCardWellEmpty(status) {
return stockStatus, nil return stockStatus, nil
}
if isAtEncoderPosition(status) {
return stockStatus, nil
}
}
} }

View File

@ -191,7 +191,6 @@ func (app *App) takePayment(w http.ResponseWriter, r *http.Request) {
writeTransactionResult(w, http.StatusServiceUnavailable, theResponse) writeTransactionResult(w, http.StatusServiceUnavailable, theResponse)
return return
} }
} }
if r.Method == http.MethodOptions { if r.Method == http.MethodOptions {

View File

@ -29,7 +29,7 @@ import (
) )
const ( const (
buildVersion = "1.2.5" buildVersion = "1.2.2"
serviceName = "hardlink" serviceName = "hardlink"
pollingFrequency = 8 * time.Second pollingFrequency = 8 * time.Second
) )

View File

@ -2,15 +2,6 @@
builtVersion is a const in main.go builtVersion is a const in main.go
#### 1.2.5 - 20 March 2026
removed early return on error when checking dispenser status in the start and final loops.
#### 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
#### 1.2.2 - 11 February 2026 #### 1.2.2 - 11 February 2026
increased waiting time befor sending email on PDQ unavailability to 30 seconds day time and 10 minutes night time increased waiting time befor sending email on PDQ unavailability to 30 seconds day time and 10 minutes night time
to give it a chance to become available again to give it a chance to become available again