Arduino  1.8.10
GSM3ShieldV1SMSProvider クラス

#include <GSM3ShieldV1SMSProvider.h>

GSM3ShieldV1SMSProvider の継承関係図
GSM3MobileSMSProvider GSM3ShieldV1BaseProvider

公開メンバ関数

 GSM3ShieldV1SMSProvider ()
 
void manageResponse (byte from, byte to)
 
int beginSMS (const char *to)
 
void writeSMS (char c)
 
int endSMS ()
 
int availableSMS ()
 
int peekSMS ()
 
void flushSMS ()
 
int remoteSMSNumber (char *number, int nlength)
 
int readSMS ()
 
int ready ()
 
- 基底クラス GSM3ShieldV1BaseProvider に属する継承公開メンバ関数
int ready ()
 
void prepareAuxLocate (PGM_P str, char auxLocate[])
 
virtual bool recognizeUnsolicitedEvent (byte from)
 

詳解

GSM3ShieldV1SMSProvider.h42 行目に定義があります。

構築子と解体子

◆ GSM3ShieldV1SMSProvider()

GSM3ShieldV1SMSProvider::GSM3ShieldV1SMSProvider ( )

GSM3ShieldV1SMSProvider.cpp37 行目に定義があります。

38 {
39  theGSM3SMSProvider=this;
40 };
GSM3MobileSMSProvider * theGSM3SMSProvider

関数詳解

◆ availableSMS()

int GSM3ShieldV1SMSProvider::availableSMS ( )
virtual

Check if SMS available and prepare it to be read

戻り値
number of bytes in a received SMS

GSM3MobileSMSProviderを再実装しています。

GSM3ShieldV1SMSProvider.cpp117 行目に定義があります。

118 {
119  flagReadingSMS = 0;
121  availableSMSContinue();
123 }
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ beginSMS()

int GSM3ShieldV1SMSProvider::beginSMS ( const char *  to)
inlinevirtual

Begin a SMS to send it

引数
toDestination
戻り値
error command if it exists

GSM3MobileSMSProviderを再実装しています。

GSM3ShieldV1SMSProvider.cpp43 行目に定義があります。

44 {
46  return 2;
47 
50  beginSMSContinue();
52 }
GSM3_NetworkStatus_t getStatus()
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ endSMS()

int GSM3ShieldV1SMSProvider::endSMS ( )
inlinevirtual

End SMS

戻り値
error command if it exists

GSM3MobileSMSProviderを再実装しています。

GSM3ShieldV1SMSProvider.cpp84 行目に定義があります。

85 {
87  endSMSContinue();
88  while(ready()==0) delay(100);
90 }
void delay(unsigned long)
Definition: wiring.c:106
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ flushSMS()

void GSM3ShieldV1SMSProvider::flushSMS ( )
virtual

Delete the SMS from Modem memory and proccess answer

GSM3MobileSMSProviderを再実装しています。

GSM3ShieldV1SMSProvider.cpp261 行目に定義があります。

262 {
263 
264  //With this, sms data can fill up to 2x128+5x128 bytes.
265  for (int aux = 0;aux<5;aux++)
266  {
269  delay(10);
270  }
271 
273  flushSMSContinue();
274 }
void delay(unsigned long)
Definition: wiring.c:106
GSM3CircularBuffer & theBuffer()
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ manageResponse()

void GSM3ShieldV1SMSProvider::manageResponse ( byte  from,
byte  to 
)
virtual

Manages modem response

引数
fromInitial byte of buffer
toFinal byte of buffer

GSM3ShieldV1BaseProviderを再実装しています。

GSM3ShieldV1SMSProvider.cpp299 行目に定義があります。

300 {
302  {
303 /* case XON:
304  if (flagReadingSocket)
305  {
306 // flagReadingSocket = 0;
307  fullBufferSocket = (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()<3);
308  }
309  else theGSM3ShieldV1ModemCore.openCommand(this,NONE);
310  break;
311 */ case NONE:
313  break;
314  case BEGINSMS:
315  beginSMSContinue();
316  break;
317  case ENDSMS:
318  endSMSContinue();
319  break;
320  case AVAILABLESMS:
321  availableSMSContinue();
322  break;
323  case FLUSHSMS:
324  flushSMSContinue();
325  break;
326  }
327 }
GSM3CircularBuffer cb
void deleteToTheEnd(byte from)
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
GSM3_commandType_e getOngoingCommand()

◆ peekSMS()

int GSM3ShieldV1SMSProvider::peekSMS ( )
virtual

Read a byte but do not advance the buffer header (circular buffer)

戻り値
character

GSM3MobileSMSProviderを再実装しています。

GSM3ShieldV1SMSProvider.cpp249 行目に定義があります。

250 {
251  if (!flagReadingSMS)
252  {
253  flagReadingSMS = 1;
255  }
256 
258 }
GSM3CircularBuffer & theBuffer()
char peek(int increment)
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
bool chopUntil(const char *reference, bool movetotheend, bool head=true)

◆ readSMS()

int GSM3ShieldV1SMSProvider::readSMS ( )
virtual

Read one char for SMS buffer (advance circular buffer)

戻り値
character

GSM3MobileSMSProviderを再実装しています。

GSM3ShieldV1SMSProvider.cpp179 行目に定義があります。

180 {
181  char charSMS;
182  //First char.
183  if (!flagReadingSMS)
184  {
185  flagReadingSMS = 1;
187  }
188  charSMS = theGSM3ShieldV1ModemCore.theBuffer().read();
189 
190  //Second Buffer.
191  if (checkSecondBuffer)
192  {
193  checkSecondBuffer = 0;
194  twoSMSinBuffer = theGSM3ShieldV1ModemCore.theBuffer().locate("\r\n\r\n+");
195  }
196 
197  //Case the last char in buffer.
198  if ((!twoSMSinBuffer)&&fullBufferSMS&&(theGSM3ShieldV1ModemCore.theBuffer().availableBytes()==127))
199  {
201  fullBufferSMS = 0;
202  checkSecondBuffer = 1;
205  delay(10);
206 
207  return charSMS;
208  }
209  //Case two SMS in buffer
210  else if (twoSMSinBuffer)
211  {
212  if (theGSM3ShieldV1ModemCore.theBuffer().locate("\r\n\r\n+"))
213  {
214  return charSMS;
215  }
216  else
217  {
221  delay(10);
222  return 0;
223  }
224  }
225  //Case 1 SMS and buffer not full
226  else if (!fullBufferSMS)
227  {
228  if (theGSM3ShieldV1ModemCore.theBuffer().locate("\r\n\r\nOK"))
229  {
230  return charSMS;
231  }
232  else
233  {
237  delay(10);
238  return 0;
239  }
240  }
241  //Case to read all the chars in buffer to the end.
242  else
243  {
244  return charSMS;
245  }
246 }
void delay(unsigned long)
Definition: wiring.c:106
GSM3CircularBuffer & theBuffer()
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)
bool chopUntil(const char *reference, bool movetotheend, bool head=true)

◆ ready()

int GSM3ShieldV1SMSProvider::ready ( )
inlinevirtual

Get last command status

戻り値
returns 0 if last command is still executing, 1 success, >1 error

GSM3MobileSMSProviderを実装しています。

GSM3ShieldV1SMSProvider.h98 行目に定義があります。

◆ remoteSMSNumber()

int GSM3ShieldV1SMSProvider::remoteSMSNumber ( char *  number,
int  nlength 
)
virtual

Read sender number phone

引数
numberBuffer for save number phone
nlengthBuffer length
戻り値
1 success, >1 error

GSM3MobileSMSProviderを再実装しています。

GSM3ShieldV1SMSProvider.cpp171 行目に定義があります。

172 {
173  theGSM3ShieldV1ModemCore.theBuffer().extractSubstring("READ\",\"", "\"", number, nlength);
174 
175  return 1;
176 }
GSM3CircularBuffer & theBuffer()
bool extractSubstring(const char *from, const char *to, char *buffer, int bufsize)
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore

◆ writeSMS()

void GSM3ShieldV1SMSProvider::writeSMS ( char  c)
inlinevirtual

Write a SMS character by character

引数
cCharacter

GSM3MobileSMSProviderを再実装しています。

GSM3ShieldV1SMSProvider.cpp78 行目に定義があります。

79 {
81 }
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore

このクラス詳解は次のファイルから抽出されました: