iface-modem-sar: disallow changing SAR level if SAR disabled

This was already forbidden in the MBIM implementation, and we should
also have it in the QMI implementation, so just make it a generic
check in the interface.
This commit is contained in:
Aleksander Morgado
2022-09-19 10:20:33 +00:00
committed by Aleksander Morgado
parent 0994087f18
commit b50c24acd1
3 changed files with 10 additions and 31 deletions

View File

@@ -8308,17 +8308,6 @@ sar_set_power_level (MMIfaceModemSar *_self,
if (!peek_device (self, &device, callback, user_data))
return;
if (!mm_iface_modem_get_sar_state (_self)) {
g_task_report_new_error (self,
callback,
user_data,
sar_set_power_level,
MM_CORE_ERROR,
MM_CORE_ERROR_WRONG_STATE,
"Couldn't set power level of SAR, because the SAR is disabled");
return;
}
/*
* the value 0xFFFFFFFF means all antennas
* the backoff index set to the input power level

View File

@@ -35,24 +35,6 @@ mm_iface_modem_sar_bind_simple_status (MMIfaceModemSar *self,
{
}
gboolean
mm_iface_modem_get_sar_state (MMIfaceModemSar *self)
{
MmGdbusModemSar *skeleton = NULL;
gboolean state;
g_object_get (self,
MM_IFACE_MODEM_SAR_DBUS_SKELETON, &skeleton,
NULL);
if (!skeleton)
return FALSE;
state = mm_gdbus_modem_sar_get_state (skeleton);
g_object_unref (skeleton);
return state;
}
guint
mm_iface_modem_sar_get_power_level (MMIfaceModemSar *self)
{
@@ -222,6 +204,15 @@ handle_set_power_level_auth_ready (MMBaseModem *self,
return;
}
if (!mm_gdbus_modem_sar_get_state (ctx->skeleton)) {
g_dbus_method_invocation_return_error (ctx->invocation,
MM_CORE_ERROR,
MM_CORE_ERROR_WRONG_STATE,
"Cannot set SAR power level: SAR is disabled");
handle_set_power_level_context_free (ctx);
return;
}
mm_obj_dbg (self, "Set SAR power level to: '%d'", ctx->power_level);
MM_IFACE_MODEM_SAR_GET_INTERFACE (ctx->self)->set_power_level (
ctx->self,

View File

@@ -96,7 +96,6 @@ void mm_iface_modem_sar_shutdown (MMIfaceModemSar *self);
void mm_iface_modem_sar_bind_simple_status (MMIfaceModemSar*self,
MMSimpleStatus *status);
gboolean mm_iface_modem_get_sar_state (MMIfaceModemSar *self);
guint mm_iface_modem_sar_get_power_level (MMIfaceModemSar *self);
guint mm_iface_modem_sar_get_power_level (MMIfaceModemSar *self);
#endif /* MM_IFACE_MODEM_SAR_H */