@@ -53,32 +53,37 @@ ArduinoIoTCloudClass::~ArduinoIoTCloudClass()
5353 }
5454}
5555
56- int ArduinoIoTCloudClass::begin (ConnectionManager *c, String brokerAddress)
56+ int ArduinoIoTCloudClass::begin (ConnectionManager *c, String brokerAddress, uint16_t brokerPort )
5757{
5858 connection = c;
5959 Client &connectionClient = c->getClient ();
6060 _brokerAddress = brokerAddress;
61- return begin (connectionClient, _brokerAddress);
61+ _brokerPort = brokerPort;
62+ return begin (connectionClient, _brokerAddress, _brokerPort);
6263}
6364
64- int ArduinoIoTCloudClass::begin (Client& net, String brokerAddress)
65+ int ArduinoIoTCloudClass::begin (Client& net, String brokerAddress, uint16_t brokerPort )
6566{
6667
6768 _net = &net;
6869 // store the broker address as class member
6970 _brokerAddress = brokerAddress;
71+ _brokerPort = brokerPort;
7072 byte thingIdBytes[72 ];
7173
7274 if (!ECCX08.begin ()) {
75+ debugMessage (" Cryptography processor failure. Make sure you have a compatible board." , 0 );
7376 return 0 ;
7477 }
7578
7679 if (!ECCX08.readSlot (thingIdSlot, thingIdBytes, sizeof (thingIdBytes))) {
80+ debugMessage (" Cryptography processor read failure." , 0 );
7781 return 0 ;
7882 }
7983 _id = (char *)thingIdBytes;
8084
8185 if (!ECCX08Cert.beginReconstruction (keySlot, compressedCertSlot, serialNumberAndAuthorityKeyIdentifierSlot)) {
86+ debugMessage (" Cryptography certificate reconstruction failure." , 0 );
8287 return 0 ;
8388 }
8489
@@ -89,6 +94,7 @@ int ArduinoIoTCloudClass::begin(Client& net, String brokerAddress)
8994 ECCX08Cert.setIssuerCommonName (" Arduino" );
9095
9196 if (!ECCX08Cert.endReconstruction ()) {
97+ debugMessage (" Cryptography certificate reconstruction failure." , 0 );
9298 return 0 ;
9399 }
94100
@@ -117,7 +123,6 @@ int ArduinoIoTCloudClass::begin(Client& net, String brokerAddress)
117123 mqttClientBegin ();
118124
119125 Thing.begin ();
120-
121126 return 1 ;
122127}
123128
@@ -152,7 +157,7 @@ int ArduinoIoTCloudClass::connect()
152157{
153158 // Username: device id
154159 // Password: empty
155- if (!_mqttClient->connect (_brokerAddress.c_str (), 8883 )) {
160+ if (!_mqttClient->connect (_brokerAddress.c_str (), _brokerPort )) {
156161 return 0 ;
157162 }
158163 _mqttClient->subscribe (_stdinTopic);
@@ -298,15 +303,14 @@ void ArduinoIoTCloudClass::handleMessage(int length)
298303 }
299304}
300305
301- void ArduinoIoTCloudClass::connectionCheck () {
306+ void ArduinoIoTCloudClass::connectionCheck ()
307+ {
302308 if (connection != NULL ){
303309 connection->check ();
304310
305311 if (connection->getStatus () != CONNECTION_STATE_CONNECTED) {
306312 if (iotStatus == IOT_STATUS_CLOUD_CONNECTED){
307313 setIoTConnectionState (IOT_STATUS_CLOUD_DISCONNECTED);
308- }else {
309- // setIoTConnectionState(IOT_STATUS_CLOUD_CONNECTING);
310314 }
311315 return ;
312316 }
@@ -320,9 +324,9 @@ void ArduinoIoTCloudClass::connectionCheck() {
320324 {
321325 int connectionAttempt;
322326 if (connection == NULL ){
323- connectionAttempt = begin (*_net, _brokerAddress);
327+ connectionAttempt = begin (*_net, _brokerAddress, _brokerPort );
324328 }else {
325- connectionAttempt = begin (connection, _brokerAddress);
329+ connectionAttempt = begin (connection, _brokerAddress, _brokerPort );
326330 }
327331 if (!connectionAttempt){
328332 debugMessage (" Error Starting Arduino Cloud\n Trying again in a few seconds" , 0 );
@@ -331,8 +335,7 @@ void ArduinoIoTCloudClass::connectionCheck() {
331335 }
332336 setIoTConnectionState (IOT_STATUS_CLOUD_CONNECTING);
333337 break ;
334- }
335-
338+ }
336339 case IOT_STATUS_CLOUD_ERROR:
337340 debugMessage (" Cloud Error. Retrying..." , 0 );
338341 setIoTConnectionState (IOT_STATUS_CLOUD_RECONNECTING);
@@ -346,7 +349,6 @@ void ArduinoIoTCloudClass::connectionCheck() {
346349 case IOT_STATUS_CLOUD_RECONNECTING:
347350 int arduinoIoTReconnectionAttempt;
348351 arduinoIoTReconnectionAttempt = reconnect (*_net);
349- *msgBuffer = 0 ;
350352 sprintf (msgBuffer, " ArduinoCloud.reconnect(): %d" , arduinoIoTReconnectionAttempt);
351353 debugMessage (msgBuffer, 2 );
352354 if (arduinoIoTReconnectionAttempt == 1 ) {
@@ -356,10 +358,8 @@ void ArduinoIoTCloudClass::connectionCheck() {
356358 }
357359 break ;
358360 case IOT_STATUS_CLOUD_CONNECTING:
359-
360361 int arduinoIoTConnectionAttempt;
361362 arduinoIoTConnectionAttempt = connect ();
362- *msgBuffer = 0 ;
363363 sprintf (msgBuffer, " ArduinoCloud.connect(): %d" , arduinoIoTConnectionAttempt);
364364 debugMessage (msgBuffer, 4 );
365365 if (arduinoIoTConnectionAttempt == 1 ) {
@@ -371,7 +371,8 @@ void ArduinoIoTCloudClass::connectionCheck() {
371371 }
372372}
373373
374- void ArduinoIoTCloudClass::setIoTConnectionState (ArduinoIoTConnectionStatus _newState){
374+ void ArduinoIoTCloudClass::setIoTConnectionState (ArduinoIoTConnectionStatus _newState)
375+ {
375376 switch (_newState){
376377 case IOT_STATUS_CLOUD_ERROR:
377378 debugMessage (" Arduino, we have a problem." , 0 );
@@ -392,4 +393,16 @@ void ArduinoIoTCloudClass::setIoTConnectionState(ArduinoIoTConnectionStatus _new
392393 iotStatus = _newState;
393394}
394395
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+
395408ArduinoIoTCloudClass ArduinoCloud;
0 commit comments