This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package proto
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type HexByte byte
|
||||
|
||||
type ProtoComplete struct {
|
||||
Header ProtocolHeader `json:"protocol"`
|
||||
Protocols map[string][]ProtoMessage `json:"protocols"`
|
||||
}
|
||||
|
||||
type ProtocolHeader struct {
|
||||
StartByte HexByte `json:"start_byte"`
|
||||
MessageLength int `json:"message_length"`
|
||||
MaxPayload int `json:"max_payload"`
|
||||
Checksum string `json:"checksum"`
|
||||
}
|
||||
|
||||
type ProtoMessage struct {
|
||||
Name string `json:"name"`
|
||||
ID HexByte `json:"id"`
|
||||
Payload []ProtoMessagePayload `json:"payload,omitempty"` // optional falls kein payload
|
||||
}
|
||||
|
||||
type ProtoMessagePayload struct {
|
||||
Name string `json:"name"`
|
||||
DataType string `json:"type"`
|
||||
ArrayLength int `json:"array,omitempty"` // optional falls kein array
|
||||
}
|
||||
|
||||
func (h *HexByte) UnmarshalJSON(data []byte) error {
|
||||
var s string
|
||||
if err := json.Unmarshal(data, &s); err != nil { // turn into go string
|
||||
return err
|
||||
}
|
||||
|
||||
i, err := strconv.ParseUint(s, 0, 8)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
*h = HexByte(i)
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package proto
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestReadJson(t *testing.T) {
|
||||
con, err := os.ReadFile("../testdata/prot1.json")
|
||||
if err != nil {
|
||||
log.Fatalf("Could not read file %v", err)
|
||||
}
|
||||
|
||||
pc := &ProtoComplete{}
|
||||
|
||||
json.Unmarshal(con, pc)
|
||||
|
||||
log.Printf("%v", pc)
|
||||
|
||||
t.Fail()
|
||||
}
|
||||
Reference in New Issue
Block a user