mirror of git://git.sysmocom.de/ofono
gril: Remove g_ril_reply_parse_avail_ops
This commit is contained in:
parent
2801acc03e
commit
2a6e6df52c
138
gril/grilreply.c
138
gril/grilreply.c
|
@ -67,144 +67,6 @@ static void ril_reply_free_operator(gpointer data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void g_ril_reply_free_avail_ops(struct reply_avail_ops *reply)
|
|
||||||
{
|
|
||||||
if (reply) {
|
|
||||||
g_slist_free_full(reply->list, ril_reply_free_operator);
|
|
||||||
g_free(reply);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct reply_avail_ops *g_ril_reply_parse_avail_ops(GRil *gril,
|
|
||||||
const struct ril_msg *message)
|
|
||||||
{
|
|
||||||
struct parcel rilp;
|
|
||||||
struct reply_operator *operator;
|
|
||||||
struct reply_avail_ops *reply = NULL;
|
|
||||||
unsigned int num_ops, num_strings;
|
|
||||||
unsigned int i;
|
|
||||||
int strings_per_opt;
|
|
||||||
|
|
||||||
if (g_ril_vendor(gril) == OFONO_RIL_VENDOR_MTK)
|
|
||||||
strings_per_opt = 5;
|
|
||||||
else
|
|
||||||
strings_per_opt = 4;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Minimum message length is 4:
|
|
||||||
* - array size
|
|
||||||
*/
|
|
||||||
if (message->buf_len < 4) {
|
|
||||||
ofono_error("%s: invalid QUERY_AVAIL_NETWORKS reply: "
|
|
||||||
"size too small (< 4): %d ",
|
|
||||||
__func__,
|
|
||||||
(int) message->buf_len);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_ril_init_parcel(message, &rilp);
|
|
||||||
g_ril_append_print_buf(gril, "{");
|
|
||||||
|
|
||||||
/* Number of operators at the list */
|
|
||||||
num_strings = (unsigned int) parcel_r_int32(&rilp);
|
|
||||||
if (num_strings % strings_per_opt) {
|
|
||||||
ofono_error("%s: invalid QUERY_AVAIL_NETWORKS reply: "
|
|
||||||
"num_strings (%d) MOD %d != 0",
|
|
||||||
__func__,
|
|
||||||
num_strings, strings_per_opt);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
num_ops = num_strings / strings_per_opt;
|
|
||||||
DBG("noperators = %d", num_ops);
|
|
||||||
|
|
||||||
reply = g_try_new0(struct reply_avail_ops, 1);
|
|
||||||
if (reply == NULL) {
|
|
||||||
ofono_error("%s: can't allocate reply struct", __func__);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
reply->num_ops = num_ops;
|
|
||||||
for (i = 0; i < num_ops; i++) {
|
|
||||||
operator = g_try_new0(struct reply_operator, 1);
|
|
||||||
if (operator == NULL) {
|
|
||||||
ofono_error("%s: can't allocate reply struct",
|
|
||||||
__func__);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
operator->lalpha = parcel_r_string(&rilp);
|
|
||||||
operator->salpha = parcel_r_string(&rilp);
|
|
||||||
operator->numeric = parcel_r_string(&rilp);
|
|
||||||
operator->status = parcel_r_string(&rilp);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MTK: additional string with technology: 2G/3G are the only
|
|
||||||
* valid values currently.
|
|
||||||
*/
|
|
||||||
if (g_ril_vendor(gril) == OFONO_RIL_VENDOR_MTK) {
|
|
||||||
char *tech = parcel_r_string(&rilp);
|
|
||||||
if (strcmp(tech, "3G") == 0)
|
|
||||||
operator->tech = RADIO_TECH_UMTS;
|
|
||||||
else
|
|
||||||
operator->tech = RADIO_TECH_GSM;
|
|
||||||
g_free(tech);
|
|
||||||
} else {
|
|
||||||
operator->tech = RADIO_TECH_GSM;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (operator->lalpha == NULL && operator->salpha == NULL) {
|
|
||||||
ofono_error("%s: operator (%s) doesn't specify names",
|
|
||||||
operator->numeric,
|
|
||||||
__func__);
|
|
||||||
g_ril_reply_free_operator(operator);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (operator->numeric == NULL) {
|
|
||||||
ofono_error("%s: operator (%s/%s) "
|
|
||||||
"doesn't specify numeric",
|
|
||||||
operator->lalpha,
|
|
||||||
operator->salpha,
|
|
||||||
__func__);
|
|
||||||
g_ril_reply_free_operator(operator);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (operator->status == NULL) {
|
|
||||||
ofono_error("%s: operator (%s/%s) "
|
|
||||||
"doesn't specify status",
|
|
||||||
operator->lalpha,
|
|
||||||
operator->salpha,
|
|
||||||
__func__);
|
|
||||||
g_ril_reply_free_operator(operator);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
reply->list = g_slist_append(reply->list, operator);
|
|
||||||
|
|
||||||
g_ril_append_print_buf(gril, "%s [lalpha=%s, salpha=%s, "
|
|
||||||
" numeric=%s status=%s tech=%s]",
|
|
||||||
print_buf,
|
|
||||||
operator->lalpha,
|
|
||||||
operator->salpha,
|
|
||||||
operator->numeric,
|
|
||||||
operator->status,
|
|
||||||
ril_radio_tech_to_string(operator->tech));
|
|
||||||
}
|
|
||||||
|
|
||||||
g_ril_append_print_buf(gril, "%s}", print_buf);
|
|
||||||
g_ril_print_response(gril, message);
|
|
||||||
|
|
||||||
return reply;
|
|
||||||
|
|
||||||
error:
|
|
||||||
if (reply)
|
|
||||||
g_ril_reply_free_avail_ops(reply);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_ril_reply_free_operator(struct reply_operator *reply)
|
void g_ril_reply_free_operator(struct reply_operator *reply)
|
||||||
{
|
{
|
||||||
ril_reply_free_operator(reply);
|
ril_reply_free_operator(reply);
|
||||||
|
|
|
@ -40,11 +40,6 @@ struct reply_operator {
|
||||||
int tech;
|
int tech;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct reply_avail_ops {
|
|
||||||
guint num_ops;
|
|
||||||
GSList *list;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct reply_reg_state {
|
struct reply_reg_state {
|
||||||
int status;
|
int status;
|
||||||
int lac;
|
int lac;
|
||||||
|
@ -92,10 +87,6 @@ struct reply_oem_hook {
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
void g_ril_reply_free_avail_ops(struct reply_avail_ops *reply);
|
|
||||||
|
|
||||||
struct reply_avail_ops *g_ril_reply_parse_avail_ops(GRil *gril,
|
|
||||||
const struct ril_msg *message);
|
|
||||||
void g_ril_reply_free_operator(struct reply_operator *reply);
|
void g_ril_reply_free_operator(struct reply_operator *reply);
|
||||||
|
|
||||||
struct reply_operator *g_ril_reply_parse_operator(GRil *gril,
|
struct reply_operator *g_ril_reply_parse_operator(GRil *gril,
|
||||||
|
|
Loading…
Reference in New Issue