atchannel.h
上传用户:rftzhifu
上传日期:2017-02-21
资源大小:229k
文件大小:4k
源码类别:

android开发

开发平台:

Unix_Linux

  1. /* //device/system/reference-ril/atchannel.h
  2. **
  3. ** Copyright 2006, The Android Open Source Project
  4. **
  5. ** Licensed under the Apache License, Version 2.0 (the "License");
  6. ** you may not use this file except in compliance with the License.
  7. ** You may obtain a copy of the License at
  8. **
  9. **     http://www.apache.org/licenses/LICENSE-2.0
  10. **
  11. ** Unless required by applicable law or agreed to in writing, software
  12. ** distributed under the License is distributed on an "AS IS" BASIS,
  13. ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. ** See the License for the specific language governing permissions and
  15. ** limitations under the License.
  16. */
  17. #ifndef ATCHANNEL_H
  18. #define ATCHANNEL_H 1
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. /* define AT_DEBUG to send AT traffic to /tmp/radio-at.log" */
  23. #define AT_DEBUG  0
  24. #if AT_DEBUG
  25. extern void  AT_DUMP(const char* prefix, const char*  buff, int  len);
  26. #else
  27. #define  AT_DUMP(prefix,buff,len)  do{}while(0)
  28. #endif
  29. #define AT_ERROR_GENERIC -1
  30. #define AT_ERROR_COMMAND_PENDING -2
  31. #define AT_ERROR_CHANNEL_CLOSED -3
  32. #define AT_ERROR_TIMEOUT -4
  33. #define AT_ERROR_INVALID_THREAD -5 /* AT commands may not be issued from
  34.                                        reader thread (or unsolicited response
  35.                                        callback */
  36. #define AT_ERROR_INVALID_RESPONSE -6 /* eg an at_send_command_singleline that
  37.                                         did not get back an intermediate
  38.                                         response */
  39. typedef enum {
  40.     NO_RESULT,   /* no intermediate response expected */
  41.     NUMERIC,     /* a single intermediate response starting with a 0-9 */
  42.     SINGLELINE,  /* a single intermediate response starting with a prefix */
  43.     MULTILINE    /* multiple line intermediate response
  44.                     starting with a prefix */
  45. } ATCommandType;
  46. /** a singly-lined list of intermediate responses */
  47. typedef struct ATLine  {
  48.     struct ATLine *p_next;
  49.     char *line;
  50. } ATLine;
  51. /** Free this with at_response_free() */
  52. typedef struct {
  53.     int success;              /* true if final response indicates
  54.                                     success (eg "OK") */
  55.     char *finalResponse;      /* eg OK, ERROR */
  56.     ATLine  *p_intermediates; /* any intermediate responses */
  57. } ATResponse;
  58. /**
  59.  * a user-provided unsolicited response handler function
  60.  * this will be called from the reader thread, so do not block
  61.  * "s" is the line, and "sms_pdu" is either NULL or the PDU response
  62.  * for multi-line TS 27.005 SMS PDU responses (eg +CMT:)
  63.  */
  64. typedef void (*ATUnsolHandler)(const char *s, const char *sms_pdu);
  65. int at_open(int fd, ATUnsolHandler h);
  66. void at_close();
  67. /* This callback is invoked on the command thread.
  68.    You should reset or handshake here to avoid getting out of sync */
  69. void at_set_on_timeout(void (*onTimeout)(void));
  70. /* This callback is invoked on the reader thread (like ATUnsolHandler)
  71.    when the input stream closes before you call at_close
  72.    (not when you call at_close())
  73.    You should still call at_close()
  74.    It may also be invoked immediately from the current thread if the read
  75.    channel is already closed */
  76. void at_set_on_reader_closed(void (*onClose)(void));
  77. int at_send_command_singleline (const char *command,
  78.                                 const char *responsePrefix,
  79.                                  ATResponse **pp_outResponse);
  80. int at_send_command_numeric (const char *command,
  81.                                  ATResponse **pp_outResponse);
  82. int at_send_command_multiline (const char *command,
  83.                                 const char *responsePrefix,
  84.                                  ATResponse **pp_outResponse);
  85. int at_handshake();
  86. int at_send_command (const char *command, ATResponse **pp_outResponse);
  87. int at_send_command_sms (const char *command, const char *pdu,
  88.                             const char *responsePrefix,
  89.                             ATResponse **pp_outResponse);
  90. void at_response_free(ATResponse *p_response);
  91. typedef enum {
  92.     CME_ERROR_NON_CME = -1,
  93.     CME_SUCCESS = 0,
  94.     CME_SIM_NOT_INSERTED = 10
  95. } AT_CME_Error;
  96. AT_CME_Error at_get_cme_error(const ATResponse *p_response);
  97. #ifdef __cplusplus
  98. }
  99. #endif
  100. #endif /*ATCHANNEL_H*/