{"body":"abeato: ","name":"#ifdef HAVE_CONFIG_H #include <config.h> #endif  #define _GNU_SOURCE #include <string.h> #include <stdlib.h> #include <stdio.h>  #include <glib.h>  #include <ofono/log.h> #include <ofono/modem.h> #include <ofono/netreg.h> #include <ofono/spn-table.h>  #include \"common.h\" #include \"gril.h\"  #include \"grilreply.h\" #include \"grilrequest.h\" #include \"grilunsol.h\" #include <ofono/netreg.h> static void ril_network_state_change(struct ril_msg *message, \t\t\t\t\t\t\tgpointer user_data) { \tstruct ofono_netreg *netreg = user_data; \tstruct netreg_data *nd = ofono_netreg_get_data(netreg);  \tg_ril_print_unsol_no_args(nd->ril, message);  \tril_registration_status(netreg, NULL, NULL); }  static void ril_strength_notify(struct ril_msg *message, gpointer user_data) { \tstruct ofono_netreg *netreg = user_data; \tstruct netreg_data *nd = ofono_netreg_get_data(netreg); \tint strength = g_ril_unsol_parse_signal_strength(nd->ril, message, \t\t\t\t\t\t\t\tnd->tech);  \tofono_netreg_strength_notify(netreg, strength); }  static void ril_nitz_notify(struct ril_msg *message, gpointer user_data) { \tstruct ofono_netreg *netreg = user_data; \tstruct netreg_data *nd = ofono_netreg_get_data(netreg); \tint year, mon, mday, hour, min, sec, dst, tzi, n_match; \tchar tzs, tz[4]; \tgchar *nitz;  \tnitz = g_ril_unsol_parse_nitz(nd->ril, message); \tif (nitz == NULL) \t\tgoto error;  \tn_match = sscanf(nitz, \"%u/%u/%u,%u:%u:%u%c%u,%u\", &year, &mon, \t\t\t\t&mday, &hour, &min, &sec, &tzs, &tzi, &dst); \tif (n_match != 9) \t\tgoto error;  \tsprintf(tz, \"%c%d\", tzs, tzi);  \tnd->time.utcoff = atoi(tz) * 15 * 60; \tnd->time.dst = dst; \tnd->time.sec = sec; \tnd->time.min = min; \tnd->time.hour = hour; \tnd->time.mday = mday; \tnd->time.mon = mon; \tnd->time.year = 2000 + year;  \tofono_netreg_time_notify(netreg, &nd->time);  \tg_free(nitz);  \treturn;  error: \tofono_error(\"%s: unable to notify ofono about NITZ (%s)\", \t\t\t\t\t\t__func__, nitz ? nitz : \"null\"); \tg_free(nitz); } \t\t\t\t\t\t\t static gboolean ril_delayed_register(gpointer user_data) { \tstruct ofono_netreg *netreg = user_data; \tstruct netreg_data *nd = ofono_netreg_get_data(netreg); \tofono_netreg_register(netreg);  \t/* Register for network state changes */ \tg_ril_register(nd->ril, RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED, \t\t\tril_network_state_change, netreg);  \t/* Register for network time update reports */ \tg_ril_register(nd->ril, RIL_UNSOL_NITZ_TIME_RECEIVED, \t\t\tril_nitz_notify, netreg);  \t/* Register for signal strength changes */ \tg_ril_register(nd->ril, RIL_UNSOL_SIGNAL_STRENGTH, \t\t\tril_strength_notify, netreg); \t\t\t \tg_ril_register(nd->ril, MTK2_RIL_UNSOL_RESPONSE_REGISTRATION_SUSPENDED, \t\t\tmtk2_reg_suspended, netreg);  \t/* This makes the timeout a single-shot */ \treturn FALSE; }   struct mtk2_ril_data { \tGRil *ril; \tenum ofono_ril_vendor vendor; \tint sim_status_retries; \tofono_bool_t init_state; \tofono_bool_t ofono_online; \tint radio_state; \tstruct ofono_sim *sim; \tint rild_connect_retries; \tGRilMsgIdToStrFunc request_id_to_string; \tGRilMsgIdToStrFunc unsol_request_to_string; \tril_get_driver_type_func get_driver_type; \tstruct cb_data *set_online_cbd; \tint suspend_id; }  static void mtk2_reg_suspended(struct ril_msg *message, gpointer user_data) { \tstruct ofono_modem *modem = user_data; \tstruct mtk2_ril_data *md = ofono_modem_get_data(modem); \tstruct parcel rilp; \tint session_id;  \tsession_id = g_mtk2_unsol_parse_registration_suspended(md->ril, message); \tif (session_id < 0) { \t\tofono_error(\"%s: parse error\", __func__); \t\treturn; \t}  \tg_mtk2_request_resume_registration(md->ril, session_id, &rilp); }  void g_mtk2_request_resume_registration(GRil *gril, int session_id, \t\t\t\t\tstruct parcel *rilp) { \tparcel_init(rilp); \tparcel_w_int32(rilp, 1); \tparcel_w_int32(rilp, session_id);  \tg_ril_append_print_buf(gril, \"(%d)\", session_id); }  int g_mtk2_unsol_parse_registration_suspended(GRil *gril, \t\t\t\t\t\tconst struct ril_msg *message) { \tstruct parcel rilp; \tint numint, session_id;  \tg_ril_init_parcel(message, &rilp);  \tnumint = parcel_r_int32(&rilp); \tif (numint != 1) { \t\tofono_error(\"%s Wrong format\", __func__); \t\tgoto error; \t}  \tsession_id = parcel_r_int32(&rilp);  \tif (rilp.malformed) { \t\tofono_error(\"%s: malformed parcel\", __func__); \t\tgoto error; \t}  \tg_ril_append_print_buf(gril, \"{%d}\", session_id); \tg_ril_print_unsol(gril, message);  \treturn session_id;  error: \treturn -1;  }","extension":"txt","url":"https://www.irccloud.com/pastebin/tkm0FcPG/%23ifdef+HAVE_CONFIG_H+%23include+%3Cconfig.h%3E+%23endif++%23define+_GNU_SOURCE+%23include+%3Cstring.h%3E+%23include+%3Cstdlib.h%3E+%23include+%3Cstdio.h%3E++%23include+%3Cglib.h%3E++%23include+%3Cofono%2Flog.h%3E+%23include+%3Cofono%2Fmodem.h%3E+%23include+%3Cofono%2Fnetreg.h%3E+%23include+%3Cofono%2Fspn-table.h%3E++%23include+%22common.h%22+%23include+%22gril.h%22++%23include+%22grilreply.h%22+%23include+%22grilrequest.h%22+%23include+%22grilunsol.h%22+%23include+%3Cofono%2Fnetreg.h%3E+static+void+ril_network_state_change%28struct+ril_msg+%2Amessage%2C+%09%09%09%09%09%09%09gpointer+user_data%29+%7B+%09struct+ofono_netreg+%2Anetreg+%3D+user_data%3B+%09struct+netreg_data+%2And+%3D+ofono_netreg_get_data%28netreg%29%3B++%09g_ril_print_unsol_no_args%28nd-%3Eril%2C+message%29%3B++%09ril_registration_status%28netreg%2C+NULL%2C+NULL%29%3B+%7D++static+void+ril_strength_notify%28struct+ril_msg+%2Amessage%2C+gpointer+user_data%29+%7B+%09struct+ofono_netreg+%2Anetreg+%3D+user_data%3B+%09struct+netreg_data+%2And+%3D+ofono_netreg_get_data%28netreg%29%3B+%09int+strength+%3D+g_ril_unsol_parse_signal_strength%28nd-%3Eril%2C+message%2C+%09%09%09%09%09%09%09%09nd-%3Etech%29%3B++%09ofono_netreg_strength_notify%28netreg%2C+strength%29%3B+%7D++static+void+ril_nitz_notify%28struct+ril_msg+%2Amessage%2C+gpointer+user_data%29+%7B+%09struct+ofono_netreg+%2Anetreg+%3D+user_data%3B+%09struct+netreg_data+%2And+%3D+ofono_netreg_get_data%28netreg%29%3B+%09int+year%2C+mon%2C+mday%2C+hour%2C+min%2C+sec%2C+dst%2C+tzi%2C+n_match%3B+%09char+tzs%2C+tz%5B4%5D%3B+%09gchar+%2Anitz%3B++%09nitz+%3D+g_ril_unsol_parse_nitz%28nd-%3Eril%2C+message%29%3B+%09if+%28nitz+%3D%3D+NULL%29+%09%09goto+error%3B++%09n_match+%3D+sscanf%28nitz%2C+%22%25u%2F%25u%2F%25u%2C%25u%3A%25u%3A%25u%25c%25u%2C%25u%22%2C+%26year%2C+%26mon%2C+%09%09%09%09%26mday%2C+%26hour%2C+%26min%2C+%26sec%2C+%26tzs%2C+%26tzi%2C+%26dst%29%3B+%09if+%28n_match+%21%3D+9%29+%09%09goto+error%3B++%09sprintf%28tz%2C+%22%25c%25d%22%2C+tzs%2C+tzi%29%3B++%09nd-%3Etime.utcoff+%3D+atoi%28tz%29+%2A+15+%2A+60%3B+%09nd-%3Etime.dst+%3D+dst%3B+%09nd-%3Etime.sec+%3D+sec%3B+%09nd-%3Etime.min+%3D+min%3B+%09nd-%3Etime.hour+%3D+hour%3B+%09nd-%3Etime.mday+%3D+mday%3B+%09nd-%3Etime.mon+%3D+mon%3B+%09nd-%3Etime.year+%3D+2000+%2B+year%3B++%09ofono_netreg_time_notify%28netreg%2C+%26nd-%3Etime%29%3B++%09g_free%28nitz%29%3B++%09return%3B++error%3A+%09ofono_error%28%22%25s%3A+unable+to+notify+ofono+about+NITZ+%28%25s%29%22%2C+%09%09%09%09%09%09__func__%2C+nitz+%3F+nitz+%3A+%22null%22%29%3B+%09g_free%28nitz%29%3B+%7D+%09%09%09%09%09%09%09+static+gboolean+ril_delayed_register%28gpointer+user_data%29+%7B+%09struct+ofono_netreg+%2Anetreg+%3D+user_data%3B+%09struct+netreg_data+%2And+%3D+ofono_netreg_get_data%28netreg%29%3B+%09ofono_netreg_register%28netreg%29%3B++%09%2F%2A+Register+for+network+state+changes+%2A%2F+%09g_ril_register%28nd-%3Eril%2C+RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED%2C+%09%09%09ril_network_state_change%2C+netreg%29%3B++%09%2F%2A+Register+for+network+time+update+reports+%2A%2F+%09g_ril_register%28nd-%3Eril%2C+RIL_UNSOL_NITZ_TIME_RECEIVED%2C+%09%09%09ril_nitz_notify%2C+netreg%29%3B++%09%2F%2A+Register+for+signal+strength+changes+%2A%2F+%09g_ril_register%28nd-%3Eril%2C+RIL_UNSOL_SIGNAL_STRENGTH%2C+%09%09%09ril_strength_notify%2C+netreg%29%3B+%09%09%09+%09g_ril_register%28nd-%3Eril%2C+MTK2_RIL_UNSOL_RESPONSE_REGISTRATION_SUSPENDED%2C+%09%09%09mtk2_reg_suspended%2C+netreg%29%3B++%09%2F%2A+This+makes+the+timeout+a+single-shot+%2A%2F+%09return+FALSE%3B+%7D+++struct+mtk2_ril_data+%7B+%09GRil+%2Aril%3B+%09enum+ofono_ril_vendor+vendor%3B+%09int+sim_status_retries%3B+%09ofono_bool_t+init_state%3B+%09ofono_bool_t+ofono_online%3B+%09int+radio_state%3B+%09struct+ofono_sim+%2Asim%3B+%09int+rild_connect_retries%3B+%09GRilMsgIdToStrFunc+request_id_to_string%3B+%09GRilMsgIdToStrFunc+unsol_request_to_string%3B+%09ril_get_driver_type_func+get_driver_type%3B+%09struct+cb_data+%2Aset_online_cbd%3B+%09int+suspend_id%3B+%7D++static+void+mtk2_reg_suspended%28struct+ril_msg+%2Amessage%2C+gpointer+user_data%29+%7B+%09struct+ofono_modem+%2Amodem+%3D+user_data%3B+%09struct+mtk2_ril_data+%2Amd+%3D+ofono_modem_get_data%28modem%29%3B+%09struct+parcel+rilp%3B+%09int+session_id%3B++%09session_id+%3D+g_mtk2_unsol_parse_registration_suspended%28md-%3Eril%2C+message%29%3B+%09if+%28session_id+%3C+0%29+%7B+%09%09ofono_error%28%22%25s%3A+parse+error%22%2C+__func__%29%3B+%09%09return%3B+%09%7D++%09g_mtk2_request_resume_registration%28md-%3Eril%2C+session_id%2C+%26rilp%29%3B+%7D++void+g_mtk2_request_resume_registration%28GRil+%2Agril%2C+int+session_id%2C+%09%09%09%09%09struct+parcel+%2Arilp%29+%7B+%09parcel_init%28rilp%29%3B+%09parcel_w_int32%28rilp%2C+1%29%3B+%09parcel_w_int32%28rilp%2C+session_id%29%3B++%09g_ril_append_print_buf%28gril%2C+%22%28%25d%29%22%2C+session_id%29%3B+%7D++int+g_mtk2_unsol_parse_registration_suspended%28GRil+%2Agril%2C+%09%09%09%09%09%09const+struct+ril_msg+%2Amessage%29+%7B+%09struct+parcel+rilp%3B+%09int+numint%2C+session_id%3B++%09g_ril_init_parcel%28message%2C+%26rilp%29%3B++%09numint+%3D+parcel_r_int32%28%26rilp%29%3B+%09if+%28numint+%21%3D+1%29+%7B+%09%09ofono_error%28%22%25s+Wrong+format%22%2C+__func__%29%3B+%09%09goto+error%3B+%09%7D++%09session_id+%3D+parcel_r_int32%28%26rilp%29%3B++%09if+%28rilp.malformed%29+%7B+%09%09ofono_error%28%22%25s%3A+malformed+parcel%22%2C+__func__%29%3B+%09%09goto+error%3B+%09%7D++%09g_ril_append_print_buf%28gril%2C+%22%7B%25d%7D%22%2C+session_id%29%3B+%09g_ril_print_unsol%28gril%2C+message%29%3B++%09return+session_id%3B++error%3A+%09return+-1%3B++%7D","modified":1490610359,"id":"tkm0FcPG","size":8,"lines":1,"own_paste":false,"theme":"","date":1490610359}