<div dir="ltr">hello Aleksander.<br><div class="gmail_extra"><div class="gmail_quote">see below.<br><br><br><span style="color:rgb(80,0,80)">On Tue, Jul 2, 2013 at 1:52 AM, Aleksander Morgado </span><span dir="ltr" style="color:rgb(80,0,80)"><<a href="mailto:aleksander@lanedo.com" target="_blank">aleksander@lanedo.com</a>></span><span style="color:rgb(80,0,80)"> wrote:</span><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div><div class="h5">
<blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>Hey hey,<br><br>> plugins/altair/mm-broadband-modem-altair-lte.c | 179 +++++++++++++++++++++++--<br>> 1 file changed, 169 insertions(+), 10 deletions(-)<br>> mode change 100644 => 100755 plugins/altair/mm-broadband-modem-altair-lte.c<br>
><br>> diff --git a/plugins/altair/mm-broadband-modem-altair-lte.c b/plugins/altair/mm-broadband-modem-altair-lte.c<br>> old mode 100644<br>> new mode 100755<br>> index a2ae2ba..c1b16f3<br>> --- a/plugins/altair/mm-broadband-modem-altair-lte.c<br>
> +++ b/plugins/altair/mm-broadband-modem-altair-lte.c<br>> @@ -51,6 +51,7 @@ G_DEFINE_TYPE_EXTENDED (MMBroadbandModemAltairLte, mm_broadband_modem_altair_lte<br>> struct _MMBroadbandModemAltairLtePrivate {<br>> /* Regex for bearer related notifications */<br>
> GRegex *statcm_regex;<br>> + GRegex *pcoinfo_regex;<br>> };<br>><br>> static MMIfaceModem3gpp *iface_modem_3gpp_parent;<br>> @@ -553,6 +554,19 @@ altair_statcm_changed (MMAtSerialPort *port,<br>
> }<br>><br>> static void<br>> +altair_pcoinfo_changed (MMAtSerialPort *port,<br>> + GMatchInfo *match_info,<br>> + MMBroadbandModemAltairLte *self)<br>> +{<br>
> + gint cid = 0;<br><br>
Leave a full whiteline between variable declarations and first method call.<br></div></div></div></div></div></blockquote><font color="#500050"><br></font>done<br><span style="color:rgb(80,0,80)"> </span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class="im"><br>> + mm_get_int_from_match_info (match_info, 1, &cid);<br><br>
Just in case, place this mm_get_int_from_match_info() within an if().</div></div></div></div></blockquote><font color="#500050"><br></font>done<br><span style="color:rgb(80,0,80)"> </span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class="im">
<br>> +<br>> + mm_dbg ("altair_pcoinfo_changed for cid %d", cid);<br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote>Log messages need to be readable; and the method name will already be<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>available in the log. So don't re-add the method name in the actual<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>message. Instead, just say "PCO info changed for cid %d" or something<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>like that.<br>
<div><br></div></div></div></div></div></blockquote><span style="color:rgb(80,0,80)"> </span><br>done <br><font color="#500050"><br></font><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class="im">> +<br>> + mm_iface_modem_3gpp_reload_current_vendor_pco_info (MM_IFACE_MODEM_3GPP (self), NULL, NULL);<br><br>So... we only get notification that PCO info changed, not the change itself?<br>
</div></div></div></div></blockquote><font color="#500050"><br></font>we get the change as well - but since we get it for only one PDN we need to re-evaluate the system wide PCO info we will<br>notify up - so we call for a full reload.<br>
<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div><div class="h5"><br>> +}<br>> +<br>> +static void<br>> set_3gpp_unsolicited_events_handlers (MMBroadbandModemAltairLte *self,<br>> gboolean enable)<br>> {<br>
> @@ -574,6 +588,14 @@ set_3gpp_unsolicited_events_handlers (MMBroadbandModemAltairLte *self,<br>> enable ? (MMAtSerialUnsolicitedMsgFn)altair_statcm_changed : NULL,<br>> enable ? self : NULL,<br>
> NULL);<br>> +<br>> + /* Vendor PCO info change */<br>> + mm_at_serial_port_add_unsolicited_msg_handler (<br>> + ports[i],<br>> + self->priv->pcoinfo_regex,<br>
> + enable ? (MMAtSerialUnsolicitedMsgFn)altair_pcoinfo_changed : NULL,<br>> + enable ? self : NULL,<br>> + NULL);<br>> }<br>> }<br>><br>> @@ -687,6 +709,12 @@ own_enable_unsolicited_events_ready (MMBaseModem *self,<br>
> g_object_unref (simple);<br>> }<br>><br>> +static const MMBaseModemAtCommand unsolicited_enable_sequence[] = {<br>> + { "%STATCM=1", 5, FALSE, NULL },<br>> + { "%PCOINFO=1", 3, FALSE, NULL },<br>
> + { NULL }<br>> +};<br>> +<br>> static void<br>> parent_enable_unsolicited_events_ready (MMIfaceModem3gpp *self,<br>> GAsyncResult *res,<br>> @@ -702,13 +730,12 @@ parent_enable_unsolicited_events_ready (MMIfaceModem3gpp *self,<br>
> }<br>><br>> /* Our own enable now */<br>> - mm_base_modem_at_command_full (<br>> + mm_base_modem_at_sequence_full (<br>> MM_BASE_MODEM (self),<br>> mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)),<br>
> - "%STATCM=1",<br>> - 6,<br>> - FALSE, /* allow_cached */<br>> - FALSE, /* raw */<br>> + unsolicited_enable_sequence,<br>> + NULL, /* response_processor_context */<br>
> + NULL, /* response_processor_context_free */<br>> NULL, /* cancellable */<br>> (GAsyncReadyCallback)own_enable_unsolicited_events_ready,<br>> simple);<br>> @@ -781,6 +808,12 @@ own_disable_unsolicited_events_ready (MMBaseModem *self,<br>
> simple);<br>> }<br>><br>> +static const MMBaseModemAtCommand unsolicited_disable_sequence[] = {<br>> + { "%STATCM=0", 5, FALSE, NULL },<br>> + { "%PCOINFO=0", 5, FALSE, NULL },<br>
> + { NULL }<br>> +};<br>> +<br>> static void<br>> modem_3gpp_disable_unsolicited_events (MMIfaceModem3gpp *self,<br>> GAsyncReadyCallback callback,<br>> @@ -794,13 +827,12 @@ modem_3gpp_disable_unsolicited_events (MMIfaceModem3gpp *self,<br>
> modem_3gpp_disable_unsolicited_events);<br>><br>> /* Our own disable first */<br>> - mm_base_modem_at_command_full (<br>> + mm_base_modem_at_sequence_full (<br>
> MM_BASE_MODEM (self),<br>> mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)),<br>> - "%STATCM=0",<br>> - 5,<br>> - FALSE, /* allow_cached */<br>> - FALSE, /* raw */<br>
> + unsolicited_disable_sequence,<br>> + NULL, /* response_processor_context */<br>> + NULL, /* response_processor_context_free */<br>> NULL, /* cancellable */<br>> (GAsyncReadyCallback)own_disable_unsolicited_events_ready,<br>
> result);<br>> @@ -893,6 +925,128 @@ modem_3gpp_load_operator_name (MMIfaceModem3gpp *self,<br>> callback,<br>> user_data);<br>> }<br>
> +/*****************************************************************************/<br>> +/* Vendor PCO Info loading (3GPP interface) */<br>> +<br>> +static gchar *<br>> +mm_broadband_modem_altair_lte_parse_vendor_pco_info (const gchar *reply)<br>
<br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote>We should have unit tests for all these parsers, so let's add them. See<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>for example this one:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote><a href="http://cgit.freedesktop.org/ModemManager/ModemManager/commit/?h=aleksander/huawei-ndisstatqry&id=af7564cf82b380c814ce14ca80faacd62e20585a" target="_blank">http://cgit.freedesktop.org/ModemManager/ModemManager/commit/?h=aleksander/huawei-ndisstatqry&id=af7564cf82b380c814ce14ca80faacd62e20585a</a><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote><br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>That's a parser plus unit tests for a Huawei-specific thing.<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote><br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>Please do the same here; move this method to a pair of new<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>"mm-modem-helpers-altair-lte.[ch]" files, rename it as<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>"mm_altair_lte_parse_vendor_pco_info", and then add unit tests for it<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>with different example replies that we get for the PCO info. You'll<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>probably need to copy some bits from the Makefile.am in that patch, as<br>
that is not yet pushed to git master.<br></div></div></div></div></div></blockquote><font color="#500050"><br></font>i will look into it - i hope for now u can accept it without this addition.<br><span style="color:rgb(80,0,80)"> </span><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div class="im"><br><br>> +{<br>> + GError *inner_error = NULL;<br>> + GRegex *r;<br>> + GMatchInfo *match_info;<br>> + guint cid;<br>> + gchar *result = NULL;<br>> +<br>> + if (!reply[0])<br>
> + /* No APNs configured, all done */<br>> + return NULL;<br>> +<br>> + r = g_regex_new ("\\%PCOINFO:\\s*(\\d+)\\s*,(\\d+)\\s*(,([^,\\)]*),([0-9A-Fa-f]*))?",<br>> + G_REGEX_DOLLAR_ENDONLY | G_REGEX_RAW,<br>
> + 0, &inner_error);<br>> + if (r) {<br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote>Just g_assert (r != NULL) here instead. If you wrote the regex<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>expression well, it should never fail. Also, don't pass &inner_error,<br>
not needed in g_regex_new().<br></div></div></div></div></blockquote><font color="#500050"><br></font>done.<br><span style="color:rgb(80,0,80)"> </span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class="im"><br><br>> + g_regex_match_full (r, reply, strlen (reply), 0, 0, &match_info, &inner_error);<br>> +<br>> + while (!inner_error && g_match_info_matches (match_info)) {<br>
> + gchar *pco_id;<br>> +<br>> + if (!mm_get_uint_from_match_info (match_info, 2, &cid)) {<br>> + inner_error = g_error_new (MM_CORE_ERROR,<br>> + MM_CORE_ERROR_FAILED,<br>
> + "Couldn't parse CID from reply: '%s'",<br>> + reply);<br>> + break;<br>> + }<br>
> +<br>> + pco_id = mm_get_string_unquoted_from_match_info (match_info, 4);<br>> +<br>> + /* If this is the first PCO info we're getting, use it. Otherwise only use CID 3<br>> + PCO info, since this is the internet bearer. */<br>
<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote>Missing asterisk in the comment; all comment lines should start with an<br>
asterisk.<br></div></div></div></div></blockquote><font color="#500050"><br></font>done.<br><span style="color:rgb(80,0,80)"> </span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class="im"><br>> + if (pco_id && (!result || cid == 3)) {<br>> + gchar *pco_payload;<br>> +<br>> + pco_payload = mm_get_string_unquoted_from_match_info (match_info, 5);<br>
> + if (!pco_payload) {<br>> + inner_error = g_error_new (MM_CORE_ERROR,<br>> + MM_CORE_ERROR_FAILED,<br>> + "Couldn't parse PCO payload from reply: '%s'",<br>
> + reply);<br>> + g_free (pco_id);<br>> + break;<br>> + }<br>> +<br>> + if (result) {<br>
> + g_free (result);<br>> + result = NULL;<br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote>No need to result = NULL if you're going to change it right away. You<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>can remove the if() all together and just place g_free (result); as<br>
result will start being NULL and g_free(NULL) is perfectly fine.<br></div></div></div></div></blockquote><font color="#500050"><br></font>done <br><span style="color:rgb(80,0,80)"> </span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><br>> + }<br>> +<br>> + result = g_strdup_printf ("%s%s", pco_id, pco_payload);<br>> +<br>
> + mm_dbg ("Vendor PCO info for CID %d: '%s'", cid, result);<br>> +<br>> + g_free (pco_id);<br>> + g_free (pco_payload);<br>> + } else {<br>
> + if (pco_id)<br>> + mm_dbg ("Vendor PCO info for CID %d is disregarded since we already have one", cid);<br>> + else<br>> + mm_dbg ("Vendor PCO info for CID %d is disregarded since it has no PCO data", cid);<br>
> + }<br>> +<br>> + g_match_info_next (match_info, &inner_error);<br>> + }<br>> +<br>> + g_match_info_free (match_info);<br>> + g_regex_unref (r);<br>> + }<br>
> +<br>> + if (inner_error) {<br>> + mm_dbg ("Error parsing %%PCOINFO response: '%s'", inner_error->message);<br>> + g_error_free (inner_error);<br>> + if (result) {<br>
> + g_free (result);<br>> + result = NULL;<br><br>
Instead of removing the error; why not propagate it to the caller?<br></div></div></div></div></div></blockquote><font color="#500050"><br></font>done <br><span style="color:rgb(80,0,80)"> </span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><br>> + }<br>> + }<br>> +<br>> + return result;<br>> +}<br>> +<br>> +static gchar *<br>> +modem_3gpp_load_vendor_pco_info_finish (MMIfaceModem3gpp *self,<br>
> + GAsyncResult *res,<br>> + GError **error)<br>> +{<br>> + const gchar *result;<br>> + gchar *vendor_pco_info;<br>> +<br>
> + result = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error);<br>> + if (!result)<br>> + return NULL;<br>> +<br>> + vendor_pco_info = mm_broadband_modem_altair_lte_parse_vendor_pco_info (result);<br>
> + if (vendor_pco_info)<br>> + mm_dbg ("loaded Vendor PCO Info: %s", vendor_pco_info);<br>> + else<br>> + mm_dbg ("loaded empty Vendor PCO Info");<br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote>In case of error, you're returning NULL but the GError not set. If we<br><blockquote class="gmail_quote " style="margin:0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;border-right-width:1px;border-right-color:rgb(204,204,204);border-right-style:solid;padding-left:1ex;padding-right:1ex">
</blockquote>return NULL, you should really set the GError. I would just propagate<br>
the GError from the parse_vendor_pco_info() message.<br></div></div></div></div></div></blockquote><span style="color:rgb(80,0,80)"> </span><br>done <br><font color="#500050"><br></font><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><br>> +<br>> + return vendor_pco_info;<br>> +}<br>> +<br>> +static void<br>> +modem_3gpp_load_vendor_pco_info (MMIfaceModem3gpp *self,<br>
> + GAsyncReadyCallback callback,<br>> + gpointer user_data)<br>> +{<br>> + mm_dbg ("Loading Vendor PCO Info...");<br>> +<br>> + mm_base_modem_at_command (MM_BASE_MODEM (self),<br>
> + "%PCOINFO?",<br>> + 6,<br>> + FALSE,<br>> + callback,<br>> + user_data);<br>
> +}<br>><br>> /*****************************************************************************/<br>> /* Generic ports open/close context */<br>> @@ -955,6 +1109,9 @@ mm_broadband_modem_altair_lte_init (MMBroadbandModemAltairLte *self)<br>
><br>> self->priv->statcm_regex = g_regex_new ("\\r\\n\\%STATCM:\\s*(\\d*),?(\\d*)\\r+\\n",<br>> G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);<br>> +<br>
> + self->priv->pcoinfo_regex = g_regex_new ("\\r\\n\\%PCOINFO:\\s*(\\d*),([^,\\s]*),([^,\\s]*)\\r+\\n",<br>> + G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);<br>
<br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
</blockquote>You're missing a g_regex_unref() for this GRegex; possibly in dispose()<br>
or finalize().<br></div></div></div></div></div></blockquote><font color="#500050"><br></font>done <br><span style="color:rgb(80,0,80)"> </span><br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class="im"><br>> }<br>><br>> static void<br>> @@ -1028,6 +1185,8 @@ iface_modem_3gpp_init (MMIfaceModem3gpp *iface)<br>> iface->load_operator_code_finish = modem_3gpp_load_operator_code_finish;<br>
> iface->load_operator_name = modem_3gpp_load_operator_name;<br>> iface->load_operator_name_finish = modem_3gpp_load_operator_name_finish;<br>> + iface->load_vendor_pco_info = modem_3gpp_load_vendor_pco_info;<br>
> + iface->load_vendor_pco_info_finish = modem_3gpp_load_vendor_pco_info_finish;<br>><br>> }<br>><br>><br><br><br>--<br>
<span><font color="#888888">Aleksander<br>
</font></span></div></div></div></div>
</blockquote></div><br></div></div>