ql_api_virt_at.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. /** @file
  2. ql_api_virt_at.h
  3. @brief
  4. This file is used to define virt at interface for different Quectel Project.
  5. */
  6. /*================================================================
  7. Copyright (c) 2020 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
  8. Quectel Wireless Solution Proprietary and Confidential.
  9. =================================================================*/
  10. /*=================================================================
  11. EDIT HISTORY FOR MODULE
  12. This section contains comments describing changes made to the module.
  13. Notice that changes are listed in reverse chronological order.
  14. WHEN WHO WHAT, WHERE, WHY
  15. ------------ ------- -------------------------------------------------------------------------------
  16. 26/01/2021 Neo Init version
  17. =================================================================*/
  18. #ifndef _QL_API_VIRT_AT_H_
  19. #define _QL_API_VIRT_AT_H_
  20. #include "ql_api_common.h"
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /*===========================================================================
  25. * Macro Definition
  26. *===========================================================================*/
  27. #define QL_VIRT_AT_ERRCODE_BASE (QL_COMPONENT_BSP_VIRT_AT<<16)
  28. /*========================================================================
  29. * Enumeration Definition
  30. *========================================================================*/
  31. /**
  32. * virt at errcode
  33. */
  34. typedef enum
  35. {
  36. QL_VIRT_AT_SUCCESS = QL_SUCCESS,
  37. QL_VIRT_AT_INVALID_PARAM_ERR = 1|QL_VIRT_AT_ERRCODE_BASE,
  38. QL_VIRT_AT_EXECUTE_ERR, //虚拟AT操作失败(内存不足等)
  39. QL_VIRT_AT_OPEN_REPEAT_ERR, //虚拟AT通道重复打开
  40. QL_VIRT_AT_OPEN_DEVICE_ERR, //虚拟AT通道打开失败
  41. QL_VIRT_AT_CREATE_PIPE_ERR, //虚拟AT创建FIFO失败
  42. QL_VIRT_AT_PUSH_LIST_ERR, //暂未使用
  43. QL_VIRT_AT_CREATE_MUTEX_ERR, //虚拟创建互斥锁失败
  44. QL_VIRT_AT_MUTEX_TIMEOUT_ERR, //虚拟AT互斥锁超时
  45. QL_VIRT_AT_CREATE_DISPATCH_ERR, //虚拟AT创建数据结构时失败
  46. QL_VIRT_AT_NOT_INIT, //虚拟AT功能未初始化
  47. QL_VIRT_AT_TX_OVERFOLW, //虚拟AT 的TX FIFO空间不足
  48. }ql_errcode_virt_at_e;
  49. /**
  50. * virtual at channel enum
  51. */
  52. typedef enum
  53. {
  54. QL_VIRT_AT_PORT_0,
  55. QL_VIRT_AT_PORT_1,
  56. QL_VIRT_AT_PORT_2,
  57. QL_VIRT_AT_PORT_3,
  58. QL_VIRT_AT_PORT_4,
  59. QL_VIRT_AT_PORT_5,
  60. QL_VIRT_AT_PORT_6,
  61. QL_VIRT_AT_PORT_7,
  62. QL_VIRT_AT_PORT_8,
  63. QL_VIRT_AT_PORT_9,
  64. QL_VIRT_AT_PORT_MAX,
  65. }ql_virt_at_port_number_e;
  66. /*===========================================================================
  67. * Functions declaration
  68. ===========================================================================*/
  69. /*****************************************************************
  70. * Description: VIRT AT 回调函数,用于接收AT命令返回
  71. *
  72. * Parameters:
  73. * ind_type [in] 事件类型,VIRT AT RX只有一种事件。
  74. * size [in] 数据大小
  75. *
  76. *****************************************************************/
  77. typedef void (*ql_virt_at_callback)(uint32 ind_type, uint32 size);
  78. /*****************************************************************
  79. * Function: ql_virt_at_read
  80. *
  81. * Description: VIRT AT读数据
  82. *
  83. * Parameters:
  84. * port [in] 虚拟AT通道
  85. * data [out] 读取的数据
  86. * data_len [in] 要读取的数据长度
  87. *
  88. * Return:
  89. * < 0 错误码,详见ql_errcode_virt_at_e
  90. * other 实际读取到的数据长度
  91. *
  92. *****************************************************************/
  93. int ql_virt_at_read(ql_virt_at_port_number_e port, unsigned char *data, unsigned int data_len);
  94. /*****************************************************************
  95. * Function: ql_virt_at_write
  96. *
  97. * Description: VIRT AT写数据
  98. *
  99. * Parameters:
  100. * port [in] 虚拟AT通道
  101. * data [in] 要写入的数据
  102. * data_len [in] 要写入的数据长度
  103. *
  104. * Return:
  105. * < 0 错误码,详见ql_errcode_virt_at_e
  106. * other 实际写入的数据长度
  107. *
  108. *****************************************************************/
  109. int ql_virt_at_write(ql_virt_at_port_number_e port, unsigned char *data, unsigned int data_len);
  110. /*****************************************************************
  111. * Function: ql_virt_at_close
  112. *
  113. * Description: 关闭 VIRT AT通道
  114. *
  115. * Parameters:
  116. * port [in] 虚拟AT通道
  117. *
  118. * Return:
  119. * 0 关闭成功。
  120. * other 错误码。
  121. *
  122. *****************************************************************/
  123. ql_errcode_virt_at_e ql_virt_at_close(ql_virt_at_port_number_e port);
  124. /*****************************************************************
  125. * Function: ql_virt_at_open
  126. *
  127. * Description: 打开 VIRT AT通道,注册回调函数
  128. *
  129. * Parameters:
  130. * port [in] 虚拟AT通道
  131. * virt_at_cb [in] 回调函数
  132. *
  133. * Return:
  134. * 0 打开成功。
  135. * other 错误码。
  136. *
  137. *****************************************************************/
  138. ql_errcode_virt_at_e ql_virt_at_open(ql_virt_at_port_number_e port, ql_virt_at_callback virt_at_cb);
  139. /*****************************************************************
  140. * Function: ql_virt_at_read_aviable
  141. *
  142. * Description: 获取虚拟AT通道中的可读字节数
  143. *
  144. * Parameters:
  145. * port [in] 虚拟AT通道
  146. *
  147. * Return:
  148. * >=0 可读字节数
  149. * other 错误码。
  150. *
  151. *****************************************************************/
  152. int ql_virt_at_read_aviable(ql_virt_at_port_number_e port);
  153. /*****************************************************************
  154. * Function: ql_virt_at_write_aviable
  155. *
  156. * Description: 获取虚拟AT通道中的可写字节数
  157. *
  158. * Parameters:
  159. * port [in] 虚拟AT通道
  160. *
  161. * Return:
  162. * >=0 可写字节数
  163. * other 错误码。
  164. *
  165. *****************************************************************/
  166. int ql_virt_at_write_aviable(ql_virt_at_port_number_e port);
  167. #ifdef __cplusplus
  168. } /*"C" */
  169. #endif
  170. #endif /* _QL_API_VIRT_AT_H_ */