diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-05-23 18:37:43 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-07-03 16:08:55 +0200 |
commit | 289a21418fb2790604cef988a7425469b3f60e0a (patch) | |
tree | d6ba595d161ba86bd0ad42fde7eff0c9409761ee | |
parent | 09a84b18211a06324d1075e1c59e98ad9c196abe (diff) | |
download | external_libqmi-289a21418fb2790604cef988a7425469b3f60e0a.zip external_libqmi-289a21418fb2790604cef988a7425469b3f60e0a.tar.gz external_libqmi-289a21418fb2790604cef988a7425469b3f60e0a.tar.bz2 |
qmi-codegen: include struct-array TLV contents in printable strings
-rw-r--r-- | build-aux/qmi-codegen/FieldArray.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/build-aux/qmi-codegen/FieldArray.py b/build-aux/qmi-codegen/FieldArray.py index 3c276ff..a7c236f 100644 --- a/build-aux/qmi-codegen/FieldArray.py +++ b/build-aux/qmi-codegen/FieldArray.py @@ -112,3 +112,63 @@ class FieldArray(Field): template += ( '${lp}}\n') f.write(string.Template(template).substitute(translations)) + + + def emit_output_tlv_get_printable(self, f): + translations = { 'underscore' : utils.build_underscore_name (self.fullname), + 'array_element_type' : self.array_element.name, + 'tlv_id' : self.id_enum_name } + template = ( + '\n' + 'static gchar *\n' + '${underscore}_get_printable (\n' + ' QmiMessage *self)\n' + '{\n' + ' GString *printable;\n' + ' guint i;\n' + ' guint8 buffer[1024];\n' + ' guint16 buffer_len = 1024;\n' + ' ${array_element_type}Packed *item;\n' + '\n' + ' printable = g_string_new ("");\n' + ' if (qmi_message_tlv_get_varlen (self,\n' + ' ${tlv_id},\n' + ' &buffer_len,\n' + ' buffer,\n' + ' NULL)) {\n' + ' guint8 nitems = buffer[0];\n' + '\n' + ' for (i = 0, item = (${array_element_type}Packed *)&buffer[1]; i < nitems; i++, item++) {\n' + ' ${array_element_type} tmp;\n' + '\n') + f.write(string.Template(template).substitute(translations)) + + for struct_field in self.array_element.members: + translations['name_struct_field'] = struct_field['name'] + translations['underscore_struct_field'] = utils.build_underscore_name(struct_field['name']) + translations['endianfix'] = utils.he_from_le ('item->' + utils.build_underscore_name(struct_field['name']), + 'tmp.' + utils.build_underscore_name(struct_field['name']), + struct_field['format']) + + template = ( + ' ${endianfix};\n' + ' g_string_append_printf (printable,\n') + + if struct_field['format'] == 'guint8' or \ + struct_field['format'] == 'guint16' or \ + struct_field['format'] == 'guin32': + template += ( + ' "[${name_struct_field} = %u] ",\n' + ' (guint)tmp.${underscore_struct_field});\n') + else: + template += ( + ' "[${name_struct_field} = %d] ",\n' + ' (gint)tmp.${underscore_struct_field});\n') + f.write(string.Template(template).substitute(translations)) + + f.write( + ' }\n' + ' }\n' + '\n' + ' return g_string_free (printable, FALSE);\n' + '}\n') |