| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
| |
Use the new generic string to enum processor instead.
|
|
|
|
| |
Use the new generic string to enum processor instead.
|
| |
|
|
|
|
|
|
|
|
|
| |
input format
This validation should not be applied when using key-value pairs,
we should instead just pass whatever we received to the device,
without any additional validation on top, as we do with other
commands.
|
|
|
|
|
| |
Simplify the parser method to receive the ConnectActivateProperties to
be used as output.
|
|
|
|
|
| |
Let's try to have a consolidated naming for keys in different
commands.
|
|
|
|
| |
--ms-set-provisioned-contexts
|
|
|
|
|
|
|
| |
Don't fail on some duplicated key-value pairs; just overwrite the old
ones in all possible keys. This gives us a consistent behavior in all
keys, instead of different behaviors depending on which is the key
being processed.
|
|
|
|
|
|
| |
This may work for enums with just a couple of values, but there are
enums with ton of different possible values, and we cannot document
all those there.
|
| |
|
| |
|
|
|
|
|
| |
Let's avoid having the v2 suffix in the enum names, and also make sure
the enum names follow the usual conventions in the library.
|
| |
|
|
|
|
|
| |
This CID is an extension for the MBIM_CID_MS_PROVISIONED_CONTEXT already
defined in the MBIM specification revision 1.0.
|
| |
|
| |
|
|
|
|
|
|
|
| |
The struct fields that are known public formats are currently being
defined as generic integers. We should keep that for now not to break
API, but we can at least provide the public format type in the struct
documentation.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new 'ms-struct-array' type is a complex type that has one single
purpose for now: supporting the Signal State v2 message defined by
Microsoft.
This is NOT a generic array type.
The array is defined as 2 uint32 values in the fixed buffer, one
giving the offset to where the intermediate struct starts, and the
next one with the full size of the whole intermediate struct (which we
read but silently ignore).
The intermediate struct has a first uint32 value with the amount of
elements in the array, and then the array itself follows. The elements
of the array are structs with fixed size.
If the number of elements in the array is 0, the pointer to the
intermediate struct will be 0x00000000.
Microsoft, next time please use the standard way of defininig struct
arrays in MBIM, i.e. by the means of using arrays of OL pairs (our
'ref-struct-array' type in libmbim).
|
| |
|
|
|
|
|
|
|
|
|
| |
Instead of trying to build a single common method to parse or build
struct array types, write separate methods, one for each type.
E.g. before we had a single builder_append_{struct_type}_struct_array
method used for both 'struct-array' and 'ref-struct-array' types. Now,
we have a separate specific method for each.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
If we receive a request to print the contents of a message with a CID
that is not supported in the library, return an UNSUPPORTED error.
This will also allow us to fallback print as v1 the Basic Connect
messages from v2 which we don't support yet, or those which don't have
a counterpart in the v2 set.
|
|
|
|
|
| |
The 'Packet Service' in the extended v2.0 version includes an
additional 'Frequency Range' bitmask field.
|
|
|
|
|
|
|
|
| |
This command is an extension for the existing MBIM_CID_PACKET_SERVICE
defined in the MBIM specification revision 1.0. This extension adds a
new member called FrequencyRange for the response structure and
renamed the HighestAvailableDataClass member to CurrentDataClass to
clarify its purpose.
|
|
|
|
|
|
| |
When a new client connects to the proxy and opens a session, send back
the "Version" notification with the current MBIMEx version in use, so
that every process is in sync.
|
|
|
|
|
|
| |
When the MBIMEx version exchange is agreed between a different host
process and the modem, the mbim-proxy will let us know what the agreed
version is automatically.
|
|
|
|
|
|
|
| |
If the proxy detects that one of the remote clients has performed a
MBIMEx version agreement interaction with the device, notify about the
new reported version to all clients, using a new 'Version'
notification in the 'Proxy Control' service.
|
|
|
|
|
|
|
| |
The mbim-proxy will monitor the MBIMEx version exchanges that the
remote clients do with the actual devices, and any time a successful
exchange is detected, it will track the reported MBIMEx version as the
one currently in use in the internal device instance.
|
|
|
|
|
| |
The 'Register State' in the extended v2.0 version includes an
additional 'Preferred Data Classes' bitmask field.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
message
This service specifies new versions of the messages (API breaks) in
the generic Basic Connect service, and therefore it reuses the same
service UUID and message CID definitions as in the original Basic
Connect service.
Only the 'Register State' message support is implemented at this
stage.
|
|
|
|
|
|
| |
The database of messages is structured so that the first item in each
file is the object defining the service, so we can therefore use that
information to populate all the additional messages that would follow.
|
|
|
|
| |
As per the Microsoft MBIM Extensions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The exchange of the MBIMEx version to use between host and device is
exclusively done via the MBIM_DEVICE_OPEN_FLAGS_MS_MBIMEX_V2 flag in
the mbim_device_open_full() request. Once this request finishes, the
device instance will know which is the MBIMEx version agreed, and the
user can gather this same information with the new version getter
method.
In addition to the version getter, a simple version checker method is
also implemented, which allows users of the API to quickly check
whether the agreed version is equal or greater than the given one, and
this helps writing clear code doing the checks.
A new setter method is also provided for the device object, which is
supposed to be used when the user already knows which specific version
has been agreed between host and device. The setter doesn't do any
MBIM interaction with the real device, it just updates its internal
records of which the current MBIMEx version is.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Microsoft MBIM extensions for the Basic Connect service define API
breaks in the MBIM messages. In order to properly use the correct API,
the first interaction between host and device should define which is
the version of the protocol extensions agreed to use between both.
When the MBIM session is opened, the process managing the modem in the
host will specify the maximum version it supports, and the modem will
reply with the maximum version that both support.
E.g.:
* If the host does not run the initialization sequence, both assume
v1.0 is the version to use (backwards compatibility).
* If the host reports that it supports MBIMEx v2.0 but the modem
does not support any version other than 1.0, it will return an
error, and both assume v1.0 is the version to use.
* If the host reports MBIMEx v2.0 and the modem also supports that
version (may or may not support other newer ones as well), it will
return MBIMEx v2.0 as supported and it will be the agreed version
to use.
* If the host reports MBIMEx v3.0, but the modem only supports v2.0,
it will return MBIMEx v2.0 as supported and it will be the agreed version
to use.
Based on a patch written by:
Som_SP <somashekhar.puttagangaiah@intel.com>.
|
| |
|
| |
|
|
|
|
|
|
| |
When using meson all builds are out of the source tree, so we can skip
the need of ignoring specific files as we required when using
autotools.
|
| |
|
|
|
|
|
|
|
| |
Although not totally necessary due to its implementation, some files
built by meson are included as content files.
They have been explicitly added for the sake of correctness.
|
|
|
|
|
|
|
| |
meson's test function already sets the `MALLOC_PERTURB_` environment
variable[0], so there is no need to set it.
[0] https://mesonbuild.com/Reference-manual.html#test
|
|
|
|
|
|
| |
The version script linker flag is used even if it is not available.
This has been changed to check first for its availability.
|
|
|
|
|
|
|
|
| |
`install_header` allows the use of the `subdir` parameter that
points to the subdirectory in the `includedir` directory.
However, to maintain consistency, this has been changed to use the
`install_dir` parameter.
|