/[projects]/smsdaemon/ModemTransceiver.cpp
ViewVC logotype

Diff of /smsdaemon/ModemTransceiver.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 75 by torben, Fri Jun 13 10:10:06 2008 UTC revision 132 by torben, Sun Dec 7 00:59:05 2008 UTC
# Line 5  Line 5 
5  #include <string>  #include <string>
6  #include <stdexcept>  #include <stdexcept>
7    
 #include <sys/time.h>  
8  #include <time.h>  #include <time.h>
9    
10    
11  #include "SerialPort.h"  #include "serialport/SerialPort.h"
12    
13  #include "GsmModem.h"  #include "GsmModem.h"
14    
# Line 180  int  GsmModem::DeleteAllSms() Line 179  int  GsmModem::DeleteAllSms()
179    
180    
181    
182    void GsmModem::WaitForSimcard()
183    {
184            int start = time(0);
185            string result;
186    
187    
188            while (result != "^SSIM READY")
189            {
190                    result += GetResponse();
191                    result = Util::str_trim(result);
192    
193                    if ( (time(0) - start) > 10)
194                            throw std::runtime_error("Sim card timed out:");
195                    Util::Sleep(100);
196            }
197    
198    }
199    
200    void GsmModem::HandlePincode()
201    {
202            string result = Command("AT+CPIN?");
203            result = Util::str_trim(result);
204            result.erase(result.length() -2, 2); //remove trailing ok
205            result = Util::str_trim(result);
206            if (result != "+CPIN: READY")
207            {
208                    if (result == "+CPIN: SIM PIN")
209                    {
210                            Command("AT^SSET=1");
211                            result = Command("AT+CPIN=0067");
212                            if ( result.substr(result.length()-4, 4) != "OK\r\n")
213                                    throw std::runtime_error(string("Illegal pincode: ") + result);
214                            
215                            WaitForSimcard();
216                    }
217                    else
218                    {
219                            throw std::runtime_error(string("AT+CPIN? returned unhandled code: ") + result);
220                    }
221    
222            }
223    }
224    
225  void GsmModem::Init()  void GsmModem::Init()
226  {  {
227          Command( "AT" );          Command( "AT" );
# Line 194  void GsmModem::Init() Line 236  void GsmModem::Init()
236    
237          Command ("AT^SM20=0,0" ); //No SM20 compability          Command ("AT^SM20=0,0" ); //No SM20 compability
238    
239          //Set RealTimeClock ??          //Command("AT+CGATT=1"); //GPRS Attach
240            
241          //Enter pin code ??          //Command("AT+CGSMS=2"); //SMS over GPRS preferred
242    
243            HandlePincode();
244  }  }
245    
246    

Legend:
Removed from v.75  
changed lines
  Added in v.132

  ViewVC Help
Powered by ViewVC 1.1.20