mirror of git://git.sysmocom.de/ofono
atmodem: export struct netreg
In order to do inheritance by composition.
This commit is contained in:
parent
3e55559301
commit
a86d6ffede
|
@ -53,20 +53,6 @@ static const char *smoni_prefix[] = { "^SMONI:", NULL };
|
|||
static const char *zpas_prefix[] = { "+ZPAS:", NULL };
|
||||
static const char *option_tech_prefix[] = { "_OCTI:", "_OUWCTI:", NULL };
|
||||
|
||||
struct netreg_data {
|
||||
GAtChat *chat;
|
||||
char mcc[OFONO_MAX_MCC_LENGTH + 1];
|
||||
char mnc[OFONO_MAX_MNC_LENGTH + 1];
|
||||
int signal_index; /* If strength is reported via CIND */
|
||||
int signal_min; /* min strength reported via CIND */
|
||||
int signal_max; /* max strength reported via CIND */
|
||||
int signal_invalid; /* invalid strength reported via CIND */
|
||||
int tech;
|
||||
struct ofono_network_time time;
|
||||
guint nitz_timeout;
|
||||
unsigned int vendor;
|
||||
};
|
||||
|
||||
struct tech_query {
|
||||
int status;
|
||||
int lac;
|
||||
|
@ -211,7 +197,7 @@ static void at_creg_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
|||
ofono_netreg_status_cb_t cb = cbd->cb;
|
||||
int status, lac, ci, tech;
|
||||
struct ofono_error error;
|
||||
struct netreg_data *nd = cbd->user;
|
||||
struct at_netreg_data *nd = cbd->user;
|
||||
|
||||
decode_at_error(&error, g_at_result_final_response(result));
|
||||
|
||||
|
@ -252,7 +238,7 @@ static void zte_tech_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
|||
{
|
||||
struct cb_data *cbd = user_data;
|
||||
struct ofono_netreg *netreg = cbd->data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
|
||||
if (ok)
|
||||
nd->tech = zte_parse_tech(result);
|
||||
|
@ -264,7 +250,7 @@ static void option_tech_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
|||
{
|
||||
struct cb_data *cbd = user_data;
|
||||
struct ofono_netreg *netreg = cbd->data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
|
||||
if (ok)
|
||||
nd->tech = option_parse_tech(result);
|
||||
|
@ -276,7 +262,7 @@ void at_registration_status(struct ofono_netreg *netreg,
|
|||
ofono_netreg_status_cb_t cb,
|
||||
void *data)
|
||||
{
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct cb_data *cbd = cb_data_new(cb, data);
|
||||
|
||||
cbd->user = nd;
|
||||
|
@ -339,7 +325,7 @@ void at_registration_status(struct ofono_netreg *netreg,
|
|||
static void cops_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct cb_data *cbd = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(cbd->user);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(cbd->user);
|
||||
ofono_netreg_operator_cb_t cb = cbd->cb;
|
||||
struct ofono_network_operator op;
|
||||
GAtResultIter iter;
|
||||
|
@ -400,7 +386,7 @@ error:
|
|||
static void cops_numeric_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct cb_data *cbd = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(cbd->user);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(cbd->user);
|
||||
ofono_netreg_operator_cb_t cb = cbd->cb;
|
||||
GAtResultIter iter;
|
||||
const char *str;
|
||||
|
@ -455,7 +441,7 @@ error:
|
|||
void at_current_operator(struct ofono_netreg *netreg,
|
||||
ofono_netreg_operator_cb_t cb, void *data)
|
||||
{
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct cb_data *cbd = cb_data_new(cb, data);
|
||||
gboolean ok;
|
||||
|
||||
|
@ -594,7 +580,7 @@ static void cops_list_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
|||
void at_list_operators(struct ofono_netreg *netreg,
|
||||
ofono_netreg_operator_list_cb_t cb, void *data)
|
||||
{
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct cb_data *cbd = cb_data_new(cb, data);
|
||||
|
||||
if (g_at_chat_send(nd->chat, "AT+COPS=?", cops_prefix,
|
||||
|
@ -620,7 +606,7 @@ static void register_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
|||
void at_register_auto(struct ofono_netreg *netreg,
|
||||
ofono_netreg_register_cb_t cb, void *data)
|
||||
{
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct cb_data *cbd = cb_data_new(cb, data);
|
||||
|
||||
if (g_at_chat_send(nd->chat, "AT+COPS=0", none_prefix,
|
||||
|
@ -636,7 +622,7 @@ void at_register_manual(struct ofono_netreg *netreg,
|
|||
const char *mcc, const char *mnc,
|
||||
ofono_netreg_register_cb_t cb, void *data)
|
||||
{
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct cb_data *cbd = cb_data_new(cb, data);
|
||||
char buf[128];
|
||||
|
||||
|
@ -725,7 +711,7 @@ static void ifx_xhomezr_notify(GAtResult *result, gpointer user_data)
|
|||
static void ifx_xreg_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
int state;
|
||||
const char *band;
|
||||
GAtResultIter iter;
|
||||
|
@ -824,7 +810,7 @@ static void ifx_xcsq_notify(GAtResult *result, gpointer user_data)
|
|||
static void ciev_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
int strength, ind;
|
||||
GAtResultIter iter;
|
||||
|
||||
|
@ -853,7 +839,7 @@ static void ciev_notify(GAtResult *result, gpointer user_data)
|
|||
static void telit_ciev_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
const char *signal_identifier = "rssi";
|
||||
const char *ind_str;
|
||||
int strength;
|
||||
|
@ -884,7 +870,7 @@ static void telit_ciev_notify(GAtResult *result, gpointer user_data)
|
|||
static void gemalto_ciev_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
const char *signal_identifier = "rssi";
|
||||
const char *ind_str;
|
||||
int strength;
|
||||
|
@ -917,7 +903,7 @@ static void gemalto_ciev_notify(GAtResult *result, gpointer user_data)
|
|||
static void ctzv_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
const char *tz;
|
||||
GAtResultIter iter;
|
||||
|
||||
|
@ -939,7 +925,7 @@ static void ctzv_notify(GAtResult *result, gpointer user_data)
|
|||
static void tlts_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
int year, mon, mday, hour, min, sec;
|
||||
char tz[4];
|
||||
const char *time;
|
||||
|
@ -974,7 +960,7 @@ static void tlts_notify(GAtResult *result, gpointer user_data)
|
|||
static gboolean notify_time(gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
|
||||
nd->nitz_timeout = 0;
|
||||
|
||||
|
@ -986,7 +972,7 @@ static gboolean notify_time(gpointer user_data)
|
|||
static void ifx_ctzv_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
int year, mon, mday, hour, min, sec;
|
||||
const char *tz, *time;
|
||||
GAtResultIter iter;
|
||||
|
@ -1024,7 +1010,7 @@ static void ifx_ctzv_notify(GAtResult *result, gpointer user_data)
|
|||
static void ifx_ctzdst_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
int dst;
|
||||
GAtResultIter iter;
|
||||
|
||||
|
@ -1052,7 +1038,7 @@ static void cind_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
|||
{
|
||||
struct cb_data *cbd = user_data;
|
||||
ofono_netreg_strength_cb_t cb = cbd->cb;
|
||||
struct netreg_data *nd = cbd->user;
|
||||
struct at_netreg_data *nd = cbd->user;
|
||||
int index;
|
||||
int strength;
|
||||
GAtResultIter iter;
|
||||
|
@ -1106,7 +1092,7 @@ static void huawei_rssi_notify(GAtResult *result, gpointer user_data)
|
|||
static void huawei_mode_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
GAtResultIter iter;
|
||||
int mode, submode;
|
||||
|
||||
|
@ -1134,7 +1120,7 @@ static void huawei_mode_notify(GAtResult *result, gpointer user_data)
|
|||
static void huawei_hcsq_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
GAtResultIter iter;
|
||||
const char *mode;
|
||||
|
||||
|
@ -1155,7 +1141,7 @@ static void huawei_hcsq_notify(GAtResult *result, gpointer user_data)
|
|||
static void huawei_nwtime_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
int year, mon, mday, hour, min, sec;
|
||||
char tz[4];
|
||||
const char *date, *time, *dst;
|
||||
|
@ -1233,7 +1219,7 @@ static void csq_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
|||
void at_signal_strength(struct ofono_netreg *netreg,
|
||||
ofono_netreg_strength_cb_t cb, void *data)
|
||||
{
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct cb_data *cbd = cb_data_new(cb, data);
|
||||
|
||||
cbd->user = nd;
|
||||
|
@ -1260,7 +1246,7 @@ void at_signal_strength(struct ofono_netreg *netreg,
|
|||
static void mbm_etzv_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
int year, mon, mday, hour, min, sec;
|
||||
const char *tz, *time, *timestamp;
|
||||
GAtResultIter iter;
|
||||
|
@ -1309,7 +1295,7 @@ static void mbm_etzv_notify(GAtResult *result, gpointer user_data)
|
|||
static void mbm_erinfo_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
GAtResultIter iter;
|
||||
int mode, gsm, umts;
|
||||
|
||||
|
@ -1361,7 +1347,7 @@ static void mbm_erinfo_notify(GAtResult *result, gpointer user_data)
|
|||
static void icera_nwstate_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
GAtResultIter iter;
|
||||
const char *mccmnc, *tech, *state;
|
||||
int rssi;
|
||||
|
@ -1429,7 +1415,7 @@ static int cnti_to_tech(const char *cnti)
|
|||
static void gobi_cnti_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
GAtResultIter iter;
|
||||
const char *tech;
|
||||
int option;
|
||||
|
@ -1454,7 +1440,7 @@ static void gobi_cnti_notify(GAtResult *result, gpointer user_data)
|
|||
static void nw_cnti_notify(GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
GAtResultIter iter;
|
||||
const char *tech;
|
||||
int option;
|
||||
|
@ -1480,7 +1466,7 @@ static void cnti_query_tech_cb(gboolean ok, GAtResult *result,
|
|||
gpointer user_data)
|
||||
{
|
||||
struct tech_query *tq = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(tq->netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(tq->netreg);
|
||||
|
||||
ofono_netreg_status_notify(tq->netreg,
|
||||
tq->status, tq->lac, tq->ci, nd->tech);
|
||||
|
@ -1520,7 +1506,7 @@ static void creg_notify(GAtResult *result, gpointer user_data)
|
|||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
int status, lac, ci, tech;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct tech_query *tq;
|
||||
|
||||
if (at_util_parse_reg_unsolicited(result, "+CREG:", &status,
|
||||
|
@ -1589,7 +1575,7 @@ static void at_cmer_not_supported(struct ofono_netreg *netreg)
|
|||
static void at_cmer_set_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
|
||||
if (!ok) {
|
||||
at_cmer_not_supported(netreg);
|
||||
|
@ -1648,7 +1634,7 @@ static inline ofono_bool_t append_cmer_element(char *buf, int *len, int cap,
|
|||
}
|
||||
|
||||
static ofono_bool_t build_cmer_string(char *buf, int *cmer_opts,
|
||||
struct netreg_data *nd)
|
||||
struct at_netreg_data *nd)
|
||||
{
|
||||
const char *ind;
|
||||
int len = sprintf(buf, "AT+CMER=");
|
||||
|
@ -1717,7 +1703,7 @@ static void at_cmer_query_cb(ofono_bool_t ok, GAtResult *result,
|
|||
gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
GAtResultIter iter;
|
||||
int cmer_opts_cnt = 5; /* See 27.007 Section 8.10 */
|
||||
int cmer_opts[cmer_opts_cnt];
|
||||
|
@ -1765,7 +1751,7 @@ error:
|
|||
static void cind_support_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
GAtResultIter iter;
|
||||
const char *str;
|
||||
char *signal_identifier = "signal";
|
||||
|
@ -1872,7 +1858,7 @@ error:
|
|||
static void at_creg_set_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
|
||||
if (!ok) {
|
||||
ofono_error("Unable to initialize Network Registration");
|
||||
|
@ -2075,7 +2061,7 @@ static void at_creg_set_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
|||
static void at_creg_test_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
||||
{
|
||||
struct ofono_netreg *netreg = user_data;
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
gint range[2];
|
||||
GAtResultIter iter;
|
||||
int creg1 = 0;
|
||||
|
@ -2123,9 +2109,9 @@ static int at_netreg_probe(struct ofono_netreg *netreg, unsigned int vendor,
|
|||
void *data)
|
||||
{
|
||||
GAtChat *chat = data;
|
||||
struct netreg_data *nd;
|
||||
struct at_netreg_data *nd;
|
||||
|
||||
nd = g_new0(struct netreg_data, 1);
|
||||
nd = g_new0(struct at_netreg_data, 1);
|
||||
|
||||
nd->chat = g_at_chat_clone(chat);
|
||||
nd->vendor = vendor;
|
||||
|
@ -2148,7 +2134,7 @@ static int at_netreg_probe(struct ofono_netreg *netreg, unsigned int vendor,
|
|||
|
||||
void at_netreg_remove(struct ofono_netreg *netreg)
|
||||
{
|
||||
struct netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
struct at_netreg_data *nd = ofono_netreg_get_data(netreg);
|
||||
|
||||
if (nd->nitz_timeout)
|
||||
g_source_remove(nd->nitz_timeout);
|
||||
|
|
|
@ -1,5 +1,19 @@
|
|||
#pragma once
|
||||
|
||||
struct at_netreg_data {
|
||||
GAtChat *chat;
|
||||
char mcc[OFONO_MAX_MCC_LENGTH + 1];
|
||||
char mnc[OFONO_MAX_MNC_LENGTH + 1];
|
||||
int signal_index; /* If strength is reported via CIND */
|
||||
int signal_min; /* min strength reported via CIND */
|
||||
int signal_max; /* max strength reported via CIND */
|
||||
int signal_invalid; /* invalid strength reported via CIND */
|
||||
int tech;
|
||||
struct ofono_network_time time;
|
||||
guint nitz_timeout;
|
||||
unsigned int vendor;
|
||||
};
|
||||
|
||||
void at_registration_status(struct ofono_netreg *netreg,
|
||||
ofono_netreg_status_cb_t cb,
|
||||
void *data);
|
||||
|
|
Loading…
Reference in New Issue