Compare commits
2 Commits
f8577dc3dc
...
09e2afe329
| Author | SHA1 | Date | |
|---|---|---|---|
| 09e2afe329 | |||
| d1f91e547b |
12
main.go
12
main.go
@ -24,9 +24,17 @@ func main() {
|
|||||||
var cfg proto.Proto
|
var cfg proto.Proto
|
||||||
json.Unmarshal(file, &cfg)
|
json.Unmarshal(file, &cfg)
|
||||||
|
|
||||||
a, err := proto.CreateCStyle(&cfg)
|
proto.InitTemplates()
|
||||||
|
|
||||||
|
header, err := proto.CreateCStyleHeader(&cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("ERROR: %v", err)
|
log.Printf("ERROR: %v", err)
|
||||||
}
|
}
|
||||||
log.Printf("TEMPLATE: \n%v", a)
|
log.Printf("TEMPLATE HEADER: \n%v", header)
|
||||||
|
|
||||||
|
source, err := proto.CreateCStyleSource(&cfg)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("ERROR: %v", err)
|
||||||
|
}
|
||||||
|
log.Printf("TEMPLATE SOURCE: \n%v", source)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,16 +69,22 @@ type CStyleData struct {
|
|||||||
MessagesESPtoPC []ProtoMessage
|
MessagesESPtoPC []ProtoMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateCStyle(proto *Proto) (string, error) {
|
var tmpl *template.Template
|
||||||
|
|
||||||
|
func InitTemplates() {
|
||||||
funcs := template.FuncMap{
|
funcs := template.FuncMap{
|
||||||
"snake": toSnakeCase,
|
"snake": toSnakeCase,
|
||||||
"isLast": isLast,
|
"isLast": isLast,
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpl, err := template.New("all").Funcs(funcs).ParseGlob("templates/*.tmpl")
|
Ntmpl, err := template.New("all").Funcs(funcs).ParseGlob("templates/*.tmpl")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("failed to parse templates: %v", err)
|
log.Fatalf("failed to parse templates: %v", err)
|
||||||
}
|
}
|
||||||
|
tmpl = Ntmpl
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateCStyleHeader(proto *Proto) (string, error) {
|
||||||
|
|
||||||
payloads := []PayloadStruct{}
|
payloads := []PayloadStruct{}
|
||||||
|
|
||||||
@ -113,7 +119,50 @@ func CreateCStyle(proto *Proto) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
err = tmpl.ExecuteTemplate(&buf, "cpart", data)
|
err := tmpl.ExecuteTemplate(&buf, "cpartHeader", data)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error Rendering template: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.String(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateCStyleSource(proto *Proto) (string, error) {
|
||||||
|
|
||||||
|
payloads := []PayloadStruct{}
|
||||||
|
|
||||||
|
for _, payload := range proto.PC_TO_ESP {
|
||||||
|
tmp := PayloadStruct{
|
||||||
|
Name: payload.Name,
|
||||||
|
Entries: payload.Payload,
|
||||||
|
}
|
||||||
|
payloads = append(payloads, tmp)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, payload := range proto.ESP_TO_PC {
|
||||||
|
tmp := PayloadStruct{
|
||||||
|
Name: payload.Name,
|
||||||
|
Entries: payload.Payload,
|
||||||
|
}
|
||||||
|
payloads = append(payloads, tmp)
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = CStyleData{
|
||||||
|
CenumPCTOESP: Cenum{
|
||||||
|
EnumName: "PC_TO_ESP_MESSAGE_IDS",
|
||||||
|
Entries: proto.PC_TO_ESP,
|
||||||
|
},
|
||||||
|
CenumESPTOPC: Cenum{
|
||||||
|
EnumName: "ESP_TO_PC_MESSAGE_IDS",
|
||||||
|
Entries: proto.ESP_TO_PC,
|
||||||
|
},
|
||||||
|
PayloadStructs: payloads,
|
||||||
|
MessagesPCtoESP: proto.PC_TO_ESP,
|
||||||
|
MessagesESPtoPC: proto.ESP_TO_PC,
|
||||||
|
}
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
err := tmpl.ExecuteTemplate(&buf, "cpartSource", data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error Rendering template: %v", err)
|
log.Printf("Error Rendering template: %v", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,9 +26,9 @@ typedef struct {
|
|||||||
{{define "union"}}
|
{{define "union"}}
|
||||||
typedef union {
|
typedef union {
|
||||||
{{- range .}}
|
{{- range .}}
|
||||||
{{.Name}} {{ .Name | snake}}
|
{{.Name}}Payload {{ .Name | snake}};
|
||||||
{{- end }}
|
{{- end }}
|
||||||
}PayloadUnion:
|
} PayloadUnion;
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{define "handler"}}
|
{{define "handler"}}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{{- define "cpart" -}}
|
{{- define "cpartHeader" -}}
|
||||||
// AUTO GENERATED DO NOT EDIT!!!
|
// AUTO GENERATED DO NOT EDIT!!!
|
||||||
|
|
||||||
#ifndef _PROTO_HEADER
|
#ifndef _PROTO_HEADER
|
||||||
@ -11,10 +11,5 @@
|
|||||||
|
|
||||||
{{ block "union" .PayloadStructs }} {{ end }}
|
{{ block "union" .PayloadStructs }} {{ end }}
|
||||||
|
|
||||||
{{ block "handler" .MessagesPCtoESP}} {{ end }}
|
|
||||||
|
|
||||||
{{ block "dispatcher" .MessagesPCtoESP}} {{ end }}
|
|
||||||
|
|
||||||
{{ block "send_functions" .MessagesESPtoPC}} {{ end }}
|
|
||||||
#endif
|
#endif
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
9
templates/cpartSource.tmpl
Normal file
9
templates/cpartSource.tmpl
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{{- define "cpartSource" -}}
|
||||||
|
// AUTO GENERATED DO NOT EDIT!!!
|
||||||
|
|
||||||
|
{{ block "handler" .MessagesPCtoESP}} {{ end }}
|
||||||
|
|
||||||
|
{{ block "dispatcher" .MessagesPCtoESP}} {{ end }}
|
||||||
|
|
||||||
|
{{ block "send_functions" .MessagesESPtoPC}} {{ end }}
|
||||||
|
{{- end -}}
|
||||||
Loading…
x
Reference in New Issue
Block a user