Inital Commit with working code gen for c

This commit is contained in:
2025-04-23 16:01:31 +02:00
commit ad0b3c431d
9 changed files with 850 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
{{define "cenum"}}
typedef enum {
{{- range .Entries }}
{{ .Name }} = {{ printf "0x%X" .ID }},
{{- end }}
}{{.EnumName}};
{{end}}
{{define "payloads"}}
{{- range . }}
typedef struct {
{{- if not .Entries}}
// empty payload
{{- end}}
{{- range .Entries }}
{{.DataType}} {{.Name}};
{{- end }}
}{{ .Name }}Payload;
{{ end }}
{{end}}
{{define "union"}}
typedef union {
{{- range .}}
{{.Name}} {{ .Name | snake}}
{{- end }}
}PayloadUnion:
{{end}}
{{define "handler"}}
{{- range . }}
void (*on_{{ .Name | snake }})({{ .Name }}Payload*) = NULL;
{{- end}}
{{end}}
{{define "dispatcher"}}
void dispatch_message(uint8_t msg_id, void* payload) {
switch (msg_id) {
{{- range . }}
case {{ .Name }}:
if (on_{{ .Name | snake }}) on_{{ .Name | snake }}(({{ .Name }}Payload*)payload);
break;
{{- end }}
default:
// Unknown message
break;
}
}
{{end}}
{{define "send_functions"}}
{{- range .}}
void send_{{.Name | snake}}({{- range .Payload}}{{.DataType}} {{.Name}}, {{- end}}) {
{{.Name}}Payload payload;
// Payload-Daten zuweisen
{{- range .Payload}}
payload.{{.Name}} = {{.Name}};
{{- end}}
// Nachricht senden
send_message({{.Name}}, &payload);
}
{{- end }}
{{end}}
+20
View File
@@ -0,0 +1,20 @@
{{- define "cpart" -}}
// AUTO GENERATED DO NOT EDIT!!!
#ifndef _PROTO_HEADER
#define _PROTO_HEADER
{{ block "cenum" .CenumPCTOESP }} {{ end }}
{{ block "cenum" .CenumESPTOPC }} {{ end }}
{{ block "payloads" .PayloadStructs }} {{ end }}
{{ block "union" .PayloadStructs }} {{ end }}
{{ block "handler" .MessagesPCtoESP}} {{ end }}
{{ block "dispatcher" .MessagesPCtoESP}} {{ end }}
{{ block "send_functions" .MessagesESPtoPC}} {{ end }}
#endif
{{- end -}}