cli: new actions to setup or gather CDMA BS location source
This commit is contained in:
@@ -55,6 +55,9 @@ static gboolean get_gps_nmea_flag;
|
|||||||
static gboolean enable_gps_raw_flag;
|
static gboolean enable_gps_raw_flag;
|
||||||
static gboolean disable_gps_raw_flag;
|
static gboolean disable_gps_raw_flag;
|
||||||
static gboolean get_gps_raw_flag;
|
static gboolean get_gps_raw_flag;
|
||||||
|
static gboolean enable_cdma_bs_flag;
|
||||||
|
static gboolean disable_cdma_bs_flag;
|
||||||
|
static gboolean get_cdma_bs_flag;
|
||||||
static gboolean get_all_flag;
|
static gboolean get_all_flag;
|
||||||
|
|
||||||
static GOptionEntry entries[] = {
|
static GOptionEntry entries[] = {
|
||||||
@@ -102,6 +105,18 @@ static GOptionEntry entries[] = {
|
|||||||
"Get raw GPS location.",
|
"Get raw GPS location.",
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
|
{ "location-enable-cdma-bs", 0, 0, G_OPTION_ARG_NONE, &enable_cdma_bs_flag,
|
||||||
|
"Enable CDMA base station location gathering.",
|
||||||
|
NULL
|
||||||
|
},
|
||||||
|
{ "location-disable-cdma-bs", 0, 0, G_OPTION_ARG_NONE, &disable_cdma_bs_flag,
|
||||||
|
"Disable CDMA base station location gathering.",
|
||||||
|
NULL
|
||||||
|
},
|
||||||
|
{ "location-get-cdma-bs", 0, 0, G_OPTION_ARG_NONE, &get_cdma_bs_flag,
|
||||||
|
"Get CDMA base station location.",
|
||||||
|
NULL
|
||||||
|
},
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -131,7 +146,8 @@ mmcli_modem_location_options_enabled (void)
|
|||||||
|
|
||||||
if ((enable_3gpp_flag && disable_3gpp_flag) ||
|
if ((enable_3gpp_flag && disable_3gpp_flag) ||
|
||||||
(enable_gps_nmea_flag && disable_gps_nmea_flag) ||
|
(enable_gps_nmea_flag && disable_gps_nmea_flag) ||
|
||||||
(enable_gps_raw_flag && disable_gps_raw_flag)) {
|
(enable_gps_raw_flag && disable_gps_raw_flag) ||
|
||||||
|
(enable_cdma_bs_flag && disable_cdma_bs_flag)) {
|
||||||
g_printerr ("error: cannot enable and disable the same source\n");
|
g_printerr ("error: cannot enable and disable the same source\n");
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@@ -140,6 +156,7 @@ mmcli_modem_location_options_enabled (void)
|
|||||||
get_3gpp_flag = TRUE;
|
get_3gpp_flag = TRUE;
|
||||||
get_gps_nmea_flag = TRUE;
|
get_gps_nmea_flag = TRUE;
|
||||||
get_gps_raw_flag = TRUE;
|
get_gps_raw_flag = TRUE;
|
||||||
|
get_cdma_bs_flag = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
n_actions = (status_flag +
|
n_actions = (status_flag +
|
||||||
@@ -148,10 +165,13 @@ mmcli_modem_location_options_enabled (void)
|
|||||||
enable_gps_nmea_flag +
|
enable_gps_nmea_flag +
|
||||||
disable_gps_nmea_flag +
|
disable_gps_nmea_flag +
|
||||||
enable_gps_raw_flag +
|
enable_gps_raw_flag +
|
||||||
disable_gps_raw_flag) +
|
disable_gps_raw_flag +
|
||||||
|
enable_cdma_bs_flag +
|
||||||
|
disable_cdma_bs_flag) +
|
||||||
!!(get_3gpp_flag +
|
!!(get_3gpp_flag +
|
||||||
get_gps_nmea_flag +
|
get_gps_nmea_flag +
|
||||||
get_gps_raw_flag));
|
get_gps_raw_flag +
|
||||||
|
get_cdma_bs_flag));
|
||||||
|
|
||||||
if (n_actions > 1) {
|
if (n_actions > 1) {
|
||||||
g_printerr ("error: too many Location actions requested\n");
|
g_printerr ("error: too many Location actions requested\n");
|
||||||
@@ -277,6 +297,11 @@ build_sources_from_flags (void)
|
|||||||
if (disable_gps_raw_flag)
|
if (disable_gps_raw_flag)
|
||||||
sources &= ~MM_MODEM_LOCATION_SOURCE_GPS_RAW;
|
sources &= ~MM_MODEM_LOCATION_SOURCE_GPS_RAW;
|
||||||
|
|
||||||
|
if (enable_cdma_bs_flag)
|
||||||
|
sources |= MM_MODEM_LOCATION_SOURCE_CDMA_BS;
|
||||||
|
if (disable_cdma_bs_flag)
|
||||||
|
sources &= ~MM_MODEM_LOCATION_SOURCE_CDMA_BS;
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,6 +309,7 @@ static void
|
|||||||
get_location_process_reply (MMLocation3gpp *location_3gpp,
|
get_location_process_reply (MMLocation3gpp *location_3gpp,
|
||||||
MMLocationGpsNmea *location_gps_nmea,
|
MMLocationGpsNmea *location_gps_nmea,
|
||||||
MMLocationGpsRaw *location_gps_raw,
|
MMLocationGpsRaw *location_gps_raw,
|
||||||
|
MMLocationCdmaBs *location_cdma_bs,
|
||||||
const GError *error)
|
const GError *error)
|
||||||
{
|
{
|
||||||
/* First, check for failures */
|
/* First, check for failures */
|
||||||
@@ -308,6 +334,12 @@ get_location_process_reply (MMLocation3gpp *location_3gpp,
|
|||||||
exit_error = TRUE;
|
exit_error = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (get_cdma_bs_flag && !location_cdma_bs) {
|
||||||
|
g_printerr ("error: couldn't get CDMA base station location from the modem: '%s'\n",
|
||||||
|
error ? error->message : "not available");
|
||||||
|
exit_error = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (exit_error)
|
if (exit_error)
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
} else if (error) {
|
} else if (error) {
|
||||||
@@ -372,12 +404,26 @@ get_location_process_reply (MMLocation3gpp *location_3gpp,
|
|||||||
" Raw GPS | Not available\n");
|
" Raw GPS | Not available\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (get_cdma_bs_flag) {
|
||||||
|
if (location_cdma_bs)
|
||||||
|
g_print (" -------------------------\n"
|
||||||
|
" CDMA BS | Longitude: '%lf'\n"
|
||||||
|
" | Latitude: '%lf'\n",
|
||||||
|
mm_location_cdma_bs_get_longitude (location_cdma_bs),
|
||||||
|
mm_location_cdma_bs_get_latitude (location_cdma_bs));
|
||||||
|
else
|
||||||
|
g_print (" -------------------------\n"
|
||||||
|
" CDMA BS | Not available\n");
|
||||||
|
}
|
||||||
|
|
||||||
if (location_3gpp)
|
if (location_3gpp)
|
||||||
g_object_unref (location_3gpp);
|
g_object_unref (location_3gpp);
|
||||||
if (location_gps_nmea)
|
if (location_gps_nmea)
|
||||||
g_object_unref (location_gps_nmea);
|
g_object_unref (location_gps_nmea);
|
||||||
if (location_gps_raw)
|
if (location_gps_raw)
|
||||||
g_object_unref (location_gps_raw);
|
g_object_unref (location_gps_raw);
|
||||||
|
if (location_cdma_bs)
|
||||||
|
g_object_unref (location_cdma_bs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -387,6 +433,7 @@ get_location_ready (MMModemLocation *modem_location,
|
|||||||
MMLocation3gpp *location_3gpp = NULL;
|
MMLocation3gpp *location_3gpp = NULL;
|
||||||
MMLocationGpsNmea *location_gps_nmea = NULL;
|
MMLocationGpsNmea *location_gps_nmea = NULL;
|
||||||
MMLocationGpsRaw *location_gps_raw = NULL;
|
MMLocationGpsRaw *location_gps_raw = NULL;
|
||||||
|
MMLocationCdmaBs *location_cdma_bs = NULL;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
mm_modem_location_get_full_finish (modem_location,
|
mm_modem_location_get_full_finish (modem_location,
|
||||||
@@ -394,8 +441,9 @@ get_location_ready (MMModemLocation *modem_location,
|
|||||||
get_3gpp_flag ? &location_3gpp : NULL,
|
get_3gpp_flag ? &location_3gpp : NULL,
|
||||||
get_gps_nmea_flag ? &location_gps_nmea : NULL,
|
get_gps_nmea_flag ? &location_gps_nmea : NULL,
|
||||||
get_gps_raw_flag ? &location_gps_raw : NULL,
|
get_gps_raw_flag ? &location_gps_raw : NULL,
|
||||||
|
get_cdma_bs_flag ? &location_cdma_bs : NULL,
|
||||||
&error);
|
&error);
|
||||||
get_location_process_reply (location_3gpp, location_gps_nmea, location_gps_raw, error);
|
get_location_process_reply (location_3gpp, location_gps_nmea, location_gps_raw, location_cdma_bs, error);
|
||||||
|
|
||||||
mmcli_async_operation_done ();
|
mmcli_async_operation_done ();
|
||||||
}
|
}
|
||||||
@@ -423,7 +471,9 @@ get_modem_ready (GObject *source,
|
|||||||
enable_gps_nmea_flag ||
|
enable_gps_nmea_flag ||
|
||||||
disable_gps_nmea_flag ||
|
disable_gps_nmea_flag ||
|
||||||
enable_gps_raw_flag ||
|
enable_gps_raw_flag ||
|
||||||
disable_gps_raw_flag) {
|
disable_gps_raw_flag ||
|
||||||
|
enable_cdma_bs_flag ||
|
||||||
|
disable_cdma_bs_flag) {
|
||||||
g_debug ("Asynchronously setting up location gathering...");
|
g_debug ("Asynchronously setting up location gathering...");
|
||||||
mm_modem_location_setup (ctx->modem_location,
|
mm_modem_location_setup (ctx->modem_location,
|
||||||
build_sources_from_flags (),
|
build_sources_from_flags (),
|
||||||
@@ -437,7 +487,8 @@ get_modem_ready (GObject *source,
|
|||||||
/* Request to get location from the modem? */
|
/* Request to get location from the modem? */
|
||||||
if (get_3gpp_flag ||
|
if (get_3gpp_flag ||
|
||||||
get_gps_nmea_flag ||
|
get_gps_nmea_flag ||
|
||||||
get_gps_raw_flag) {
|
get_gps_raw_flag ||
|
||||||
|
get_cdma_bs_flag) {
|
||||||
g_debug ("Asynchronously getting location from the modem...");
|
g_debug ("Asynchronously getting location from the modem...");
|
||||||
mm_modem_location_get_full (ctx->modem_location,
|
mm_modem_location_get_full (ctx->modem_location,
|
||||||
ctx->cancellable,
|
ctx->cancellable,
|
||||||
@@ -497,7 +548,9 @@ mmcli_modem_location_run_synchronous (GDBusConnection *connection)
|
|||||||
enable_gps_nmea_flag ||
|
enable_gps_nmea_flag ||
|
||||||
disable_gps_nmea_flag ||
|
disable_gps_nmea_flag ||
|
||||||
enable_gps_raw_flag ||
|
enable_gps_raw_flag ||
|
||||||
disable_gps_raw_flag) {
|
disable_gps_raw_flag ||
|
||||||
|
enable_cdma_bs_flag ||
|
||||||
|
disable_cdma_bs_flag) {
|
||||||
gboolean result;
|
gboolean result;
|
||||||
|
|
||||||
g_debug ("Synchronously setting up location gathering...");
|
g_debug ("Synchronously setting up location gathering...");
|
||||||
@@ -513,19 +566,22 @@ mmcli_modem_location_run_synchronous (GDBusConnection *connection)
|
|||||||
/* Request to get location from the modem? */
|
/* Request to get location from the modem? */
|
||||||
if (get_3gpp_flag ||
|
if (get_3gpp_flag ||
|
||||||
get_gps_nmea_flag ||
|
get_gps_nmea_flag ||
|
||||||
get_gps_raw_flag) {
|
get_gps_raw_flag ||
|
||||||
|
get_cdma_bs_flag) {
|
||||||
MMLocation3gpp *location_3gpp = NULL;
|
MMLocation3gpp *location_3gpp = NULL;
|
||||||
MMLocationGpsNmea *location_gps_nmea = NULL;
|
MMLocationGpsNmea *location_gps_nmea = NULL;
|
||||||
MMLocationGpsRaw *location_gps_raw = NULL;
|
MMLocationGpsRaw *location_gps_raw = NULL;
|
||||||
|
MMLocationCdmaBs *location_cdma_bs = NULL;
|
||||||
|
|
||||||
g_debug ("Synchronously getting location from the modem...");
|
g_debug ("Synchronously getting location from the modem...");
|
||||||
mm_modem_location_get_full_sync (ctx->modem_location,
|
mm_modem_location_get_full_sync (ctx->modem_location,
|
||||||
get_3gpp_flag ? &location_3gpp : NULL,
|
get_3gpp_flag ? &location_3gpp : NULL,
|
||||||
get_gps_nmea_flag ? &location_gps_nmea : NULL,
|
get_gps_nmea_flag ? &location_gps_nmea : NULL,
|
||||||
get_gps_raw_flag ? &location_gps_raw : NULL,
|
get_gps_raw_flag ? &location_gps_raw : NULL,
|
||||||
|
get_cdma_bs_flag ? &location_cdma_bs : NULL,
|
||||||
NULL,
|
NULL,
|
||||||
&error);
|
&error);
|
||||||
get_location_process_reply (location_3gpp, location_gps_nmea, location_gps_raw, error);
|
get_location_process_reply (location_3gpp, location_gps_nmea, location_gps_raw, location_cdma_bs, error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -317,9 +317,8 @@ Display the status of the given modem.
|
|||||||
|
|
||||||
.SH LOCATION OPTIONS
|
.SH LOCATION OPTIONS
|
||||||
These options detail how to discover your location using Global
|
These options detail how to discover your location using Global
|
||||||
Positioning System (GPS), 3rd Generation Partnership Project
|
Positioning System (GPS) or directly from your mobile network infrastructure
|
||||||
(3GPP) and National Marine Electronics Association (NMEA)
|
(either 3GPP or 3GPP2).
|
||||||
technologies.
|
|
||||||
|
|
||||||
All location options must be used with \fB\-\-modem\fR or \fB\-m\fR.
|
All location options must be used with \fB\-\-modem\fR or \fB\-m\fR.
|
||||||
|
|
||||||
@@ -331,13 +330,13 @@ Show the current status for discovering our location.
|
|||||||
Show all location information available.
|
Show all location information available.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-location\-enable\-3gpp
|
.B \-\-location\-enable\-3gpp
|
||||||
Enable location discovery using 3GPP.
|
Enable location discovery using the 3GPP network.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-location\-disable\-3gpp
|
.B \-\-location\-disable\-3gpp
|
||||||
Disable location discovery using 3GPP.
|
Disable location discovery using the 3GPP network.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-location\-get\-3gpp
|
.B \-\-location\-get\-3gpp
|
||||||
Show 3GPP based location information.
|
Show 3GPP based location information (MCC, MNC, LAC, CI).
|
||||||
.TP
|
.TP
|
||||||
.B \-\-location\-enable\-gps\-nmea
|
.B \-\-location\-enable\-gps\-nmea
|
||||||
Enable location discovery using GPS and reported with NMEA traces.
|
Enable location discovery using GPS and reported with NMEA traces.
|
||||||
@@ -356,7 +355,16 @@ longitude/latitude) values.
|
|||||||
Disable location discovery using GPS and raw values.
|
Disable location discovery using GPS and raw values.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-location\-get\-gps\-raw
|
.B \-\-location\-get\-gps\-raw
|
||||||
Show GPS based location information with raw values.
|
Show GPS based location information with raw values (e.g. latitude, longitude).
|
||||||
|
.TP
|
||||||
|
.B \-\-location\-enable\-cdma-bs
|
||||||
|
Enable location discovery using the 3GPP2 network.
|
||||||
|
.TP
|
||||||
|
.B \-\-location\-disable\-cdma-bs
|
||||||
|
Disable location discovery using the 3GPP2 network.
|
||||||
|
.TP
|
||||||
|
.B \-\-location\-get\-cdma-bs
|
||||||
|
Show 3GPP2 based location information (location of the CDMA base station).
|
||||||
|
|
||||||
.SH MESSAGING OPTIONS
|
.SH MESSAGING OPTIONS
|
||||||
All messaging options must be used with \fB\-\-modem\fR or \fB\-m\fR.
|
All messaging options must be used with \fB\-\-modem\fR or \fB\-m\fR.
|
||||||
@@ -705,6 +713,8 @@ You can query location source specific information with
|
|||||||
| $GPVTG,,T,,M,,N,,K,N*2C
|
| $GPVTG,,T,,M,,N,,K,N*2C
|
||||||
-------------------------
|
-------------------------
|
||||||
Raw GPS | Not available
|
Raw GPS | Not available
|
||||||
|
-------------------------
|
||||||
|
CDMA BS | Not available
|
||||||
.Ed
|
.Ed
|
||||||
|
|
||||||
An example of RAW GPS location information:
|
An example of RAW GPS location information:
|
||||||
|
Reference in New Issue
Block a user