Files
openairinterface5g/openair3/NAS/UE/API/USER/at_command.h
T

895 lines
33 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_command.h
Version 0.1
Date 2012/03/07
Product NAS stack
Subsystem Application Programming Interface
Author Frederic Maurel
Description Defines the ATtention (AT) command set supported by the NAS
sublayer protocol
*****************************************************************************/
#ifndef __AT_COMMAND_H__
#define __AT_COMMAND_H__
#include "userDef.h"
#include "networkDef.h"
/****************************************************************************/
/********************* G L O B A L C O N S T A N T S *******************/
/****************************************************************************/
/* Bit masks indicating presence of AT command's optional parameters */
#define AT_COMMAND_PARAM0 0x0000 /* no any parameter is present */
#define AT_COMMAND_PARAM1 0x0001 /* first parameter is present */
#define AT_COMMAND_PARAM2 0x0002 /* 2nd parameter is present */
#define AT_COMMAND_PARAM3 0x0004 /* 3rd parameter is present */
#define AT_COMMAND_PARAM4 0x0008 /* 4th parameter is present */
#define AT_COMMAND_PARAM5 0x0010 /* 5th parameter is present */
#define AT_COMMAND_PARAM6 0x0020 /* 6th parameter is present */
#define AT_COMMAND_PARAM7 0x0040 /* 7th parameter is present */
#define AT_COMMAND_PARAM8 0x0080 /* 8th parameter is present */
#define AT_COMMAND_PARAM9 0x0100 /* 9th parameter is present */
#define AT_COMMAND_PARAM10 0x0200 /* 10th parameter is present */
#define AT_COMMAND_PARAM11 0x0400 /* 11th parameter is present */
#define AT_COMMAND_PARAM12 0x0800 /* 12th parameter is present */
#define AT_COMMAND_PARAM13 0x1000 /* 13th parameter is present */
#define AT_COMMAND_PARAM14 0x2000 /* 14th parameter is present */
#define AT_COMMAND_PARAM15 0x4000 /* 15th parameter is present */
#define AT_COMMAND_PARAM16 0x8000 /* 16th parameter is present */
/* Value of the mask parameter for AT commands without any parameters */
#define AT_COMMAND_NO_PARAM AT_COMMAND_PARAM0
/****************************************************************************/
/************************ G L O B A L T Y P E S ************************/
/****************************************************************************/
/*
* AT command identifiers
* ----------------------
* Those currently supported by our Mobile Equipment (ME)
*/
typedef enum {
/*
* General commands
* ----------------
*/
AT_CGSN=1, /* Request Product Serial Number identification (IMEI) */
AT_CGMI, /* Request manufacturer identification */
AT_CGMM, /* Request model identification */
AT_CGMR, /* Request revision identification */
AT_CIMI, /* Request International Mobile Subscriber Identity */
/*
* Mobile Termination control and status commands
* ----------------------------------------------
*/
AT_CFUN, /* Set phone functionality */
AT_CPIN, /* Enter PIN */
AT_CSQ, /* Signal quality */
AT_CESQ, /* Extented signal quality */
AT_CLAC, /* List all available AT commands */
/*
* Mobile Termination errors
* -------------------------
*/
AT_CMEE, /* Report mobile termination error */
/*
* Network service related commands
* ---------------------------------
*/
AT_CNUM, /* Subscriber number */
AT_CLCK, /* Facility lock */
AT_COPS, /* PLMN selection */
AT_CREG, /* Network registration */
/*
* Commands for Packet Domain
* ---------------------------
*/
AT_CGATT, /* PS attach/detach */
AT_CGREG, /* GPRS network registration status */
AT_CEREG, /* EPS network registration status */
AT_CGDCONT, /* Define PDP Context */
AT_CGACT, /* PDP context activate or deactivate */
AT_CGPADDR, /* Show PDP address(es) */
AT_CGEV, /* Packet Domain event unsolicited result code */
AT_COMMAND_ID_MAX
} at_command_id_t;
/*
* AT command types
* ----------------
* - AT action command, used to execute a particular function, which
* generally involves more than the simple storage of a value.
* - AT set parameter command, used to store a value or values of
* subparameters.
* - AT read parameter command, used to check the current values of
* subparameters.
* - AT test parameter command, used to test the existence of the
* command and to give information about the type of its subparameters.
*/
typedef enum {
AT_COMMAND_ACT, /* AT action command (ATCMD) */
AT_COMMAND_SET, /* AT set parameter command (ATCMD=) */
AT_COMMAND_GET, /* AT read parameter command (ATCMD?) */
AT_COMMAND_TST, /* AT test parameter command (ATCMD=?) */
AT_COMMAND_TYPE_MAX
} at_command_type_t;
/*
* ================
* 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:
* no parameters
*/
/* CGSN AT command type */
#define AT_COMMAND_CGSN_MASK AT_COMMAND_NO_PARAM
typedef struct at_cgsn_s {
// This dummy element is to avoid CLANG warning: empty struct has size 0 in C, size 1 in C++
// To be removed if the structure is filled
uint32_t dummy;
} at_cgsn_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:
* no parameters
*/
/* CGMI AT command type */
#define AT_COMMAND_CGMI_MASK AT_COMMAND_NO_PARAM
typedef struct at_cgmi_s {
// This dummy element is to avoid CLANG warning: empty struct has size 0 in C, size 1 in C++
// To be removed if the structure is filled
uint32_t dummy;
} at_cgmi_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.
* Action command:
* no parameters
*/
/* CGMM AT command type */
#define AT_COMMAND_CGMM_MASK AT_COMMAND_NO_PARAM
typedef struct at_cgmm_s {
// This dummy element is to avoid CLANG warning: empty struct has size 0 in C, size 1 in C++
// To be removed if the structure is filled
uint32_t dummy;
} at_cgmm_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.
* Action command:
* no parameters
*/
/* CGMR AT command type */
#define AT_COMMAND_CGMR_MASK AT_COMMAND_NO_PARAM
typedef struct at_cgmr_s {
// This dummy element is to avoid CLANG warning: empty struct has size 0 in C, size 1 in C++
// To be removed if the structure is filled
uint32_t dummy;
} at_cgmr_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:
* no parameters
*/
/* CIMI AT command type */
#define AT_COMMAND_CIMI_MASK AT_COMMAND_NO_PARAM
typedef struct at_cimi_s {
// This dummy element is to avoid CLANG warning: empty struct has size 0 in C, size 1 in C++
// To be removed if the structure is filled
uint32_t dummy;
} at_cimi_t;
/*
* ==============================================
* Mobile Termination control and status commands
* ==============================================
*/
/* CFUN: Set phone functionality
* -----------------------------
* Used to set the Mobile Equipment to different power consumption states
* Parameter command:
* +CFUN=[<fun>[,<rst>]]
* <fun> level of functionality
* <rst> resetting parameter
*/
/* Functionality levels */
#define AT_CFUN_MIN 0 /* minimum functionality */
#define AT_CFUN_FULL 1 /* full functionality */
#define AT_CFUN_SEND 2 /* disable phone transmit RF circuits only */
#define AT_CFUN_RECV 3 /* disable phone receive RF circuits only */
#define AT_CFUN_BOTH 4 /* disable phone both transmit and receive
* RF circuits */
#define AT_CFUN_MAX AT_CFUN_BOTH
/* Maximum value of supported functionality
* level */
#define AT_CFUN_FUN_DEFAULT AT_CFUN_MIN
/* Default functionality level applied when
* no value is given */
/* Resetting parameter values */
#define AT_CFUN_NORST 0 /* do not reset the ME before setting it
* to <fun> power level (default when <rst>
* is not given) */
#define AT_CFUN_RST 1 /* reset the ME before setting it to <fun>
* power level */
#define AT_CFUN_RST_DEFAULT AT_CFUN_NORST
/* Default resetting action applied when
* no value is given */
/* Optional parameter bitmask */
#define AT_CFUN_FUN_MASK AT_COMMAND_PARAM1
#define AT_CFUN_RST_MASK AT_COMMAND_PARAM2
/* CFUN AT command type */
typedef struct {
int fun;
int rst;
} at_cfun_t;
/* CPIN: Enter PIN
* ---------------
* Used to enter MT passwords which are needed before any other
* functionality of the MT can be used
* Parameter command:
* +CPIN=<pin>[,<newpin>]
* <pin> personal identification number
* <newpin> new personal identification number
*/
/* Optional parameter bitmask */
#define AT_CPIN_NEWPIN_MASK AT_COMMAND_PARAM2
/* CPIN AT command type */
typedef struct {
#define AT_CPIN_SIZE USER_PIN_SIZE /* Number of characters in pin parameter */
char pin[AT_CPIN_SIZE+1];
char newpin[AT_CPIN_SIZE+1];
} at_cpin_t;
/* CSQ: Signal quality
* -------------------
* Returns received signal strength indication and channel bit error rate
* from the Mobile Equipment
* Action command:
* no parameters
*/
/* CSQ AT command type */
#define AT_COMMAND_CSQ_MASK AT_COMMAND_NO_PARAM
typedef struct at_csq_s {
// This dummy element is to avoid CLANG warning: empty struct has size 0 in C, size 1 in C++
// To be removed if the structure is filled
uint32_t dummy;
} at_csq_t;
/* CESQ: Extented signal quality
* -----------------------------
* Returns received signal quality parameters.
* Action command:
* no parameters
*/
/* CESQ AT command type */
#define AT_COMMAND_CESQ_MASK AT_COMMAND_NO_PARAM
typedef struct at_cesq_s {
// This dummy element is to avoid CLANG warning: empty struct has size 0 in C, size 1 in C++
// To be removed if the structure is filled
uint32_t dummy;
} at_cesq_t;
/* CLAC: List all available AT commands
* ------------------------------------
* Returns one or more lines of AT Commands that are available for the user.
* Action command:
* no parameters
*/
/* CLAC AT command type */
#define AT_COMMAND_CLAC_MASK AT_COMMAND_NO_PARAM
typedef struct at_clac_s {
// This dummy element is to avoid CLANG warning: empty struct has size 0 in C, size 1 in C++
// To be removed if the structure is filled
uint32_t dummy;
} at_clac_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.
* <n> = 0, disables result code and displays ERROR instead.
* <n> = 1, enables result code and displays numeric <err>
* <n> = 2, enables result code and displays verbose <err>
* Parameter command:
* +CMEE=[<n>]
* <n> numeric parameter
*/
/* Numeric parameter values */
#define AT_CMEE_OFF 0 /* disable result code */
#define AT_CMEE_NUMERIC 1 /* enable numeric result code */
#define AT_CMEE_VERBOSE 2 /* enable verbose result code */
#define AT_CMEE_N_MIN AT_CMEE_OFF
/* Minimum value of supported numeric parameter */
#define AT_CMEE_N_MAX AT_CMEE_VERBOSE
/* Maximum value of supported numeric parameter */
#define AT_CMEE_N_DEFAULT AT_CMEE_OFF
/* Default value of supported numeric parameter */
/* Optional parameter bitmask */
#define AT_CMEE_N_MASK AT_COMMAND_PARAM1
/* CMEE AT command type */
typedef struct {
int n;
} at_cmee_t;
/*
* ================================
* Network service related commands
* ================================
*/
/* CNUM: Subscriber number
* -----------------------
* Returns the MSISDNs related to the subscriber.
* Action command:
* no parameters
*/
/* CNUM AT command type */
#define AT_COMMAND_CNUM_MASK AT_COMMAND_NO_PARAM
typedef struct at_cnum_s {
// This dummy element is to avoid CLANG warning: empty struct has size 0 in C, size 1 in C++
// To be removed if the structure is filled
uint32_t dummy;
} at_cnum_t;
/* CLCK: Facility lock
* -------------------
* Used to lock, unlock or interrogate a MT or a network facility <fac>.
* Action command:
* +CLCK=<fac>,<mode>[,<passwd>]
* <fac> facility value
* <mode> operation mode
* <passwd> password (pin code)
*/
/* Facility values */
#define AT_CLCK_SC "SC" /* SIM lock/unlock */
/* Operation mode */
#define AT_CLCK_UNLOCK 0 /* Unlock (enable) a service */
#define AT_CLCK_LOCK 1 /* Lock (disable) a service */
#define AT_CLCK_STATUS 2 /* Query the status of a network service */
/* Optional parameter bitmask */
#define AT_CLCK_PASSWD_MASK AT_COMMAND_PARAM3
/* CLCK AT command type */
typedef struct {
#define AT_CLCK_FAC_SIZE 2
char fac[AT_CLCK_FAC_SIZE+1];
int mode;
#define AT_CLCK_PASSWD_SIZE USER_PIN_SIZE
char passwd[AT_CLCK_PASSWD_SIZE+1];
} at_clck_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.
* Parameter command:
* +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
*/
/* Network selection operation modes */
#define AT_COPS_AUTO 0 /* automatic mode */
#define AT_COPS_MANUAL 1 /* manual mode */
#define AT_COPS_DEREG 2 /* deregister from network */
#define AT_COPS_FORMAT 3 /* set only <format> for read command +COPS? */
#define AT_COPS_MANAUTO 4 /* manual/automatic mode; if manual selection
* fails, automatic mode is entered */
#define AT_COPS_MODE_DEFAULT AT_COPS_AUTO
/* Default operation mode applied when no
* value is given */
/* Representation formats */
#define AT_COPS_LONG NET_FORMAT_LONG /* long format alphanumeric */
#define AT_COPS_SHORT NET_FORMAT_SHORT /* short format alphanumeric */
#define AT_COPS_NUM NET_FORMAT_NUM /* numeric */
#define AT_COPS_FORMAT_MIN AT_COPS_LONG
/* Minimum value of supported representation
* format */
#define AT_COPS_FORMAT_MAX AT_COPS_NUM
/* Maximum value of supported representation
* format */
#define AT_COPS_FORMAT_DEFAULT AT_COPS_LONG
/* Default representation format applied when
* no value is given */
/* Access technology indicators */
#define AT_COPS_GSM NET_ACCESS_GSM /* GSM */
#define AT_COPS_COMPACT NET_ACCESS_COMPACT /* GSM Compact */
#define AT_COPS_UTRAN NET_ACCESS_UTRAN /* UTRAN */
#define AT_COPS_EGPRS NET_ACCESS_EGPRS /* GSM w/EGPRS */
#define AT_COPS_HSDPA NET_ACCESS_HSDPA /* UTRAN w/HSDPA */
#define AT_COPS_HSUPA NET_ACCESS_HSUPA /* UTRAN w/HSUPA */
#define AT_COPS_HSDUPA NET_ACCESS_HSDUPA /* w/HSDPA and HSUPA */
#define AT_COPS_EUTRAN NET_ACCESS_EUTRAN /* E-UTRAN */
#define AT_COPS_ACT_MIN AT_COPS_GSM
/* Minimum value of supported access
* technology */
#define AT_COPS_ACT_MAX AT_COPS_EUTRAN
/* Maximum value of supported access
* technology */
#define AT_COPS_ACT_DEFAULT AT_COPS_GSM
/* Default access technology applied when
* no value is given */
/* Optional parameter bitmask */
#define AT_COPS_MODE_MASK AT_COMMAND_PARAM1
#define AT_COPS_FORMAT_MASK AT_COMMAND_PARAM2
#define AT_COPS_OPER_MASK AT_COMMAND_PARAM3
#define AT_COPS_ACT_MASK AT_COMMAND_PARAM4
/* COPS AT command type */
typedef struct {
int mode;
int format;
#define AT_COPS_NUM_SIZE NET_FORMAT_NUM_SIZE
/* Size of numeric representation format */
#define AT_COPS_LONG_SIZE NET_FORMAT_LONG_SIZE
/* Size of long alphanumeric representation format */
#define AT_COPS_SHORT_SIZE NET_FORMAT_SHORT_SIZE
/* Size of short alphanumeric representation format */
network_plmn_t plmn;
int AcT;
} at_cops_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.
* Parameter command:
* +CREG=[<n>]
* <n> numeric parameter
*/
/* Numeric parameter values */
#define AT_CREG_OFF 0 /* disable network registration unsolicited
* result code */
#define AT_CREG_ON 1 /* enable network registration unsolicited
* result code +CREG: <stat> */
#define AT_CREG_BOTH 2 /* enable network registration and location
* information unsolicited result code
* +CREG: <stat>[,<lac>,<ci>[,<AcT>]] */
#define AT_CREG_N_MIN AT_CREG_OFF
/* Minimum value of supported unsolicited
* result code */
#define AT_CREG_N_MAX AT_CREG_BOTH
/* Maximum value of supported unsolicited
* result code */
#define AT_CREG_N_DEFAULT AT_CREG_OFF
/* Default unsolicited result code applied
* when no value is given */
/* Optional parameter bitmask */
#define AT_CREG_N_MASK AT_COMMAND_PARAM1
/* CREG AT command type */
typedef struct {
int n;
} at_creg_t;
/*
* ==========================
* Commands for Packet Domain
* ==========================
*/
/* CGATT: EPS service attach/detach
* --------------------------------
* Used to attach the MT to, or detach the MT from, the EPS service.
* Action command (with optional parameters):
* +CGATT=[<state>]
* <state> numeric parameter that indicates the state of EPS attachment
*/
/* PS attachment status */
#define AT_CGATT_DETACHED 0 /* To detach from EPS service */
#define AT_CGATT_ATTACHED 1 /* To attach from EPS service */
#define AT_CGATT_STATE_MIN AT_CGATT_DETACHED
/* Minimum value of EPS attachment code */
#define AT_CGATT_STATE_MAX AT_CGATT_ATTACHED
/* Maximum value of EPS attachment code */
/* Optional parameter bitmask */
#define AT_CGATT_STATE_MASK AT_COMMAND_PARAM1
/* CGATT AT command type */
typedef struct {
int state;
} at_cgatt_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.
* Parameter command:
* +CGREG=[<n>]
* <n> numeric parameter
*/
/* Numeric parameter values */
#define AT_CGREG_OFF 0 /* disable network registration unsolicited
* result code */
#define AT_CGREG_ON 1 /* enable network registration unsolicited
* result code +CGREG: <stat> */
#define AT_CGREG_BOTH 2 /* enable network registration and location
* information unsolicited result code
* +CGREG: <stat>[,<lac>,<ci>[,<AcT>,<rac>]] */
#define AT_CGREG_N_MIN AT_CGREG_OFF
/* Minimum value of supported unsolicited
* result code */
#define AT_CGREG_N_MAX AT_CGREG_BOTH
/* Maximum value of supported unsolicited
* result code */
#define AT_CGREG_N_DEFAULT AT_CGREG_OFF
/* Default unsolicited result code applied
* when no value is given */
/* Optional parameter bitmask */
#define AT_CGREG_N_MASK AT_COMMAND_PARAM1
/* CGREG AT command type */
typedef struct {
int n;
} at_cgreg_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.
* Parameter command:
* +CEREG=[<n>]
* <n> numeric parameter
*/
/* Numeric parameter values */
#define AT_CEREG_OFF 0 /* disable network registration unsolicited
* result code */
#define AT_CEREG_ON 1 /* enable network registration unsolicited
* result code +CEREG: <stat> */
#define AT_CEREG_BOTH 2 /* enable network registration and location
* information unsolicited result code
* +CEREG: <stat>[,<tac>,<ci>[,<AcT>]] */
#define AT_CEREG_N_MIN AT_CEREG_OFF
/* Minimum value of supported unsolicited
* result code */
#define AT_CEREG_N_MAX AT_CEREG_BOTH
/* Maximum value of supported unsolicited
* result code */
#define AT_CEREG_N_DEFAULT AT_CEREG_OFF
/* Default unsolicited result code applied
* when no value is given */
/* Optional parameter bitmask */
#define AT_CEREG_N_MASK AT_COMMAND_PARAM1
/* CEREG AT command type */
typedef struct {
int n;
} at_cereg_t;
/* CGDCONT: Define PDP Context
* ---------------------------
* Specifies PDP context parameter values for a PDP context identified by
* the (local) context identification parameter, <cid>.
* Parameter command:
* +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
*/
/* PDP context identifier */
#define AT_CGDCONT_CID_MIN 1 /* Minimum value of context identifier */
#define AT_CGDCONT_CID_DEFAULT AT_CGDCONT_CID_MIN
/* PDP data compression parameter values */
#define AT_CGDCONT_D_COMP_OFF 0 /* PDP data compression is disabled */
#define AT_CGDCONT_D_COMP_ON 1 /* manufacturer preferred compression */
#define AT_CGDCONT_D_COMP_V42B 2 /* V.42bis */
#define AT_CGDCONT_D_COMP_V44 3 /* V.44 */
#define AT_CGDCONT_D_COMP_MIN AT_CGDCONT_D_COMP_OFF
#define AT_CGDCONT_D_COMP_MAX AT_CGDCONT_D_COMP_V44
#define AT_CGDCONT_D_COMP_DEFAULT AT_CGDCONT_D_COMP_OFF
/* PDP header compression parameter values */
#define AT_CGDCONT_H_COMP_OFF 0 /* PDP header compression is disabled */
#define AT_CGDCONT_H_COMP_ON 1 /* manufacturer preferred compression */
#define AT_CGDCONT_H_COMP_1144 2 /* RFC1144 (applicable for SNDCP only) */
#define AT_CGDCONT_H_COMP_2507 3 /* RFC2507 */
#define AT_CGDCONT_H_COMP_3095 4 /* RFC3095 (applicable for PDCP only) */
#define AT_CGDCONT_H_COMP_MIN AT_CGDCONT_H_COMP_OFF
#define AT_CGDCONT_H_COMP_MAX AT_CGDCONT_H_COMP_3095
#define AT_CGDCONT_H_COMP_DEFAULT AT_CGDCONT_H_COMP_OFF
/* IPv4AddrAlloc parameter values */
#define AT_CGDCONT_IPV4_NAS 0 /* IPv4 Address Allocation through NAS
* Signalling */
#define AT_CGDCONT_IPV4_DHCP 1 /* IPv4 Address Allocation through DHCP */
#define AT_CGDCONT_IPV4_MIN AT_CGDCONT_IPV4_NAS
#define AT_CGDCONT_IPV4_MAX AT_CGDCONT_IPV4_DHCP
#define AT_CGDCONT_IPV4_DEFAULT AT_CGDCONT_IPV4_NAS
/* emergency_indication parameter values */
#define AT_CGDCONT_EBS_OFF 0 /* PDP context is not for emergency bearer
* services */
#define AT_CGDCONT_EBS_ON 1 /* PDP context is for emergency bearer
* services */
#define AT_CGDCONT_EBS_MIN AT_CGDCONT_EBS_OFF
#define AT_CGDCONT_EBS_MAX AT_CGDCONT_EBS_ON
#define AT_CGDCONT_EBS_DEFAULT AT_CGDCONT_EBS_OFF
/* P_CSCF_discovery parameter values */
#define AT_CGDCONT_PCSCF_OFF 0 /* Preference of P-CSCF address discovery
* not influenced by +CGDCONTPDP */
#define AT_CGDCONT_PCSCF_NAS 1 /* Preference of P-CSCF address discovery
* through NAS Signalling */
#define AT_CGDCONT_PCSCF_DHCP 2 /* Preference of P-CSCF address discovery
* through DHCP */
#define AT_CGDCONT_PCSCF_MIN AT_CGDCONT_PCSCF_OFF
#define AT_CGDCONT_PCSCF_MAX AT_CGDCONT_PCSCF_DHCP
#define AT_CGDCONT_PCSCF_DEFAULT AT_CGDCONT_PCSCF_OFF
/* IM_CN_Signalling_Flag_Ind parameter values */
#define AT_CGDCONT_IM_CN_OFF 0 /* UE indicates that the PDP context is not
* for IM CN subsystem-related signalling
* only */
#define AT_CGDCONT_IM_CN_ON 1 /* UE indicates that the PDP context is for
* IM CN subsystem-related signalling
* only */
#define AT_CGDCONT_IM_CM_MIN AT_CGDCONT_IM_CN_OFF
#define AT_CGDCONT_IM_CM_MAX AT_CGDCONT_IM_CN_ON
#define AT_CGDCONT_IM_CM_DEFAULT AT_CGDCONT_IM_CN_OFF
/* Optional parameter bitmask */
#define AT_CGDCONT_CID_MASK AT_COMMAND_PARAM1
#define AT_CGDCONT_PDP_TYPE_MASK AT_COMMAND_PARAM2
#define AT_CGDCONT_APN_MASK AT_COMMAND_PARAM3
#define AT_CGDCONT_PDP_ADDR_MASK AT_COMMAND_PARAM4
#define AT_CGDCONT_D_COMP_MASK AT_COMMAND_PARAM5
#define AT_CGDCONT_H_COMP_MASK AT_COMMAND_PARAM6
#define AT_CGDCONT_IPV4ADDRALLOC_MASK AT_COMMAND_PARAM7
#define AT_CGDCONT_EMERGECY_INDICATION_MASK AT_COMMAND_PARAM8
#define AT_CGDCONT_P_CSCF_DISCOVERY_MASK AT_COMMAND_PARAM9
#define AT_CGDCONT_IM_CN_SIGNALLING_FLAG_IND_MASK AT_COMMAND_PARAM10
/* CGDCONT AT command type */
typedef struct {
int cid;
#define AT_CGDCONT_PDP_SIZE 6 /* PDP_type may be "IP", "IPV6", "IPV4V6" */
char PDP_type[AT_CGDCONT_PDP_SIZE+1];
#define AT_CGDCONT_APN_SIZE 100 /* number of characters in APN parameter */
char APN[AT_CGDCONT_APN_SIZE+1];
#define AT_CGDCONT_ADDR_SIZE 63 /* number of characters in PDP addr
* parameter (IPv6 address notation) */
char PDP_addr[AT_CGDCONT_ADDR_SIZE+1]; /* Does not apply to EPS */
int d_comp;
int h_comp;
int IPv4AddrAlloc;
int emergency_indication;
int P_CSCF_discovery;
int IM_CN_Signalling_Flag_Ind;
} at_cgdcont_t;
/* CGACT: PDP context activate or deactivate
* -----------------------------------------
* Used to activate or deactivate the specified PDP context(s).
* Action command (with optional parameters):
* +CGACT=[<state>[,<cid>[,<cid>[,...]]]]
* <state> numeric parameter that indicates the state of PDP context
* activation
* <cid> a numeric parameter which specifies a particular PDP context
* definition
*/
/* PDP context identifier */
#define AT_CGACT_CID_MIN 1 /* Minimum value of context identifier */
/* PDP context activation status */
#define AT_CGACT_DEACTIVATED 0 /* To deactivate the PDP context */
#define AT_CGACT_ACTIVATED 1 /* To activate the PDP context */
#define AT_CGACT_STATE_MIN AT_CGACT_DEACTIVATED
#define AT_CGACT_STATE_MAX AT_CGACT_ACTIVATED
#define AT_CGACT_STATE_DEFAULT AT_CGACT_DEACTIVATED
/* Optional parameter bitmask */
#define AT_CGACT_STATE_MASK AT_COMMAND_PARAM1
#define AT_CGACT_CID_MASK AT_COMMAND_PARAM2
/* CGACT AT command type */
typedef struct {
int state;
int cid;
} at_cgact_t;
/* CGPADDR: Show PDP address(es)
* -----------------------------
* Returns a list of PDP addresses for the specified context identifiers.
* +CGPADDR=[<cid>[,<cid>[,...]]]
* <cid> a numeric parameter which specifies a particular PDP
* context definition
*/
/* PDP context identifier */
#define AT_CGPADDR_CID_MIN 1 /* Minimum value of context identifier */
/* Optional parameter bitmask */
#define AT_CGPADDR_CID_MASK AT_COMMAND_PARAM1
/* CGPADDR AT command type */
typedef struct {
int cid;
} at_cgpaddr_t;
/*
* =================================
* Global AT command type definition
* =================================
*/
/* AT command type */
typedef struct {
at_command_id_t id; /* AT command identifier */
at_command_type_t type; /* AT command type */
int mask; /* Optional parameter bitmask */
union {
at_cgsn_t cgsn;
at_cgmm_t cgmm;
at_cgmr_t cgmr;
at_cimi_t cimi;
at_cfun_t cfun;
at_cpin_t cpin;
at_csq_t csq;
at_cesq_t cesq;
at_clac_t clac;
at_cmee_t cmee;
at_cnum_t cnum;
at_clck_t clck;
at_cops_t cops;
at_cgatt_t cgatt;
at_creg_t creg;
at_cgreg_t cgreg;
at_cereg_t cereg;
at_cgdcont_t cgdcont;
at_cgact_t cgact;
at_cgpaddr_t cgpaddr;
} command;
} at_command_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 ******************/
/****************************************************************************/
/****************************************************************************
** **
** Name: at_command_decode() **
** **
** Description: Parses AT command line and accordingly fills data struc- **
** ture. The main functions of the AT command parser are: **
** - check the AT command syntax **
** - fill parameter values into the data structure **
** **
** Inputs: buffer: Pointer to the buffer containing AT com- **
** mand line **
** length: Number of bytes that should be processed **
** Others: None **
** **
** Outputs: at_command: AT command data structure to be filled **
** Return: The number of AT commands successfully **
** decoded; RETURNerror if an error occurred **
** Others: None **
** **
***************************************************************************/
int at_command_decode(const char* buffer, int length, at_command_t* at_command);
/****************************************************************************
** **
** Name: at_command_get_list() **
** **
** Description: Returns the list of supported AT commands. **
** **
** Inputs: buffer: Pointer to the buffer containing the **
** string representaton of the first AT com- **
** mand that is supported by the NAS sublayer **
** n_max: Maximum number of AT commands the buffer **
** may contain **
** Others: None **
** **
** Outputs: None **
** Return: The number of AT commands actually suppor- **
** ted by the NAS sublayer **
** Others: None **
** **
***************************************************************************/
int at_command_get_list(const char** buffer, int n_max);
#endif /* __AT_COMMAND_H__*/