
/* GENERATED CODE... DO NOT EDIT */

/*
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301 USA.
 *
 * Copyright (C) 2012 Lanedo GmbH
 * Copyright (C) 2012-2022 Aleksander Morgado <aleksander@aleksander.es>
 */


#include <glib.h>
#include <glib-object.h>
#include <gio/gio.h>

#include "qmi-enums.h"
#include "qmi-message.h"
#include "qmi-client.h"

#ifndef __LIBQMI_GLIB_QMI_DPM__
#define __LIBQMI_GLIB_QMI_DPM__

G_BEGIN_DECLS

#define HAVE_QMI_MESSAGE_DPM_OPEN_PORT

/* messages unsupported in collection */
/* HAVE_QMI_MESSAGE_DPM_CLOSE_PORT */

/*****************************************************************************/
/* REQUEST/RESPONSE: Qmi Message DPM Open Port */


/* --- Input -- */


/**
 * QmiMessageDpmOpenPortInputSoftwareDataPortsElement:
 * @endpoint_type: a #QmiDataEndpointType.
 * @interface_number: a #guint32.
 * @port_name: a string.
 *
 * A QmiMessageDpmOpenPortInputSoftwareDataPortsElement struct.
 *
 * Since: 1.30
 */
typedef struct _QmiMessageDpmOpenPortInputSoftwareDataPortsElement {
    QmiDataEndpointType endpoint_type;
    guint32 interface_number;
    gchar *port_name;
} QmiMessageDpmOpenPortInputSoftwareDataPortsElement;

GType qmi_message_dpm_open_port_input_software_data_ports_element_get_type (void) G_GNUC_CONST;


/**
 * QmiMessageDpmOpenPortInputHardwareDataPortsElement:
 * @endpoint_type: a #QmiDataEndpointType.
 * @interface_number: a #guint32.
 * @rx_endpoint_number: a #guint32.
 * @tx_endpoint_number: a #guint32.
 *
 * A QmiMessageDpmOpenPortInputHardwareDataPortsElement struct.
 *
 * Since: 1.30
 */
typedef struct _QmiMessageDpmOpenPortInputHardwareDataPortsElement {
    QmiDataEndpointType endpoint_type;
    guint32 interface_number;
    guint32 rx_endpoint_number;
    guint32 tx_endpoint_number;
} QmiMessageDpmOpenPortInputHardwareDataPortsElement;

GType qmi_message_dpm_open_port_input_hardware_data_ports_element_get_type (void) G_GNUC_CONST;


/**
 * QmiMessageDpmOpenPortInputControlPortsElement:
 * @port_name: a string.
 * @endpoint_type: a #QmiDataEndpointType.
 * @interface_number: a #guint32.
 *
 * A QmiMessageDpmOpenPortInputControlPortsElement struct.
 *
 * Since: 1.30
 */
typedef struct _QmiMessageDpmOpenPortInputControlPortsElement {
    gchar *port_name;
    QmiDataEndpointType endpoint_type;
    guint32 interface_number;
} QmiMessageDpmOpenPortInputControlPortsElement;

GType qmi_message_dpm_open_port_input_control_ports_element_get_type (void) G_GNUC_CONST;

/**
 * QmiMessageDpmOpenPortInput:
 *
 * The #QmiMessageDpmOpenPortInput structure contains private data and should only be accessed
 * using the provided API.
 *
 * Since: 1.30
 */
typedef struct _QmiMessageDpmOpenPortInput QmiMessageDpmOpenPortInput;
GType qmi_message_dpm_open_port_input_get_type (void) G_GNUC_CONST;
#define QMI_TYPE_MESSAGE_DPM_OPEN_PORT_INPUT (qmi_message_dpm_open_port_input_get_type ())


/**
 * qmi_message_dpm_open_port_input_get_software_data_ports: (skip)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_software_data_ports: (out)(optional)(element-type QmiMessageDpmOpenPortInputSoftwareDataPortsElement)(transfer none): a placeholder for the output #GArray of #QmiMessageDpmOpenPortInputSoftwareDataPortsElement elements, or %NULL if not required. Do not free it, it is owned by @self.
 * @error: Return location for error or %NULL.
 *
 * Get the 'Software Data Ports' field from @self.
 *
 * Returns: (skip): %TRUE if the field is found, %FALSE otherwise.
 *
 * Since: 1.30
 */
gboolean qmi_message_dpm_open_port_input_get_software_data_ports (
    QmiMessageDpmOpenPortInput *self,
    GArray **value_software_data_ports,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_get_software_data_ports_gir: (rename-to qmi_message_dpm_open_port_input_get_software_data_ports)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_software_data_ports_ptr: (out)(optional)(element-type QmiMessageDpmOpenPortInputSoftwareDataPortsElement)(transfer none): a placeholder for the output array of #QmiMessageDpmOpenPortInputSoftwareDataPortsElement elements, or %NULL if not required. Do not free or modify it, it is owned by @self.
 * @error: Return location for error or %NULL.
 *
 * Get the 'Software Data Ports' field from @self.
 *
 * Version of qmi_message_dpm_open_port_input_get_software_data_ports() using arrays of pointers to
 * structs instead of arrays of structs, for easier binding in other languages.
 *
 * Returns: (skip): %TRUE if the field is found, %FALSE otherwise.
 *
 * Since: 1.32
 */
gboolean qmi_message_dpm_open_port_input_get_software_data_ports_gir (
    QmiMessageDpmOpenPortInput *self,
    GPtrArray **value_software_data_ports_ptr,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_set_software_data_ports: (skip)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_software_data_ports: (in)(element-type QmiMessageDpmOpenPortInputSoftwareDataPortsElement)(transfer none): a #GArray of #QmiMessageDpmOpenPortInputSoftwareDataPortsElement elements. A new reference to @value_software_data_ports will be taken, so the caller must make sure the array was created with the correct #GDestroyNotify as clear function for each element in the array.
 * @error: Return location for error or %NULL.
 *
 * Set the 'Software Data Ports' field in the message.
 *
 * Returns: (skip): %TRUE if @value was successfully set, %FALSE otherwise.
 *
 * Since: 1.30
 */
gboolean qmi_message_dpm_open_port_input_set_software_data_ports (
    QmiMessageDpmOpenPortInput *self,
    GArray *value_software_data_ports,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_set_software_data_ports_gir: (rename-to qmi_message_dpm_open_port_input_set_software_data_ports)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_software_data_ports_ptr: (in)(element-type QmiMessageDpmOpenPortInputSoftwareDataPortsElement)(transfer none): array of #QmiMessageDpmOpenPortInputSoftwareDataPortsElement elements. The contents of the given array will be copied, the #GPtrArray will not increase its reference count.
 * @error: Return location for error or %NULL.
 *
 * Set the 'Software Data Ports' field in the message.
 *
 * Returns: (skip): %TRUE if @value was successfully set, %FALSE otherwise.
 *
 * Since: 1.32
 */
gboolean qmi_message_dpm_open_port_input_set_software_data_ports_gir (
    QmiMessageDpmOpenPortInput *self,
    GPtrArray *value_software_data_ports_ptr,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_get_hardware_data_ports: (skip)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_hardware_data_ports: (out)(optional)(element-type QmiMessageDpmOpenPortInputHardwareDataPortsElement)(transfer none): a placeholder for the output #GArray of #QmiMessageDpmOpenPortInputHardwareDataPortsElement elements, or %NULL if not required. Do not free it, it is owned by @self.
 * @error: Return location for error or %NULL.
 *
 * Get the 'Hardware Data Ports' field from @self.
 *
 * Returns: (skip): %TRUE if the field is found, %FALSE otherwise.
 *
 * Since: 1.30
 */
gboolean qmi_message_dpm_open_port_input_get_hardware_data_ports (
    QmiMessageDpmOpenPortInput *self,
    GArray **value_hardware_data_ports,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_get_hardware_data_ports_gir: (rename-to qmi_message_dpm_open_port_input_get_hardware_data_ports)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_hardware_data_ports_ptr: (out)(optional)(element-type QmiMessageDpmOpenPortInputHardwareDataPortsElement)(transfer none): a placeholder for the output array of #QmiMessageDpmOpenPortInputHardwareDataPortsElement elements, or %NULL if not required. Do not free or modify it, it is owned by @self.
 * @error: Return location for error or %NULL.
 *
 * Get the 'Hardware Data Ports' field from @self.
 *
 * Version of qmi_message_dpm_open_port_input_get_hardware_data_ports() using arrays of pointers to
 * structs instead of arrays of structs, for easier binding in other languages.
 *
 * Returns: (skip): %TRUE if the field is found, %FALSE otherwise.
 *
 * Since: 1.32
 */
gboolean qmi_message_dpm_open_port_input_get_hardware_data_ports_gir (
    QmiMessageDpmOpenPortInput *self,
    GPtrArray **value_hardware_data_ports_ptr,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_set_hardware_data_ports: (skip)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_hardware_data_ports: (in)(element-type QmiMessageDpmOpenPortInputHardwareDataPortsElement)(transfer none): a #GArray of #QmiMessageDpmOpenPortInputHardwareDataPortsElement elements. A new reference to @value_hardware_data_ports will be taken, so the caller must make sure the array was created with the correct #GDestroyNotify as clear function for each element in the array.
 * @error: Return location for error or %NULL.
 *
 * Set the 'Hardware Data Ports' field in the message.
 *
 * Returns: (skip): %TRUE if @value was successfully set, %FALSE otherwise.
 *
 * Since: 1.30
 */
gboolean qmi_message_dpm_open_port_input_set_hardware_data_ports (
    QmiMessageDpmOpenPortInput *self,
    GArray *value_hardware_data_ports,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_set_hardware_data_ports_gir: (rename-to qmi_message_dpm_open_port_input_set_hardware_data_ports)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_hardware_data_ports_ptr: (in)(element-type QmiMessageDpmOpenPortInputHardwareDataPortsElement)(transfer none): array of #QmiMessageDpmOpenPortInputHardwareDataPortsElement elements. The contents of the given array will be copied, the #GPtrArray will not increase its reference count.
 * @error: Return location for error or %NULL.
 *
 * Set the 'Hardware Data Ports' field in the message.
 *
 * Returns: (skip): %TRUE if @value was successfully set, %FALSE otherwise.
 *
 * Since: 1.32
 */
gboolean qmi_message_dpm_open_port_input_set_hardware_data_ports_gir (
    QmiMessageDpmOpenPortInput *self,
    GPtrArray *value_hardware_data_ports_ptr,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_get_control_ports: (skip)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_control_ports: (out)(optional)(element-type QmiMessageDpmOpenPortInputControlPortsElement)(transfer none): a placeholder for the output #GArray of #QmiMessageDpmOpenPortInputControlPortsElement elements, or %NULL if not required. Do not free it, it is owned by @self.
 * @error: Return location for error or %NULL.
 *
 * Get the 'Control Ports' field from @self.
 *
 * Returns: (skip): %TRUE if the field is found, %FALSE otherwise.
 *
 * Since: 1.30
 */
gboolean qmi_message_dpm_open_port_input_get_control_ports (
    QmiMessageDpmOpenPortInput *self,
    GArray **value_control_ports,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_get_control_ports_gir: (rename-to qmi_message_dpm_open_port_input_get_control_ports)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_control_ports_ptr: (out)(optional)(element-type QmiMessageDpmOpenPortInputControlPortsElement)(transfer none): a placeholder for the output array of #QmiMessageDpmOpenPortInputControlPortsElement elements, or %NULL if not required. Do not free or modify it, it is owned by @self.
 * @error: Return location for error or %NULL.
 *
 * Get the 'Control Ports' field from @self.
 *
 * Version of qmi_message_dpm_open_port_input_get_control_ports() using arrays of pointers to
 * structs instead of arrays of structs, for easier binding in other languages.
 *
 * Returns: (skip): %TRUE if the field is found, %FALSE otherwise.
 *
 * Since: 1.32
 */
gboolean qmi_message_dpm_open_port_input_get_control_ports_gir (
    QmiMessageDpmOpenPortInput *self,
    GPtrArray **value_control_ports_ptr,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_set_control_ports: (skip)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_control_ports: (in)(element-type QmiMessageDpmOpenPortInputControlPortsElement)(transfer none): a #GArray of #QmiMessageDpmOpenPortInputControlPortsElement elements. A new reference to @value_control_ports will be taken, so the caller must make sure the array was created with the correct #GDestroyNotify as clear function for each element in the array.
 * @error: Return location for error or %NULL.
 *
 * Set the 'Control Ports' field in the message.
 *
 * Returns: (skip): %TRUE if @value was successfully set, %FALSE otherwise.
 *
 * Since: 1.30
 */
gboolean qmi_message_dpm_open_port_input_set_control_ports (
    QmiMessageDpmOpenPortInput *self,
    GArray *value_control_ports,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_set_control_ports_gir: (rename-to qmi_message_dpm_open_port_input_set_control_ports)
 * @self: a #QmiMessageDpmOpenPortInput.
 * @value_control_ports_ptr: (in)(element-type QmiMessageDpmOpenPortInputControlPortsElement)(transfer none): array of #QmiMessageDpmOpenPortInputControlPortsElement elements. The contents of the given array will be copied, the #GPtrArray will not increase its reference count.
 * @error: Return location for error or %NULL.
 *
 * Set the 'Control Ports' field in the message.
 *
 * Returns: (skip): %TRUE if @value was successfully set, %FALSE otherwise.
 *
 * Since: 1.32
 */
gboolean qmi_message_dpm_open_port_input_set_control_ports_gir (
    QmiMessageDpmOpenPortInput *self,
    GPtrArray *value_control_ports_ptr,
    GError **error);


/**
 * qmi_message_dpm_open_port_input_ref:
 * @self: a #QmiMessageDpmOpenPortInput.
 *
 * Atomically increments the reference count of @self by one.
 *
 * Returns: the new reference to @self.
 *
 * Since: 1.30
 */
QmiMessageDpmOpenPortInput *qmi_message_dpm_open_port_input_ref (QmiMessageDpmOpenPortInput *self);

/**
 * qmi_message_dpm_open_port_input_unref:
 * @self: a #QmiMessageDpmOpenPortInput.
 *
 * Atomically decrements the reference count of @self by one.
 * If the reference count drops to 0, @self is completely disposed.
 *
 * Since: 1.30
 */
void qmi_message_dpm_open_port_input_unref (QmiMessageDpmOpenPortInput *self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (QmiMessageDpmOpenPortInput, qmi_message_dpm_open_port_input_unref)

/**
 * qmi_message_dpm_open_port_input_new:
 *
 * Allocates a new #QmiMessageDpmOpenPortInput.
 *
 * Returns: the newly created #QmiMessageDpmOpenPortInput. The returned value should be freed with qmi_message_dpm_open_port_input_unref().
 *
 * Since: 1.30
 */
QmiMessageDpmOpenPortInput *qmi_message_dpm_open_port_input_new (void);

/* --- Output -- */

/**
 * QmiMessageDpmOpenPortOutput:
 *
 * The #QmiMessageDpmOpenPortOutput structure contains private data and should only be accessed
 * using the provided API.
 *
 * Since: 1.30
 */
typedef struct _QmiMessageDpmOpenPortOutput QmiMessageDpmOpenPortOutput;
GType qmi_message_dpm_open_port_output_get_type (void) G_GNUC_CONST;
#define QMI_TYPE_MESSAGE_DPM_OPEN_PORT_OUTPUT (qmi_message_dpm_open_port_output_get_type ())


/**
 * qmi_message_dpm_open_port_output_get_result:
 * @self: a QmiMessageDpmOpenPortOutput.
 * @error: Return location for error or %NULL.
 *
 * Get the result of the QMI operation.
 *
 * Returns: (skip): %TRUE if the QMI operation succeeded, %FALSE if @error is set.
 *
 * Since: 1.30
 */
gboolean qmi_message_dpm_open_port_output_get_result (
    QmiMessageDpmOpenPortOutput *self,
    GError **error);


/**
 * qmi_message_dpm_open_port_output_ref:
 * @self: a #QmiMessageDpmOpenPortOutput.
 *
 * Atomically increments the reference count of @self by one.
 *
 * Returns: the new reference to @self.
 *
 * Since: 1.30
 */
QmiMessageDpmOpenPortOutput *qmi_message_dpm_open_port_output_ref (QmiMessageDpmOpenPortOutput *self);

/**
 * qmi_message_dpm_open_port_output_unref:
 * @self: a #QmiMessageDpmOpenPortOutput.
 *
 * Atomically decrements the reference count of @self by one.
 * If the reference count drops to 0, @self is completely disposed.
 *
 * Since: 1.30
 */
void qmi_message_dpm_open_port_output_unref (QmiMessageDpmOpenPortOutput *self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (QmiMessageDpmOpenPortOutput, qmi_message_dpm_open_port_output_unref)

/**
 * qmi_message_dpm_open_port_response_parse:
 * @message: a #QmiMessage.
 * @error: return location for error or %NULL.
 *
 * Parses a #QmiMessage and builds a #QmiMessageDpmOpenPortOutput out of it.
 * The operation fails if the message is of the wrong type.
 *
 * Returns: a #QmiMessageDpmOpenPortOutput, or %NULL if @error is set. The returned value should be freed with qmi_message_dpm_open_port_output_unref().
 *
 * Since: 1.34
 */
QmiMessageDpmOpenPortOutput *qmi_message_dpm_open_port_response_parse (
    QmiMessage *message,
    GError **error);

/*****************************************************************************/
/* Service-specific utils: DPM */


#if defined (LIBQMI_GLIB_COMPILATION)

G_GNUC_INTERNAL
gchar *__qmi_message_dpm_get_printable (
    QmiMessage *self,
    QmiMessageContext *context,
    const gchar *line_prefix);

#endif


#define HAVE_QMI_SERVICE_DPM

/*****************************************************************************/
/* CLIENT: QMI Client DPM */

#define QMI_TYPE_CLIENT_DPM            (qmi_client_dpm_get_type ())
#define QMI_CLIENT_DPM(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), QMI_TYPE_CLIENT_DPM, QmiClientDpm))
#define QMI_CLIENT_DPM_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  QMI_TYPE_CLIENT_DPM, QmiClientDpmClass))
#define QMI_IS_CLIENT_DPM(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), QMI_TYPE_CLIENT_DPM))
#define QMI_IS_CLIENT_DPM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  QMI_TYPE_CLIENT_DPM))
#define QMI_CLIENT_DPM_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  QMI_TYPE_CLIENT_DPM, QmiClientDpmClass))

typedef struct _QmiClientDpm QmiClientDpm;
typedef struct _QmiClientDpmClass QmiClientDpmClass;

/**
 * QmiClientDpm:
 *
 * #QmiClient which handles operations in the DPM service.
 *
 * The #QmiClientDpm structure contains private data and should only be accessed
 * using the provided API.
 *
 * Since: 1.30
 */
struct _QmiClientDpm {
    /*< private >*/
    QmiClient parent;
    gpointer priv_unused;
};

struct _QmiClientDpmClass {
    /*< private >*/
    QmiClientClass parent;
};

GType qmi_client_dpm_get_type (void);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (QmiClientDpm, g_object_unref)

/**
 * qmi_client_dpm_open_port:
 * @self: a #QmiClientDpm.
 * @input: a #QmiMessageDpmOpenPortInput.
 * @timeout: maximum time to wait for the method to complete, in seconds.
 * @cancellable: a #GCancellable or %NULL.
 * @callback: a #GAsyncReadyCallback to call when the request is satisfied.
 * @user_data: user data to pass to @callback.
 *
 * Asynchronously sends a Open Port request to the device.
 *
 * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from.
 *
 * You can then call qmi_client_dpm_open_port_finish() to get the result of the operation.
 *
 * Since: 1.30
 */
void qmi_client_dpm_open_port (
    QmiClientDpm *self,
    QmiMessageDpmOpenPortInput *input,
    guint timeout,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

/**
 * qmi_client_dpm_open_port_finish:
 * @self: a #QmiClientDpm.
 * @res: the #GAsyncResult obtained from the #GAsyncReadyCallback passed to qmi_client_dpm_open_port().
 * @error: Return location for error or %NULL.
 *
 * Finishes an async operation started with qmi_client_dpm_open_port().
 *
 * Returns: a #QmiMessageDpmOpenPortOutput, or %NULL if @error is set. The returned value should be freed with qmi_message_dpm_open_port_output_unref().
 *
 * Since: 1.30
 */
QmiMessageDpmOpenPortOutput *qmi_client_dpm_open_port_finish (
    QmiClientDpm *self,
    GAsyncResult *res,
    GError **error);

G_END_DECLS

#endif /* __LIBQMI_GLIB_QMI_DPM__ */
