aboutsummaryrefslogtreecommitdiff
path: root/libraries/GSM/GSM3ShieldV1AccessProvider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/GSM/GSM3ShieldV1AccessProvider.cpp')
-rw-r--r--libraries/GSM/GSM3ShieldV1AccessProvider.cpp296
1 files changed, 0 insertions, 296 deletions
diff --git a/libraries/GSM/GSM3ShieldV1AccessProvider.cpp b/libraries/GSM/GSM3ShieldV1AccessProvider.cpp
deleted file mode 100644
index 67ae755..0000000
--- a/libraries/GSM/GSM3ShieldV1AccessProvider.cpp
+++ /dev/null
@@ -1,296 +0,0 @@
-#include <GSM3ShieldV1AccessProvider.h>
-#include <Arduino.h>
-
-#define __RESETPIN__ 7
-#define __TOUTSHUTDOWN__ 5000
-#define __TOUTMODEMCONFIGURATION__ 5000//equivalent to 30000 because of time in interrupt routine.
-#define __TOUTAT__ 1000
-
-char _command_AT[] PROGMEM = "AT";
-char _command_CGREG[] PROGMEM = "AT+CGREG?";
-
-
-GSM3ShieldV1AccessProvider::GSM3ShieldV1AccessProvider(bool debug)
-{
- theGSM3ShieldV1ModemCore.setDebug(debug);
-
-}
-
-void GSM3ShieldV1AccessProvider::manageResponse(byte from, byte to)
-{
- switch(theGSM3ShieldV1ModemCore.getOngoingCommand())
- {
- case MODEMCONFIG:
- ModemConfigurationContinue();
- break;
- case ALIVETEST:
- isModemAliveContinue();
- break;
- }
-}
-
-///////////////////////////////////////////////////////CONFIGURATION FUNCTIONS///////////////////////////////////////////////////////////////////
-
-// Begin
-// Restart or start the modem
-// May be synchronous
-GSM3_NetworkStatus_t GSM3ShieldV1AccessProvider::begin(char* pin, bool restart, bool synchronous)
-{
- pinMode(__RESETPIN__, OUTPUT);
-
- // If asked for modem restart, restart
- if (restart)
- HWrestart();
- else
- HWstart();
-
- theGSM3ShieldV1ModemCore.gss.begin(9600);
- // Launch modem configuration commands
- ModemConfiguration(pin);
- // If synchronous, wait till ModemConfiguration is over
- if(synchronous)
- {
- // if we shorten this delay, the command fails
- while(ready()==0)
- delay(1000);
- }
- return getStatus();
-}
-
-//HWrestart.
-int GSM3ShieldV1AccessProvider::HWrestart()
-{
-
- theGSM3ShieldV1ModemCore.setStatus(IDLE);
- digitalWrite(__RESETPIN__, HIGH);
- delay(12000);
- digitalWrite(__RESETPIN__, LOW);
- delay(1000);
- return 1; //configandwait(pin);
-}
-
-//HWrestart.
-int GSM3ShieldV1AccessProvider::HWstart()
-{
-
- theGSM3ShieldV1ModemCore.setStatus(IDLE);
- digitalWrite(__RESETPIN__, HIGH);
- delay(2000);
- digitalWrite(__RESETPIN__, LOW);
- //delay(1000);
-
- return 1; //configandwait(pin);
-}
-
-//Initial configuration main function.
-int GSM3ShieldV1AccessProvider::ModemConfiguration(char* pin)
-{
- theGSM3ShieldV1ModemCore.setPhoneNumber(pin);
- theGSM3ShieldV1ModemCore.openCommand(this,MODEMCONFIG);
- theGSM3ShieldV1ModemCore.setStatus(CONNECTING);
- ModemConfigurationContinue();
- return theGSM3ShieldV1ModemCore.getCommandError();
-}
-
-//Initial configuration continue function.
-void GSM3ShieldV1AccessProvider::ModemConfigurationContinue()
-{
- bool resp;
-
- // 1: Send AT
- // 2: Wait AT OK and SetPin or CGREG
- // 3: Wait Pin OK and CGREG
- // 4: Wait CGREG and Flow SW control or CGREG
- // 5: Wait IFC OK and SMS Text Mode
- // 6: Wait SMS text Mode OK and Calling line identification
- // 7: Wait Calling Line Id OK and Echo off
- // 8: Wait for OK and COLP command for connecting line identification.
- // 9: Wait for OK.
- int ct=theGSM3ShieldV1ModemCore.getCommandCounter();
- if(ct==1)
- {
- // Launch AT
- theGSM3ShieldV1ModemCore.setCommandCounter(2);
- theGSM3ShieldV1ModemCore.genericCommand_rq(_command_AT);
- }
- else if(ct==2)
- {
- // Wait for AT - OK.
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp))
- {
- if(resp)
- {
- // OK received
- if(theGSM3ShieldV1ModemCore.getPhoneNumber() && (theGSM3ShieldV1ModemCore.getPhoneNumber()[0]!=0))
- {
- theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CPIN="), false);
- theGSM3ShieldV1ModemCore.setCommandCounter(3);
- theGSM3ShieldV1ModemCore.genericCommand_rqc(theGSM3ShieldV1ModemCore.getPhoneNumber());
- }
- else
- {
- //DEBUG
- //Serial.println("AT+CGREG?");
- theGSM3ShieldV1ModemCore.setCommandCounter(4);
- theGSM3ShieldV1ModemCore.takeMilliseconds();
- theGSM3ShieldV1ModemCore.genericCommand_rq(_command_CGREG);
- }
- }
- else theGSM3ShieldV1ModemCore.closeCommand(3);
- }
- }
- else if(ct==3)
- {
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp))
- {
- if(resp)
- {
- theGSM3ShieldV1ModemCore.setCommandCounter(4);
- theGSM3ShieldV1ModemCore.takeMilliseconds();
- theGSM3ShieldV1ModemCore.delayInsideInterrupt(2000);
- theGSM3ShieldV1ModemCore.genericCommand_rq(_command_CGREG);
- }
- else theGSM3ShieldV1ModemCore.closeCommand(3);
- }
- }
- else if(ct==4)
- {
- char auxLocate1 [12];
- char auxLocate2 [12];
- prepareAuxLocate(PSTR("+CGREG: 0,1"), auxLocate1);
- prepareAuxLocate(PSTR("+CGREG: 0,5"), auxLocate2);
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate1, auxLocate2))
- {
- if(resp)
- {
- theGSM3ShieldV1ModemCore.setCommandCounter(5);
- theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+IFC=1,1"));
- }
- else
- {
- // If not, launch command again
- if(theGSM3ShieldV1ModemCore.takeMilliseconds() > __TOUTMODEMCONFIGURATION__)
- {
- theGSM3ShieldV1ModemCore.closeCommand(3);
- }
- else
- {
- theGSM3ShieldV1ModemCore.delayInsideInterrupt(2000);
- theGSM3ShieldV1ModemCore.genericCommand_rq(_command_CGREG);
- }
- }
- }
- }
- else if(ct==5)
- {
- // 5: Wait IFC OK
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp))
- {
- //Delay for SW flow control being active.
- theGSM3ShieldV1ModemCore.delayInsideInterrupt(2000);
- // 9: SMS Text Mode
- theGSM3ShieldV1ModemCore.setCommandCounter(6);
- theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CMGF=1"));
- }
- }
- else if(ct==6)
- {
- // 6: Wait SMS text Mode OK
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp))
- {
- //Calling line identification
- theGSM3ShieldV1ModemCore.setCommandCounter(7);
- theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CLIP=1"));
- }
- }
- else if(ct==7)
- {
- // 7: Wait Calling Line Id OK
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp))
- {
- // Echo off
- theGSM3ShieldV1ModemCore.setCommandCounter(8);
- theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("ATE0"));
- }
- }
- else if(ct==8)
- {
- // 8: Wait ATEO OK, send COLP
- // In Arduino Mega, attention, take away the COLP step
- // It looks as we can only have 8 steps
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp))
- {
- theGSM3ShieldV1ModemCore.setCommandCounter(9);
- theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+COLP=1"));
- }
- }
- else if(ct==9)
- {
- // 9: Wait ATCOLP OK
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp))
- {
- if (resp)
- {
- theGSM3ShieldV1ModemCore.setStatus(GSM_READY);
- theGSM3ShieldV1ModemCore.closeCommand(1);
- }
- else theGSM3ShieldV1ModemCore.closeCommand(3);
- }
- }
-}
-
-//Alive Test main function.
-int GSM3ShieldV1AccessProvider::isAccessAlive()
-{
- theGSM3ShieldV1ModemCore.setCommandError(0);
- theGSM3ShieldV1ModemCore.setCommandCounter(1);
- theGSM3ShieldV1ModemCore.openCommand(this,ALIVETEST);
- isModemAliveContinue();
- return theGSM3ShieldV1ModemCore.getCommandError();
-}
-
-//Alive Test continue function.
-void GSM3ShieldV1AccessProvider::isModemAliveContinue()
-{
-bool rsp;
-switch (theGSM3ShieldV1ModemCore.getCommandCounter()) {
- case 1:
- theGSM3ShieldV1ModemCore.genericCommand_rq(_command_AT);
- theGSM3ShieldV1ModemCore.setCommandCounter(2);
- break;
- case 2:
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(rsp))
- {
- if (rsp) theGSM3ShieldV1ModemCore.closeCommand(1);
- else theGSM3ShieldV1ModemCore.closeCommand(3);
- }
- break;
- }
-}
-
-//Shutdown.
-bool GSM3ShieldV1AccessProvider::shutdown()
-{
- unsigned long m;
- bool resp;
- char auxLocate [18];
-
- // It makes no sense to have an asynchronous shutdown
- pinMode(__RESETPIN__, OUTPUT);
- digitalWrite(__RESETPIN__, HIGH);
- delay(1500);
- digitalWrite(__RESETPIN__, LOW);
- theGSM3ShieldV1ModemCore.setStatus(IDLE);
- theGSM3ShieldV1ModemCore.gss.close();
-
- m=millis();
- prepareAuxLocate(PSTR("POWER DOWN"), auxLocate);
- while((millis()-m) < __TOUTSHUTDOWN__)
- {
- delay(1);
- if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate))
- return resp;
- }
- return false;
-}
-