Skip to content
This repository was archived by the owner on Feb 25, 2023. It is now read-only.

Commit b51899e

Browse files
committed
add: send description&stateCode from Redis to HSM
1 parent 1b8af86 commit b51899e

File tree

1 file changed

+33
-4
lines changed

1 file changed

+33
-4
lines changed

middleware/src/middleware.go

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"log"
99
"os/exec"
1010
"regexp"
11+
"strconv"
1112
"strings"
1213
"time"
1314

@@ -178,13 +179,11 @@ func (middleware *Middleware) updateCheckLoop() {
178179
}
179180
}
180181

181-
// hsmHeartbeatLoop
182182
func (middleware *Middleware) hsmHeartbeatLoop() {
183183
for {
184-
// TODO(@0xB10C) fetch the `stateCode` and `descriptionCode` from redis keys set byt the supervisor
185-
err := middleware.hsmFirmware.BitBoxBaseHeartbeat(messages.BitBoxBaseHeartbeatRequest_IDLE, messages.BitBoxBaseHeartbeatRequest_EMPTY)
184+
err := middleware.hsmHeartbeat()
186185
if err != nil {
187-
log.Printf("Received an error from the HSM: %s\n", err)
186+
log.Printf("Warning while sending a HSM heartbeat: %s\n", err)
188187
time.Sleep(time.Second)
189188
continue
190189
}
@@ -193,6 +192,36 @@ func (middleware *Middleware) hsmHeartbeatLoop() {
193192
}
194193
}
195194

195+
func (middleware *Middleware) hsmHeartbeat() error {
196+
stateCode, err := middleware.redisClient.GetInt(redis.BaseStateCode)
197+
if err != nil {
198+
err = middleware.hsmFirmware.BitBoxBaseHeartbeat(messages.BitBoxBaseHeartbeatRequest_ERROR, messages.BitBoxBaseHeartbeatRequest_REDIS_ERROR)
199+
if err != nil {
200+
return fmt.Errorf("could not get the stateCode from Redis: %s", err)
201+
}
202+
}
203+
204+
descriptionCodeString, err := middleware.redisClient.GetTopFromSortedSet(redis.BaseDescriptionCode)
205+
if err != nil {
206+
err = middleware.hsmFirmware.BitBoxBaseHeartbeat(messages.BitBoxBaseHeartbeatRequest_ERROR, messages.BitBoxBaseHeartbeatRequest_REDIS_ERROR)
207+
if err != nil {
208+
return fmt.Errorf("could not get the hightest priority descriptionCode from Redis: %s", err)
209+
}
210+
}
211+
212+
descriptionCode, err := strconv.Atoi(descriptionCodeString)
213+
if err != nil {
214+
return fmt.Errorf("could not convert the descriptionCode from Redis %q to a string: %s", descriptionCodeString, err)
215+
}
216+
217+
err = middleware.hsmFirmware.BitBoxBaseHeartbeat(messages.BitBoxBaseHeartbeatRequest_StateCode(stateCode), messages.BitBoxBaseHeartbeatRequest_DescriptionCode(descriptionCode))
218+
if err != nil {
219+
return fmt.Errorf("received an error from the HSM: %w", err)
220+
}
221+
222+
return nil
223+
}
224+
196225
// Start gives a trigger for the handler to start the rpc event loop
197226
func (middleware *Middleware) Start() <-chan handlers.Event {
198227
if middleware.hsmFirmware != nil {

0 commit comments

Comments
 (0)