Telit ModemManager plugin improvements

As a result of a request in ModemManager mailing list related to a missing feature in Telit ModemManager plugin when using Telit LE910-EU1 in MBIM composition, I spent some time trying to improve Telit plugin MBIM support, with the help of Aleksander, ModemManager maintainer.

Telit ModemManager

Basically previous than commits

telit: move shared functions to mm-shared-telit

telit: add Telit MBIM broadband modem

MBIM support in Telit plugin was available through the generic MBIM implementation (see previous round of changes related to this topic).

The generic MBIM plugin, being indeed generic, does not know how to handle requests not provided by the MBIM protocol. Vendor plugins usually manage those through the additional AT ports that a modem commonly expose, but, in order to work, vendor plugin should implement their custom MBIM broadband modem subclassing the generic one and implementing the missing features.

Changes in Telit ModemManager plugin

Since the AT commands used for implementing the new features when using a Telit MBIM-based modem are the same used in an AT-based one, the first obvious step is to create a shared Telit class, used just to share common codes among different modem types (like done in many other ModemManager plugins): this is achieved by the first commit.

Once the shared clas is available, a new MBIM mobile broadband type should be created, subclassing the missing feature, done in the second commit. Almost all subclassed methods belong to the shared class apart from the supported modes retrieval one: this is because the AT modem was leveraging what done by its parent (+WS46 and +GCAP), but this was not possible with the MBIM modem, so for the MBIM modem, collecting the information only through +WS46 was enough.

Currently modes and bands additional features were added to the new MBIM type, but, if needed, more features can be implemented.

This development allowed me also to use for the first time gitlab, the new preferred method for contributing to ModemManager: compared to patch submission through mailing list, while probably decreasing a bit the sense of community, it helps in simplifying the flow and, at the end, being more efficient (e.g. easier code review, build check after pushing).