Skip to content

Implement OpenThread in Arduino #9486

Open
@SuGlider

Description

@SuGlider

Related area

Create an API for OpenThread within Arduino

Hardware specification

ESP32-C6 and ESP32-H2 as Standalone Nodes.
Other SoC can be used as Open Thread Host mode attached to a RPC (802.15.4 radio layer).

Is your feature request related to a problem?

This is an issue to track the progress of developing OpenThread , a new API for Arduino.

Describe the solution you'd like

There are some macro tasks, split in 4 main areas, necessary in order to enable OpenThread in ESP32 Arduino:

1- Add Openthread to Lib Builder scripts and sdkconfig.

2- Create OpenThread CLI API:

  • Access Thread using an Stream object, such as Serial for the user to enter necessary Thread configurations and commands.
  • A Stream object may also allow sending a "script" with those commands, for starting/running Thread with no user interactions.
  • It shall allow Arduino to set a callback function to process CLI responses automating the "script".
  • Create a structure that allows an API based on CLI, for using all commands and functionalities in a easy way.
  • This may be a first approach for creating an API for Thread. Develop some examples.

3- Create a set of Classes that allow the user to write a sketch for Thread Network.

  • Map necessary Thread functions to Classes.
  • Map UDP sockets and TCP connections into the Arduino API.
  • Build a way for a OpenThread Host + RCP to work.
  • Create an API for CoAP (client/server) compatible with Arduino.
  • Create an API for SRP (client/server) for Arduino.
  • Create necessary layers for FTD, MTD (MED/SED) device types functionality.
  • Add IPv6 Multicasting, Unicasting and address mapping functionalities.
  • Add OpentThread ping() function to the Arduino API.
  • Add Commissioning and Joiner functions to the API.

4- Examples and Documentation

  • Create examples using the new Open Thread Library.
  • Create documentation about this new Arduino library.

Describe alternatives you've considered

Instead of mapping all OpenThread Library functions to Arduino, limit it to the set of functions that CLI supports.
Maybe using CLI as main source of interaction given that it will be maintained by OpenThread development team.
This may reduce the effort for maintainance and make it easier for supporting both Standalone Nodes and Host + RPC Nodes configuration.

Additional context

No response

I have checked existing list of Feature requests and the Contribution Guide

  • I confirm I have checked existing list of Feature requests and Contribution Guide.

Metadata

Metadata

Assignees

Type

No type

Projects

Status

In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions