4 @ARGV < 2 and die "Usage: $0 <prefix> <file>\n";
5 my $prefix = shift @ARGV;
12 guint16
=> "uint16_t",
14 guint32
=> "uint32_t",
16 guint64
=> "uint64_t",
21 $prefix eq 'ctl_' and $ctl = 1;
26 $json =~ s/^\s*\/\/.*$//mg;
27 return decode_json
($json);
33 $name =~ s/[^a-zA-Z0-9_]/_/g;
37 sub gen_has_types
($) {
40 foreach my $field (@
$data) {
41 my $type = $field->{"format"};
47 sub gen_tlv_set_func
($$) {
51 $name = gen_cname
($name);
52 if (gen_has_types
($data)) {
53 return "int qmi_set_$name(struct qmi_msg *msg, struct qmi_$name *req)"
55 return "int qmi_set_$name(struct qmi_msg *msg)"
59 sub gen_tlv_parse_func
($$) {
63 $name = gen_cname
($name);
64 if (gen_has_types
($data)) {
65 return "int qmi_parse_$name(struct qmi_msg *msg, struct qmi_$name *res)"
67 return "int qmi_parse_$name(struct qmi_msg *msg)"
71 sub gen_foreach_message_type
($$$)
77 foreach my $entry (@
$data) {
81 next if $entry->{type
} ne 'Message';
82 next if not defined $entry->{input
} and not defined $entry->{output
};
84 &$req_sub($prefix.$entry->{name
}." Request", $entry->{input
}, $entry);
85 &$res_sub($prefix.$entry->{name
}." Response", $entry->{output
}, $entry);