66 lines
1.3 KiB
Cheetah
66 lines
1.3 KiB
Cheetah
{{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}}
|