summaryrefslogtreecommitdiffstats
path: root/master/qmi-fix-nmea
diff options
context:
space:
mode:
authorJames <>2021-02-20 18:33:43 +0000
committerJames <>2021-02-20 18:33:43 +0000
commit2839d30c0335f0215405644aaa35bbfd16f062e9 (patch)
treeaf826dab9c7649488bb6fc6d39e5ae6d6c7857a6 /master/qmi-fix-nmea
downloadmaster-04a21c2-pq-master.tar.gz
master-04a21c2-pq-master.tar.bz2
master-04a21c2-pq-master.zip
everything happyHEADmaster
Diffstat (limited to 'master/qmi-fix-nmea')
-rw-r--r--master/qmi-fix-nmea159
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" } ] },
++
++ // *********************************************************************************