Top |
QmiMessage is a generic type representing a QMI message of any kind (request, response, indication) or service (including QMI_SERVICE_CTL).
This set of generic routines help in handling these message types, and allow creating any kind of message with any kind of TLV.
QmiMessage * qmi_message_new (QmiService service
,guint8 client_id
,guint16 transaction_id
,guint16 message_id
);
Create a new QmiMessage with the specified parameters.
Note that transaction_id
must be less than G_MAXUINT8 if service
is
QMI_SERVICE_CTL.
service |
||
client_id |
client ID of the originating control point. |
|
transaction_id |
transaction ID. |
|
message_id |
message ID. |
a newly created QmiMessage. The returned value should be freed with qmi_message_unref()
.
[transfer full]
QmiMessage * qmi_message_new_from_raw (GByteArray *raw
,GError **error
);
Create a new QmiMessage from the given raw data buffer.
Whenever a complete QMI message is read, its raw data gets removed from the raw
buffer.
a newly created QmiMessage, which should be freed with qmi_message_unref()
. If raw
doesn't contain a complete QMI message NULL is returned. If there is a complete QMI message but it appears not to be valid, NULL is returned and error
is set.
[transfer full]
QmiMessage * qmi_message_response_new (QmiMessage *request
,QmiProtocolError error
);
Create a new response QmiMessage for the specified request
.
a newly created QmiMessage. The returned value should be freed with qmi_message_unref()
.
[transfer full]
QmiMessage *
qmi_message_ref (QmiMessage *self
);
Atomically increments the reference count of self
by one.
void
qmi_message_unref (QmiMessage *self
);
Atomically decrements the reference count of self
by one.
If the reference count drops to 0, self
is completely disposed.
gboolean
qmi_message_is_request (QmiMessage *self
);
Checks whether the given QmiMessage is a request.
gboolean
qmi_message_is_response (QmiMessage *self
);
Checks whether the given QmiMessage is a response.
gboolean
qmi_message_is_indication (QmiMessage *self
);
Checks whether the given QmiMessage is an indication.
QmiService
qmi_message_get_service (QmiMessage *self
);
Gets the service corresponding to the given QmiMessage.
guint8
qmi_message_get_client_id (QmiMessage *self
);
Gets the client ID of the message.
guint16
qmi_message_get_transaction_id (QmiMessage *self
);
Gets the transaction ID of the message.
guint16
qmi_message_get_message_id (QmiMessage *self
);
Gets the ID of the message.
gsize
qmi_message_get_length (QmiMessage *self
);
Gets the length of the raw data corresponding to the given QmiMessage.
const guint8 * qmi_message_get_raw (QmiMessage *self
,gsize *length
,GError **error
);
Gets the raw data buffer of the QmiMessage.
self |
a QmiMessage. |
|
length |
return location for the size of the output buffer. |
[out] |
error |
return location for error or |
gboolean qmi_message_get_version_introduced (QmiMessage *self
,guint *major
,guint *minor
);
Gets, if known, the service version in which the given message was first introduced.
self |
a QmiMessage. |
|
major |
(out) return location for the major version. |
|
minor |
(out) return location for the minor version. |
void (*QmiMessageForeachRawTlvFn) (guint8 type
,const guint8 *value
,gsize length
,gpointer user_data
);
void qmi_message_foreach_raw_tlv (QmiMessage *self
,QmiMessageForeachRawTlvFn func
,gpointer user_data
);
Calls the given function for each TLV found within the QmiMessage.
self |
a QmiMessage. |
|
func |
the function to call for each TLV. |
|
user_data |
user data to pass to the function. |
const guint8 * qmi_message_get_raw_tlv (QmiMessage *self
,guint8 type
,guint16 *length
);
Get the raw data buffer of a specific TLV within the QmiMessage.
self |
a QmiMessage. |
|
type |
specific ID of the TLV to get. |
|
length |
return location for the length of the TLV. |
[out] |
gboolean qmi_message_add_raw_tlv (QmiMessage *self
,guint8 type
,const guint8 *raw
,gsize length
,GError **error
);
Creates a new type
TLV with the value given in raw
, and adds it to the QmiMessage.
self |
a QmiMessage. |
|
type |
specific ID of the TLV to add. |
|
raw |
raw data buffer with the value of the TLV. |
|
length |
length of the raw data buffer. |
|
error |
return location for error or |
void qmi_message_set_transaction_id (QmiMessage *self
,guint16 transaction_id
);
Overwrites the transaction ID of the message.
gchar * qmi_message_get_printable (QmiMessage *self
,const gchar *line_prefix
);
Gets a printable string with the contents of the whole QMI message.
If known, the printable string will contain translated TLV values as well as the raw data buffer contents.
gchar * qmi_message_get_tlv_printable (QmiMessage *self
,const gchar *line_prefix
,guint8 type
,const guint8 *raw
,gsize raw_length
);
Gets a printable string with the contents of the TLV.
This method is the most generic one and doesn't try to translate the TLV contents.
self |
a QmiMessage. |
|
line_prefix |
prefix string to use in each new generated line. |
|
type |
type of the TLV. |
|
raw |
raw data buffer with the value of the TLV. |
|
raw_length |
length of the raw data buffer. |