forked from sailfishos/ofono
Compare commits
7 Commits
mer/1.23+g
...
mer/1.23+g
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a54bb8cbe | ||
|
|
56e0923dc3 | ||
|
|
22197b5e04 | ||
|
|
3a358ddc9d | ||
|
|
53929f9f1a | ||
|
|
08bae57a2b | ||
|
|
1915aeda76 |
@@ -218,22 +218,21 @@ static void ril_modem_schedule_online_check(struct ril_modem_data *md)
|
||||
static void ril_modem_update_radio_settings(struct ril_modem_data *md)
|
||||
{
|
||||
struct ril_modem *m = &md->modem;
|
||||
if (m->radio->state == RADIO_STATE_ON && md->watch->imsi) {
|
||||
struct ofono_radio_settings *rs = ril_modem_radio_settings(m);
|
||||
|
||||
if (md->watch->imsi) {
|
||||
/* radio-settings.c assumes that IMSI is available */
|
||||
if (!ril_modem_radio_settings(m)) {
|
||||
if (!rs) {
|
||||
DBG_(md, "initializing radio settings interface");
|
||||
ofono_radio_settings_create(m->ofono, 0,
|
||||
RILMODEM_DRIVER, md);
|
||||
}
|
||||
} else if (rs) {
|
||||
DBG_(md, "removing radio settings interface");
|
||||
ofono_radio_settings_remove(rs);
|
||||
} else {
|
||||
/* ofono core may remove radio settings atom internally */
|
||||
struct ofono_radio_settings *rs = ril_modem_radio_settings(m);
|
||||
if (rs) {
|
||||
DBG_(md, "removing radio settings interface");
|
||||
ofono_radio_settings_remove(rs);
|
||||
} else {
|
||||
DBG_(md, "radio settings interface is already gone");
|
||||
}
|
||||
DBG_(md, "radio settings interface is already gone");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,7 +241,6 @@ static void ril_modem_radio_state_cb(struct ril_radio *radio, void *data)
|
||||
struct ril_modem_data *md = data;
|
||||
|
||||
GASSERT(md->modem.radio == radio);
|
||||
ril_modem_update_radio_settings(md);
|
||||
ril_modem_update_online_state(md);
|
||||
}
|
||||
|
||||
|
||||
@@ -384,6 +384,7 @@ static void ril_plugin_shutdown_slot(ril_slot *slot, gboolean kill_io)
|
||||
}
|
||||
|
||||
if (slot->cell_info) {
|
||||
sailfish_manager_set_cell_info(slot->handle, NULL);
|
||||
sailfish_cell_info_unref(slot->cell_info);
|
||||
slot->cell_info = NULL;
|
||||
}
|
||||
@@ -1041,13 +1042,13 @@ static void ril_plugin_slot_connected(ril_slot *slot)
|
||||
slot->path, slot->config.techs, slot->imei,
|
||||
slot->imeisv, ril_plugin_sim_state(slot),
|
||||
slot->slot_flags);
|
||||
sailfish_manager_set_cell_info(slot->handle, slot->cell_info);
|
||||
grilio_channel_set_enabled(slot->io, slot->handle->enabled);
|
||||
|
||||
/* Check if this was the last slot we were waiting for */
|
||||
ril_plugin_check_if_started(plugin);
|
||||
}
|
||||
|
||||
sailfish_manager_set_cell_info(slot->handle, slot->cell_info);
|
||||
ril_plugin_check_modem(slot);
|
||||
ril_plugin_check_ready(slot);
|
||||
}
|
||||
@@ -1063,8 +1064,11 @@ static void ril_plugin_slot_connected_cb(GRilIoChannel *io, void *user_data)
|
||||
static void ril_plugin_init_io(ril_slot *slot)
|
||||
{
|
||||
if (!slot->io) {
|
||||
slot->io = grilio_channel_new(ofono_ril_transport_connect
|
||||
(slot->transport_name, slot->transport_params));
|
||||
struct grilio_transport *transport =
|
||||
ofono_ril_transport_connect(slot->transport_name,
|
||||
slot->transport_params);
|
||||
|
||||
slot->io = grilio_channel_new(transport);
|
||||
if (slot->io) {
|
||||
ril_debug_trace_update(slot);
|
||||
ril_debug_dump_update(slot);
|
||||
@@ -1096,6 +1100,7 @@ static void ril_plugin_init_io(ril_slot *slot)
|
||||
slot);
|
||||
}
|
||||
}
|
||||
grilio_transport_unref(transport);
|
||||
}
|
||||
|
||||
if (!slot->io) {
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
*
|
||||
* Copyright (C) 2008-2011 Intel Corporation. All rights reserved.
|
||||
* Copyright (C) 2013 Jolla Ltd. All rights reserved.
|
||||
* Copyright (C) 2020 Open Mobile Platform LLС. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
@@ -26,6 +27,7 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <glib.h>
|
||||
#include <gdbus.h>
|
||||
|
||||
@@ -40,58 +42,42 @@
|
||||
|
||||
#define SMS_HISTORY_INTERFACE "org.ofono.SmsHistory"
|
||||
|
||||
gboolean sms_history_interface_registered = FALSE;
|
||||
|
||||
static const GDBusSignalTable sms_history_signals[] = {
|
||||
{ GDBUS_SIGNAL("StatusReport",
|
||||
GDBUS_ARGS({ "message", "s" }, { "Delivered", "a{b}" })) },
|
||||
{ }
|
||||
};
|
||||
|
||||
static void sms_history_cleanup(gpointer user)
|
||||
static int sms_history_probe(struct ofono_history_context *context)
|
||||
{
|
||||
struct ofono_modem *modem = user;
|
||||
DBG("modem %p", modem);
|
||||
ofono_modem_remove_interface(modem, SMS_HISTORY_INTERFACE);
|
||||
sms_history_interface_registered = FALSE;
|
||||
}
|
||||
|
||||
static gboolean sms_history_ensure_interface(
|
||||
struct ofono_modem *modem) {
|
||||
|
||||
if (sms_history_interface_registered)
|
||||
return TRUE;
|
||||
|
||||
/* Late initialization of the D-Bus interface */
|
||||
DBusConnection *conn = ofono_dbus_get_connection();
|
||||
if (conn == NULL)
|
||||
return FALSE;
|
||||
struct ofono_modem *modem = context->modem;
|
||||
|
||||
ofono_debug("SMS History Probe for modem: %p", modem);
|
||||
|
||||
if (!g_dbus_register_interface(conn,
|
||||
ofono_modem_get_path(modem),
|
||||
SMS_HISTORY_INTERFACE,
|
||||
NULL, sms_history_signals, NULL,
|
||||
modem, sms_history_cleanup)) {
|
||||
NULL, sms_history_signals,
|
||||
NULL, NULL, NULL)) {
|
||||
ofono_error("Could not create %s interface",
|
||||
SMS_HISTORY_INTERFACE);
|
||||
return FALSE;
|
||||
return -EIO;
|
||||
}
|
||||
sms_history_interface_registered = TRUE;
|
||||
|
||||
ofono_modem_add_interface(modem, SMS_HISTORY_INTERFACE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static int sms_history_probe(struct ofono_history_context *context)
|
||||
{
|
||||
ofono_debug("SMS History Probe for modem: %p", context->modem);
|
||||
sms_history_ensure_interface(context->modem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sms_history_remove(struct ofono_history_context *context)
|
||||
{
|
||||
ofono_debug("SMS History Remove for modem: %p", context->modem);
|
||||
DBusConnection *conn = ofono_dbus_get_connection();
|
||||
struct ofono_modem *modem = context->modem;
|
||||
|
||||
ofono_debug("SMS History remove for modem: %p", modem);
|
||||
ofono_modem_remove_interface(modem, SMS_HISTORY_INTERFACE);
|
||||
g_dbus_unregister_interface(conn, ofono_modem_get_path(modem),
|
||||
SMS_HISTORY_INTERFACE);
|
||||
}
|
||||
|
||||
static void sms_history_sms_send_status(
|
||||
@@ -102,9 +88,6 @@ static void sms_history_sms_send_status(
|
||||
{
|
||||
DBG("");
|
||||
|
||||
if (!sms_history_ensure_interface(context->modem))
|
||||
return;
|
||||
|
||||
if ((s == OFONO_HISTORY_SMS_STATUS_DELIVERED)
|
||||
|| (s == OFONO_HISTORY_SMS_STATUS_DELIVER_FAILED)) {
|
||||
|
||||
@@ -174,4 +157,3 @@ static void sms_history_exit(void)
|
||||
OFONO_PLUGIN_DEFINE(sms_history, "SMS History Plugin",
|
||||
VERSION, OFONO_PLUGIN_PRIORITY_DEFAULT,
|
||||
sms_history_init, sms_history_exit)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user