mirror of git://git.sysmocom.de/ofono
rilmodem: Implement ril_csca_query_cb inline
This commit is contained in:
parent
1ee339bb77
commit
07be422cfa
|
@ -95,23 +95,47 @@ static void ril_csca_query_cb(struct ril_msg *message, gpointer user_data)
|
||||||
struct cb_data *cbd = user_data;
|
struct cb_data *cbd = user_data;
|
||||||
ofono_sms_sca_query_cb_t cb = cbd->cb;
|
ofono_sms_sca_query_cb_t cb = cbd->cb;
|
||||||
struct sms_data *sd = cbd->user;
|
struct sms_data *sd = cbd->user;
|
||||||
struct ofono_phone_number *sca;
|
struct ofono_phone_number sca;
|
||||||
|
struct parcel rilp;
|
||||||
|
char *temp_buf;
|
||||||
|
char *number;
|
||||||
|
|
||||||
if (message->error != RIL_E_SUCCESS) {
|
if (message->error != RIL_E_SUCCESS)
|
||||||
ofono_error("%s RILD reply failure: %s",
|
goto error;
|
||||||
g_ril_request_id_to_string(sd->ril, message->req),
|
|
||||||
ril_error_to_string(message->error));
|
g_ril_init_parcel(message, &rilp);
|
||||||
CALLBACK_WITH_FAILURE(cb, NULL, cbd->data);
|
|
||||||
return;
|
temp_buf = parcel_r_string(&rilp);
|
||||||
|
if (temp_buf == NULL)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
/* RIL gives address in quotes */
|
||||||
|
number = strtok(temp_buf, "\"");
|
||||||
|
if (number == NULL || *number == '\0') {
|
||||||
|
g_free(temp_buf);
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
sca = g_ril_reply_parse_get_smsc_address(sd->ril, message);
|
if (number[0] == '+') {
|
||||||
if (sca == NULL) {
|
number = number + 1;
|
||||||
CALLBACK_WITH_FAILURE(cb, NULL, cbd->data);
|
sca.type = OFONO_NUMBER_TYPE_INTERNATIONAL;
|
||||||
} else {
|
} else
|
||||||
CALLBACK_WITH_SUCCESS(cb, sca, cbd->data);
|
sca.type = OFONO_NUMBER_TYPE_UNKNOWN;
|
||||||
g_free(sca);
|
|
||||||
}
|
strncpy(sca.number, number, OFONO_MAX_PHONE_NUMBER_LENGTH);
|
||||||
|
sca.number[OFONO_MAX_PHONE_NUMBER_LENGTH] = '\0';
|
||||||
|
|
||||||
|
g_ril_append_print_buf(sd->ril, "{type=%d,number=%s}",
|
||||||
|
sca.type, sca.number);
|
||||||
|
g_ril_print_response(sd->ril, message);
|
||||||
|
|
||||||
|
g_free(temp_buf);
|
||||||
|
|
||||||
|
CALLBACK_WITH_SUCCESS(cb, &sca, cbd->data);
|
||||||
|
return;
|
||||||
|
|
||||||
|
error:
|
||||||
|
CALLBACK_WITH_FAILURE(cb, NULL, cbd->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ril_csca_query(struct ofono_sms *sms, ofono_sms_sca_query_cb_t cb,
|
static void ril_csca_query(struct ofono_sms *sms, ofono_sms_sca_query_cb_t cb,
|
||||||
|
|
Loading…
Reference in New Issue