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.

Activity

self-assigned this
on Apr 11, 2024
added this to the 3.1.0 milestone on Apr 11, 2024
SuGlider

SuGlider commented on Apr 11, 2024

@SuGlider
CollaboratorAuthor

@VojtechBartoska - this is the Openthread feature request.

moved this from Todo to Under investigation in Arduino ESP32 Core Project Roadmapon Apr 15, 2024
modified the milestones: 3.1.0, 3.0.2 on Jun 5, 2024
SuGlider

SuGlider commented on Jun 21, 2024

@SuGlider
CollaboratorAuthor

PR #9908 Adds OpenThread CLI API for Arduino Core 3.0.2
Item (3) Create a set of Classes that allow the user to write a sketch for Thread Network of the list will be postponed.

moved this from Under investigation to In Progress in Arduino ESP32 Core Project Roadmapon Jun 21, 2024
SuGlider

SuGlider commented on Jun 21, 2024

@SuGlider
CollaboratorAuthor

Documentation in the Library folder.

SuGlider

SuGlider commented on Jun 21, 2024

@SuGlider
CollaboratorAuthor

The following features from (3) Create a set of Classes that allow the user to write a sketch for Thread Network are also available using the ESP32 Arduino OpenThread API:

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.

10 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

Status

In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Implement OpenThread in Arduino · Issue #9486 · espressif/arduino-esp32