Skip to content

Commit 88057f3

Browse files
committed
fix: main .h not including tcp classes
fix: client _read not passing connection_id impr: server tcp/closeListener method examples: client and clientSSL
1 parent 7a455d2 commit 88057f3

File tree

5 files changed

+166
-5
lines changed

5 files changed

+166
-5
lines changed

examples/client/client.ino

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#include <Arduino_RouterBridge.h>
2+
3+
BridgeTCPClient<> client(Bridge);
4+
5+
void setup() {
6+
Serial.begin(115200);
7+
8+
if (!Bridge.begin()) {
9+
Serial.println("cannot setup Bridge");
10+
while (true) {}
11+
}
12+
13+
14+
}
15+
16+
void loop() {
17+
18+
Serial.println("\nStarting connection to server...");
19+
/* if you get a connection, report back via serial: */
20+
if (client.connect("arduino.tips", 80) < 0) {
21+
Serial.println("unable to connect to server");
22+
return;
23+
}
24+
25+
Serial.println("connected to server");
26+
/* Make an HTTP request: */
27+
size_t w = client.println("GET /asciilogo.txt HTTP/1.1");
28+
w += client.println("Host: arduino.tips");
29+
w += client.println("User-Agent: Arduino");
30+
w += client.println("Connection: close");
31+
w += client.println();
32+
33+
/* if there are incoming bytes available from the server,
34+
* read them and print them:
35+
*/
36+
while (client.connected()) {
37+
size_t len = client.available();
38+
if (len) {
39+
uint8_t buff[len];
40+
client.read(buff, len);
41+
Serial.write(buff, len);
42+
}
43+
delay(0);
44+
}
45+
46+
/* if the server's disconnected, stop the client: */
47+
Serial.println();
48+
Serial.println("disconnecting from server.");
49+
client.stop();
50+
delay(1000);
51+
}

examples/clientSSL/clientSSL.ino

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
#include <Arduino_RouterBridge.h>
2+
3+
static const char iot[] = {
4+
/* https://iot.arduino.cc:8885 */
5+
"-----BEGIN CERTIFICATE-----\n"
6+
"MIIB0DCCAXagAwIBAgIUb62eK/Vv1baaPAaY5DADBUbxB1owCgYIKoZIzj0EAwIw\n"
7+
"RTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkFyZHVpbm8gTExDIFVTMQswCQYDVQQL\n"
8+
"EwJJVDEQMA4GA1UEAxMHQXJkdWlubzAgFw0yNTAxMTAxMDUzMjJaGA8yMDU1MDEw\n"
9+
"MzEwNTMyMlowRTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkFyZHVpbm8gTExDIFVT\n"
10+
"MQswCQYDVQQLEwJJVDEQMA4GA1UEAxMHQXJkdWlubzBZMBMGByqGSM49AgEGCCqG\n"
11+
"SM49AwEHA0IABKHhU2w1UhozDegrrFsSwY9QN7M+ZJug7icCNceNWhBF0Mr1UuyX\n"
12+
"8pr/gcbieZc/0znG16HMa2GFcPY7rmIdccijQjBAMA8GA1UdEwEB/wQFMAMBAf8w\n"
13+
"DgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRCZSmE0ASI0cYD9AmzeOM7EijgPjAK\n"
14+
"BggqhkjOPQQDAgNIADBFAiEAz6TLYP9eiVOr/cVU/11zwGofe/FoNe4p1BlzMl7G\n"
15+
"VVACIG8tL3Ta2WbIOaUVpBL2gfLuI9WSW1sR++zXP+zFhmen\n"
16+
"-----END CERTIFICATE-----\n"
17+
};
18+
19+
static const char ubi[] = {
20+
/* https://ubidefeo.com:443 */
21+
"-----BEGIN CERTIFICATE-----\n"
22+
"MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB\n"
23+
"iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl\n"
24+
"cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV\n"
25+
"BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw\n"
26+
"MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV\n"
27+
"BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU\n"
28+
"aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy\n"
29+
"dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\n"
30+
"AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B\n"
31+
"3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY\n"
32+
"tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/\n"
33+
"Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2\n"
34+
"VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT\n"
35+
"79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6\n"
36+
"c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT\n"
37+
"Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l\n"
38+
"c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee\n"
39+
"UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE\n"
40+
"Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd\n"
41+
"BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G\n"
42+
"A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF\n"
43+
"Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO\n"
44+
"VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3\n"
45+
"ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs\n"
46+
"8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR\n"
47+
"iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze\n"
48+
"Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ\n"
49+
"XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/\n"
50+
"qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB\n"
51+
"VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB\n"
52+
"L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG\n"
53+
"jjxDah2nGN59PRbxYvnKkKj9\n"
54+
"-----END CERTIFICATE-----\n"
55+
};
56+
57+
BridgeTCPClient<> client(Bridge);
58+
59+
void setup() {
60+
/* Initialize Serial */
61+
Serial.begin(115200);
62+
/* Initialize RPC transport Serial1 */
63+
//Serial1.begin(115200);
64+
if (!Bridge.begin()) {
65+
Serial.println("cannot setup Bridge");
66+
while (true) {}
67+
}
68+
/* Configure TLS CA */
69+
//client.setCACert(ubi);
70+
}
71+
72+
void loop() {
73+
Serial.println("\nStarting connection to server...");
74+
/* if you get a connection, report back via serial: */
75+
if (client.connectSSL("ubidefeo.com", 443, ubi) < 0) {
76+
Serial.println("unable to connect to server");
77+
return;
78+
}
79+
80+
Serial.println("connected to server");
81+
/* Make aHTTP request: */
82+
size_t w = client.write("GET /files/supsi.txt HTTP/1.1\n");
83+
w += client.println("Host: ubidefeo.com");
84+
w += client.println("User-Agent: Arduino");
85+
w += client.println("Connection: close");
86+
w += client.println();
87+
88+
/* if there are incoming bytes available from the server,
89+
* read them and print them:
90+
*/
91+
while (client.connected()) {
92+
size_t len = client.available();
93+
if (len) {
94+
uint8_t buff[len];
95+
client.read(buff, len);
96+
Serial.write(buff, len);
97+
}
98+
delay(0);
99+
}
100+
101+
/* if the server's disconnected, stop the client: */
102+
Serial.println();
103+
Serial.println("disconnecting from server.");
104+
client.stop();
105+
delay(1000);
106+
}

src/Arduino_RouterBridge.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,7 @@
1515
#include "Arduino.h"
1616
#include "bridge.h"
1717
#include "monitor.h"
18+
#include "tcp_client.h"
19+
#include "tcp_server.h"
1820

1921
#endif //ARDUINO_ROUTER_BRIDGE_H

src/tcp_client.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@ class BridgeTCPClient : public Client {
122122
k_mutex_lock(&client_mutex, K_FOREVER);
123123
const int size = temp_buffer.availableForStore();
124124
if (size > 0) _read(size);
125-
const int available = temp_buffer.available();
125+
const int _available = temp_buffer.available();
126126
k_mutex_unlock(&client_mutex);
127-
return available;
127+
return _available;
128128
}
129129

130130
int read() override {
@@ -180,7 +180,7 @@ class BridgeTCPClient : public Client {
180180
return available() || connected();
181181
}
182182

183-
friend class BridgeTCPServer;
183+
//friend class BridgeTCPServer;
184184

185185
using Print::write;
186186

@@ -192,7 +192,7 @@ class BridgeTCPClient : public Client {
192192
k_mutex_lock(&client_mutex, K_FOREVER);
193193

194194
MsgPack::arr_t<uint8_t> message;
195-
const bool ret = bridge->call(TCP_READ_METHOD, message, size);
195+
const bool ret = bridge->call(TCP_READ_METHOD, message, connection_id, size);
196196

197197
if (ret) {
198198
for (size_t i = 0; i < message.size(); ++i) {

src/tcp_server.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
#define TCP_LISTEN_METHOD "tcp/listen"
1818
#define TCP_ACCEPT_METHOD "tcp/accept"
19+
#define TCP_CLOSE_LISTENER_METHOD "tcp/closeListener"
20+
1921

2022
#include <api/Server.h>
2123
#include <api/Client.h>
@@ -95,7 +97,7 @@ class BridgeTCPServer final: public Server {
9597
k_mutex_lock(&server_mutex, K_FOREVER);
9698

9799
String msg;
98-
const bool ret = bridge->call(TCP_CLOSE_METHOD, msg, listener_id);
100+
const bool ret = bridge->call(TCP_CLOSE_LISTENER_METHOD, msg, listener_id);
99101

100102
if (ret) {
101103
_listening = false;

0 commit comments

Comments
 (0)