diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-10-16 23:53:43 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-10-19 08:27:23 +0000 |
commit | db6f397e3e568487da7da3dcfca52533d9b675b3 (patch) | |
tree | bc82e52147bffefee21cdfd2140b271870e66702 /src/mm-modem-helpers-mbim.c | |
parent | 7663a2e6c383bb68f31c91ca51ba2801ee990c6e (diff) |
broadband-modem-mbim: implement current mode switching using 'Register State v2'
Use the new Preferred Data Classes field in the Register State v2
message in order to know if the modes requested in the Set message are
the expected ones or not.
Based on an initial implementation by Som_SP <somashekhar.puttagangaiah@intel.com>
Diffstat (limited to 'src/mm-modem-helpers-mbim.c')
-rw-r--r-- | src/mm-modem-helpers-mbim.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/mm-modem-helpers-mbim.c b/src/mm-modem-helpers-mbim.c index 8d05227a..0f9957e5 100644 --- a/src/mm-modem-helpers-mbim.c +++ b/src/mm-modem-helpers-mbim.c @@ -123,6 +123,48 @@ mm_modem_3gpp_registration_state_from_mbim_register_state (MbimRegisterState sta /*****************************************************************************/ +MMModemMode +mm_modem_mode_from_mbim_data_class (MbimDataClass data_class) +{ + MMModemMode mask = MM_MODEM_MODE_NONE; + + if (data_class & MBIM_DATA_CLASS_GPRS) + mask |= MM_MODEM_MODE_2G; + if (data_class & MBIM_DATA_CLASS_EDGE) + mask |= MM_MODEM_MODE_2G; + if (data_class & MBIM_DATA_CLASS_UMTS) + mask |= MM_MODEM_MODE_3G; + if (data_class & MBIM_DATA_CLASS_HSDPA) + mask |= MM_MODEM_MODE_3G; + if (data_class & MBIM_DATA_CLASS_HSUPA) + mask |= MM_MODEM_MODE_3G; + if (data_class & MBIM_DATA_CLASS_LTE) + mask |= MM_MODEM_MODE_4G; + if(data_class & MBIM_DATA_CLASS_5G_NSA) + mask |= MM_MODEM_MODE_5G; + if(data_class & MBIM_DATA_CLASS_5G_SA) + mask |= MM_MODEM_MODE_5G; + + return mask; +} + +MbimDataClass +mm_mbim_data_class_from_modem_mode (MMModemMode modem_mode) +{ + MbimDataClass mask = 0; + + if (modem_mode & MM_MODEM_MODE_2G) + mask |= MBIM_DATA_CLASS_GPRS | MBIM_DATA_CLASS_EDGE; + if (modem_mode & MM_MODEM_MODE_3G) + mask |= MBIM_DATA_CLASS_UMTS | MBIM_DATA_CLASS_HSDPA | MBIM_DATA_CLASS_HSUPA; + if (modem_mode & MM_MODEM_MODE_4G) + mask |= MBIM_DATA_CLASS_LTE; + if (modem_mode & MM_MODEM_MODE_5G) + mask |= MBIM_DATA_CLASS_5G_NSA | MBIM_DATA_CLASS_5G_SA; + + return mask; +} + MMModemAccessTechnology mm_modem_access_technology_from_mbim_data_class (MbimDataClass data_class) { |