| 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. |