NetServices Stack source

Dependents:   HelloWorld ServoInterfaceBoardExample1 4180_Lab4

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers UMTSStickNetIf.cpp Source File

UMTSStickNetIf.cpp

00001 
00002 /*
00003 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
00004  
00005 Permission is hereby granted, free of charge, to any person obtaining a copy
00006 of this software and associated documentation files (the "Software"), to deal
00007 in the Software without restriction, including without limitation the rights
00008 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00009 copies of the Software, and to permit persons to whom the Software is
00010 furnished to do so, subject to the following conditions:
00011  
00012 The above copyright notice and this permission notice shall be included in
00013 all copies or substantial portions of the Software.
00014  
00015 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00016 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00017 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00018 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00019 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00020 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00021 THE SOFTWARE.
00022 */
00023 
00024 #include "netCfg.h"
00025 #if NET_UMTS
00026 
00027 #include "UMTSStickNetIf.h"
00028 
00029 #define __DEBUG
00030 #include "dbg/dbg.h"
00031 
00032 UMTSStickNetIf::UMTSStickNetIf() : PPPNetIf(NULL), m_umtsStick(), m_pUsbSerial(NULL)
00033 {
00034   PPPNetIf::m_pIf = new GPRSModem();
00035 }
00036 
00037 UMTSStickNetIf::~UMTSStickNetIf()
00038 {
00039   delete PPPNetIf::m_pIf;
00040   if(m_pUsbSerial)
00041     delete m_pUsbSerial;
00042 }
00043   
00044 UMTSStickErr UMTSStickNetIf::setup() //UMTSStickErr is from /drv/umtsstick/UMTSStick.h
00045 {
00046   return m_umtsStick.getSerial(&m_pUsbSerial);
00047 }
00048 
00049 PPPErr UMTSStickNetIf::connect(const char* apn /*= NULL*/, const char* userId /*= NULL*/, const char* password /*= NULL*/) //Connect using GPRS
00050 {
00051   if(!m_pUsbSerial)
00052     return PPP_MODEM;
00053 
00054   ATErr atErr;
00055   for(int i=0; i<3; i++)
00056   {
00057     atErr = m_pIf->open(m_pUsbSerial); //3 tries
00058     if(!atErr)
00059       break;
00060     wait(4);
00061   }
00062     
00063   if(atErr)
00064     return PPP_MODEM;
00065 
00066   PPPErr pppErr;
00067   for(int i=0; i<3; i++)
00068   {  
00069     pppErr = PPPNetIf::GPRSConnect(apn, userId, password);
00070     if(!pppErr)
00071       break;
00072     wait(4);
00073   }
00074   if(pppErr)
00075     return pppErr;
00076   
00077   return PPP_OK;
00078 }
00079 
00080 PPPErr UMTSStickNetIf::disconnect()
00081 {
00082   PPPErr pppErr = PPPNetIf::disconnect();
00083   if(pppErr)
00084     return pppErr;
00085     
00086   m_pIf->close();
00087   
00088   return PPP_OK;
00089 }
00090   
00091 
00092 #endif