Mobil_surveillance_system 1
GPRS.h
Go to the documentation of this file.
00001 #ifndef GPRS_H_
00002 #define GPRS_H_
00003 
00005 
00012 #include "Bitmanip.h"                   // due to: the bit manipulations macros
00013 #include "Dinamic_Array.h"              // due to: dinamic array
00014 #include "Time.h"                       // due to: software rtc
00015 #include "UART2.h"                      // due to: serial communications functions
00016 #include "GPS.h"                        // due to: GPS_setPostGPSInfoPacketsCallbackFunction function
00017 #include <stdio.h>                      // due to: sprintf function
00018 
00019 //*****************************************************************************
00020 //
00021 // Types and definitions
00022 //
00023 //*****************************************************************************
00024 
00025 #ifndef DEFINE_TBOOLEAN                 // define unsigned char as tBoolean in only that case when it hasn't been defined yet somewhere else in the scope
00026 
00028 typedef unsigned char tBoolean;         // use as bool
00029 #define DEFINE_TBOOLEAN
00030 
00031 #endif                                  // DEFINE_TBOOLEAN
00032 
00033 //*****************************************************************************
00034 //
00035 // Types and definitions
00036 //
00037 //*****************************************************************************
00038 
00040 #define AT_COMMAND_AT                               "AT\r\n"
00041 #define AT_COMMAND_ECHO_OFF                         "ATE0\r\n"
00042 #define AT_COMMAND_RESTART                          "AT+CFUN=1\r\n"
00043 #define AT_COMMAND_ENABLE_ERROR_MESSAGES            "AT+CMEE=1\r\n"
00044 #define AT_COMMAND_START_WIP_PACKET                 "AT+WOPEN=1\r\n"
00045 #define AT_COMMAND_ENABLE_CLIP                      "AT+CLIP=1\r\n"
00046 #define AT_COMMAND_SELECT_CHARACTERSET              "AT+CSCS=\"GSM\"\r\n"
00047 #define AT_COMMAND_START_IP_STACK                   "AT+WIPCFG=1\r\n"
00048 #define AT_COMMAND_CLOSE_IP_STACK                   "AT+WIPCFG=0\r\n"
00049 #define AT_COMMAND_CONF_IP_STACK                    "AT+WIPCFG?\r\n"
00050 #define AT_COMMAND_OPEN_BEARER                      "AT+WIPBR=1,6\r\n"
00051 #define AT_COMMAND_CLOSE_BEARER                     "AT+WIPBR=0,6\r\n"
00052 #define AT_COMMAND_START_BEARER                     "AT+WIPBR=4,6,0\r\n"
00053 #define AT_COMMAND_SET_TCP_PARAMETERS               "AT+WIPOPT=2,1,2,51,1600\r\n"
00054 #define AT_COMMAND_SET_TCP_IN_PARAMETERS            "AT+WIPOPT=2,1,2,50,1600\r\n"
00055 #define AT_COMMAND_SWITCH_TO_AT_MODE                "+++"
00056 #define AT_COMMAND_CLOSE_IP                         "AT+WIPCLOSE=2,1\r\n"
00057 #define AT_COMMAND_OPEN_TCP_SOCKET                  "AT+WIPDATA=2,1,1\r\n"
00058 #define AT_COMMAND_CLOSE_TCP_SOCKET                 "AT+WIPCLOSE=2,1\r\n"
00059 
00060 #define AT_COMMAND_DUMP_BR                          "AT+WIPBR?\r\n"
00061 
00063 #define GPRS_RESPONSE_BUFFER_SIZE                   1024
00064 
00065 #define ATTEMPT_NUMBER                              5
00066 
00067 #define PIN                                         "5003"
00068 
00070 #define GPRS_ETX_CHAR                               '\x03'
00071 
00072 
00074 typedef enum
00075 {
00076 
00077     GPRS_Uninitialized = 0,
00078     GPRS_EscapeToCommandMode,
00079     GPRS_RestartGSM,
00080     GPRS_EchoOff,
00081     GPRS_ErrorOn,
00082     GPRS_AddPin,
00083     GPRS_OpenGSM,
00084     GPRS_ChangeCharSet,
00085 
00086     GPRS_Initialized,       // 8
00087 
00088 
00089     GPRS_OpenGPRS,
00090     GPRS_OpenBearer,
00091     GPRS_SetConnectionPoint,
00092     GPRS_AddUsername,
00093     GPRS_AddPassword,
00094     GPRS_ConnectToBearer,
00095 
00096     GPRS_ConnectedToBearer, // 15
00097 
00098     GPRS_WIPCreate,
00099     GPRS_WIPData,
00100     GPRS_SendingData,
00101     GPRS_Connected,
00102     GPRS_EscapeFromDataMode,
00103     GPRS_WIPClose,
00104     GPRS_DisconnectingFromBearer,
00105     GPRS_CloseGPRS,         // 23
00106 
00107     GPRS_Waiting
00108 
00109 }tGPRS_state;
00110 
00111 
00113 typedef struct
00114 {
00116     char* pcCommand;
00118     tDateTime sWaitingDuration;
00119     
00120 }tCommandInstance;
00121 
00122 
00123 //*****************************************************************************
00124 //
00125 // Global variables.
00126 //
00127 //*****************************************************************************
00128 
00129 //*****************************************************************************
00130 //
00131 // Function declarations
00132 //
00133 //*****************************************************************************
00134 
00138 void GPRS_initGPRS(void);
00139 
00140 
00144 void GPRS_executeGPRS(void);
00145 
00146 
00150 void GPRS_processResponse(void);
00151 
00152 
00158 void GPRS_addCommand(char* pcCommand, tDateTime sTimeoutDuration);
00159 
00160 
00164 void GPRS_processCommand(void);
00165 
00166 
00171 void GPRS_setState(tGPRS_state newState);
00172 
00173 
00178 void GPRS_initCommandQueue(tDinamicArray* pDinamicArray);
00179 
00180 
00185 void GPRS_appendResponse(const char* pcResponse);
00186 
00187 
00191 void GPRS_clearResponseBuffer(void);
00192 
00193 
00199 void GPRS_wait(tDateTime sWaitDuration, tGPRS_state eNextState);
00200 
00201 
00206 tBoolean GPRS_isDeadlinePassed(void);
00207 
00208 
00212 void GPRS_connectToBearer(void);
00213 
00214 
00218 void GPRS_disconnectFromBearer(void);
00219 
00220 
00229 void GPRS_httpPost(char* pcHost, char* pcPort, char* pcURL, char* pcData, unsigned int uiDataLength);
00230 
00231 
00232 #endif /*GPRS_H_*/
 All Data Structures Files Functions Variables Typedefs Enumerations Defines