Arduino  1.8.10
GSM3ShieldV1MultiClientProvider クラス

#include <GSM3ShieldV1MultiClientProvider.h>

GSM3ShieldV1MultiClientProvider の継承関係図
GSM3MobileClientProvider GSM3ShieldV1BaseProvider

公開メンバ関数

 GSM3ShieldV1MultiClientProvider ()
 
int minSocket ()
 
int maxSocket ()
 
int connectTCPClient (const char *server, int port, int id_socket)
 
int connectTCPClient (IPAddress add, int port, int id_socket)
 
void beginWriteSocket (bool client1Server0, int id_socket)
 
void writeSocket (const char *buf)
 
void writeSocket (char c)
 
void endWriteSocket ()
 
int availableSocket (bool client, int id_socket)
 
int readSocket ()
 
void flushSocket ()
 
int peekSocket ()
 
int disconnectTCP (bool client1Server0, int id_socket)
 
bool recognizeUnsolicitedEvent (byte from)
 
void manageResponse (byte from, byte to)
 
int ready ()
 
int getSocket (int socket=-1)
 
void releaseSocket (int socket)
 
bool getStatusSocketClient (uint8_t socket)
 
- 基底クラス GSM3MobileClientProvider に属する継承公開メンバ関数
 GSM3MobileClientProvider ()
 
virtual void writeSocket (uint8_t c)=0
 
- 基底クラス GSM3ShieldV1BaseProvider に属する継承公開メンバ関数
int ready ()
 
void prepareAuxLocate (PGM_P str, char auxLocate[])
 

その他の継承メンバ

- 基底クラス GSM3MobileClientProvider に属する継承限定公開変数類
uint8_t sockets
 

詳解

GSM3ShieldV1MultiClientProvider.h40 行目に定義があります。

構築子と解体子

◆ GSM3ShieldV1MultiClientProvider()

GSM3ShieldV1MultiClientProvider::GSM3ShieldV1MultiClientProvider ( )

Constructor

GSM3ShieldV1MultiClientProvider.cpp41 行目に定義があります。

42 {
45 };
GSM3MobileClientProvider * theGSM3MobileClientProvider
void registerUMProvider(GSM3ShieldV1BaseProvider *provider)
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore

関数詳解

◆ availableSocket()

int GSM3ShieldV1MultiClientProvider::availableSocket ( bool  client,
int  id_socket 
)
virtual

Check if there are data to be read in socket.

引数
client1Server01 if modem acts as client, 0 if acts as server
id_socketLocal socket number
戻り値
0 if command running, 1 if there are data available, 4 if no data, otherwise error

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp369 行目に定義があります。

370 {
371  if(flagReadingSocket==1)
372  {
374  return 1;
375  }
376  client1_server0 = client1Server0;
377  idSocket = id_socket;
379  availableSocketContinue();
381 }
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ beginWriteSocket()

void GSM3ShieldV1MultiClientProvider::beginWriteSocket ( bool  client1Server0,
int  id_socket 
)
virtual

Begin writing through a socket

引数
client1Server01 if modem acts as client, 0 if acts as server
id_socketLocal socket number
戻り値
0 if command running, 1 if success, otherwise error

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp263 行目に定義があります。

264 {
265  idSocket = id_socket;
266  client1_server0 = client1Server0;
268  beginWriteSocketContinue();
269 }
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ connectTCPClient() [1/2]

int GSM3ShieldV1MultiClientProvider::connectTCPClient ( const char *  server,
int  port,
int  id_socket 
)
virtual

Connect to a remote TCP server

引数
serverString with IP or server name
portRemote port number
id_socketLocal socket number
戻り値
0 if command running, 1 if success, otherwise error

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp86 行目に定義があります。

87 {
89  idSocket = id_socket;
90 
93  connectTCPClientContinue();
95 }
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ connectTCPClient() [2/2]

int GSM3ShieldV1MultiClientProvider::connectTCPClient ( IPAddress  add,
int  port,
int  id_socket 
)
virtual

Connect to a remote TCP server

引数
addRemote IP address
portRemote port number
id_socketLocal socket number
戻り値
0 if command running, 1 if success, otherwise error

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp97 行目に定義があります。

98 {
99  remoteIP=add;
101  return connectTCPClient(0, port, id_socket);
102 }
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
int connectTCPClient(const char *server, int port, int id_socket)

◆ disconnectTCP()

int GSM3ShieldV1MultiClientProvider::disconnectTCP ( bool  client1Server0,
int  id_socket 
)
virtual

Close a socket

引数
client1Server01 if modem acts as client, 0 if acts as server
id_socketLocal socket number
戻り値
0 if command running, 1 if success, otherwise error

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp193 行目に定義があります。

194 {
195  idSocket = id_socket;
196 
197  // First of all, we will flush the socket synchronously
198  unsigned long m;
199  m=millis();
200  flushSocket();
201  while(((millis()-m)< __TOUTFLUSH__ )&&(ready()==0))
202  delay(10);
203 
204  // Could not flush the communications... strange
205  if(ready()==0)
206  {
209  }
210 
211  // Set up the command
212  client1_server0 = client1Server0;
213  flagReadingSocket=0;
215  disconnectTCPContinue();
217 }
unsigned long millis(void)
Definition: wiring.c:65
void delay(unsigned long)
Definition: wiring.c:106
m
Definition: wiring.c:53
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ endWriteSocket()

void GSM3ShieldV1MultiClientProvider::endWriteSocket ( )
virtual

Finish current writing

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp340 行目に定義があります。

341 {
343  endWriteSocketContinue();
344 }
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ flushSocket()

void GSM3ShieldV1MultiClientProvider::flushSocket ( )
virtual

Flush socket

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp535 行目に定義があります。

536 {
537  flagReadingSocket=0;
539  flushSocketContinue();
540 }
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ getSocket()

int GSM3ShieldV1MultiClientProvider::getSocket ( int  socket = -1)
virtual

Get client socket

引数
socket
戻り値
socket

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp574 行目に定義があります。

575 {
576  if(socket==-1)
577  {
578  int i;
579  for(i=minSocket(); i<=maxSocket(); i++)
580  {
581  if (!(sockets&(0x0001<<i)))
582  {
583  sockets|=((0x0001)<<i);
584  return i;
585  }
586  }
587  }
588  else
589  {
590  if (!(sockets&(0x0001<<socket)))
591  {
592  sockets|=((0x0001)<<socket);
593  return socket;
594  }
595  }
596  return -1;
597 }
uint8_t i

◆ getStatusSocketClient()

bool GSM3ShieldV1MultiClientProvider::getStatusSocketClient ( uint8_t  socket)
virtual

Get socket client status

引数
socketSocket
戻り値
socket client status

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp605 行目に定義があります。

606 {
607  if(socket>8)
608  return 0;
609  if(sockets&(0x0001<<socket))
610  return 1;
611  else
612  return 0;
613 };

◆ manageResponse()

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

Manages modem response

引数
fromInitial byte of buffer
toFinal byte of buffer

GSM3ShieldV1BaseProviderを再実装しています。

GSM3ShieldV1MultiClientProvider.cpp48 行目に定義があります。

49 {
51  {
52  case XON:
53  if (flagReadingSocket)
54  {
55 // flagReadingSocket = 0;
56  fullBufferSocket = (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()<3);
57  }
59  break;
60  case NONE:
62  break;
63  case CONNECTTCPCLIENT:
64  connectTCPClientContinue();
65  break;
66  case DISCONNECTTCP:
67  disconnectTCPContinue();
68  break;
69  case BEGINWRITESOCKET:
70  beginWriteSocketContinue();
71  break;
72  case ENDWRITESOCKET:
73  endWriteSocketContinue();
74  break;
75  case AVAILABLESOCKET:
76  availableSocketContinue();
77  break;
78  case FLUSHSOCKET:
79  fullBufferSocket = (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()<3);
80  flushSocketContinue();
81  break;
82  }
83 }
void setOngoingCommand(GSM3_commandType_e c)
GSM3CircularBuffer & theBuffer()
GSM3CircularBuffer cb
void deleteToTheEnd(byte from)
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
GSM3_commandType_e getOngoingCommand()

◆ maxSocket()

int GSM3ShieldV1MultiClientProvider::maxSocket ( )
inlinevirtual

Maximum socket

戻り値
5

GSM3MobileClientProviderを実装しています。

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

98 {return 5;};

◆ minSocket()

int GSM3ShieldV1MultiClientProvider::minSocket ( )
inlinevirtual

Minimum socket

戻り値
0

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.h93 行目に定義があります。

93 {return 0;};

◆ peekSocket()

int GSM3ShieldV1MultiClientProvider::peekSocket ( )
virtual

Get a character but will not advance the buffer head

戻り値
character

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp528 行目に定義があります。

529 {
531 }
GSM3CircularBuffer & theBuffer()
char peek(int increment)
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore

◆ readSocket()

int GSM3ShieldV1MultiClientProvider::readSocket ( )
virtual

Read a character from socket

戻り値
socket

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp487 行目に定義があります。

488 {
489  char charSocket;
490 
492  {
493  Serial.println();Serial.println("*");
494  return 0;
495  }
496 
497  charSocket = theGSM3ShieldV1ModemCore.theBuffer().read();
498  //Case buffer not full
499  if (!fullBufferSocket)
500  {
501  //The last part of the buffer after data is CRLFOKCRLF
503  {
504  //Start again availableSocket function.
505  flagReadingSocket=0;
507  availableSocketContinue();
508  }
509  }
511  {
512  // The buffer was full, we have to let the data flow again
513  // theGSM3ShieldV1ModemCore.theBuffer().flush();
514  flagReadingSocket = 1;
517  //A small delay to assure data received after xon.
518  delay(100);
520  fullBufferSocket=false;
521  }
522 
523  return charSocket;
524 
525 }
void delay(unsigned long)
Definition: wiring.c:106
GSM3CircularBuffer & theBuffer()
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore
void openCommand(GSM3ShieldV1BaseProvider *activeProvider, GSM3_commandType_e c)

◆ ready()

int GSM3ShieldV1MultiClientProvider::ready ( )
inlinevirtual

Get last command status

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

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.h180 行目に定義があります。

◆ recognizeUnsolicitedEvent()

bool GSM3ShieldV1MultiClientProvider::recognizeUnsolicitedEvent ( byte  from)
virtual

Recognize unsolicited event

引数
from
戻り値
true if successful

GSM3ShieldV1BaseProviderを再実装しています。

GSM3ShieldV1MultiClientProvider.cpp569 行目に定義があります。

570 {
571  return false;
572 }

◆ releaseSocket()

void GSM3ShieldV1MultiClientProvider::releaseSocket ( int  socket)
virtual

Release socket

引数
socketSocket for release

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp599 行目に定義があります。

600 {
601  if (sockets&((0x0001)<<socket))
602  sockets^=((0x0001)<<socket);
603 }

◆ writeSocket() [1/2]

void GSM3ShieldV1MultiClientProvider::writeSocket ( const char *  buf)
virtual

Write through a socket. MUST go after beginWriteSocket()

引数
bufcharacters to be written (final 0 will not be written)

GSM3MobileClientProviderを実装しています。

GSM3ShieldV1MultiClientProvider.cpp328 行目に定義があります。

329 {
331 }
size_t print(const __FlashStringHelper *)
Definition: Print.cpp:44
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore

◆ writeSocket() [2/2]

void GSM3ShieldV1MultiClientProvider::writeSocket ( char  c)

Write through a socket. MUST go after beginWriteSocket()

引数
ccharacter to be written

GSM3ShieldV1MultiClientProvider.cpp334 行目に定義があります。

335 {
337 }
size_t print(const __FlashStringHelper *)
Definition: Print.cpp:44
GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore

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