@@ -61,6 +61,9 @@ static unsigned long getTime()
61
61
62
62
ArduinoIoTCloudTCP::ArduinoIoTCloudTCP ():
63
63
_lastSyncRequestTickTime{0 },
64
+ _brokerAddress{DEFAULT_BROKER_ADDRESS_SECURE_AUTH},
65
+ _brokerIp{INADDR_NONE},
66
+ _brokerPort{DEFAULT_BROKER_PORT_SECURE_AUTH},
64
67
_mqtt_data_buf{0 },
65
68
_mqtt_data_len{0 },
66
69
_mqtt_data_request_retransmit{false },
@@ -92,19 +95,23 @@ ArduinoIoTCloudTCP::~ArduinoIoTCloudTCP()
92
95
93
96
int ArduinoIoTCloudTCP::begin (ConnectionHandler & connection, String brokerAddress, uint16_t brokerPort)
94
97
{
95
- _connection = &connection;
96
98
_brokerAddress = brokerAddress;
97
- _brokerPort = brokerPort;
98
- time_service.begin (&connection);
99
- return begin (_brokerAddress, _brokerPort);
99
+ return begin (connection, brokerPort);
100
100
}
101
101
102
- int ArduinoIoTCloudTCP::begin (String brokerAddress, uint16_t brokerPort)
102
+ int ArduinoIoTCloudTCP::begin (ConnectionHandler & connection, IPAddress const brokerIp, uint16_t const brokerPort)
103
103
{
104
+ _brokerIp = brokerIp;
105
+ return begin (connection, brokerPort);
106
+ }
104
107
105
- _brokerAddress = brokerAddress;
108
+ int ArduinoIoTCloudTCP::begin (ConnectionHandler & connection, uint16_t brokerPort)
109
+ {
110
+ _connection = &connection;
106
111
_brokerPort = brokerPort;
107
112
113
+ time_service.begin (_connection);
114
+
108
115
#ifdef BOARD_HAS_ECCX08
109
116
if (!ECCX08.begin ()) { Debug.print (DBG_ERROR, " Cryptography processor failure. Make sure you have a compatible board." ); return 0 ; }
110
117
if (!CryptoUtil::readDeviceId (ECCX08, getDeviceId (), ECCX08Slot::DeviceId)) { Debug.print (DBG_ERROR, " Cryptography processor read failure." ); return 0 ; }
@@ -190,7 +197,11 @@ void ArduinoIoTCloudTCP::printDebugInfo()
190
197
Debug.print (DBG_INFO, " ***** Arduino IoT Cloud - configuration info *****" );
191
198
Debug.print (DBG_INFO, " Device ID: %s" , getDeviceId ().c_str ());
192
199
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
+ }
194
205
}
195
206
196
207
int ArduinoIoTCloudTCP::reconnect ()
@@ -207,6 +218,12 @@ int ArduinoIoTCloudTCP::reconnect()
207
218
208
219
int ArduinoIoTCloudTCP::connect ()
209
220
{
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
+
210
227
if (!_mqttClient->connect (_brokerAddress.c_str (), _brokerPort)) return CONNECT_FAILURE;
211
228
if (_mqttClient->subscribe (_stdinTopic) == 0 ) return CONNECT_FAILURE_SUBSCRIBE;
212
229
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
361
378
362
379
ArduinoIoTCloudTCP ArduinoCloud;
363
380
364
- #endif
381
+ #endif
0 commit comments