a Go library and command line utility for reading values from a Sutron data logger
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
768 B

5 years ago
5 years ago
5 years ago
  1. package sutron
  2. import (
  3. "fmt"
  4. )
  5. type SutronB struct {
  6. Block byte
  7. Group byte
  8. Delta byte
  9. Data []byte
  10. Voltage byte
  11. }
  12. func (s SutronB) GroupString() string {
  13. switch s.Group {
  14. case '1':
  15. return "Scheduled Transmission"
  16. case '2':
  17. return "Alarm Transmission"
  18. case '3':
  19. return "Forced Transmission"
  20. default:
  21. return ""
  22. }
  23. }
  24. func ParseSutronB(raw []byte) (*SutronB, error) {
  25. raw_len := len(raw)
  26. if raw_len < 5 {
  27. return nil, fmt.Errorf("message structure too short: %d bytes",
  28. len(raw))
  29. }
  30. if raw[0] != 'B' {
  31. return nil, fmt.Errorf("wrong sutron format: %s", raw[0])
  32. }
  33. data := SutronB{}
  34. data.Block = raw[0]
  35. data.Group = raw[1]
  36. data.Delta = raw[2]
  37. data.Data = raw[3 : raw_len-1]
  38. data.Voltage = raw[raw_len-1]
  39. return &data, nil
  40. }