3
3
#include < utility/ECCX08.h>
4
4
#include < utility/ECCX08Cert.h>
5
5
6
+ #include " CloudSerial.h"
7
+
6
8
const static char server[] = " a19g5nbe27wn47.iot.eu-west-1.amazonaws.com" ; // "xxxxxxxxxxxxxx.iot.xx-xxxx-x.amazonaws.com";
7
9
8
10
const static int keySlot = 0 ;
@@ -48,10 +50,14 @@ int ArduinoCloudClass::begin(Client& net, const String& id)
48
50
_bearSslClient = new BearSSLClient (net);
49
51
_bearSslClient->setEccSlot (keySlot, ECCX08Cert.bytes (), ECCX08Cert.length ());
50
52
53
+ _mqttClient.onMessageAdvanced (ArduinoCloudClass::onMessage);
51
54
_mqttClient.begin (server, 8883 , *_bearSslClient);
52
55
53
56
_id = id;
54
57
58
+ _stdoutTopic = " $aws/things/" + _id + " /stdout" ;
59
+ _stdinTopic = " $aws/things/" + _id + " /stdin" ;
60
+
55
61
return 1 ;
56
62
}
57
63
@@ -61,6 +67,8 @@ int ArduinoCloudClass::connect()
61
67
return 0 ;
62
68
}
63
69
70
+ _mqttClient.subscribe (_stdinTopic);
71
+
64
72
return 1 ;
65
73
}
66
74
@@ -74,4 +82,26 @@ void ArduinoCloudClass::onGetTime(unsigned long(*callback)(void))
74
82
ArduinoBearSSL.onGetTime (callback);
75
83
}
76
84
85
+ int ArduinoCloudClass::connected ()
86
+ {
87
+ return _mqttClient.connected ();
88
+ }
89
+
90
+ int ArduinoCloudClass::writeStdout (const byte data[], int length)
91
+ {
92
+ return _mqttClient.publish (_stdoutTopic.c_str (), (const char *)data, length);
93
+ }
94
+
95
+ void ArduinoCloudClass::onMessage (MQTTClient* /* client*/ , char topic[], char bytes[], int length)
96
+ {
97
+ ArduinoCloud.handleMessage (topic, bytes, length);
98
+ }
99
+
100
+ void ArduinoCloudClass::handleMessage (char topic[], char bytes[], int length)
101
+ {
102
+ if (_stdinTopic == topic) {
103
+ CloudSerial.appendStdin ((uint8_t *)bytes, length);
104
+ }
105
+ }
106
+
77
107
ArduinoCloudClass ArduinoCloud;
0 commit comments