diff options
author | James <> | 2021-02-20 18:33:43 +0000 |
---|---|---|
committer | James <> | 2021-02-20 18:33:43 +0000 |
commit | 2839d30c0335f0215405644aaa35bbfd16f062e9 (patch) | |
tree | af826dab9c7649488bb6fc6d39e5ae6d6c7857a6 /master/qmi-fix-nmea | |
download | master-04a21c2-pq-master.tar.gz master-04a21c2-pq-master.tar.bz2 master-04a21c2-pq-master.zip |
Diffstat (limited to 'master/qmi-fix-nmea')
-rw-r--r-- | master/qmi-fix-nmea | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/master/qmi-fix-nmea b/master/qmi-fix-nmea new file mode 100644 index 0000000..1f29684 --- /dev/null +++ b/master/qmi-fix-nmea @@ -0,0 +1,159 @@ +diff --git a/feeds/packages/libs/libqmi/patches/001-fix-nmea.patch b/feeds/packages/libs/libqmi/patches/001-fix-nmea.patch +new file mode 100644 +index 0000000..4bf445e +--- /dev/null ++++ b/feeds/packages/libs/libqmi/patches/001-fix-nmea.patch +@@ -0,0 +1,153 @@ ++Index: libqmi-1.24.8/build-aux/qmi-codegen/VariableString.py ++=================================================================== ++--- libqmi-1.24.8.orig/build-aux/qmi-codegen/VariableString.py +++++ libqmi-1.24.8/build-aux/qmi-codegen/VariableString.py ++@@ -38,6 +38,11 @@ class VariableString(Variable): ++ self.private_format = 'gchar *' ++ self.public_format = self.private_format ++ +++ if 'force-ascii' in dictionary: +++ self.force_ascii = True +++ else: +++ self.force_ascii = False +++ ++ if 'fixed-size' in dictionary: ++ self.is_fixed_size = True ++ # Fixed-size strings ++@@ -104,8 +109,9 @@ class VariableString(Variable): ++ else: ++ translations['n_size_prefix_bytes'] = self.n_size_prefix_bytes ++ translations['max_size'] = self.max_size if self.max_size != '' else '0' +++ translations['ascii'] = 'ascii' if self.force_ascii else '' ++ template = ( ++- '${lp}if (!qmi_message_tlv_read_string (message, init_offset, &offset, ${n_size_prefix_bytes}, ${max_size}, &(${variable_name}), ${error}))\n' +++ '${lp}if (!qmi_message_tlv_read_${ascii}string (message, init_offset, &offset, ${n_size_prefix_bytes}, ${max_size}, &(${variable_name}), ${error}))\n' ++ '${lp} goto ${tlv_out};\n') ++ f.write(string.Template(template).substitute(translations)) ++ ++@@ -151,12 +157,13 @@ class VariableString(Variable): ++ else: ++ translations['n_size_prefix_bytes'] = self.n_size_prefix_bytes ++ translations['max_size'] = self.max_size if self.max_size != '' else '0' +++ translations['ascii'] = 'ascii' if self.force_ascii else '' ++ template = ( ++ '\n' ++ '${lp}{\n' ++ '${lp} gchar *tmp;\n' ++ '\n' ++- '${lp} if (!qmi_message_tlv_read_string (message, init_offset, &offset, ${n_size_prefix_bytes}, ${max_size}, &tmp, &error))\n' +++ '${lp} if (!qmi_message_tlv_read_${ascii}string (message, init_offset, &offset, ${n_size_prefix_bytes}, ${max_size}, &tmp, &error))\n' ++ '${lp} goto out;\n' ++ '${lp} g_string_append (printable, tmp);\n' ++ '${lp} g_free (tmp);\n' ++Index: libqmi-1.24.8/data/qmi-service-pds.json ++=================================================================== ++--- libqmi-1.24.8.orig/data/qmi-service-pds.json +++++ libqmi-1.24.8/data/qmi-service-pds.json ++@@ -164,6 +164,7 @@ ++ "id" : "0x10", ++ "type" : "TLV", ++ "since" : "1.0", +++ "force-ascii" : "1", ++ "format" : "string", ++ "max-size" : "200" }, ++ { "name" : "Extended NMEA Position", ++Index: libqmi-1.24.8/src/libqmi-glib/qmi-message.c ++=================================================================== ++--- libqmi-1.24.8.orig/src/libqmi-glib/qmi-message.c +++++ libqmi-1.24.8/src/libqmi-glib/qmi-message.c ++@@ -1260,15 +1260,15 @@ qmi_message_tlv_read_gdouble (QmiMessage ++ *offset = *offset + 8; ++ return TRUE; ++ } ++- ++-gboolean ++-qmi_message_tlv_read_string (QmiMessage *self, +++static gboolean +++qmi_message_tlv_read_string_worker (QmiMessage *self, ++ gsize tlv_offset, ++ gsize *offset, ++ guint8 n_size_prefix_bytes, ++ guint16 max_size, ++ gchar **out, ++- GError **error) +++ GError **error, +++ gboolean force_ascii) ++ { ++ const guint8 *ptr; ++ guint16 string_length; ++@@ -1325,7 +1325,7 @@ qmi_message_tlv_read_string (QmiMessage ++ * but hey, the strings read using this method should all really be ASCII-7 ++ * and we're trying to do our best to overcome modem firmware problems... ++ */ ++- if (__qmi_string_utf8_validate_printable (ptr, valid_string_length)) { +++ if (__qmi_string_utf8_validate_printable (ptr, valid_string_length) || force_ascii) { ++ *out = g_malloc (valid_string_length + 1); ++ memcpy (*out, ptr, valid_string_length); ++ (*out)[valid_string_length] = '\0'; ++@@ -1348,6 +1348,34 @@ qmi_message_tlv_read_string (QmiMessage ++ } ++ ++ gboolean +++qmi_message_tlv_read_string (QmiMessage *self, +++ gsize tlv_offset, +++ gsize *offset, +++ guint8 n_size_prefix_bytes, +++ guint16 max_size, +++ gchar **out, +++ GError **error) +++{ +++ return qmi_message_tlv_read_string_worker (self, tlv_offset, offset, +++ n_size_prefix_bytes, max_size, out, error, FALSE); +++} +++ +++ +++gboolean +++qmi_message_tlv_read_asciistring (QmiMessage *self, +++ gsize tlv_offset, +++ gsize *offset, +++ guint8 n_size_prefix_bytes, +++ guint16 max_size, +++ gchar **out, +++ GError **error) +++{ +++ return qmi_message_tlv_read_string_worker (self, tlv_offset, offset, +++ n_size_prefix_bytes, max_size, out, error, TRUE); +++} +++ +++ +++gboolean ++ qmi_message_tlv_read_fixed_size_string (QmiMessage *self, ++ gsize tlv_offset, ++ gsize *offset, ++Index: libqmi-1.24.8/src/libqmi-glib/qmi-message.h ++=================================================================== ++--- libqmi-1.24.8.orig/src/libqmi-glib/qmi-message.h +++++ libqmi-1.24.8/src/libqmi-glib/qmi-message.h ++@@ -933,6 +933,14 @@ gboolean qmi_message_tlv_read_string (Qm ++ gchar **out, ++ GError **error); ++ +++gboolean qmi_message_tlv_read_asciistring (QmiMessage *self, +++ gsize tlv_offset, +++ gsize *offset, +++ guint8 n_size_prefix_bytes, +++ guint16 max_size, +++ gchar **out, +++ GError **error); +++ ++ /** ++ * qmi_message_tlv_read_fixed_size_string: ++ * @self: a #QmiMessage. ++Index: libqmi-1.24.8/data/qmi-service-loc.json ++=================================================================== ++--- libqmi-1.24.8.orig/data/qmi-service-loc.json +++++ libqmi-1.24.8/data/qmi-service-loc.json ++@@ -323,6 +323,7 @@ ++ "id" : "0x01", ++ "type" : "TLV", ++ "since" : "1.22", +++ "force-ascii" : "1", ++ "format" : "string" } ] }, ++ ++ // ********************************************************************************* |