diff --git a/src/ArduinoIoTCloudTCP.cpp b/src/ArduinoIoTCloudTCP.cpp index 9de9d301..31e97288 100644 --- a/src/ArduinoIoTCloudTCP.cpp +++ b/src/ArduinoIoTCloudTCP.cpp @@ -72,7 +72,8 @@ ArduinoIoTCloudTCP::ArduinoIoTCloudTCP() , _get_ota_confirmation{nullptr} #endif /* OTA_ENABLED */ { - + cbor::encoder::iotcloud::commandEncoders(); + cbor::decoder::iotcloud::commandDecoders(); } /****************************************************************************** diff --git a/src/cbor/IoTCloudMessageDecoder.cpp b/src/cbor/IoTCloudMessageDecoder.cpp index 8a17ba1f..8deb9e3e 100644 --- a/src/cbor/IoTCloudMessageDecoder.cpp +++ b/src/cbor/IoTCloudMessageDecoder.cpp @@ -176,3 +176,13 @@ static ThingUpdateCommandDecoder thingUpdateCommandDecoder; static ThingDetachCommandDecoder thingDetachCommandDecoder; static LastValuesUpdateCommandDecoder lastValuesUpdateCommandDecoder; static TimezoneCommandDownDecoder timezoneCommandDownDecoder; + +namespace cbor { namespace decoder { namespace iotcloud { + void commandDecoders() { + (void) otaUpdateCommandDecoder; + (void) thingUpdateCommandDecoder; + (void) thingDetachCommandDecoder; + (void) lastValuesUpdateCommandDecoder; + (void) timezoneCommandDownDecoder; + } +}}} diff --git a/src/cbor/IoTCloudMessageDecoder.h b/src/cbor/IoTCloudMessageDecoder.h index 4b444f5c..f072a2c3 100644 --- a/src/cbor/IoTCloudMessageDecoder.h +++ b/src/cbor/IoTCloudMessageDecoder.h @@ -63,4 +63,12 @@ class TimezoneCommandDownDecoder: public CBORMessageDecoderInterface { MessageDecoder::Status decode(CborValue* iter, Message *msg) override; }; +namespace cbor { namespace decoder { namespace iotcloud { + /** + * Some link time optimization may exclude these classes to be instantiated + * thus it may be required to reference them from outside of this file + */ + void commandDecoders(); +}}} + #endif /* ARDUINO_CBOR_MESSAGE_DECODER_H_ */ diff --git a/src/cbor/IoTCloudMessageEncoder.cpp b/src/cbor/IoTCloudMessageEncoder.cpp index ed4c6d82..71363cf5 100644 --- a/src/cbor/IoTCloudMessageEncoder.cpp +++ b/src/cbor/IoTCloudMessageEncoder.cpp @@ -159,3 +159,14 @@ static LastValuesBeginCommandEncoder lastValuesBeginCommandEncoder; static DeviceBeginCommandEncoder deviceBeginCommandEncoder; static OtaProgressCommandUpEncoder otaProgressCommandUpEncoder; static TimezoneCommandUpEncoder timezoneCommandUpEncoder; + +namespace cbor { namespace encoder { namespace iotcloud { + void commandEncoders() { + (void) otaBeginCommandEncoder; + (void) thingBeginCommandEncoder; + (void) lastValuesBeginCommandEncoder; + (void) deviceBeginCommandEncoder; + (void) otaProgressCommandUpEncoder; + (void) timezoneCommandUpEncoder; + } +}}} diff --git a/src/cbor/IoTCloudMessageEncoder.h b/src/cbor/IoTCloudMessageEncoder.h index 99922bc5..9b5ca441 100644 --- a/src/cbor/IoTCloudMessageEncoder.h +++ b/src/cbor/IoTCloudMessageEncoder.h @@ -71,5 +71,12 @@ class TimezoneCommandUpEncoder: public CBORMessageEncoderInterface { MessageEncoder::Status encode(CborEncoder* encoder, Message *msg) override; }; +namespace cbor { namespace encoder { namespace iotcloud { + /** + * Some link time optimization may exclude these classes to be instantiated + * thus it may be required to reference them from outside of this file + */ + void commandEncoders(); +}}} #endif /* ARDUINO_CBOR_MESSAGE_ENCODER_H_ */