@@ -53,32 +53,37 @@ ArduinoIoTCloudClass::~ArduinoIoTCloudClass()
53
53
}
54
54
}
55
55
56
- int ArduinoIoTCloudClass::begin (ConnectionManager *c, String brokerAddress)
56
+ int ArduinoIoTCloudClass::begin (ConnectionManager *c, String brokerAddress, uint16_t brokerPort )
57
57
{
58
58
connection = c;
59
59
Client &connectionClient = c->getClient ();
60
60
_brokerAddress = brokerAddress;
61
- return begin (connectionClient, _brokerAddress);
61
+ _brokerPort = brokerPort;
62
+ return begin (connectionClient, _brokerAddress, _brokerPort);
62
63
}
63
64
64
- int ArduinoIoTCloudClass::begin (Client& net, String brokerAddress)
65
+ int ArduinoIoTCloudClass::begin (Client& net, String brokerAddress, uint16_t brokerPort )
65
66
{
66
67
67
68
_net = &net;
68
69
// store the broker address as class member
69
70
_brokerAddress = brokerAddress;
71
+ _brokerPort = brokerPort;
70
72
byte thingIdBytes[72 ];
71
73
72
74
if (!ECCX08.begin ()) {
75
+ debugMessage (" Cryptography processor failure. Make sure you have a compatible board." , 0 );
73
76
return 0 ;
74
77
}
75
78
76
79
if (!ECCX08.readSlot (thingIdSlot, thingIdBytes, sizeof (thingIdBytes))) {
80
+ debugMessage (" Cryptography processor read failure." , 0 );
77
81
return 0 ;
78
82
}
79
83
_id = (char *)thingIdBytes;
80
84
81
85
if (!ECCX08Cert.beginReconstruction (keySlot, compressedCertSlot, serialNumberAndAuthorityKeyIdentifierSlot)) {
86
+ debugMessage (" Cryptography certificate reconstruction failure." , 0 );
82
87
return 0 ;
83
88
}
84
89
@@ -89,6 +94,7 @@ int ArduinoIoTCloudClass::begin(Client& net, String brokerAddress)
89
94
ECCX08Cert.setIssuerCommonName (" Arduino" );
90
95
91
96
if (!ECCX08Cert.endReconstruction ()) {
97
+ debugMessage (" Cryptography certificate reconstruction failure." , 0 );
92
98
return 0 ;
93
99
}
94
100
@@ -117,7 +123,6 @@ int ArduinoIoTCloudClass::begin(Client& net, String brokerAddress)
117
123
mqttClientBegin ();
118
124
119
125
Thing.begin ();
120
-
121
126
return 1 ;
122
127
}
123
128
@@ -152,7 +157,7 @@ int ArduinoIoTCloudClass::connect()
152
157
{
153
158
// Username: device id
154
159
// Password: empty
155
- if (!_mqttClient->connect (_brokerAddress.c_str (), 8883 )) {
160
+ if (!_mqttClient->connect (_brokerAddress.c_str (), _brokerPort )) {
156
161
return 0 ;
157
162
}
158
163
_mqttClient->subscribe (_stdinTopic);
@@ -298,15 +303,14 @@ void ArduinoIoTCloudClass::handleMessage(int length)
298
303
}
299
304
}
300
305
301
- void ArduinoIoTCloudClass::connectionCheck () {
306
+ void ArduinoIoTCloudClass::connectionCheck ()
307
+ {
302
308
if (connection != NULL ){
303
309
connection->check ();
304
310
305
311
if (connection->getStatus () != CONNECTION_STATE_CONNECTED) {
306
312
if (iotStatus == IOT_STATUS_CLOUD_CONNECTED){
307
313
setIoTConnectionState (IOT_STATUS_CLOUD_DISCONNECTED);
308
- }else {
309
- // setIoTConnectionState(IOT_STATUS_CLOUD_CONNECTING);
310
314
}
311
315
return ;
312
316
}
@@ -320,9 +324,9 @@ void ArduinoIoTCloudClass::connectionCheck() {
320
324
{
321
325
int connectionAttempt;
322
326
if (connection == NULL ){
323
- connectionAttempt = begin (*_net, _brokerAddress);
327
+ connectionAttempt = begin (*_net, _brokerAddress, _brokerPort );
324
328
}else {
325
- connectionAttempt = begin (connection, _brokerAddress);
329
+ connectionAttempt = begin (connection, _brokerAddress, _brokerPort );
326
330
}
327
331
if (!connectionAttempt){
328
332
debugMessage (" Error Starting Arduino Cloud\n Trying again in a few seconds" , 0 );
@@ -331,8 +335,7 @@ void ArduinoIoTCloudClass::connectionCheck() {
331
335
}
332
336
setIoTConnectionState (IOT_STATUS_CLOUD_CONNECTING);
333
337
break ;
334
- }
335
-
338
+ }
336
339
case IOT_STATUS_CLOUD_ERROR:
337
340
debugMessage (" Cloud Error. Retrying..." , 0 );
338
341
setIoTConnectionState (IOT_STATUS_CLOUD_RECONNECTING);
@@ -346,7 +349,6 @@ void ArduinoIoTCloudClass::connectionCheck() {
346
349
case IOT_STATUS_CLOUD_RECONNECTING:
347
350
int arduinoIoTReconnectionAttempt;
348
351
arduinoIoTReconnectionAttempt = reconnect (*_net);
349
- *msgBuffer = 0 ;
350
352
sprintf (msgBuffer, " ArduinoCloud.reconnect(): %d" , arduinoIoTReconnectionAttempt);
351
353
debugMessage (msgBuffer, 2 );
352
354
if (arduinoIoTReconnectionAttempt == 1 ) {
@@ -356,10 +358,8 @@ void ArduinoIoTCloudClass::connectionCheck() {
356
358
}
357
359
break ;
358
360
case IOT_STATUS_CLOUD_CONNECTING:
359
-
360
361
int arduinoIoTConnectionAttempt;
361
362
arduinoIoTConnectionAttempt = connect ();
362
- *msgBuffer = 0 ;
363
363
sprintf (msgBuffer, " ArduinoCloud.connect(): %d" , arduinoIoTConnectionAttempt);
364
364
debugMessage (msgBuffer, 4 );
365
365
if (arduinoIoTConnectionAttempt == 1 ) {
@@ -371,7 +371,8 @@ void ArduinoIoTCloudClass::connectionCheck() {
371
371
}
372
372
}
373
373
374
- void ArduinoIoTCloudClass::setIoTConnectionState (ArduinoIoTConnectionStatus _newState){
374
+ void ArduinoIoTCloudClass::setIoTConnectionState (ArduinoIoTConnectionStatus _newState)
375
+ {
375
376
switch (_newState){
376
377
case IOT_STATUS_CLOUD_ERROR:
377
378
debugMessage (" Arduino, we have a problem." , 0 );
@@ -392,4 +393,16 @@ void ArduinoIoTCloudClass::setIoTConnectionState(ArduinoIoTConnectionStatus _new
392
393
iotStatus = _newState;
393
394
}
394
395
396
+ void ArduinoIoTCloudClass::printDebugInfo ()
397
+ {
398
+ char msgBuffer[120 ];
399
+ debugMessage (" ***** Arduino IoT Cloud - configuration info *****" , 2 );
400
+ sprintf (msgBuffer, " Device ID: %s" , getDeviceId ().c_str ());
401
+ debugMessage (msgBuffer, 2 );
402
+ sprintf (msgBuffer, " Thing ID: %s" , getThingId ().c_str ());
403
+ debugMessage (msgBuffer, 2 );
404
+ sprintf (msgBuffer, " MQTT Broker: %s:%d" , _brokerAddress.c_str (), _brokerPort);
405
+ debugMessage (msgBuffer, 2 );
406
+ }
407
+
395
408
ArduinoIoTCloudClass ArduinoCloud;
0 commit comments