You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
4.2 KiB
125 lines
4.2 KiB
/* //device/system/reference-ril/atchannel.h
|
|
**
|
|
** Copyright 2006, The Android Open Source Project
|
|
**
|
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
** you may not use this file except in compliance with the License.
|
|
** You may obtain a copy of the License at
|
|
**
|
|
** http://www.apache.org/licenses/LICENSE-2.0
|
|
**
|
|
** Unless required by applicable law or agreed to in writing, software
|
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
** See the License for the specific language governing permissions and
|
|
** limitations under the License.
|
|
*/
|
|
|
|
#ifndef ATCHANNEL_H
|
|
#define ATCHANNEL_H 1
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* define AT_DEBUG to send AT traffic to /tmp/radio-at.log" */
|
|
#define AT_DEBUG 0
|
|
|
|
#if AT_DEBUG
|
|
extern void AT_DUMP(const char* prefix, const char* buff, int len);
|
|
#else
|
|
#define AT_DUMP(prefix,buff,len) do{}while(0)
|
|
#endif
|
|
|
|
#define AT_ERROR_GENERIC (-1)
|
|
#define AT_ERROR_COMMAND_PENDING (-2)
|
|
#define AT_ERROR_CHANNEL_CLOSED (-3)
|
|
#define AT_ERROR_TIMEOUT (-4)
|
|
#define AT_ERROR_INVALID_THREAD (-5) /* AT commands may not be issued from
|
|
reader thread (or unsolicited response
|
|
callback */
|
|
#define AT_ERROR_INVALID_RESPONSE (-6) /* eg an at_send_command_singleline that
|
|
did not get back an intermediate
|
|
response */
|
|
|
|
|
|
typedef enum {
|
|
NO_RESULT, /* no intermediate response expected */
|
|
NUMERIC, /* a single intermediate response starting with a 0-9 */
|
|
SINGLELINE, /* a single intermediate response starting with a prefix */
|
|
MULTILINE /* multiple line intermediate response
|
|
starting with a prefix */
|
|
} ATCommandType;
|
|
|
|
/** a singly-lined list of intermediate responses */
|
|
typedef struct ATLine {
|
|
struct ATLine *p_next;
|
|
char *line;
|
|
} ATLine;
|
|
|
|
/** Free this with at_response_free() */
|
|
typedef struct {
|
|
int success; /* true if final response indicates
|
|
success (eg "OK") */
|
|
char *finalResponse; /* eg OK, ERROR */
|
|
ATLine *p_intermediates; /* any intermediate responses */
|
|
} ATResponse;
|
|
|
|
/**
|
|
* a user-provided unsolicited response handler function
|
|
* this will be called from the reader thread, so do not block
|
|
* "s" is the line, and "sms_pdu" is either NULL or the PDU response
|
|
* for multi-line TS 27.005 SMS PDU responses (eg +CMT:)
|
|
*/
|
|
typedef void (*ATUnsolHandler)(const char *s, const char *sms_pdu);
|
|
|
|
int at_open(int fd, ATUnsolHandler h);
|
|
void at_close();
|
|
|
|
/* This callback is invoked on the command thread.
|
|
You should reset or handshake here to avoid getting out of sync */
|
|
void at_set_on_timeout(void (*onTimeout)(void));
|
|
/* This callback is invoked on the reader thread (like ATUnsolHandler)
|
|
when the input stream closes before you call at_close
|
|
(not when you call at_close())
|
|
You should still call at_close()
|
|
It may also be invoked immediately from the current thread if the read
|
|
channel is already closed */
|
|
void at_set_on_reader_closed(void (*onClose)(void));
|
|
|
|
int at_send_command_singleline (const char *command,
|
|
const char *responsePrefix,
|
|
ATResponse **pp_outResponse);
|
|
|
|
int at_send_command_numeric (const char *command,
|
|
ATResponse **pp_outResponse);
|
|
|
|
int at_send_command_multiline (const char *command,
|
|
const char *responsePrefix,
|
|
ATResponse **pp_outResponse);
|
|
|
|
|
|
int at_handshake();
|
|
|
|
int at_send_command (const char *command, ATResponse **pp_outResponse);
|
|
|
|
int at_send_command_sms (const char *command, const char *pdu,
|
|
const char *responsePrefix,
|
|
ATResponse **pp_outResponse);
|
|
|
|
void at_response_free(ATResponse *p_response);
|
|
|
|
typedef enum {
|
|
CME_ERROR_NON_CME = -1,
|
|
CME_SUCCESS = 0,
|
|
CME_SIM_NOT_INSERTED = 10
|
|
} AT_CME_Error;
|
|
|
|
AT_CME_Error at_get_cme_error(const ATResponse *p_response);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /*ATCHANNEL_H*/
|