mirror of
https://github.com/sailfishos/ofono
synced 2025-11-23 19:09:44 +08:00
Compare commits
15 Commits
mer/1.23+g
...
mer/1.23+g
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6976366051 | ||
|
|
d3d776837b | ||
|
|
f56c8a33b0 | ||
|
|
ed2f625b8b | ||
|
|
ed62d38632 | ||
|
|
3f433c97c5 | ||
|
|
86d8149c79 | ||
|
|
f3eb9b868b | ||
|
|
4e067fa827 | ||
|
|
2ee5e4c827 | ||
|
|
1366e426be | ||
|
|
586c9b9262 | ||
|
|
83554e071a | ||
|
|
dc41c2d003 | ||
|
|
550d41ae37 |
@@ -24,6 +24,7 @@ struct ril_cbs {
|
|||||||
GRilIoChannel *io;
|
GRilIoChannel *io;
|
||||||
GRilIoQueue *q;
|
GRilIoQueue *q;
|
||||||
char *log_prefix;
|
char *log_prefix;
|
||||||
|
guint register_id;
|
||||||
gulong event_id;
|
gulong event_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -51,6 +52,12 @@ static struct ril_cbs_cbd *ril_cbs_cbd_new(struct ril_cbs *cd,
|
|||||||
return cbd;
|
return cbd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean ril_cbs_retry(GRilIoRequest *request, int ril_status,
|
||||||
|
const void *resp_data, guint resp_len, void *user_data)
|
||||||
|
{
|
||||||
|
return ril_status == RIL_E_INVALID_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
static void ril_cbs_request_activation(struct ril_cbs *cd,
|
static void ril_cbs_request_activation(struct ril_cbs *cd,
|
||||||
gboolean activate, GRilIoChannelResponseFunc response,
|
gboolean activate, GRilIoChannelResponseFunc response,
|
||||||
GDestroyNotify destroy, void* user_data)
|
GDestroyNotify destroy, void* user_data)
|
||||||
@@ -61,6 +68,9 @@ static void ril_cbs_request_activation(struct ril_cbs *cd,
|
|||||||
grilio_request_append_int32(req, activate ? 0 :1);
|
grilio_request_append_int32(req, activate ? 0 :1);
|
||||||
|
|
||||||
DBG_(cd, "%sactivating CB", activate ? "" : "de");
|
DBG_(cd, "%sactivating CB", activate ? "" : "de");
|
||||||
|
grilio_request_set_retry_func(req, ril_cbs_retry);
|
||||||
|
grilio_request_set_retry(req, RIL_CBS_CHECK_RETRY_MS,
|
||||||
|
RIL_CBS_CHECK_RETRY_COUNT);
|
||||||
grilio_queue_send_request_full(cd->q, req,
|
grilio_queue_send_request_full(cd->q, req,
|
||||||
RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION,
|
RIL_REQUEST_GSM_SMS_BROADCAST_ACTIVATION,
|
||||||
response, destroy, user_data);
|
response, destroy, user_data);
|
||||||
@@ -97,6 +107,9 @@ static void ril_cbs_set_config(struct ril_cbs *cd, const char *topics,
|
|||||||
}
|
}
|
||||||
|
|
||||||
DBG_(cd, "configuring CB");
|
DBG_(cd, "configuring CB");
|
||||||
|
grilio_request_set_retry_func(req, ril_cbs_retry);
|
||||||
|
grilio_request_set_retry(req, RIL_CBS_CHECK_RETRY_MS,
|
||||||
|
RIL_CBS_CHECK_RETRY_COUNT);
|
||||||
grilio_queue_send_request_full(cd->q, req,
|
grilio_queue_send_request_full(cd->q, req,
|
||||||
RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG,
|
RIL_REQUEST_GSM_SET_BROADCAST_SMS_CONFIG,
|
||||||
response, destroy, user_data);
|
response, destroy, user_data);
|
||||||
@@ -152,28 +165,33 @@ static void ril_cbs_notify(GRilIoChannel *io, guint code,
|
|||||||
if (grilio_parser_get_uint32(&rilp, &pdu_len)) {
|
if (grilio_parser_get_uint32(&rilp, &pdu_len)) {
|
||||||
const void* pdu = grilio_parser_get_bytes(&rilp, pdu_len);
|
const void* pdu = grilio_parser_get_bytes(&rilp, pdu_len);
|
||||||
|
|
||||||
if (pdu) {
|
/*
|
||||||
|
* By default assume that it's a length followed by the
|
||||||
|
* binary PDU data.
|
||||||
|
*/
|
||||||
|
if (pdu && grilio_parser_bytes_remaining(&rilp) < 4) {
|
||||||
DBG_(cd, "%u bytes", pdu_len);
|
DBG_(cd, "%u bytes", pdu_len);
|
||||||
ofono_cbs_notify(cd->cbs, pdu, pdu_len);
|
ofono_cbs_notify(cd->cbs, pdu, pdu_len);
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
* But I've seen cell broadcasts arriving without
|
||||||
|
* the length, simply as a blob.
|
||||||
|
*/
|
||||||
|
ofono_cbs_notify(cd->cbs, data, len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ril_cbs_probe_done_cb(GRilIoChannel *io, int status,
|
static gboolean ril_cbs_register(void *user_data)
|
||||||
const void *data, guint len, void *user_data)
|
|
||||||
{
|
{
|
||||||
struct ril_cbs *cd = user_data;
|
struct ril_cbs *cd = user_data;
|
||||||
|
|
||||||
if (status == RIL_E_SUCCESS) {
|
DBG_(cd, "registering for CB");
|
||||||
DBG_(cd, "registering for CB");
|
cd->register_id = 0;
|
||||||
cd->event_id = grilio_channel_add_unsol_event_handler(cd->io,
|
cd->event_id = grilio_channel_add_unsol_event_handler(cd->io,
|
||||||
ril_cbs_notify, RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS,
|
ril_cbs_notify, RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS, cd);
|
||||||
cd);
|
ofono_cbs_register(cd->cbs);
|
||||||
ofono_cbs_register(cd->cbs);
|
return G_SOURCE_REMOVE;
|
||||||
} else {
|
|
||||||
DBG_(cd, "failed to query CB config");
|
|
||||||
ofono_cbs_remove(cd->cbs);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ril_cbs_probe(struct ofono_cbs *cbs, unsigned int vendor,
|
static int ril_cbs_probe(struct ofono_cbs *cbs, unsigned int vendor,
|
||||||
@@ -181,7 +199,6 @@ static int ril_cbs_probe(struct ofono_cbs *cbs, unsigned int vendor,
|
|||||||
{
|
{
|
||||||
struct ril_modem *modem = data;
|
struct ril_modem *modem = data;
|
||||||
struct ril_cbs *cd = g_try_new0(struct ril_cbs, 1);
|
struct ril_cbs *cd = g_try_new0(struct ril_cbs, 1);
|
||||||
GRilIoRequest* req = grilio_request_new();
|
|
||||||
|
|
||||||
ofono_cbs_set_data(cbs, cd);
|
ofono_cbs_set_data(cbs, cd);
|
||||||
cd->log_prefix = (modem->log_prefix && modem->log_prefix[0]) ?
|
cd->log_prefix = (modem->log_prefix && modem->log_prefix[0]) ?
|
||||||
@@ -191,20 +208,7 @@ static int ril_cbs_probe(struct ofono_cbs *cbs, unsigned int vendor,
|
|||||||
DBG_(cd, "");
|
DBG_(cd, "");
|
||||||
cd->io = grilio_channel_ref(ril_modem_io(modem));
|
cd->io = grilio_channel_ref(ril_modem_io(modem));
|
||||||
cd->q = grilio_queue_new(cd->io);
|
cd->q = grilio_queue_new(cd->io);
|
||||||
|
cd->register_id = g_idle_add(ril_cbs_register, cd);
|
||||||
/*
|
|
||||||
* RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG often fails at startup
|
|
||||||
* especially if other RIL requests are running in parallel. We may
|
|
||||||
* have to retry a few times. Also, make it blocking in order to
|
|
||||||
* improve the chance of success.
|
|
||||||
*/
|
|
||||||
grilio_request_set_retry(req, RIL_CBS_CHECK_RETRY_MS,
|
|
||||||
RIL_CBS_CHECK_RETRY_COUNT);
|
|
||||||
grilio_request_set_blocking(req, TRUE);
|
|
||||||
grilio_queue_send_request_full(cd->q, req,
|
|
||||||
RIL_REQUEST_GSM_GET_BROADCAST_SMS_CONFIG,
|
|
||||||
ril_cbs_probe_done_cb, NULL, cd);
|
|
||||||
grilio_request_unref(req);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,6 +217,9 @@ static void ril_cbs_remove(struct ofono_cbs *cbs)
|
|||||||
struct ril_cbs *cd = ofono_cbs_get_data(cbs);
|
struct ril_cbs *cd = ofono_cbs_get_data(cbs);
|
||||||
|
|
||||||
DBG_(cd, "");
|
DBG_(cd, "");
|
||||||
|
if (cd->register_id) {
|
||||||
|
g_source_remove(cd->register_id);
|
||||||
|
}
|
||||||
ofono_cbs_set_data(cbs, NULL);
|
ofono_cbs_set_data(cbs, NULL);
|
||||||
grilio_channel_remove_handler(cd->io, cd->event_id);
|
grilio_channel_remove_handler(cd->io, cd->event_id);
|
||||||
grilio_channel_unref(cd->io);
|
grilio_channel_unref(cd->io);
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ static void ril_cell_info_query(struct ril_cell_info *self)
|
|||||||
static void ril_cell_info_set_rate(struct ril_cell_info *self)
|
static void ril_cell_info_set_rate(struct ril_cell_info *self)
|
||||||
{
|
{
|
||||||
GRilIoRequest *req = grilio_request_array_int32_new(1,
|
GRilIoRequest *req = grilio_request_array_int32_new(1,
|
||||||
(self->update_rate_ms > 0) ? self->update_rate_ms : INT_MAX);
|
(self->update_rate_ms >= 0) ? self->update_rate_ms : INT_MAX);
|
||||||
|
|
||||||
grilio_request_set_retry(req, RIL_RETRY_MS, MAX_RETRIES);
|
grilio_request_set_retry(req, RIL_RETRY_MS, MAX_RETRIES);
|
||||||
grilio_request_set_retry_func(req, ril_cell_info_retry);
|
grilio_request_set_retry_func(req, ril_cell_info_retry);
|
||||||
|
|||||||
@@ -34,33 +34,29 @@ struct ril_devmon {
|
|||||||
GRilIoChannel *channel, struct sailfish_cell_info *cell_info);
|
GRilIoChannel *channel, struct sailfish_cell_info *cell_info);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Cell info update intervals */
|
|
||||||
#define RIL_CELL_INFO_INTERVAL_SHORT_MS (2000) /* 2 sec */
|
|
||||||
#define RIL_CELL_INFO_INTERVAL_LONG_MS (30000) /* 30 sec */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Legacy Device Monitor uses RIL_REQUEST_SCREEN_STATE to tell
|
* Legacy Device Monitor uses RIL_REQUEST_SCREEN_STATE to tell
|
||||||
* the modem when screen turns on and off.
|
* the modem when screen turns on and off.
|
||||||
*/
|
*/
|
||||||
struct ril_devmon *ril_devmon_ss_new(void);
|
struct ril_devmon *ril_devmon_ss_new(const struct ril_slot_config *config);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This Device Monitor uses RIL_REQUEST_SEND_DEVICE_STATE to let
|
* This Device Monitor uses RIL_REQUEST_SEND_DEVICE_STATE to let
|
||||||
* the modem choose the right power saving strategy. It basically
|
* the modem choose the right power saving strategy. It basically
|
||||||
* mirrors the logic of Android's DeviceStateMonitor class.
|
* mirrors the logic of Android's DeviceStateMonitor class.
|
||||||
*/
|
*/
|
||||||
struct ril_devmon *ril_devmon_ds_new(void);
|
struct ril_devmon *ril_devmon_ds_new(const struct ril_slot_config *config);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This Device Monitor implementation controls network state updates
|
* This Device Monitor implementation controls network state updates
|
||||||
* by sending SET_UNSOLICITED_RESPONSE_FILTER.
|
* by sending SET_UNSOLICITED_RESPONSE_FILTER.
|
||||||
*/
|
*/
|
||||||
struct ril_devmon *ril_devmon_ur_new(void);
|
struct ril_devmon *ril_devmon_ur_new(const struct ril_slot_config *config);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This one selects the type based on the RIL version.
|
* This one selects the type based on the RIL version.
|
||||||
*/
|
*/
|
||||||
struct ril_devmon *ril_devmon_auto_new(void);
|
struct ril_devmon *ril_devmon_auto_new(const struct ril_slot_config *config);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This one combines several methods. Takes ownership of ril_devmon objects.
|
* This one combines several methods. Takes ownership of ril_devmon objects.
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ static void ril_devmon_auto_free(struct ril_devmon *devmon)
|
|||||||
g_free(self);
|
g_free(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ril_devmon *ril_devmon_auto_new()
|
struct ril_devmon *ril_devmon_auto_new(const struct ril_slot_config *config)
|
||||||
{
|
{
|
||||||
DevMon *self = g_new0(DevMon, 1);
|
DevMon *self = g_new0(DevMon, 1);
|
||||||
|
|
||||||
@@ -78,8 +78,8 @@ struct ril_devmon *ril_devmon_auto_new()
|
|||||||
*/
|
*/
|
||||||
self->pub.free = ril_devmon_auto_free;
|
self->pub.free = ril_devmon_auto_free;
|
||||||
self->pub.start_io = ril_devmon_auto_start_io;
|
self->pub.start_io = ril_devmon_auto_start_io;
|
||||||
self->ss = ril_devmon_ss_new();
|
self->ss = ril_devmon_ss_new(config);
|
||||||
self->ds = ril_devmon_ds_new();
|
self->ds = ril_devmon_ds_new(config);
|
||||||
return &self->pub;
|
return &self->pub;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ typedef struct ril_devmon_ds {
|
|||||||
MceBattery *battery;
|
MceBattery *battery;
|
||||||
MceCharger *charger;
|
MceCharger *charger;
|
||||||
MceDisplay *display;
|
MceDisplay *display;
|
||||||
|
int cell_info_interval_short_ms;
|
||||||
|
int cell_info_interval_long_ms;
|
||||||
} DevMon;
|
} DevMon;
|
||||||
|
|
||||||
typedef struct ril_devmon_ds_io {
|
typedef struct ril_devmon_ds_io {
|
||||||
@@ -86,6 +88,8 @@ typedef struct ril_devmon_ds_io {
|
|||||||
gulong charger_event_id[CHARGER_EVENT_COUNT];
|
gulong charger_event_id[CHARGER_EVENT_COUNT];
|
||||||
gulong display_event_id[DISPLAY_EVENT_COUNT];
|
gulong display_event_id[DISPLAY_EVENT_COUNT];
|
||||||
guint req_id;
|
guint req_id;
|
||||||
|
int cell_info_interval_short_ms;
|
||||||
|
int cell_info_interval_long_ms;
|
||||||
} DevMonIo;
|
} DevMonIo;
|
||||||
|
|
||||||
#define DBG_(self,fmt,args...) DBG("%s: " fmt, (self)->io->name, ##args)
|
#define DBG_(self,fmt,args...) DBG("%s: " fmt, (self)->io->name, ##args)
|
||||||
@@ -201,8 +205,8 @@ static void ril_devmon_ds_io_set_cell_info_update_interval(DevMonIo *self)
|
|||||||
(ril_devmon_ds_display_on(self->display) &&
|
(ril_devmon_ds_display_on(self->display) &&
|
||||||
(ril_devmon_ds_charging(self->charger) ||
|
(ril_devmon_ds_charging(self->charger) ||
|
||||||
ril_devmon_ds_battery_ok(self->battery))) ?
|
ril_devmon_ds_battery_ok(self->battery))) ?
|
||||||
RIL_CELL_INFO_INTERVAL_SHORT_MS :
|
self->cell_info_interval_short_ms :
|
||||||
RIL_CELL_INFO_INTERVAL_LONG_MS);
|
self->cell_info_interval_long_ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ril_devmon_ds_io_connman_cb(struct ril_connman *connman,
|
static void ril_devmon_ds_io_connman_cb(struct ril_connman *connman,
|
||||||
@@ -303,6 +307,11 @@ static struct ril_devmon_io *ril_devmon_ds_start_io(struct ril_devmon *devmon,
|
|||||||
mce_display_add_state_changed_handler(self->display,
|
mce_display_add_state_changed_handler(self->display,
|
||||||
ril_devmon_ds_io_display_cb, self);
|
ril_devmon_ds_io_display_cb, self);
|
||||||
|
|
||||||
|
self->cell_info_interval_short_ms =
|
||||||
|
ds->cell_info_interval_short_ms;
|
||||||
|
self->cell_info_interval_long_ms =
|
||||||
|
ds->cell_info_interval_long_ms;
|
||||||
|
|
||||||
ril_devmon_ds_io_update_low_data(self);
|
ril_devmon_ds_io_update_low_data(self);
|
||||||
ril_devmon_ds_io_update_charging(self);
|
ril_devmon_ds_io_update_charging(self);
|
||||||
ril_devmon_ds_io_set_cell_info_update_interval(self);
|
ril_devmon_ds_io_set_cell_info_update_interval(self);
|
||||||
@@ -320,7 +329,7 @@ static void ril_devmon_ds_free(struct ril_devmon *devmon)
|
|||||||
g_free(self);
|
g_free(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ril_devmon *ril_devmon_ds_new()
|
struct ril_devmon *ril_devmon_ds_new(const struct ril_slot_config *config)
|
||||||
{
|
{
|
||||||
DevMon *self = g_new0(DevMon, 1);
|
DevMon *self = g_new0(DevMon, 1);
|
||||||
|
|
||||||
@@ -330,6 +339,10 @@ struct ril_devmon *ril_devmon_ds_new()
|
|||||||
self->battery = mce_battery_new();
|
self->battery = mce_battery_new();
|
||||||
self->charger = mce_charger_new();
|
self->charger = mce_charger_new();
|
||||||
self->display = mce_display_new();
|
self->display = mce_display_new();
|
||||||
|
self->cell_info_interval_short_ms =
|
||||||
|
config->cell_info_interval_short_ms;
|
||||||
|
self->cell_info_interval_long_ms =
|
||||||
|
config->cell_info_interval_long_ms;
|
||||||
return &self->pub;
|
return &self->pub;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ typedef struct ril_devmon_ss {
|
|||||||
MceBattery *battery;
|
MceBattery *battery;
|
||||||
MceCharger *charger;
|
MceCharger *charger;
|
||||||
MceDisplay *display;
|
MceDisplay *display;
|
||||||
|
int cell_info_interval_short_ms;
|
||||||
|
int cell_info_interval_long_ms;
|
||||||
} DevMon;
|
} DevMon;
|
||||||
|
|
||||||
typedef struct ril_devmon_ss_io {
|
typedef struct ril_devmon_ss_io {
|
||||||
@@ -65,6 +67,8 @@ typedef struct ril_devmon_ss_io {
|
|||||||
gulong charger_event_id[CHARGER_EVENT_COUNT];
|
gulong charger_event_id[CHARGER_EVENT_COUNT];
|
||||||
gulong display_event_id[DISPLAY_EVENT_COUNT];
|
gulong display_event_id[DISPLAY_EVENT_COUNT];
|
||||||
guint req_id;
|
guint req_id;
|
||||||
|
int cell_info_interval_short_ms;
|
||||||
|
int cell_info_interval_long_ms;
|
||||||
} DevMonIo;
|
} DevMonIo;
|
||||||
|
|
||||||
inline static DevMon *ril_devmon_ss_cast(struct ril_devmon *pub)
|
inline static DevMon *ril_devmon_ss_cast(struct ril_devmon *pub)
|
||||||
@@ -130,8 +134,8 @@ static void ril_devmon_ss_io_set_cell_info_update_interval(DevMonIo *self)
|
|||||||
sailfish_cell_info_set_update_interval(self->cell_info,
|
sailfish_cell_info_set_update_interval(self->cell_info,
|
||||||
(self->display_on && (ril_devmon_ss_charging(self->charger) ||
|
(self->display_on && (ril_devmon_ss_charging(self->charger) ||
|
||||||
ril_devmon_ss_battery_ok(self->battery))) ?
|
ril_devmon_ss_battery_ok(self->battery))) ?
|
||||||
RIL_CELL_INFO_INTERVAL_SHORT_MS :
|
self->cell_info_interval_short_ms :
|
||||||
RIL_CELL_INFO_INTERVAL_LONG_MS);
|
self->cell_info_interval_long_ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ril_devmon_ss_io_battery_cb(MceBattery *battery, void *user_data)
|
static void ril_devmon_ss_io_battery_cb(MceBattery *battery, void *user_data)
|
||||||
@@ -212,6 +216,11 @@ static struct ril_devmon_io *ril_devmon_ss_start_io(struct ril_devmon *devmon,
|
|||||||
mce_display_add_state_changed_handler(self->display,
|
mce_display_add_state_changed_handler(self->display,
|
||||||
ril_devmon_ss_io_display_cb, self);
|
ril_devmon_ss_io_display_cb, self);
|
||||||
|
|
||||||
|
self->cell_info_interval_short_ms =
|
||||||
|
ss->cell_info_interval_short_ms;
|
||||||
|
self->cell_info_interval_long_ms =
|
||||||
|
ss->cell_info_interval_long_ms;
|
||||||
|
|
||||||
ril_devmon_ss_io_send_screen_state(self);
|
ril_devmon_ss_io_send_screen_state(self);
|
||||||
ril_devmon_ss_io_set_cell_info_update_interval(self);
|
ril_devmon_ss_io_set_cell_info_update_interval(self);
|
||||||
return &self->pub;
|
return &self->pub;
|
||||||
@@ -227,7 +236,7 @@ static void ril_devmon_ss_free(struct ril_devmon *devmon)
|
|||||||
g_free(self);
|
g_free(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ril_devmon *ril_devmon_ss_new()
|
struct ril_devmon *ril_devmon_ss_new(const struct ril_slot_config *config)
|
||||||
{
|
{
|
||||||
DevMon *self = g_new0(DevMon, 1);
|
DevMon *self = g_new0(DevMon, 1);
|
||||||
|
|
||||||
@@ -236,6 +245,10 @@ struct ril_devmon *ril_devmon_ss_new()
|
|||||||
self->battery = mce_battery_new();
|
self->battery = mce_battery_new();
|
||||||
self->charger = mce_charger_new();
|
self->charger = mce_charger_new();
|
||||||
self->display = mce_display_new();
|
self->display = mce_display_new();
|
||||||
|
self->cell_info_interval_short_ms =
|
||||||
|
config->cell_info_interval_short_ms;
|
||||||
|
self->cell_info_interval_long_ms =
|
||||||
|
config->cell_info_interval_long_ms;
|
||||||
return &self->pub;
|
return &self->pub;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ typedef struct ril_devmon_ur {
|
|||||||
MceBattery *battery;
|
MceBattery *battery;
|
||||||
MceCharger *charger;
|
MceCharger *charger;
|
||||||
MceDisplay *display;
|
MceDisplay *display;
|
||||||
|
int cell_info_interval_short_ms;
|
||||||
|
int cell_info_interval_long_ms;
|
||||||
} DevMon;
|
} DevMon;
|
||||||
|
|
||||||
typedef struct ril_devmon_ur_io {
|
typedef struct ril_devmon_ur_io {
|
||||||
@@ -70,6 +72,8 @@ typedef struct ril_devmon_ur_io {
|
|||||||
gulong charger_event_id[CHARGER_EVENT_COUNT];
|
gulong charger_event_id[CHARGER_EVENT_COUNT];
|
||||||
gulong display_event_id[DISPLAY_EVENT_COUNT];
|
gulong display_event_id[DISPLAY_EVENT_COUNT];
|
||||||
guint req_id;
|
guint req_id;
|
||||||
|
int cell_info_interval_short_ms;
|
||||||
|
int cell_info_interval_long_ms;
|
||||||
} DevMonIo;
|
} DevMonIo;
|
||||||
|
|
||||||
#define DBG_(self,fmt,args...) DBG("%s: " fmt, (self)->io->name, ##args)
|
#define DBG_(self,fmt,args...) DBG("%s: " fmt, (self)->io->name, ##args)
|
||||||
@@ -136,8 +140,8 @@ static void ril_devmon_ur_io_set_cell_info_update_interval(DevMonIo *self)
|
|||||||
sailfish_cell_info_set_update_interval(self->cell_info,
|
sailfish_cell_info_set_update_interval(self->cell_info,
|
||||||
(self->display_on && (ril_devmon_ur_charging(self->charger) ||
|
(self->display_on && (ril_devmon_ur_charging(self->charger) ||
|
||||||
ril_devmon_ur_battery_ok(self->battery))) ?
|
ril_devmon_ur_battery_ok(self->battery))) ?
|
||||||
RIL_CELL_INFO_INTERVAL_SHORT_MS :
|
self->cell_info_interval_short_ms :
|
||||||
RIL_CELL_INFO_INTERVAL_LONG_MS);
|
self->cell_info_interval_long_ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ril_devmon_ur_io_battery_cb(MceBattery *battery, void *user_data)
|
static void ril_devmon_ur_io_battery_cb(MceBattery *battery, void *user_data)
|
||||||
@@ -218,6 +222,11 @@ static struct ril_devmon_io *ril_devmon_ur_start_io(struct ril_devmon *devmon,
|
|||||||
mce_display_add_state_changed_handler(self->display,
|
mce_display_add_state_changed_handler(self->display,
|
||||||
ril_devmon_ur_io_display_cb, self);
|
ril_devmon_ur_io_display_cb, self);
|
||||||
|
|
||||||
|
self->cell_info_interval_short_ms =
|
||||||
|
ur->cell_info_interval_short_ms;
|
||||||
|
self->cell_info_interval_long_ms =
|
||||||
|
ur->cell_info_interval_long_ms;
|
||||||
|
|
||||||
ril_devmon_ur_io_set_unsol_response_filter(self);
|
ril_devmon_ur_io_set_unsol_response_filter(self);
|
||||||
ril_devmon_ur_io_set_cell_info_update_interval(self);
|
ril_devmon_ur_io_set_cell_info_update_interval(self);
|
||||||
return &self->pub;
|
return &self->pub;
|
||||||
@@ -233,7 +242,7 @@ static void ril_devmon_ur_free(struct ril_devmon *devmon)
|
|||||||
g_free(self);
|
g_free(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ril_devmon *ril_devmon_ur_new()
|
struct ril_devmon *ril_devmon_ur_new(const struct ril_slot_config *config)
|
||||||
{
|
{
|
||||||
DevMon *self = g_new0(DevMon, 1);
|
DevMon *self = g_new0(DevMon, 1);
|
||||||
|
|
||||||
@@ -242,6 +251,10 @@ struct ril_devmon *ril_devmon_ur_new()
|
|||||||
self->battery = mce_battery_new();
|
self->battery = mce_battery_new();
|
||||||
self->charger = mce_charger_new();
|
self->charger = mce_charger_new();
|
||||||
self->display = mce_display_new();
|
self->display = mce_display_new();
|
||||||
|
self->cell_info_interval_short_ms =
|
||||||
|
config->cell_info_interval_short_ms;
|
||||||
|
self->cell_info_interval_long_ms =
|
||||||
|
config->cell_info_interval_long_ms;
|
||||||
return &self->pub;
|
return &self->pub;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -503,7 +503,7 @@ static int ril_netreg_get_signal_strength(struct ril_netreg *nd,
|
|||||||
signal.qdbm = -4 * tdscdma_dbm;
|
signal.qdbm = -4 * tdscdma_dbm;
|
||||||
} else if (signal.lte == 99 && rsrp >= 44 && rsrp <= 140) {
|
} else if (signal.lte == 99 && rsrp >= 44 && rsrp <= 140) {
|
||||||
/* RSRP range: 44 to 140 dBm per 3GPP TS 36.133 */
|
/* RSRP range: 44 to 140 dBm per 3GPP TS 36.133 */
|
||||||
signal.qdbm = -rsrp;
|
signal.qdbm = -4 * rsrp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,8 @@
|
|||||||
#define RILMODEM_DEFAULT_USE_DATA_PROFILES FALSE
|
#define RILMODEM_DEFAULT_USE_DATA_PROFILES FALSE
|
||||||
#define RILMODEM_DEFAULT_MMS_DATA_PROFILE_ID RIL_DATA_PROFILE_IMS
|
#define RILMODEM_DEFAULT_MMS_DATA_PROFILE_ID RIL_DATA_PROFILE_IMS
|
||||||
#define RILMODEM_DEFAULT_SLOT_FLAGS SAILFISH_SLOT_NO_FLAGS
|
#define RILMODEM_DEFAULT_SLOT_FLAGS SAILFISH_SLOT_NO_FLAGS
|
||||||
|
#define RILMODEM_DEFAULT_CELL_INFO_INTERVAL_SHORT_MS (2000) /* 2 sec */
|
||||||
|
#define RILMODEM_DEFAULT_CELL_INFO_INTERVAL_LONG_MS (30000) /* 30 sec */
|
||||||
|
|
||||||
/* RIL socket transport name and parameters */
|
/* RIL socket transport name and parameters */
|
||||||
#define RIL_TRANSPORT_MODEM "modem"
|
#define RIL_TRANSPORT_MODEM "modem"
|
||||||
@@ -158,6 +160,8 @@
|
|||||||
#define RILCONF_USE_DATA_PROFILES "useDataProfiles"
|
#define RILCONF_USE_DATA_PROFILES "useDataProfiles"
|
||||||
#define RILCONF_MMS_DATA_PROFILE_ID "mmsDataProfileId"
|
#define RILCONF_MMS_DATA_PROFILE_ID "mmsDataProfileId"
|
||||||
#define RILCONF_DEVMON "deviceStateTracking"
|
#define RILCONF_DEVMON "deviceStateTracking"
|
||||||
|
#define RILCONF_CELL_INFO_INTERVAL_SHORT_MS "cellInfoIntervalShortMs"
|
||||||
|
#define RILCONF_CELL_INFO_INTERVAL_LONG_MS "cellInfoIntervalLongMs"
|
||||||
|
|
||||||
/* Modem error ids */
|
/* Modem error ids */
|
||||||
#define RIL_ERROR_ID_RILD_RESTART "rild-restart"
|
#define RIL_ERROR_ID_RILD_RESTART "rild-restart"
|
||||||
@@ -1230,6 +1234,10 @@ static ril_slot *ril_plugin_slot_new_take(char *transport,
|
|||||||
RILMODEM_DEFAULT_FORCE_GSM_WHEN_RADIO_OFF;
|
RILMODEM_DEFAULT_FORCE_GSM_WHEN_RADIO_OFF;
|
||||||
config->use_data_profiles = RILMODEM_DEFAULT_USE_DATA_PROFILES;
|
config->use_data_profiles = RILMODEM_DEFAULT_USE_DATA_PROFILES;
|
||||||
config->mms_data_profile_id = RILMODEM_DEFAULT_MMS_DATA_PROFILE_ID;
|
config->mms_data_profile_id = RILMODEM_DEFAULT_MMS_DATA_PROFILE_ID;
|
||||||
|
config->cell_info_interval_short_ms =
|
||||||
|
RILMODEM_DEFAULT_CELL_INFO_INTERVAL_SHORT_MS;
|
||||||
|
config->cell_info_interval_long_ms =
|
||||||
|
RILMODEM_DEFAULT_CELL_INFO_INTERVAL_LONG_MS;
|
||||||
slot->timeout = RILMODEM_DEFAULT_TIMEOUT;
|
slot->timeout = RILMODEM_DEFAULT_TIMEOUT;
|
||||||
slot->sim_flags = RILMODEM_DEFAULT_SIM_FLAGS;
|
slot->sim_flags = RILMODEM_DEFAULT_SIM_FLAGS;
|
||||||
slot->slot_flags = RILMODEM_DEFAULT_SLOT_FLAGS;
|
slot->slot_flags = RILMODEM_DEFAULT_SLOT_FLAGS;
|
||||||
@@ -1241,8 +1249,7 @@ static ril_slot *ril_plugin_slot_new_take(char *transport,
|
|||||||
RILMODEM_DEFAULT_DATA_CALL_RETRY_LIMIT;
|
RILMODEM_DEFAULT_DATA_CALL_RETRY_LIMIT;
|
||||||
slot->data_opt.data_call_retry_delay_ms =
|
slot->data_opt.data_call_retry_delay_ms =
|
||||||
RILMODEM_DEFAULT_DATA_CALL_RETRY_DELAY;
|
RILMODEM_DEFAULT_DATA_CALL_RETRY_DELAY;
|
||||||
|
slot->devmon = ril_devmon_auto_new(config);
|
||||||
slot->devmon = ril_devmon_auto_new();
|
|
||||||
slot->watch = ofono_watch_new(dbus_path);
|
slot->watch = ofono_watch_new(dbus_path);
|
||||||
slot->watch_event_id[WATCH_EVENT_MODEM] =
|
slot->watch_event_id[WATCH_EVENT_MODEM] =
|
||||||
ofono_watch_add_modem_changed_handler(slot->watch,
|
ofono_watch_add_modem_changed_handler(slot->watch,
|
||||||
@@ -1742,6 +1749,26 @@ static ril_slot *ril_plugin_parse_config_group(GKeyFile *file,
|
|||||||
slot->legacy_imei_query ? "on" : "off");
|
slot->legacy_imei_query ? "on" : "off");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* cellInfoIntervalShortMs */
|
||||||
|
if (ril_config_get_integer(file, group,
|
||||||
|
RILCONF_CELL_INFO_INTERVAL_SHORT_MS,
|
||||||
|
&config->cell_info_interval_short_ms)) {
|
||||||
|
DBG("%s: " RILCONF_CELL_INFO_INTERVAL_SHORT_MS " %d", group,
|
||||||
|
config->cell_info_interval_short_ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cellInfoIntervalLongMs */
|
||||||
|
if (ril_config_get_integer(file, group,
|
||||||
|
RILCONF_CELL_INFO_INTERVAL_LONG_MS,
|
||||||
|
&config->cell_info_interval_long_ms)) {
|
||||||
|
DBG("%s: " RILCONF_CELL_INFO_INTERVAL_LONG_MS " %d",
|
||||||
|
group, config->cell_info_interval_long_ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Replace devmon with a new one with applied settings */
|
||||||
|
ril_devmon_free(slot->devmon);
|
||||||
|
slot->devmon = NULL;
|
||||||
|
|
||||||
/* deviceStateTracking */
|
/* deviceStateTracking */
|
||||||
if (ril_config_get_mask(file, group, RILCONF_DEVMON, &ival,
|
if (ril_config_get_mask(file, group, RILCONF_DEVMON, &ival,
|
||||||
"ds", RIL_DEVMON_DS,
|
"ds", RIL_DEVMON_DS,
|
||||||
@@ -1750,11 +1777,16 @@ static ril_slot *ril_plugin_parse_config_group(GKeyFile *file,
|
|||||||
int n = 0;
|
int n = 0;
|
||||||
struct ril_devmon *devmon[3];
|
struct ril_devmon *devmon[3];
|
||||||
|
|
||||||
if (ival & RIL_DEVMON_DS) devmon[n++] = ril_devmon_ds_new();
|
if (ival & RIL_DEVMON_DS) {
|
||||||
if (ival & RIL_DEVMON_SS) devmon[n++] = ril_devmon_ss_new();
|
devmon[n++] = ril_devmon_ds_new(config);
|
||||||
if (ival & RIL_DEVMON_UR) devmon[n++] = ril_devmon_ur_new();
|
}
|
||||||
|
if (ival & RIL_DEVMON_SS) {
|
||||||
|
devmon[n++] = ril_devmon_ss_new(config);
|
||||||
|
}
|
||||||
|
if (ival & RIL_DEVMON_UR) {
|
||||||
|
devmon[n++] = ril_devmon_ur_new(config);
|
||||||
|
}
|
||||||
DBG("%s: " RILCONF_DEVMON " 0x%x", group, ival);
|
DBG("%s: " RILCONF_DEVMON " 0x%x", group, ival);
|
||||||
ril_devmon_free(slot->devmon);
|
|
||||||
slot->devmon = ril_devmon_combine(devmon, n);
|
slot->devmon = ril_devmon_combine(devmon, n);
|
||||||
} else {
|
} else {
|
||||||
/* Try special values */
|
/* Try special values */
|
||||||
@@ -1762,13 +1794,14 @@ static ril_slot *ril_plugin_parse_config_group(GKeyFile *file,
|
|||||||
if (sval) {
|
if (sval) {
|
||||||
if (!g_ascii_strcasecmp(sval, "none")) {
|
if (!g_ascii_strcasecmp(sval, "none")) {
|
||||||
DBG("%s: " RILCONF_DEVMON " %s", group, sval);
|
DBG("%s: " RILCONF_DEVMON " %s", group, sval);
|
||||||
ril_devmon_free(slot->devmon);
|
|
||||||
slot->devmon = NULL;
|
|
||||||
} else if (!g_ascii_strcasecmp(sval, "auto")) {
|
} else if (!g_ascii_strcasecmp(sval, "auto")) {
|
||||||
DBG("%s: " RILCONF_DEVMON " %s", group, sval);
|
DBG("%s: " RILCONF_DEVMON " %s", group, sval);
|
||||||
/* This is the default */
|
slot->devmon = ril_devmon_auto_new(config);
|
||||||
}
|
}
|
||||||
g_free(sval);
|
g_free(sval);
|
||||||
|
} else {
|
||||||
|
/* This is the default */
|
||||||
|
slot->devmon = ril_devmon_auto_new(config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -339,3 +339,29 @@ socket=/dev/socket/rild
|
|||||||
# Default true (false for MTK RILs)
|
# Default true (false for MTK RILs)
|
||||||
#
|
#
|
||||||
#forceGsmWhenRadioOff=true
|
#forceGsmWhenRadioOff=true
|
||||||
|
|
||||||
|
# Configures a period between RIL_UNSOL_CELL_INFO_LIST events when the device
|
||||||
|
# is awake. Possible values are:
|
||||||
|
#
|
||||||
|
# 0 = invoke RIL_UNSOL_CELL_INFO_LIST when any of the reported information
|
||||||
|
# changes
|
||||||
|
# 1..INT_MAX-1 (2147483646) = sets update period in milliseconds
|
||||||
|
# negative value or INT_MAX = never issue a RIL_UNSOL_CELL_INFO_LIST
|
||||||
|
#
|
||||||
|
# On MediaTek devices the period of RIL_UNSOL_CELL_INFO_LIST events can't be
|
||||||
|
# configured. The parameter RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE has
|
||||||
|
# non-standard meaning:
|
||||||
|
#
|
||||||
|
# 0 = enable RIL_UNSOL_CELL_INFO_LIST
|
||||||
|
# any other value = disable RIL_UNSOL_CELL_INFO_LIST
|
||||||
|
#
|
||||||
|
# Default 2000
|
||||||
|
#
|
||||||
|
#cellInfoIntervalShortMs=2000
|
||||||
|
|
||||||
|
# Configures period between RIL_UNSOL_CELL_INFO_LIST events when the device is
|
||||||
|
# in a power saving mode. For possible values, look cellInfoIntervalShortMs.
|
||||||
|
#
|
||||||
|
# Default 30000
|
||||||
|
#
|
||||||
|
#cellInfoIntervalLongMs=30000
|
||||||
|
|||||||
@@ -79,6 +79,8 @@ struct ril_slot_config {
|
|||||||
guint mms_data_profile_id;
|
guint mms_data_profile_id;
|
||||||
GUtilInts *local_hangup_reasons;
|
GUtilInts *local_hangup_reasons;
|
||||||
GUtilInts *remote_hangup_reasons;
|
GUtilInts *remote_hangup_reasons;
|
||||||
|
int cell_info_interval_short_ms;
|
||||||
|
int cell_info_interval_long_ms;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* RIL_TYPES_H */
|
#endif /* RIL_TYPES_H */
|
||||||
|
|||||||
@@ -545,8 +545,8 @@ static int hfp_ag_init(void)
|
|||||||
{
|
{
|
||||||
DBusConnection *conn = ofono_dbus_get_connection();
|
DBusConnection *conn = ofono_dbus_get_connection();
|
||||||
|
|
||||||
hfp_ag_enable(conn);
|
/* g_dbus_add_service_watch immediately checks for bluetooth service
|
||||||
|
* and calls connect callback if the service exists. */
|
||||||
service_watch_id = g_dbus_add_service_watch(conn, "org.bluez",
|
service_watch_id = g_dbus_add_service_watch(conn, "org.bluez",
|
||||||
bluez_connect_cb,
|
bluez_connect_cb,
|
||||||
bluez_disconnect_cb,
|
bluez_disconnect_cb,
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
|
|
||||||
#include "ofono.h"
|
#include "ofono.h"
|
||||||
|
|
||||||
|
#pragma message("PLUGINDIR="PLUGINDIR)
|
||||||
|
|
||||||
static GSList *plugins = NULL;
|
static GSList *plugins = NULL;
|
||||||
|
|
||||||
struct ofono_plugin {
|
struct ofono_plugin {
|
||||||
|
|||||||
@@ -349,12 +349,12 @@ static int tone_queue(struct ofono_voicecall *vc, const char *tone_str,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Tones can be 0-9, *, #, A-D according to 27.007 C.2.11,
|
* Tones can be 0-9, *, #, A-D according to 27.007 C.2.11,
|
||||||
* and p for Pause.
|
* and p for Pause (also , for Pause as per ITU-T V.250 6.3.1.2).
|
||||||
*/
|
*/
|
||||||
for (i = 0; tone_str[i]; i++)
|
for (i = 0; tone_str[i]; i++)
|
||||||
if (!g_ascii_isdigit(tone_str[i]) && tone_str[i] != 'p' &&
|
if (!g_ascii_isdigit(tone_str[i]) && tone_str[i] != 'p' &&
|
||||||
tone_str[i] != 'P' && tone_str[i] != '*' &&
|
tone_str[i] != 'P' && tone_str[i] != '*' &&
|
||||||
tone_str[i] != '.' && tone_str[i] != ',' &&
|
tone_str[i] != ',' &&
|
||||||
tone_str[i] != '#' && (tone_str[i] < 'A' ||
|
tone_str[i] != '#' && (tone_str[i] < 'A' ||
|
||||||
tone_str[i] > 'D'))
|
tone_str[i] > 'D'))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -4389,7 +4389,7 @@ static void tone_request_cb(const struct ofono_error *error, void *data)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = strspn(entry->left, "pP.,");
|
len = strspn(entry->left, "pP,");
|
||||||
entry->left += len;
|
entry->left += len;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
@@ -4423,7 +4423,7 @@ static gboolean tone_request_run(gpointer user_data)
|
|||||||
if (entry == NULL)
|
if (entry == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
len = strcspn(entry->left, "pP.,");
|
len = strcspn(entry->left, "pP,");
|
||||||
|
|
||||||
if (len) {
|
if (len) {
|
||||||
if (len > 8) /* Arbitrary length limit per request */
|
if (len > 8) /* Arbitrary length limit per request */
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ Name: ofono
|
|||||||
Summary: Open Source Telephony
|
Summary: Open Source Telephony
|
||||||
Version: 1.23
|
Version: 1.23
|
||||||
Release: 1
|
Release: 1
|
||||||
Group: Communications/Connectivity Adaptation
|
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
URL: https://git.sailfishos.org/mer-core/ofono
|
URL: https://git.sailfishos.org/mer-core/ofono
|
||||||
Source: %{name}-%{version}.tar.bz2
|
Source: %{name}-%{version}.tar.bz2
|
||||||
@@ -38,13 +37,13 @@ BuildRequires: pkgconfig(mobile-broadband-provider-info)
|
|||||||
BuildRequires: libtool
|
BuildRequires: libtool
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
|
BuildRequires: systemd
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Telephony stack
|
Telephony stack
|
||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Headers for oFono
|
Summary: Headers for oFono
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
@@ -52,7 +51,6 @@ Development headers and libraries for oFono
|
|||||||
|
|
||||||
%package tests
|
%package tests
|
||||||
Summary: Test Scripts for oFono
|
Summary: Test Scripts for oFono
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
Requires: dbus-python3
|
Requires: dbus-python3
|
||||||
Requires: python3-gobject
|
Requires: python3-gobject
|
||||||
@@ -64,7 +62,6 @@ Scripts for testing oFono and its functionality
|
|||||||
|
|
||||||
%package configs-mer
|
%package configs-mer
|
||||||
Summary: Package to provide default configs for ofono
|
Summary: Package to provide default configs for ofono
|
||||||
Group: Development/Tools
|
|
||||||
Provides: ofono-configs
|
Provides: ofono-configs
|
||||||
|
|
||||||
%description configs-mer
|
%description configs-mer
|
||||||
@@ -72,7 +69,6 @@ This package provides default configs for ofono
|
|||||||
|
|
||||||
%package doc
|
%package doc
|
||||||
Summary: Documentation for %{name}
|
Summary: Documentation for %{name}
|
||||||
Group: Documentation
|
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
|
||||||
%description doc
|
%description doc
|
||||||
@@ -98,9 +94,9 @@ autoreconf --force --install
|
|||||||
--disable-add-remove-context \
|
--disable-add-remove-context \
|
||||||
--disable-isimodem \
|
--disable-isimodem \
|
||||||
--disable-qmimodem \
|
--disable-qmimodem \
|
||||||
--with-systemdunitdir="/%{_lib}/systemd/system"
|
--with-systemdunitdir=%{_unitdir}
|
||||||
|
|
||||||
make %{_smp_mflags}
|
%make_build
|
||||||
|
|
||||||
%check
|
%check
|
||||||
# run unit tests
|
# run unit tests
|
||||||
@@ -111,9 +107,9 @@ rm -rf %{buildroot}
|
|||||||
%make_install
|
%make_install
|
||||||
|
|
||||||
mkdir -p %{buildroot}/%{_sysconfdir}/ofono/push_forwarder.d
|
mkdir -p %{buildroot}/%{_sysconfdir}/ofono/push_forwarder.d
|
||||||
mkdir -p %{buildroot}/%{_lib}/systemd/system/network.target.wants
|
mkdir -p %{buildroot}%{_unitdir}/network.target.wants
|
||||||
mkdir -p %{buildroot}/var/lib/ofono
|
mkdir -p %{buildroot}/var/lib/ofono
|
||||||
ln -s ../ofono.service %{buildroot}/%{_lib}/systemd/system/network.target.wants/ofono.service
|
ln -s ../ofono.service %{buildroot}%{_unitdir}/network.target.wants/ofono.service
|
||||||
|
|
||||||
mkdir -p %{buildroot}%{_docdir}/%{name}-%{version}
|
mkdir -p %{buildroot}%{_docdir}/%{name}-%{version}
|
||||||
install -m0644 -t %{buildroot}%{_docdir}/%{name}-%{version} \
|
install -m0644 -t %{buildroot}%{_docdir}/%{name}-%{version} \
|
||||||
@@ -139,8 +135,8 @@ systemctl daemon-reload ||:
|
|||||||
%license COPYING
|
%license COPYING
|
||||||
%config %{_sysconfdir}/dbus-1/system.d/*.conf
|
%config %{_sysconfdir}/dbus-1/system.d/*.conf
|
||||||
%{_sbindir}/*
|
%{_sbindir}/*
|
||||||
/%{_lib}/systemd/system/network.target.wants/ofono.service
|
%{_unitdir}/network.target.wants/ofono.service
|
||||||
/%{_lib}/systemd/system/ofono.service
|
%{_unitdir}/ofono.service
|
||||||
%dir %{_sysconfdir}/ofono/
|
%dir %{_sysconfdir}/ofono/
|
||||||
%dir %{_sysconfdir}/ofono/push_forwarder.d
|
%dir %{_sysconfdir}/ofono/push_forwarder.d
|
||||||
# This file is part of phonesim and not needed with ofono.
|
# This file is part of phonesim and not needed with ofono.
|
||||||
|
|||||||
Reference in New Issue
Block a user