Files

783 lines
27 KiB
C

/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
* 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.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*****************************************************************************
Source at_response.h
Version 0.1
Date 2012/03/09
Product NAS stack
Subsystem Application Programming Interface
Author Frederic Maurel
Description Defines structure of the AT command response returned after
completion of AT command processing.
*****************************************************************************/
#ifndef __AT_RESPONSE_H__
#define __AT_RESPONSE_H__
#include "at_command.h"
#include "commonDef.h"
#include "networkDef.h"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
/****************************************************************************/
/*
* Total number of characters, including line terminators, in information text
*/
#define AT_RESPONSE_INFO_TEXT_SIZE 2048
/*
* Value of the mask parameter for AT command reponses without any optional
* parameters
*/
#define AT_RESPONSE_NO_PARAM AT_COMMAND_PARAM0
/*
* Maximum value of an AT command response identifier
*/
#define AT_RESPONSE_ID_MAX AT_COMMAND_ID_MAX
/****************************************************************************/
/************************ G L O B A L T Y P E S ************************/
/****************************************************************************/
/*
* ================
* General commands
* ================
*/
/* CGSN: Request Product Serial Number identification (IMEI)
* ---------------------------------------------------------
* Returns information text intended to permit the user to identify the
* individual Mobile Equipment to which it is connected to.
* Action command:
* +CGSN returns <sn>
* <sn> information text containing the IMEI
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CGSN_MASK AT_RESPONSE_NO_PARAM
/* CGSN AT command response type */
typedef struct {
char sn[AT_RESPONSE_INFO_TEXT_SIZE+1];
} at_cgsn_resp_t;
/* CGMI: Request manufacturer identification
* -----------------------------------------
* Returns information text intended to permit the user to identify the
* manufacturer of the Mobile Equipment to which it is connected to.
* Action command:
* +CGMI returns <manufacturer>
* <manufacturer> information text containing the manufacturer id
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CGMI_MASK AT_RESPONSE_NO_PARAM
/* CGMI AT command response type */
typedef struct {
char manufacturer[AT_RESPONSE_INFO_TEXT_SIZE+1];
} at_cgmi_resp_t;
/* CGMM: Request model identification
* ----------------------------------
* Returns information text intended to permit the user to identify the
* specific model of the Mobile Equipment to which it is connected to.
* +CGMM returns <model>
* <model> information text containing the model id
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CGMM_MASK AT_RESPONSE_NO_PARAM
/* CGMM AT command response type */
typedef struct {
char model[AT_RESPONSE_INFO_TEXT_SIZE+1];
} at_cgmm_resp_t;
/* CGMR: Request revision identification
* -------------------------------------
* Returns information text intended to permit the user to identify the
* version, revision level or date, or other pertinent information of the
* Mobile Equipment to which it is connected to.
* +CGMR returns <revision>
* <revision> information text containing the revision of the firmware
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CGMR_MASK AT_RESPONSE_NO_PARAM
/* CGMR AT command response type */
typedef struct {
char revision[AT_RESPONSE_INFO_TEXT_SIZE+1];
} at_cgmr_resp_t;
/* CIMI: Request International Mobile Subscriber Identity
* ------------------------------------------------------
* Returns <IMSI>, which is intended to permit the user to identify the
* individual SIM card or active application in the UICC (GSM or USIM)
* which is attached to the Mobile Equipment to which it is connected to.
* Action command:
* +CIMI returns <IMSI>
* <IMSI> International Mobile Subscriber Identity (string without
* double quotes)
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CIMI_MASK AT_RESPONSE_NO_PARAM
/* CIMI AT command response type */
typedef struct {
char IMSI[AT_RESPONSE_INFO_TEXT_SIZE+1];
} at_cimi_resp_t;
/*
* ==============================================
* Mobile Termination control and status commands
* ==============================================
*/
/* CFUN: Set phone functionality
* -----------------------------
* Used to set the Mobile Equipment to different power consumption states
* Read parameter command:
* +CFUN? returns +CFUN: <fun>
* <fun> integer type - level of functionality
* Test parameter command:
* +CFUN=? returns +CFUN: (list of supported <fun>s),(list of supported <rst>s)
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CFUN_MASK AT_RESPONSE_NO_PARAM
/* CFUN AT command response type */
typedef struct {
int fun;
} at_cfun_resp_t;
/* CPIN: Enter PIN
* ---------------
* Used to enter MT passwords which are needed before any other
* functionality of the MT can be used
* Read parameter command:
* +CPIN? returns +CPIN: <code>
* <code> string - value may be: "READY", "SIM PIN"
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CPIN_MASK AT_RESPONSE_NO_PARAM
/* CPIN AT command response type */
typedef struct {
#define AT_CPIN_RESP_SIZE 16
char code[AT_CPIN_RESP_SIZE+1];
} at_cpin_resp_t;
/* CSQ: Signal quality
* -------------------
* Returns received signal strength indication and channel bit error rate
* from the Mobile Equipment
* Action command:
* +CSQ returns +CSQ: <rssi>, <ber>
* <rssi> integer type - received signal strength indication (in dBm)
* <ber> integer type - channel bit error rate (in percent)
*/
/* Received signal strength indicator */
#define AT_CSQ_RSSI_0 0 /* -113 dBm or less */
#define AT_CSQ_RSSI_31 31 /* -51 dBm or greater */
#define AT_CSQ_RSSI_UNKNOWN 99 /* not known or not detectable */
/* Channel bit error rate */
#define AT_CSQ_BER_0 0 /* BER < 0.2 % */
#define AT_CSQ_BER_1 1 /* 0.2 % < BER < 0.4 % */
#define AT_CSQ_BER_2 2 /* 0.4 % < BER < 0.8 % */
#define AT_CSQ_BER_3 3 /* 0.8 % < BER < 1.6 % */
#define AT_CSQ_BER_4 4 /* 1.6 % < BER < 3.2 % */
#define AT_CSQ_BER_5 5 /* 3.2 % < BER < 6.4 % */
#define AT_CSQ_BER_6 6 /* 6.4 % < BER < 12.8 % */
#define AT_CSQ_BER_7 7 /* 12.8 % < BER */
#define AT_CSQ_BER_UNKNOWN 99 /* not known or not detectable */
/* Optional parameter bitmask */
#define AT_RESPONSE_CSQ_MASK AT_RESPONSE_NO_PARAM
/* CSQ AT command response type */
typedef struct {
int rssi;
int ber;
} at_csq_resp_t;
/* CESQ: Extended signal quality
* -----------------------------
* Returns received signal quality parameters.
* Action command:
* +CESQ returns +CESQ: <rssi>,<ber>,<rscp>,<ecno>,<rsrq>,<rsrp>
* <rssi> integer type - received signal strength indication (in dBm)
* <ber> integer type - channel bit error rate (in percent)
* <rscp> integer type - received signal code power (in dBm)
* <ecno> integer type - ratio of the received energy per PN chip (in dBm)
* <rsrq> integer type - reference signal received quality (in dBm)
* <rsrp> integer type - reference signal received power (in dBm)
*/
/* Received signal strength indicator */
#define AT_CESQ_RSSI_0 0 /* -113 dBm or less */
#define AT_CESQ_RSSI_31 31 /* -51 dBm or greater */
#define AT_CESQ_RSSI_UNKNOWN 99 /* not known or not detectable */
/* Channel bit error rate */
#define AT_CESQ_BER_0 0 /* BER < 0.2 % */
#define AT_CESQ_BER_1 1 /* 0.2 % < BER < 0.4 % */
#define AT_CESQ_BER_2 2 /* 0.4 % < BER < 0.8 % */
#define AT_CESQ_BER_3 3 /* 0.8 % < BER < 1.6 % */
#define AT_CESQ_BER_4 4 /* 1.6 % < BER < 3.2 % */
#define AT_CESQ_BER_5 5 /* 3.2 % < BER < 6.4 % */
#define AT_CESQ_BER_6 6 /* 6.4 % < BER < 12.8 % */
#define AT_CESQ_BER_7 7 /* 12.8 % < BER */
#define AT_CESQ_BER_UNKNOWN 99 /* not known or not detectable */
/* Received signal code power */
#define AT_CESQ_RSCP_0 0 /* -120 dBm or less */
#define AT_CESQ_RSCP_96 96 /* -24 dBm or greater */
#define AT_CESQ_RSCP_UNKNOWN 255 /* not known or not detectable */
/* Ratio of the received energy per PN chip (Ec/No) */
#define AT_CESQ_ECNO_0 0 /* -24 dBm or less */
#define AT_CESQ_ECNO_49 49 /* 0,5 dBm or greater */
#define AT_CESQ_ECNO_UNKNOWN 255 /* not known or not detectable */
/* Reference signal received quality */
#define AT_CESQ_RSRQ_0 0 /* -19,5 dBm or less */
#define AT_CESQ_RSRQ_34 34 /* -2,5 dBm or greater */
#define AT_CESQ_RSRQ_UNKNOWN 255 /* not known or not detectable */
/* Reference signal received power */
#define AT_CESQ_RSRP_0 0 /* -140 dBm or less */
#define AT_CESQ_RSRP_97 97 /* -43 dBm or greater */
#define AT_CESQ_RSRP_UNKNOWN 255 /* not known or not detectable */
/* Optional parameter bitmask */
#define AT_RESPONSE_CESQ_MASK AT_RESPONSE_NO_PARAM
/* CSQ AT command response type */
typedef struct {
int rssi;
int ber;
int rscp;
int ecno;
int rsrq;
int rsrp;
} at_cesq_resp_t;
/* CLAC: List all available AT commands
* ------------------------------------
* Returns one or more lines of AT Commands that are available for the user.
* Action command:
* +CLAC returns +CLAC: <AT Command1>[<CR><LF><AT Command2>[...]]
* <AT Command> string - defines the AT command including the prefix AT
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CLAC_MASK AT_RESPONSE_NO_PARAM
/* CLAC AT command response type */
typedef struct {
int n_acs;
#define AT_CLAC_RESP_SIZE 100
const char* ac[AT_CLAC_RESP_SIZE];
} at_clac_resp_t;
/*
* =========================
* Mobile Termination errors
* =========================
*/
/*
* CMEE: Report mobile termination error
* -------------------------------------
* Disables or enables the use of final result code +CME ERROR: <err> as an
* indication of an error relating to the functionality of the MT.
* Read parameter command:
* +CMEE? returns +CMEE: <n>
* <n> numeric parameter
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CMEE_MASK AT_RESPONSE_NO_PARAM
/* CMEE AT command response type */
typedef at_cmee_t at_cmee_resp_t;
/*
* ================================
* Network service related commands
* ================================
*/
/* CNUM: Subscriber number
* -----------------------
* Returns the MSISDNs related to the subscriber.
* Action command:
* +CNUM returns +CNUM: <number1>,<type1>[<CR><LF>
* +CNUM: <number2>,<type2>[...]]
* <numberx> string type phone number of format specified by <typex>
* <typex> type of address octet in integer format
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CNUM_MASK AT_RESPONSE_NO_PARAM
/* CNUM AT command response type */
typedef struct {
#define AT_CNUM_NUMBER_SIZE MSISDN_DIGIT_SIZE
char number[AT_CNUM_NUMBER_SIZE];
int type;
} at_cnum_resp_t;
/* CLCK: Facility lock
* -------------------
* Used to lock, unlock or interrogate a MT or a network facility <fac>.
* When <mode>=2, returns +CLCK: <status>
* <status> state of the network service
*/
/* Network service status */
#define AT_CLCK_RESP_STATUS_NOT_ACTIVE 0
#define AT_CLCK_RESP_STATUS_ACTIVE 1
/* Optional parameter bitmask */
#define AT_RESPONSE_CLCK_MASK AT_RESPONSE_NO_PARAM
/* CLCK AT command response type */
typedef struct {
int status;
} at_clck_resp_t;
/* COPS: PLMN selection
* --------------------
* Forces an attempt to select and register the GSM/UMTS/EPS network operator
* using the SIM/USIM card installed in the currently selected card slot.
* Read parameter command:
* +COPS? returns +COPS:<mode>[,<format>,<oper>[,<AcT>]]
* <mode> operation mode of the network selection
* <format> representation format of the network operator
* <oper> APN operator identifier
* <AcT> access technology
* Test command returns a set of parameters, each representing an operator
* present in the network:
* +COPS=? returns +COPS: [list of supported (<stat>,long alphanumeric <oper>,
* short alphanumeric <oper>,numeric <oper>[,<AcT>])s][,,(list of supported
* <mode>s),(list of supported <format>s)]
* <stat> network operator availability
*/
/* Optional parameter bitmask */
#define AT_COPS_RESP_FORMAT_MASK AT_COMMAND_PARAM2
#define AT_COPS_RESP_OPER_MASK AT_COMMAND_PARAM3
#define AT_COPS_RESP_ACT_MASK AT_COMMAND_PARAM4
/* Structure of COPS AT test parameter command */
typedef struct {
const char* data; /* String representation of the list of operators */
int size; /* Size in byte of the data to be dislayed */
} at_cops_tst_t;
/* Structure of COPS AT read parameter command */
typedef at_cops_t at_cops_get_t;
/* COPS AT command response type */
typedef union {
at_cops_tst_t tst;
at_cops_get_t get;
} at_cops_resp_t;
/* CREG: network registration
* --------------------------
* When <n>=1, returns +CREG: <stat>, the Mobile Equipment's circuit mode
* network registration status in GERA/UTRA/E-UTRA Network.
* When <n>=2, returns +CREG: <stat>[,<lac>,<ci>[,<AcT>]], the Mobile
* Equipment's circuit mode network registration status and location information
* in GERA/UTRA/E-UTRA Network.
* Read parameter command:
* +CREG? returns +CREG:<n>,<stat>[,<lac>,<ci>[,<AcT>]]
* <n> numeric parameter
* <stat> numeric parameter that indicates the circuit mode registration
* status
* <lac> string type; two byte location area code in hexadecimal format
* <ci> string type; four byte GERAN/UTRAN/E-UTRAN cell ID in hexadeci-
* mal format
* <AcT> a numeric parameter that indicates the access technology of
* the serving cell
*/
/* Network registration status */
#define AT_CREG_RESP_REG_OFF NET_REG_STATE_OFF
#define AT_CREG_RESP_REG_HN NET_REG_STATE_HN
#define AT_CREG_RESP_REG_ON NET_REG_STATE_ON
#define AT_CREG_RESP_REG_DENIED NET_REG_STATE_DENIED
#define AT_CREG_RESP_REG_UNKNOWN NET_REG_STATE_UNKNOWN
#define AT_CREG_RESP_REG_SMS_HN NET_REG_STATE_SMS_HN
#define AT_CREG_RESP_REG_SMS_ROAMING NET_REG_STATE_SMS_ROAMING
#define AT_CREG_RESP_REG_ROAMING NET_REG_STATE_ROAMING
/* Access technology indicators */
#define AT_CREG_RESP_GSM NET_ACCESS_GSM /* GSM */
#define AT_CREG_RESP_COMPACT NET_ACCESS_COMPACT /* GSM Compact */
#define AT_CREG_RESP_UTRAN NET_ACCESS_UTRAN /* UTRAN */
#define AT_CREG_RESP_EGPRS NET_ACCESS_EGPRS /* GSM w/EGPRS */
#define AT_CREG_RESP_HSDPA NET_ACCESS_HSDPA /* UTRAN w/HSDPA */
#define AT_CREG_RESP_HSUPA NET_ACCESS_HSUPA /* UTRAN w/HSUPA */
#define AT_CREG_RESP_HSDUPA NET_ACCESS_HSDUPA /* w/HSDPA and HSUPA */
#define AT_CREG_RESP_EUTRAN NET_ACCESS_EUTRAN /* E-UTRAN */
/* Optional parameter bitmask */
//#define AT_CREG_RESP_N_MASK AT_COMMAND_PARAM1
#define AT_CREG_RESP_LAC_MASK AT_COMMAND_PARAM3
#define AT_CREG_RESP_CI_MASK AT_COMMAND_PARAM4
#define AT_CREG_RESP_ACT_MASK AT_COMMAND_PARAM5
/* CREG AT command response type */
typedef struct {
int n;
int stat;
#define AT_CREG_RESP_LAC_SIZE 4
char lac[AT_CREG_RESP_LAC_SIZE+1];
#define AT_CREG_RESP_CI_SIZE 8
char ci[AT_CREG_RESP_CI_SIZE+1];
int AcT;
} at_creg_resp_t;
/*
* ==========================
* Commands for Packet Domain
* ==========================
*/
/* CGATT: GPRS service attach/detach
* ---------------------------------
* Used to attach the MT to, or detach the MT from, the GPRS service.
* Read parameter command:
* +CGATT? returns CGATT: <state>
* <state> numeric parameter that indicates the state of GPRS attachment
* Test parameter command:
* +CGATT=? returns CGATT: (list of supported <state>s)
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CGATT_MASK AT_RESPONSE_NO_PARAM
/* CGATT AT command response type */
typedef struct {
int state;
} at_cgatt_resp_t;
/* CGREG: GPRS network registration status
* ---------------------------------------
* When <n>=1, returns +CGREG: <stat>, the Mobile Equipment's GPRS network
* registration status in GERA/UTRA Network.
* When <n>=2, returns +CGREG: <stat>[,<lac>,<ci>[,<AcT>,<rac>]], the Mobile
* Equipment's GPRS network registration status and location information in
* GERA/UTRA Network.
* Read parameter command:
* +CGREG? returns +CGREG:<n>,<stat>[,<lac>,<ci>[,<AcT>,<rac>]]
* <n> numeric parameter
* <stat> numeric parameter that indicates the GPRS registration status
* <lac> string type; two byte location area code in hexadecimal format
* <ci> string type; four byte GERAN/UTRAN cell ID in hexadecimal format
* <AcT> a numeric parameter that indicates the access technology of
* the serving cell
* <rac> string type; one byte routing area code in hexadecimal format
*/
/* Network registration status */
#define AT_CGREG_RESP_REG_OFF NET_REG_STATE_OFF
#define AT_CGREG_RESP_REG_HN NET_REG_STATE_HN
#define AT_CGREG_RESP_REG_ON NET_REG_STATE_ON
#define AT_CGREG_RESP_REG_DENIED NET_REG_STATE_DENIED
#define AT_CGREG_RESP_REG_UNKNOWN NET_REG_STATE_UNKNOWN
#define AT_CGREG_RESP_REG_ROAMING NET_REG_STATE_ROAMING
#define AT_CGREG_RESP_REG_EMERGENCY NET_REG_STATE_EMERGENCY
/* Access technology indicators */
#define AT_CGREG_RESP_GSM NET_ACCESS_GSM /* GSM */
#define AT_CGREG_RESP_COMPACT NET_ACCESS_COMPACT /* GSM Compact */
#define AT_CGREG_RESP_UTRAN NET_ACCESS_UTRAN /* UTRAN */
#define AT_CGREG_RESP_EGPRS NET_ACCESS_EGPRS /* GSM w/EGPRS */
#define AT_CGREG_RESP_HSDPA NET_ACCESS_HSDPA /* UTRAN w/HSDPA */
#define AT_CGREG_RESP_HSUPA NET_ACCESS_HSUPA /* UTRAN w/HSUPA */
#define AT_CGREG_RESP_HSDUPA NET_ACCESS_HSDUPA /* w/HSDPA and HSUPA */
/* Optional parameter bitmask */
//#define AT_CGREG_RESP_N_MASK AT_COMMAND_PARAM1
#define AT_CGREG_RESP_LAC_MASK AT_COMMAND_PARAM3
#define AT_CGREG_RESP_CI_MASK AT_COMMAND_PARAM4
#define AT_CGREG_RESP_ACT_MASK AT_COMMAND_PARAM5
#define AT_CGREG_RESP_RAC_MASK AT_COMMAND_PARAM6
/* CGREG AT command response type */
typedef struct {
int n;
int stat;
#define AT_CGREG_RESP_LAC_SIZE 4
char lac[AT_CGREG_RESP_LAC_SIZE+1];
#define AT_CGREG_RESP_CI_SIZE 8
char ci[AT_CGREG_RESP_CI_SIZE+1];
int AcT;
#define AT_CGREG_RESP_RAC_SIZE 2
char rac[AT_CGREG_RESP_RAC_SIZE+1];
} at_cgreg_resp_t;
/* CEREG: EPS network registration status
* --------------------------------------
* When <n>=1, returns +CEREG: <stat>, the Mobile Equipment's EPS services
* registration status in EUTRA Network.
* When <n>=2, returns +CEREG: <stat>[,<tac>,<ci>[,<AcT>]], the Mobile
* Equipment's EPS services registration status and location information in
* EUTRA Network.
* Read parameter command:
* +CEREG? returns +CEREG:<n>,<stat>[,<tac>,<ci>[,<AcT>]]
* <n> numeric parameter
* <stat> numeric parameter that indicates the EPS registration status
* <tac> string type; two byte tracking area code in hexadecimal format
* <ci> string type; four byte E-UTRAN cell ID in hexadecimal format
* <AcT> a numeric parameter that indicates the access technology of
* the serving cell
*/
/* Network registration status */
#define AT_CEREG_RESP_REG_OFF NET_REG_STATE_OFF
#define AT_CEREG_RESP_REG_HN NET_REG_STATE_HN
#define AT_CEREG_RESP_REG_ON NET_REG_STATE_ON
#define AT_CEREG_RESP_REG_DENIED NET_REG_STATE_DENIED
#define AT_CEREG_RESP_REG_UNKNOWN NET_REG_STATE_UNKNOWN
#define AT_CEREG_RESP_REG_ROAMING NET_REG_STATE_ROAMING
#define AT_CEREG_RESP_REG_EMERGENCY NET_REG_STATE_EMERGENCY
/* Access technology indicators */
#define AT_CEREG_RESP_EUTRAN NET_ACCESS_EUTRAN /* E-UTRAN */
/* Optional parameter bitmask */
//#define AT_CEREG_RESP_N_MASK AT_COMMAND_PARAM1
#define AT_CEREG_RESP_TAC_MASK AT_COMMAND_PARAM3
#define AT_CEREG_RESP_CI_MASK AT_COMMAND_PARAM4
#define AT_CEREG_RESP_ACT_MASK AT_COMMAND_PARAM5
/* CEREG AT command response type */
typedef struct {
int n;
int stat;
#define AT_CEREG_RESP_TAC_SIZE 4
char tac[AT_CEREG_RESP_TAC_SIZE+1];
#define AT_CEREG_RESP_CI_SIZE 8
char ci[AT_CEREG_RESP_CI_SIZE+1];
int AcT;
} at_cereg_resp_t;
/* CGDCONT: Define PDP Context
* ---------------------------
* Specifies PDP context parameter values for a PDP context identified by
* the (local) context identification parameter, <cid>.
* Read parameter command:
* +CGDCONT? returns +CGDCONT: <cid>,<PDP_type>,<APN>,<PDP_addr>,<d_comp>,
* <h_comp>[,<IPv4AddrAlloc>[,<emergency indication>[,<P-CSCF_
* discovery>[,<IM_CN_Signalling_Flag_Ind>]]]][<CR><LF>
* +CGDCONT: <cid>,<PDP_type>,<APN>,<PDP_addr>,<d_comp>,
* <h_comp>[,<IPv4AddrAlloc>[,<emergency indication>[,<P-CSCF_
* discovery>[,<IM_CN_Signalling_Flag_Ind>]]]]
* [...]]
* <cid> a numeric parameter which specifies a particular PDP
* context definition
* <PDP_type> type of packet data protocol ("IP", "IPV6", "IPV4V6")
* <APN> Access Point logical Name
* <PDP_addr> Mobile Equipment PDP address (not applicable to EPS)
* <d_comp> PDP data compression parameter
* <h_comp> PDP header compression parameter
* <IPv4AddrAlloc> IPv4 address allocation parameter
* <emergency indication> emergency bearer services support indication
* <P-CSCF_discovery> P-CSCF address discovery parameter
* <IM_CN_Signalling_Flag_Ind> IM CN subsystem-related signalling
* support indication
*/
/* Optional parameter bitmask */
#define AT_CGDCONT_RESP_IPV4ADDRALLOC_MASK AT_COMMAND_PARAM7
#define AT_CGDCONT_RESP_EMERGECY_INDICATION_MASK AT_COMMAND_PARAM8
#define AT_CGDCONT_RESP_P_CSCF_DISCOVERY_MASK AT_COMMAND_PARAM9
#define AT_CGDCONT_RESP_IM_CN_SIGNALLING_FLAG_IND_MASK AT_COMMAND_PARAM10
/* Structure of CGDCONT AT read parameter command */
typedef struct {
#define AT_CGDCONT_RESP_SIZE 8
int n_pdns; /* Number of defined PDN contexts in the lists */
int cid[AT_CGDCONT_RESP_SIZE]; /* List of PDN context identifiers */
int PDP_type[AT_CGDCONT_RESP_SIZE];
const char* APN[AT_CGDCONT_RESP_SIZE];
int d_comp[AT_CGDCONT_RESP_SIZE];
int h_comp[AT_CGDCONT_RESP_SIZE];
} at_cgdcont_get_t;
/* Structure of CGDCONT AT read parameter command */
typedef struct {
int n_cid; /* Range of supported PDN context identifiers */
} at_cgdcont_tst_t;
/* CGDCONT AT command response type */
typedef union {
at_cgdcont_tst_t tst;
at_cgdcont_get_t get;
} at_cgdcont_resp_t;
/* CGACT: PDP context activate or deactivate
* -----------------------------------------
* Read command returns the current activation states for all the defined
* PDP contexts.
* Read parameter command:
* +CGACT? returns +CGACT: <cid>,<state>[<CR><LF>+CGACT: <cid>,<state>[...]]
* <cid> a numeric parameter which specifies a particular PDP context
* definition
* <state> numeric parameter that indicates the state of PDP context
* activation
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CGACT_MASK AT_RESPONSE_NO_PARAM
/* CGACT AT command response type */
typedef struct {
#define AT_CGACT_RESP_SIZE AT_CGDCONT_RESP_SIZE
int n_pdns; /* Number of defined PDN contexts in the lists */
int cid[AT_CGACT_RESP_SIZE]; /* List of PDN context identifiers */
int state[AT_CGACT_RESP_SIZE]; /* List of PDN context states */
} at_cgact_resp_t;
/* CGPADDR: Show PDP address(es)
* -----------------------------
* Returns a list of PDP addresses for the specified context identifiers.
* +CGPADDR= returns +CGPADDR: <cid>[,PDP_addr_1[,PDP_addr_2]][<CR><LF>
* +CGPADDR: <cid>[,PDP_addr_1[,PDP_addr_2]][...]]
* <cid> a numeric parameter which specifies a particular PDP
* context definition
* <PDP_addr_x> string that identifies the MT in the address space
* applicable to the PDP
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CGPADDR_MASK AT_RESPONSE_NO_PARAM
/* CGPADDR AT command response type */
typedef struct {
#define AT_CGPADDR_RESP_SIZE AT_CGDCONT_RESP_SIZE
int n_pdns; /* Number of defined PDP addresses in the lists */
int cid[AT_CGPADDR_RESP_SIZE]; /* List of PDN context identifiers */
/* List of IPv4 addresses */
const char* PDP_addr_1[AT_CGPADDR_RESP_SIZE];
/* List of IPv6 addresses */
const char* PDP_addr_2[AT_CGPADDR_RESP_SIZE];
} at_cgpaddr_resp_t;
/* CGEV: Unsolicited result
* ------------------------
* Returns unsolicited result codes in case of certain events occurring
* in the Packet Domain MT or the network.
* +CGREV: <code> <cid>
* <code> unsolicited result code
* <cid> a numeric parameter which specifies a particular PDP
* context definition
*/
/* Optional parameter bitmask */
#define AT_RESPONSE_CGEV_MASK AT_RESPONSE_NO_PARAM
/* Unsolicited result codes */
#define AT_CGEV_RESP_NW_PDN_ACT (-1) /* Not applicable for LTE */
#define AT_CGEV_RESP_ME_PDN_ACT NET_PDN_MT_DEFAULT_ACT
#define AT_CGEV_RESP_NW_PDN_DEACT NET_PDN_NW_DEFAULT_DEACT
#define AT_CGEV_RESP_ME_PDN_DEACT NET_PDN_MT_DEFAULT_DEACT
#define AT_CGEV_RESP_NW_ACT NET_PDN_NW_DEDICATED_ACT
#define AT_CGEV_RESP_ME_ACT NET_PDN_MT_DEDICATED_ACT
#define AT_CGEV_RESP_NW_DEACT NET_PDN_NW_DEDICATED_DEACT
#define AT_CGEV_RESP_ME_DEACT NET_PDN_MT_DEDICATED_DEACT
/* CGEV unsolicited result type */
typedef struct {
int code;
int cid;
} at_cgev_resp_t;
/*
* ==========================================
* Global AT command response type definition
* ==========================================
*/
/* AT command response type */
typedef struct {
at_command_id_t id; /* AT command identifier */
at_command_type_t type; /* AT command type */
int mask; /* Optional parameter bitmask */
int cause_code; /* AT command error cause code */
union {
at_cgsn_resp_t cgsn;
at_cgmi_resp_t cgmi;
at_cgmm_resp_t cgmm;
at_cgmr_resp_t cgmr;
at_cimi_resp_t cimi;
at_cfun_resp_t cfun;
at_cpin_resp_t cpin;
at_csq_resp_t csq;
at_cesq_resp_t cesq;
at_clac_resp_t clac;
at_cmee_resp_t cmee;
at_cnum_resp_t cnum;
at_clck_resp_t clck;
at_cops_resp_t cops;
at_cgatt_resp_t cgatt;
at_creg_resp_t creg;
at_cgreg_resp_t cgreg;
at_cereg_resp_t cereg;
at_cgdcont_resp_t cgdcont;
at_cgact_resp_t cgact;
at_cgpaddr_resp_t cgpaddr;
at_cgev_resp_t cgev;
} response;
} at_response_t;
/****************************************************************************/
/******************** G L O B A L V A R I A B L E S ********************/
/****************************************************************************/
/****************************************************************************/
/****************** E X P O R T E D F U N C T I O N S ******************/
/****************************************************************************/
int at_response_encode(char* buffer, const at_response_t* at_response);
#endif /* __AT_RESPONSE_H__*/