Skip to content

Remove depdendence of specialised connection handlers #98

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/ArduinoIoTCloud.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,6 @@ class ArduinoIoTCloudClass {

virtual int connected() = 0;

virtual ArduinoIoTConnectionStatus connectionCheck() = 0;

virtual void printDebugInfo() = 0;

inline void setThingId(String const thing_id) {
Expand Down
2 changes: 1 addition & 1 deletion src/ArduinoIoTCloudLPWAN.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ int ArduinoIoTCloudLPWAN::connected() {
return state;
}

int ArduinoIoTCloudLPWAN::begin(LPWANConnectionHandler& connection, bool retry) {
int ArduinoIoTCloudLPWAN::begin(ConnectionHandler& connection, bool retry) {
_connection = &connection;
_connection->init();
_retryEnable = retry;
Expand Down
6 changes: 3 additions & 3 deletions src/ArduinoIoTCloudLPWAN.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ class ArduinoIoTCloudLPWAN : public ArduinoIoTCloudClass {
void update();
ArduinoIoTConnectionStatus connectionCheck();
void printDebugInfo();
int begin(LPWANConnectionHandler& connection, bool retry = false);
inline LPWANConnectionHandler* getConnection() {
int begin(ConnectionHandler& connection, bool retry = false);
inline ConnectionHandler* getConnection() {
return _connection;
}
bool isRetryEnabled() {
Expand Down Expand Up @@ -67,7 +67,7 @@ class ArduinoIoTCloudLPWAN : public ArduinoIoTCloudClass {
int writeShadowOut(const byte data[], int length);

private:
LPWANConnectionHandler* _connection;
ConnectionHandler* _connection;
void sendPropertiesToCloud();
bool _retryEnable;
int _maxNumRetry;
Expand Down
29 changes: 16 additions & 13 deletions src/ArduinoIoTCloudTCP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ ArduinoIoTCloudTCP::~ArduinoIoTCloudTCP() {
}
}

int ArduinoIoTCloudTCP::begin(TcpIpConnectionHandler & connection, String brokerAddress, uint16_t brokerPort) {
int ArduinoIoTCloudTCP::begin(ConnectionHandler & connection, String brokerAddress, uint16_t brokerPort) {
_connection = &connection;
_brokerAddress = brokerAddress;
_brokerPort = brokerPort;
Expand Down Expand Up @@ -202,7 +202,8 @@ void ArduinoIoTCloudTCP::update() {
// Check if a primitive property wrapper is locally changed
Thing.updateTimestampOnLocallyChangedProperties();

if(connectionCheck() != ArduinoIoTConnectionStatus::CONNECTED) return;
if(checkPhyConnection() != NetworkConnectionState::CONNECTED) return;
if(checkCloudConnection() != ArduinoIoTConnectionStatus::CONNECTED) return;

if(_mqtt_data_request_retransmit && (_mqtt_data_len > 0)) {
writeProperties(_mqtt_data_buf, _mqtt_data_len);
Expand Down Expand Up @@ -346,21 +347,23 @@ void ArduinoIoTCloudTCP::requestLastValue() {
writeShadowOut(CBOR_REQUEST_LAST_VALUE_MSG, sizeof(CBOR_REQUEST_LAST_VALUE_MSG));
}

ArduinoIoTConnectionStatus ArduinoIoTCloudTCP::connectionCheck() {
NetworkConnectionState ArduinoIoTCloudTCP::checkPhyConnection()
{
NetworkConnectionState const connect_state = _connection->check();

if (_connection != NULL) {

_connection->check();

if (_connection->getStatus() != NetworkConnectionState::CONNECTED) {
if (_iotStatus == ArduinoIoTConnectionStatus::CONNECTED) {
_iotStatus = ArduinoIoTConnectionStatus::DISCONNECTED;
printConnectionStatus(_iotStatus);
}
return _iotStatus;
if (_connection->check() != NetworkConnectionState::CONNECTED)
{
if (_iotStatus == ArduinoIoTConnectionStatus::CONNECTED)
{
disconnect();
}
}

return connect_state;
}

ArduinoIoTConnectionStatus ArduinoIoTCloudTCP::checkCloudConnection()
{
switch (_iotStatus) {
case ArduinoIoTConnectionStatus::IDLE: {
_iotStatus = ArduinoIoTConnectionStatus::CONNECTING;
Expand Down
11 changes: 6 additions & 5 deletions src/ArduinoIoTCloudTCP.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,11 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass {
bool disconnect();
int connected();
void update();
ArduinoIoTConnectionStatus connectionCheck();
void printDebugInfo();
#ifdef BOARD_HAS_ECCX08
int begin(TcpIpConnectionHandler & connection, String brokerAddress = DEFAULT_BROKER_ADDRESS_SECURE_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH);
int begin(ConnectionHandler & connection, String brokerAddress = DEFAULT_BROKER_ADDRESS_SECURE_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH);
#else
int begin(TcpIpConnectionHandler & connection, String brokerAddress = DEFAULT_BROKER_ADDRESS_USER_PASS_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_USER_PASS_AUTH);
int begin(ConnectionHandler & connection, String brokerAddress = DEFAULT_BROKER_ADDRESS_USER_PASS_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_USER_PASS_AUTH);
#endif
int begin(String brokerAddress = DEFAULT_BROKER_ADDRESS_SECURE_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH);
// Class constant declaration
Expand All @@ -64,7 +63,7 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass {
}
#endif

inline TcpIpConnectionHandler * getConnection() {
inline ConnectionHandler * getConnection() {
return _connection;
}

Expand Down Expand Up @@ -92,7 +91,7 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass {
void requestLastValue();

private:
TcpIpConnectionHandler * _connection;
ConnectionHandler * _connection;
String _brokerAddress;
uint16_t _brokerPort;
uint8_t _mqtt_data_buf[MQTT_TRANSMIT_BUFFER_SIZE];
Expand Down Expand Up @@ -122,6 +121,8 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass {
void handleMessage(int length);

void sendPropertiesToCloud();
NetworkConnectionState checkPhyConnection();
ArduinoIoTConnectionStatus checkCloudConnection();
};

extern ArduinoIoTCloudTCP ArduinoCloud;
Expand Down