Skip to content

Commit 49d36ee

Browse files
committed
Overloading begin function in such way that it also accepts IPAddress objects
1 parent a73adf4 commit 49d36ee

File tree

2 files changed

+32
-12
lines changed

2 files changed

+32
-12
lines changed

src/ArduinoIoTCloudTCP.cpp

+26-11
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,25 @@ ArduinoIoTCloudTCP::~ArduinoIoTCloudTCP() {
7676
}
7777

7878
int ArduinoIoTCloudTCP::begin(ConnectionHandler & connection, String brokerAddress, uint16_t brokerPort) {
79-
_connection = &connection;
8079
_brokerAddress = brokerAddress;
81-
_brokerPort = brokerPort;
82-
time_service.begin(&connection);
83-
return begin(_brokerAddress, _brokerPort);
80+
_brokerIp = INADDR_NONE;
81+
return begin(connection, brokerPort);
82+
}
83+
84+
int ArduinoIoTCloudTCP::begin(ConnectionHandler & connection, IPAddress const brokerIp, uint16_t const brokerPort)
85+
{
86+
_brokerAddress = "";
87+
_brokerIp = brokerIp;
88+
return begin(connection, brokerPort);
8489
}
8590

86-
int ArduinoIoTCloudTCP::begin(String brokerAddress, uint16_t brokerPort) {
91+
int ArduinoIoTCloudTCP::begin(ConnectionHandler & connection, uint16_t brokerPort) {
8792

88-
_brokerAddress = brokerAddress;
93+
_connection = &connection;
8994
_brokerPort = brokerPort;
9095

96+
time_service.begin(_connection);
97+
9198
#ifdef BOARD_HAS_ECCX08
9299
byte deviceIdBytes[72];
93100
if (!ECCX08.begin()) {
@@ -169,11 +176,14 @@ void ArduinoIoTCloudTCP::mqttClientBegin() {
169176
}
170177

171178

172-
int ArduinoIoTCloudTCP::connect() {
173-
174-
if (!_mqttClient->connect(_brokerAddress.c_str(), _brokerPort)) {
175-
return CONNECT_FAILURE;
179+
int ArduinoIoTCloudTCP::connect()
180+
{
181+
if (_brokerIp == INADDR_NONE) {
182+
if (!_mqttClient->connect(_brokerAddress.c_str(), _brokerPort)) return CONNECT_FAILURE;
183+
} else {
184+
if (!_mqttClient->connect(_brokerIp, _brokerPort)) return CONNECT_FAILURE;
176185
}
186+
177187
if (_mqttClient->subscribe(_stdinTopic) == 0) {
178188
return CONNECT_FAILURE_SUBSCRIBE;
179189
}
@@ -424,7 +434,12 @@ void ArduinoIoTCloudTCP::printDebugInfo() {
424434
Debug.print(DBG_INFO, "***** Arduino IoT Cloud - configuration info *****");
425435
Debug.print(DBG_INFO, "Device ID: %s", getDeviceId().c_str());
426436
Debug.print(DBG_INFO, "Thing ID: %s", getThingId().c_str());
427-
Debug.print(DBG_INFO, "MQTT Broker: %s:%d", _brokerAddress.c_str(), _brokerPort);
437+
438+
if (_brokerIp == INADDR_NONE) {
439+
Debug.print(DBG_INFO, "MQTT Broker: %s:%d", _brokerAddress.c_str(), _brokerPort);
440+
} else {
441+
Debug.print(DBG_INFO, "MQTT Broker: %d.%d.%d.%d:%d", _brokerIp[0], _brokerIp[1], _brokerIp[2], _brokerIp[3], _brokerPort);
442+
}
428443
}
429444

430445
ArduinoIoTCloudTCP ArduinoCloud;

src/ArduinoIoTCloudTCP.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ static uint16_t const DEFAULT_BROKER_PORT_SECURE_AUTH = 8883;
3636
static char const DEFAULT_BROKER_ADDRESS_USER_PASS_AUTH[] = "mqtts-up.iot.arduino.cc";
3737
static uint16_t const DEFAULT_BROKER_PORT_USER_PASS_AUTH = 8884;
3838

39+
static IPAddress const DEFAULT_BROKER_SECURE_AUTH_IP_1(34,206,248,111);
40+
static IPAddress const DEFAULT_BROKER_SECURE_AUTH_IP_2(3,209,5,114);
41+
3942
class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass {
4043
public:
4144
ArduinoIoTCloudTCP();
@@ -50,7 +53,8 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass {
5053
#else
5154
int begin(ConnectionHandler & connection, String brokerAddress = DEFAULT_BROKER_ADDRESS_USER_PASS_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_USER_PASS_AUTH);
5255
#endif
53-
int begin(String brokerAddress = DEFAULT_BROKER_ADDRESS_SECURE_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH);
56+
int begin(ConnectionHandler & connection, IPAddress const brokerIp, uint16_t const brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH);
57+
int begin(ConnectionHandler & connection, uint16_t brokerPort);
5458
// Class constant declaration
5559
static const int MQTT_TRANSMIT_BUFFER_SIZE = 256;
5660

@@ -93,6 +97,7 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass {
9397
private:
9498
ConnectionHandler * _connection;
9599
String _brokerAddress;
100+
IPAddress _brokerIp;
96101
uint16_t _brokerPort;
97102
uint8_t _mqtt_data_buf[MQTT_TRANSMIT_BUFFER_SIZE];
98103
int _mqtt_data_len;

0 commit comments

Comments
 (0)