@@ -61,6 +61,9 @@ static unsigned long getTime()
6161
6262ArduinoIoTCloudTCP::ArduinoIoTCloudTCP ():
6363 _lastSyncRequestTickTime{0 },
64+ _brokerAddress{DEFAULT_BROKER_ADDRESS_SECURE_AUTH},
65+ _brokerIp{INADDR_NONE},
66+ _brokerPort{DEFAULT_BROKER_PORT_SECURE_AUTH},
6467 _mqtt_data_buf{0 },
6568 _mqtt_data_len{0 },
6669 _mqtt_data_request_retransmit{false },
@@ -92,19 +95,23 @@ ArduinoIoTCloudTCP::~ArduinoIoTCloudTCP()
9295
9396int ArduinoIoTCloudTCP::begin (ConnectionHandler & connection, String brokerAddress, uint16_t brokerPort)
9497{
95- _connection = &connection;
9698 _brokerAddress = brokerAddress;
97- _brokerPort = brokerPort;
98- time_service.begin (&connection);
99- return begin (_brokerAddress, _brokerPort);
99+ return begin (connection, brokerPort);
100100}
101101
102- int ArduinoIoTCloudTCP::begin (String brokerAddress, uint16_t brokerPort)
102+ int ArduinoIoTCloudTCP::begin (ConnectionHandler & connection, IPAddress const brokerIp, uint16_t const brokerPort)
103103{
104+ _brokerIp = brokerIp;
105+ return begin (connection, brokerPort);
106+ }
104107
105- _brokerAddress = brokerAddress;
108+ int ArduinoIoTCloudTCP::begin (ConnectionHandler & connection, uint16_t brokerPort)
109+ {
110+ _connection = &connection;
106111 _brokerPort = brokerPort;
107112
113+ time_service.begin (_connection);
114+
108115 #ifdef BOARD_HAS_ECCX08
109116 if (!ECCX08.begin ()) { Debug.print (DBG_ERROR, " Cryptography processor failure. Make sure you have a compatible board." ); return 0 ; }
110117 if (!CryptoUtil::readDeviceId (ECCX08, getDeviceId (), ECCX08Slot::DeviceId)) { Debug.print (DBG_ERROR, " Cryptography processor read failure." ); return 0 ; }
@@ -190,7 +197,11 @@ void ArduinoIoTCloudTCP::printDebugInfo()
190197 Debug.print (DBG_INFO, " ***** Arduino IoT Cloud - configuration info *****" );
191198 Debug.print (DBG_INFO, " Device ID: %s" , getDeviceId ().c_str ());
192199 Debug.print (DBG_INFO, " Thing ID: %s" , getThingId ().c_str ());
193- Debug.print (DBG_INFO, " MQTT Broker: %s:%d" , _brokerAddress.c_str (), _brokerPort);
200+ if (_brokerIp == INADDR_NONE) {
201+ Debug.print (DBG_INFO, " MQTT Broker: %s:%d" , _brokerAddress.c_str (), _brokerPort);
202+ } else {
203+ Debug.print (DBG_INFO, " MQTT Broker: %d.%d.%d.%d:%d" , _brokerIp[0 ], _brokerIp[1 ], _brokerIp[2 ], _brokerIp[3 ], _brokerPort);
204+ }
194205}
195206
196207int ArduinoIoTCloudTCP::reconnect ()
@@ -207,6 +218,12 @@ int ArduinoIoTCloudTCP::reconnect()
207218
208219int ArduinoIoTCloudTCP::connect ()
209220{
221+ if (_brokerIp == INADDR_NONE) {
222+ if (!_mqttClient->connect (_brokerAddress.c_str (), _brokerPort)) return CONNECT_FAILURE;
223+ } else {
224+ if (!_mqttClient->connect (_brokerIp, _brokerPort)) return CONNECT_FAILURE;
225+ }
226+
210227 if (!_mqttClient->connect (_brokerAddress.c_str (), _brokerPort)) return CONNECT_FAILURE;
211228 if (_mqttClient->subscribe (_stdinTopic) == 0 ) return CONNECT_FAILURE_SUBSCRIBE;
212229 if (_mqttClient->subscribe (_dataTopicIn) == 0 ) return CONNECT_FAILURE_SUBSCRIBE;
@@ -361,4 +378,4 @@ int ArduinoIoTCloudTCP::write(String const topic, byte const data[], int const l
361378
362379ArduinoIoTCloudTCP ArduinoCloud;
363380
364- #endif
381+ #endif
0 commit comments