Inital Commit with working code gen for c
This commit is contained in:
@@ -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}}
|
||||
@@ -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 -}}
|
||||
Reference in New Issue
Block a user