mmcli: abort certain operations if modem is unlocked

Do not try to perform feature/capability specific actions if we're still
unlocked, as the modem didn't yet export the feature/capability specific
interface.

The only interfaces expected while modem is unlocked are the Modem and Simple
interfaces, as well as the SIM interface in the SIM object, of course.
This commit is contained in:
Aleksander Morgado
2012-03-26 13:00:07 +02:00
parent d10780dcf5
commit 28f13c09ec
6 changed files with 65 additions and 28 deletions

View File

@@ -161,21 +161,33 @@ context_free (Context *ctx)
static void
ensure_modem_3gpp (void)
{
if (ctx->modem_3gpp)
return;
if (mm_modem_get_unlock_required (mm_object_peek_modem (ctx->object)) != MM_MODEM_LOCK_NONE) {
g_printerr ("error: modem not unlocked yet\n");
exit (EXIT_FAILURE);
}
g_printerr ("error: modem has no 3GPP capabilities\n");
exit (EXIT_FAILURE);
if (!ctx->modem_3gpp) {
g_printerr ("error: modem has no 3GPP capabilities\n");
exit (EXIT_FAILURE);
}
/* Success */
}
static void
ensure_modem_3gpp_ussd (void)
{
if (ctx->modem_3gpp_ussd)
return;
if (mm_modem_get_unlock_required (mm_object_peek_modem (ctx->object)) != MM_MODEM_LOCK_NONE) {
g_printerr ("error: modem not unlocked yet\n");
exit (EXIT_FAILURE);
}
g_printerr ("error: modem has no USSD capabilities\n");
exit (EXIT_FAILURE);
if (!ctx->modem_3gpp_ussd) {
g_printerr ("error: modem has no USSD capabilities\n");
exit (EXIT_FAILURE);
}
/* Success */
}
void

View File

@@ -108,11 +108,17 @@ context_free (Context *ctx)
static void
ensure_modem_cdma (void)
{
if (ctx->modem_cdma)
return;
if (mm_modem_get_unlock_required (mm_object_peek_modem (ctx->object)) != MM_MODEM_LOCK_NONE) {
g_printerr ("error: modem not unlocked yet\n");
exit (EXIT_FAILURE);
}
g_printerr ("error: modem has no CDMA capabilities\n");
exit (EXIT_FAILURE);
if (!ctx->modem_cdma) {
g_printerr ("error: modem has no CDMA capabilities\n");
exit (EXIT_FAILURE);
}
/* Success */
}
void

View File

@@ -120,11 +120,17 @@ context_free (Context *ctx)
static void
ensure_modem_location (void)
{
if (ctx->modem_location)
return;
if (mm_modem_get_unlock_required (mm_object_peek_modem (ctx->object)) != MM_MODEM_LOCK_NONE) {
g_printerr ("error: modem not unlocked yet\n");
exit (EXIT_FAILURE);
}
g_printerr ("error: modem has no location capabilities\n");
exit (EXIT_FAILURE);
if (!ctx->modem_location) {
g_printerr ("error: modem has no location capabilities\n");
exit (EXIT_FAILURE);
}
/* Success */
}
void

View File

@@ -120,11 +120,17 @@ context_free (Context *ctx)
static void
ensure_modem_messaging (void)
{
if (ctx->modem_messaging)
return;
if (mm_modem_get_unlock_required (mm_object_peek_modem (ctx->object)) != MM_MODEM_LOCK_NONE) {
g_printerr ("error: modem not unlocked yet\n");
exit (EXIT_FAILURE);
}
g_printerr ("error: modem has no messaging capabilities\n");
exit (EXIT_FAILURE);
if (!ctx->modem_messaging) {
g_printerr ("error: modem has no messaging capabilities\n");
exit (EXIT_FAILURE);
}
/* Success */
}
void

View File

@@ -125,11 +125,12 @@ context_free (Context *ctx)
static void
ensure_modem_simple (void)
{
if (ctx->modem_simple)
return;
if (!ctx->modem_simple) {
g_printerr ("error: modem has no Simple capabilities\n");
exit (EXIT_FAILURE);
}
g_printerr ("error: modem has no Simple capabilities\n");
exit (EXIT_FAILURE);
/* Success */
}
void

View File

@@ -108,11 +108,17 @@ context_free (Context *ctx)
static void
ensure_modem_time (void)
{
if (ctx->modem_time)
return;
if (mm_modem_get_unlock_required (mm_object_peek_modem (ctx->object)) != MM_MODEM_LOCK_NONE) {
g_printerr ("error: modem not unlocked yet\n");
exit (EXIT_FAILURE);
}
g_printerr ("error: modem has no time capabilities\n");
exit (EXIT_FAILURE);
if (!ctx->modem_time) {
g_printerr ("error: modem has no time capabilities\n");
exit (EXIT_FAILURE);
}
/* Success */
}
void