Skip to content

Commit 2c4714e

Browse files
committed
Overloading begin function in such way that it also accepts IPAddress objects.
1 parent df21c4a commit 2c4714e

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

src/ArduinoIoTCloudTCP.cpp

+25-8
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ static unsigned long getTime()
6161

6262
ArduinoIoTCloudTCP::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

9396
int 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

196207
int ArduinoIoTCloudTCP::reconnect()
@@ -207,6 +218,12 @@ int ArduinoIoTCloudTCP::reconnect()
207218

208219
int 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

362379
ArduinoIoTCloudTCP ArduinoCloud;
363380

364-
#endif
381+
#endif

src/ArduinoIoTCloudTCP.h

+7-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ static uint16_t const DEFAULT_BROKER_PORT_SECURE_AUTH = 8883;
4242
static char const DEFAULT_BROKER_ADDRESS_USER_PASS_AUTH[] = "mqtts-up.iot.arduino.cc";
4343
static uint16_t const DEFAULT_BROKER_PORT_USER_PASS_AUTH = 8884;
4444

45+
static IPAddress const DEFAULT_BROKER_SECURE_AUTH_IP_1(34,206,248,111);
46+
static IPAddress const DEFAULT_BROKER_SECURE_AUTH_IP_2(3,209,5,114);
47+
4548
/******************************************************************************
4649
* CLASS DECLARATION
4750
******************************************************************************/
@@ -63,7 +66,9 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass
6366
#else
6467
int begin(ConnectionHandler & connection, String brokerAddress = DEFAULT_BROKER_ADDRESS_USER_PASS_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_USER_PASS_AUTH);
6568
#endif
66-
int begin(String brokerAddress = DEFAULT_BROKER_ADDRESS_SECURE_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH);
69+
int begin(ConnectionHandler & connection, IPAddress const brokerIp, uint16_t const brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH);
70+
int begin(ConnectionHandler & connection, uint16_t brokerPort);
71+
6772

6873
#ifdef BOARD_ESP
6974
inline void setBoardId (String const device_id) { setDeviceId(device_id); }
@@ -90,6 +95,7 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass
9095

9196
int _lastSyncRequestTickTime;
9297
String _brokerAddress;
98+
IPAddress _brokerIp;
9399
uint16_t _brokerPort;
94100
uint8_t _mqtt_data_buf[MQTT_TRANSMIT_BUFFER_SIZE];
95101
int _mqtt_data_len;

0 commit comments

Comments
 (0)