| libqmi-glib Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | ||||
#define QMI_MESSAGE_QMUX_MARKER typedef QmiMessage; QmiMessage * qmi_message_new (QmiService service,guint8 client_id,guint16 transaction_id,guint16 message_id); QmiMessage * qmi_message_new_from_raw (GByteArray *raw,GError **error); QmiMessage * qmi_message_response_new (QmiMessage *request,QmiProtocolError error); QmiMessage * qmi_message_ref (QmiMessage *self); void qmi_message_unref (QmiMessage *self); gboolean qmi_message_is_request (QmiMessage *self); gboolean qmi_message_is_response (QmiMessage *self); gboolean qmi_message_is_indication (QmiMessage *self); QmiService qmi_message_get_service (QmiMessage *self); guint8 qmi_message_get_client_id (QmiMessage *self); guint16 qmi_message_get_transaction_id (QmiMessage *self); guint16 qmi_message_get_message_id (QmiMessage *self); gsize qmi_message_get_length (QmiMessage *self); const guint8 * qmi_message_get_raw (QmiMessage *self,gsize *length,GError **error); gboolean qmi_message_get_version_introduced (QmiMessage *self,guint *major,guint *minor); 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); const guint8 * qmi_message_get_raw_tlv (QmiMessage *self,guint8 type,guint16 *length); gboolean qmi_message_add_raw_tlv (QmiMessage *self,guint8 type,const guint8 *raw,gsize length,GError **error); void qmi_message_set_transaction_id (QmiMessage *self,guint16 transaction_id); gchar * qmi_message_get_printable (QmiMessage *self,const gchar *line_prefix); gchar * qmi_message_get_tlv_printable (QmiMessage *self,const gchar *line_prefix,guint8 type,const guint8 *raw,gsize raw_length);
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.
|
a QmiService |
|
client ID of the originating control point. |
|
transaction ID. |
|
message ID. |
Returns : |
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.
|
raw data buffer. [inout] |
|
return location for error or NULL. |
Returns : |
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 request QmiMessage. |
|
a QmiProtocolError to set in the result TLV. |
Returns : |
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.
|
a QmiMessage. |
Returns : |
(transfer full) the new reference to self. |
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.
|
a QmiMessage. |
gboolean qmi_message_is_request (QmiMessage *self);
Checks whether the given QmiMessage is a request.
|
a QmiMessage. |
Returns : |
TRUE if self is a request message, FALSE otherwise. |
gboolean qmi_message_is_response (QmiMessage *self);
Checks whether the given QmiMessage is a response.
|
a QmiMessage. |
Returns : |
TRUE if self is a response message, FALSE otherwise. |
gboolean qmi_message_is_indication (QmiMessage *self);
Checks whether the given QmiMessage is an indication.
|
a QmiMessage. |
Returns : |
TRUE if self is an indication message, FALSE otherwise. |
QmiService qmi_message_get_service (QmiMessage *self);
Gets the service corresponding to the given QmiMessage.
|
a QmiMessage. |
Returns : |
a QmiService. |
guint8 qmi_message_get_client_id (QmiMessage *self);
Gets the client ID of the message.
|
a QmiMessage. |
Returns : |
the client ID. |
guint16 qmi_message_get_transaction_id (QmiMessage *self);
Gets the transaction ID of the message.
|
a QmiMessage. |
Returns : |
the transaction ID. |
guint16 qmi_message_get_message_id (QmiMessage *self);
Gets the ID of the message.
|
a QmiMessage. |
Returns : |
the ID. |
gsize qmi_message_get_length (QmiMessage *self);
Gets the length of the raw data corresponding to the given QmiMessage.
|
a QmiMessage. |
Returns : |
the length of the raw data. |
const guint8 * qmi_message_get_raw (QmiMessage *self,gsize *length,GError **error);
Gets the raw data buffer of the QmiMessage.
|
a QmiMessage. |
|
return location for the size of the output buffer. [out] |
|
return location for error or NULL. |
Returns : |
The raw data buffer, or NULL if error is set. [transfer none]
|
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.
|
a QmiMessage. |
|
(out) return location for the major version. |
|
(out) return location for the minor version. |
Returns : |
TRUE if major and minor are set, FALSE otherwise. |
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.
|
a QmiMessage. |
|
the function to call for each TLV. |
|
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.
|
a QmiMessage. |
|
specific ID of the TLV to get. |
|
return location for the length of the TLV. [out] |
Returns : |
The raw data buffer of the TLV, or NULL if not found. [transfer none] |
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.
|
a QmiMessage. |
|
specific ID of the TLV to add. |
|
raw data buffer with the value of the TLV. |
|
length of the raw data buffer. |
|
return location for error or NULL. |
Returns : |
TRUE if the TLV as successfully added, otherwise FALSE is returned and error is set. |
void qmi_message_set_transaction_id (QmiMessage *self,guint16 transaction_id);
Overwrites the transaction ID of the message.
|
a QmiMessage. |
|
transaction id. |
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.
|
a QmiMessage. |
|
prefix string to use in each new generated line. |
Returns : |
a newly allocated string, which should be freed with g_free(). [transfer full]
|
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.
|
a QmiMessage. |
|
prefix string to use in each new generated line. |
|
type of the TLV. |
|
raw data buffer with the value of the TLV. |
|
length of the raw data buffer. |
Returns : |
a newly allocated string, which should be freed with g_free(). [transfer full]
|