m2m_hw_api.h

/* Edge configuration type. Use to select the edge to trigger the interrupt on a GPIO. */

typedef enum

{

   M2M_NO_EDGE = 0,   /* INT disable */

   M2M_RISING_EDGE,

   M2M_FALLING_EDGE,

   M2M_BOTH_EDGES,

}M2M_INT_FRONT;

 

 

/*Used to get Opening state of communication channel*/

typedef enum

{

 HW_USB_CABLE_DETACHED,

 HW_CLOSED,

 HW_OPENED,

 SW_CLOSED,

}STATE_T;

 

/*Used to get software state for Usb or Uart channel*/

typedef struct

{

  STATE_T Open;

  UINT8 BlockingRx;

  UINT8 BlockingTx;

  UINT8 IsAt;

  UINT8 IsRcv;

}USB_UART_STATE;

 

/* UART port handle. */

typedef INT32 M2M_T_HW_UART_HANDLE;

 

 

/* M2M UART results definition */

typedef enum {

            M2M_HW_UART_RESULT_SUCCESS = 0,

            M2M_HW_UART_RESULT_FAIL,

            M2M_HW_UART_RESULT_NOT_SUPPORTED,

            M2M_HW_UART_RESULT_INVALID_ARG

}M2M_T_HW_UART_RESULT;

 

 

typedef INT32 M2M_T_HW_USB_HANDLE;

 

/* The MAX number of USB instances is 3. The USB instance identifies one USB channel. Not all USB instances are always

    available, the number depends on module configuration, see AT#PORTCFG command */

 

typedef enum

{

  USER_USB_INSTANCE_0,

  USER_USB_INSTANCE_1,

  USER_USB_INSTANCE_2,

  USER_USB_INSTANCE_ERR

}USER_USB_INSTANCE_T;

/*All possible USB channels that can be used: NOT ALL are always available as above */

typedef enum

{

  USB_CH_NONE,

  USB_CH0 = 1,

  USB_CH1,

  USB_CH2,

  USB_CH3,

  USB_CH4,

  USB_CH5,

  USB_CH_AUTO,

  USB_CH_DEFAULT,

  USB_CH_NUM,

}M2M_USB_CH;

 

 

/*Command selector for USB channels */

typedef enum

{

   M2M_USB_NO_ACTION = 0,

   M2M_USB_BLOCKING_SET,

   M2M_USB_RCV_FUNC,

   M2M_USB_HW_OPTIONS_GET,                        /* Not used for USB channel */

   M2M_USB_HW_OPTIONS_SET,            /* Not used for USB channel */

   M2M_USB_AT_MODE_SET,

   M2M_USB_CLEAR_RX,

   M2M_USB_RX_BLOCKING_SET,

   M2M_USB_TX_BLOCKING_SET,

   M2M_USB_ACTION_SELECTOR_NUM,

}M2M_USB_ACTION_SELECTOR;

 

 

/*error codes for USB handle */

#define M2M_HW_USB_UART_HANDLE_GENERIC_ERR                            (-10)

#define M2M_HW_USB_UART_HANDLE_PORTCFG_ERR                (-5)

#define M2M_HW_USB_UART_HANDLE_NEW_HWCH_UNAVAILABLE          (-4)

#define M2M_HW_USB_UART_HANDLE_HW_ERR                         (-3)

#define M2M_HW_USB_UART_HANDLE_HWPORT_ALREADY_OPEN            (-2)

#define M2M_HW_USB_UART_HANDLE_INVALID_PORT                           (-1)

 

 

/* M2M_T_HW_UART_IO_HW_OPTIONS used with M2M_HW_UART_IO_HW_OPTIONS_SET and

    M2M_HW_UART_IO_HW_OPTIONS_GET OPTIONS */

typedef struct {

    UINT32         baudrate;                     /* example: 115200 bits/sec */

    UINT8                       databits;                       /* example: 8  */

    UINT8                       stop_bits;                     /* example: 1 */

    UINT8                       parity;              /* parity: 0 none; 1 odd; 2 even */

    UINT8                       flow_ctrl;                      /* set flow control: 0 none; 1 hw flow control (default) */

} M2M_T_HW_UART_IO_HW_OPTIONS;