Skip to content

Commit 1a0f585

Browse files
committed
change
1 parent 7599f8c commit 1a0f585

13 files changed

+1155
-556
lines changed

DFRobot_SIMclient.cpp

+131-132
Original file line numberDiff line numberDiff line change
@@ -1,164 +1,163 @@
11
#include "DFRobot_SIMclient.h"
22

3-
int DFRobot_SIMclient::checkSignalQuality(void)
3+
int DFRobot_SIMclient::checkSignalQuality(void)
44
{
5-
char signalBuffer[26];
6-
int i = 0,j = 0,k = 0;
7-
char *signalQuality;
8-
SIMcore.cleanBuffer(signalBuffer,26);
9-
SIMcore.send_cmd("AT+CSQ\r\n");
10-
SIMcore.readBuffer(signalBuffer,26);
11-
if (NULL != (signalQuality = strstr(signalBuffer, "+CSQ:"))){
12-
i = *(signalQuality + 6) - 48;
13-
j = *(signalQuality + 7) - 48;
14-
k = (i * 10) + j;
15-
}else{
16-
SIMcore.closeCommand();
17-
return 0;
18-
}
19-
if( k == 99){
20-
SIMcore.closeCommand();
21-
return 0;
22-
}else{
23-
SIMcore.setCommandCounter(1);
24-
return k;
25-
}
5+
char signalBuffer[26];
6+
int i = 0,j = 0,k = 0;
7+
char *signalQuality;
8+
cleanBuffer(signalBuffer, 26);
9+
sendCmd("AT+CSQ\r\n");
10+
readBuffer(signalBuffer, 26);
11+
if (NULL != (signalQuality = strstr(signalBuffer, "+CSQ:"))){
12+
i = *(signalQuality + 6) - 48;
13+
j = *(signalQuality + 7) - 48;
14+
k = (i * 10) + j;
15+
}else{
16+
closeCommand();
17+
return 0;
18+
}
19+
if( k == 99){
20+
closeCommand();
21+
return 0;
22+
}else{
23+
setCommandCounter(1);
24+
return k;
25+
}
2626
}
2727

28-
bool DFRobot_SIMclient::initNet(void)
28+
bool DFRobot_SIMclient::initNet(void)
2929
{
30-
int count = 0;
31-
while(count < 3){
32-
if(SIMcore.check_send_cmd("AT+CGATT?\r\n","1")){
33-
break;
34-
}else{
35-
count++;
36-
delay(500);
37-
}
38-
}
39-
if(count == 3){
40-
SIMcore.closeCommand();
41-
return false;
30+
int count = 0;
31+
while(count < 3){
32+
if(checkSendCmd("AT+CGATT?\r\n","1")){
33+
break;
34+
}else{
35+
count++;
36+
delay(500);
4237
}
43-
if(SIMcore.check_send_cmd("AT+CSTT\r\n","OK")){
44-
if(SIMcore.check_send_cmd("AT+CIICR\r\n","OK")){
45-
SIMcore.setCommandCounter(2);
46-
return true;
47-
}else{
48-
SIMcore.closeCommand();
49-
return false;
50-
}
38+
}
39+
if(count == 3){
40+
closeCommand();
41+
return false;
42+
}
43+
if(checkSendCmd("AT+CSTT\r\n","OK")){
44+
if(checkSendCmd("AT+CIICR\r\n","OK")){
45+
setCommandCounter(2);
46+
return true;
5147
}else{
52-
SIMcore.closeCommand();
53-
return false;
48+
closeCommand();
49+
return false;
5450
}
51+
}else{
52+
closeCommand();
53+
return false;
54+
}
5555
}
5656

57-
bool DFRobot_SIMclient::connect(char *server,Protocol ptl,int port)
57+
bool DFRobot_SIMclient::connect(char *server, eProtocol ptl, int port)
5858
{
59-
if(SIMcore.getCommandCounter() == 2){
60-
char num[4];
61-
char serverIP[100];
62-
SIMcore.cleanBuffer(serverIP,100);
63-
itoa(port, num, 10);
64-
SIMcore.send_cmd("AT+CIPSTART=\"");
65-
if(ptl == TCP){
66-
SIMcore.send_cmd("TCP\",\"");
67-
}else if(ptl == UDP){
68-
SIMcore.send_cmd("UDP\",\"");
69-
}else{
70-
Serial.println("Wrong protocol");
71-
return false;
59+
if(getCommandCounter() == 2){
60+
char num[4];
61+
char serverIP[100];
62+
cleanBuffer(serverIP,100);
63+
itoa(port, num, 10);
64+
sendCmd("AT+CIPSTART=\"");
65+
if(ptl == eTCP){
66+
sendCmd("TCP\",\"");
67+
}else if(ptl == eUDP){
68+
sendCmd("UDP\",\"");
69+
}else{
70+
return false;
71+
}
72+
sendCmd(server);
73+
sendCmd("\",");
74+
sendCmd(num);
75+
sendCmd("\r\n");
76+
while(1){
77+
while(checkReadable()){
78+
readBuffer(serverIP,100);
79+
if(NULL != strstr(serverIP,"ALREADY CONNECT")){
80+
setCommandCounter(3);
81+
return true;
7282
}
73-
SIMcore.send_cmd(server);
74-
SIMcore.send_cmd("\",");
75-
SIMcore.send_cmd(num);
76-
SIMcore.send_cmd("\r\n");
77-
while(1){
78-
while(SIMcore.checkReadable()){
79-
SIMcore.readBuffer(serverIP,100);
80-
if(NULL != strstr(serverIP,"ALREADY CONNECT")){
81-
SIMcore.setCommandCounter(3);
82-
return true;
83-
}
84-
if(NULL != strstr(serverIP,"CONNECT OK")){
85-
SIMcore.setCommandCounter(3);
86-
return true;
87-
}
88-
if(NULL != strstr(serverIP,"CONNECT FAIL")){
89-
return false;
90-
}
91-
}
83+
if(NULL != strstr(serverIP,"CONNECT OK")){
84+
setCommandCounter(3);
85+
return true;
9286
}
93-
}else{
94-
return false;
87+
if(NULL != strstr(serverIP,"CONNECT FAIL")){
88+
return false;
89+
}
90+
}
9591
}
92+
}else{
93+
return false;
94+
}
9695
}
9796

98-
bool DFRobot_SIMclient::send(char *data){
99-
if(SIMcore.getCommandCounter() == 3){
100-
char num[4];
101-
char resp[20];
102-
int len = strlen(data);
103-
itoa(len, num, 10);
104-
SIMcore.send_cmd("AT+CIPSEND=");
105-
SIMcore.send_cmd(num);
106-
if(SIMcore.check_send_cmd("\r\n",">")){
107-
SIMcore.send_cmd(data);
108-
while(1){
109-
while(SIMcore.checkReadable()){
110-
SIMcore.readBuffer(resp,20);
111-
if(NULL != strstr(resp,"OK")){
112-
return true;
113-
}
114-
if(NULL != strstr(resp,"ERROR")){
115-
return false;
116-
}
117-
}
118-
}
119-
}else{
120-
SIMcore.closeCommand();
97+
bool DFRobot_SIMclient::send(char *data){
98+
if(getCommandCounter() == 3){
99+
char num[4];
100+
char resp[20];
101+
int len = strlen(data);
102+
itoa(len, num, 10);
103+
sendCmd("AT+CIPSEND=");
104+
sendCmd(num);
105+
if(checkSendCmd("\r\n",">")){
106+
sendCmd(data);
107+
while(1){
108+
while(checkReadable()){
109+
readBuffer(resp,20);
110+
if(NULL != strstr(resp,"OK")){
111+
return true;
112+
}
113+
if(NULL != strstr(resp,"ERROR")){
121114
return false;
115+
}
122116
}
117+
}
123118
}else{
124-
return false;
119+
closeCommand();
120+
return false;
125121
}
122+
}else{
123+
return false;
124+
}
126125
}
127126

128-
bool DFRobot_SIMclient::send(void *buffer,size_t len)
127+
bool DFRobot_SIMclient::send(char *buffer,size_t len)
129128
{
130-
if(SIMcore.getCommandCounter() == 3){
131-
char num[4];
132-
itoa(len, num, 10);
133-
SIMcore.send_cmd("AT+CIPSEND=");
134-
SIMcore.send_cmd(num);
135-
if(SIMcore.check_send_cmd("\r\n",">")){
136-
if(SIMcore.check_send_cmd(buffer,"OK")){
137-
return true;
138-
}else{
139-
SIMcore.setCommandCounter(3);
140-
return false;
141-
}
142-
}else{
143-
SIMcore.setCommandCounter(3);
144-
return false;
145-
}
146-
}else{
129+
if(getCommandCounter() == 3){
130+
char num[4];
131+
itoa(len, num, 10);
132+
sendCmd("AT+CIPSEND=");
133+
sendCmd(num);
134+
if(checkSendCmd("\r\n",">")){
135+
if(checkSendCmd(buffer,"OK")){
136+
return true;
137+
}else{
138+
setCommandCounter(3);
147139
return false;
140+
}
141+
}else{
142+
setCommandCounter(3);
143+
return false;
148144
}
145+
}else{
146+
return false;
147+
}
149148
}
150149

151-
bool DFRobot_SIMclient::close(void)
150+
bool DFRobot_SIMclient::close(void)
152151
{
153-
if(SIMcore.getCommandCounter() == 3){
154-
if(SIMcore.check_send_cmd("AT+CIPSHUT\r\n","OK")){
155-
SIMcore.setCommandCounter(2);
156-
return true;
157-
}else{
158-
SIMcore.setCommandCounter(2);
159-
return false;
160-
}
152+
if(getCommandCounter() == 3){
153+
if(checkSendCmd("AT+CIPSHUT\r\n","OK")){
154+
setCommandCounter(2);
155+
return true;
161156
}else{
162-
return false;
157+
setCommandCounter(2);
158+
return false;
163159
}
160+
}else{
161+
return false;
162+
}
164163
}

DFRobot_SIMclient.h

+78-15
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,86 @@
1+
/*!
2+
* @file DFRobot_SIMclient.h
3+
* @brief The basic structure of DFRobot_SIMclient class
4+
* @details A basic class library for SIM product series communication.
5+
* @copyright Copyright (c) 2021 DFRobot Co.Ltd (http://www.dfrobot.com)
6+
* @license The MIT License (MIT)
7+
* @author [TangJie]([email protected])
8+
* @version V1.0.1
9+
* @date 2021-09-16
10+
* @url https://github.com/DFRobot/DFRobot_SIM
11+
*/
112
#ifndef __DFRobot_SIMCLIENT_H__
213
#define __DFRobot_SIMCLIENT_H__
314

415
#include "DFRobot_SIMcore.h"
516

6-
enum Protocol {
7-
TCP = 1,
8-
UDP = 2,
9-
};
10-
11-
class DFRobot_SIMclient
12-
{
17+
class DFRobot_SIMclient:DFRobot_SIMcore{
1318
public:
14-
int checkSignalQuality(void);
15-
bool initNet(void);
16-
bool connect(char *server,Protocol ptl,int port);
17-
bool send(char *data);
18-
bool send(void *buffer,size_t len);
19-
bool close(void);
19+
/**
20+
* @enum eProtocol
21+
* @brief Communication protocol select
22+
*/
23+
typedef enum {
24+
eTCP = 1, /**<TCP protocol is used for communication */
25+
eUDP = 2, /**<UDP protocol is used for communication */
26+
}eProtocol;
2027

21-
};
28+
/**
29+
* @fn checkSignalQuality
30+
* @brief Get signal quality
31+
* @return Return signal quality
32+
*/
33+
int checkSignalQuality(void);
34+
35+
/**
36+
* @fn initNet
37+
* @brief Check the network connection status
38+
* @return bool type, indicating status of obtaining signal
39+
* @retval true Success
40+
* @retval false Failed
41+
*/
42+
bool initNet(void);
2243

23-
#endif
44+
/**
45+
* @fn connect
46+
* @brief Connect to the server
47+
* @param Server connect to the server address
48+
* @param ptl Communication protocol select
49+
* @param port port number
50+
* @return bool type, indicating server connection status
51+
* @retval true Success
52+
* @retval false Failed
53+
*/
54+
bool connect(char *server,eProtocol ptl,int port);
55+
56+
/**
57+
* @fn send
58+
* @brief Send data to the connected server
59+
* @param data Data to be sent
60+
* @return bool type, indicating status of sending data
61+
* @retval true Success
62+
* @retval false Failed
63+
*/
64+
bool send(char *data);
65+
66+
/**
67+
* @fn send
68+
* @brief Send data to the connected server
69+
* @param buffer Data to be sent
70+
* @param len Length of data to be sent
71+
* @return bool type, indicating status of sending data
72+
* @retval true Success
73+
* @retval false Failed
74+
*/
75+
bool send(char *buffer,size_t len);
76+
77+
/**
78+
* @fn close
79+
* @brief Disconnect the connected server
80+
* @return bool type, indicating status of disconnecting server
81+
* @retval true Success
82+
* @retval false Failed
83+
*/
84+
bool close(void);
85+
};
86+
#endif

0 commit comments

Comments
 (0)