diff --git a/proto/proto.go b/proto/proto.go index da19d5c..5685185 100644 --- a/proto/proto.go +++ b/proto/proto.go @@ -27,7 +27,7 @@ type ProtoMessage struct { type ProtoMessagePayload struct { Name string `json:"name"` DataType string `json:"type"` - ArrayLength int `json:"array,omitempty"` + ArrayLength int `json:"array,omitempty"` // optional falls kein array } type Proto struct { diff --git a/templates/blocks.tmpl b/templates/blocks.tmpl index ca794a1..5a5c0aa 100644 --- a/templates/blocks.tmpl +++ b/templates/blocks.tmpl @@ -31,6 +31,20 @@ typedef union { } PayloadUnion; {{end}} +{{define "basemessage"}} +typdef struct { + uint8_t version; + MessageID {{.CenumPCTOESP.EnumName}}; + PayloadUnion payload; +} PCTOESPBaseMessage; + +typdef struct { + uint8_t version; + MessageID {{.CenumESPTOPC.EnumName}}; + PayloadUnion payload; +} ESPTOPCBaseMessage; +{{end}} + {{define "handler"}} {{- range . }} void (*on_{{ .Name | snake }})({{ .Name }}Payload*) = NULL; @@ -38,7 +52,7 @@ void (*on_{{ .Name | snake }})({{ .Name }}Payload*) = NULL; {{end}} {{define "dispatcher"}} -void dispatch_message(uint8_t msg_id, void* payload) { +void dispatch_message(uint8_t msg_id, void *payload) { switch (msg_id) { {{- range . }} case {{ .Name }}: @@ -55,7 +69,7 @@ void dispatch_message(uint8_t msg_id, void* payload) { {{define "send_functions"}} {{- range .}} {{ $argLen := len .Payload }} -void send_{{.Name | snake}}({{- range $i, $p := .Payload}}{{$p.DataType}} {{$p.Name}} {{- if not (isLast $argLen $i) }}, {{ end}} {{- end}}) { +void send_{{.Name | snake}}({{- range $i, $p := .Payload}}{{$p.DataType}} {{if .ArrayLength}}*{{end}}{{$p.Name}} {{- if not (isLast $argLen $i) }}, {{ end}} {{- end}}) { {{.Name}}Payload payload; // Payload-Daten zuweisen diff --git a/templates/cpartHeader.tmpl b/templates/cpartHeader.tmpl index 1659f12..46d1586 100644 --- a/templates/cpartHeader.tmpl +++ b/templates/cpartHeader.tmpl @@ -11,5 +11,7 @@ {{ block "union" .PayloadStructs }} {{ end }} +{{ block "basemessage" . }} {{ end }} + #endif {{- end -}}