Do I need FreeRTOS-Plus-TCP?

Hello all,

I would like to design an IoT system which is able to send data with MQTT to AWS cloud.
From my understanding of the MQTT examples, I need to provided to the coreMQTT a transport interface. I have seen in examples that I could use TCP either in plaintext (for testing) or with TLS.

In my system, I want to transfer data to the cloud using a WIFI module (implemented on the PCB because no native WIFI on the MCU) and AT commands. These AT commands implement already a kind of TCP stack.

[MCU] <—AT commands with UART —> [ESP] <—WIFI—>[Cloud]

My question is the following :
Do I need to use a transport layer implementation using the FreeRTOS-Plus-TCP library or can I replaced the use of this library by an interface with my AT command driver ?
Schematically, I must choose between

  • UserApp > coreMQTT > transport layer > FreeRTOS-Plus-TCP > AT commands
  • UserApp > coreMQTT > transport layer > AT commands

I have the feeling without certitude that the TCP library has been developped with Ethernet physical interface in mind but it is not the solution towards I want to go.

For all of this reason I think I should go for the second option but maybe an experienced perspective would clarify the problem.

Thanks all for the answers.

1 Like

The coreMQTT library will work with any TCP/IP stack, so as per your second option, if your Wi-Fi module provides an AT command set interface to a TCP/IP stack that is running on the module itself then you can implement the transport layer using the AT commands. There may even be a transport layer implemented for the module already in the AWS Github repo.