Skip to content
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

Implement OpenThread in Arduino #9486

Open
9 of 18 tasks
SuGlider opened this issue Apr 11, 2024 · 5 comments
Open
9 of 18 tasks

Implement OpenThread in Arduino #9486

SuGlider opened this issue Apr 11, 2024 · 5 comments
Assignees
Labels
Status: In Progress Issue is in progress Type: Feature request Feature request for Arduino ESP32
Milestone

Comments

@SuGlider
Copy link
Collaborator

SuGlider commented Apr 11, 2024

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.
@SuGlider SuGlider added the Type: Feature request Feature request for Arduino ESP32 label Apr 11, 2024
@SuGlider SuGlider self-assigned this Apr 11, 2024
@SuGlider SuGlider added this to the 3.1.0 milestone Apr 11, 2024
@SuGlider
Copy link
Collaborator Author

@VojtechBartoska - this is the Openthread feature request.

@VojtechBartoska VojtechBartoska moved this from Todo to Under investigation in Arduino ESP32 Core Project Roadmap Apr 15, 2024
@VojtechBartoska VojtechBartoska added the Status: In Progress Issue is in progress label Apr 17, 2024
@VojtechBartoska VojtechBartoska modified the milestones: 3.1.0, 3.0.2 Jun 5, 2024
@SuGlider
Copy link
Collaborator Author

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.

@SuGlider SuGlider moved this from Under investigation to In Progress in Arduino ESP32 Core Project Roadmap Jun 21, 2024
@SuGlider
Copy link
Collaborator Author

Documentation in the Library folder.

@SuGlider
Copy link
Collaborator Author

SuGlider commented Jun 21, 2024

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.

@VojtechBartoska VojtechBartoska pinned this issue Jun 24, 2024
@VojtechBartoska VojtechBartoska modified the milestones: 3.0.2, 3.1.0 Jun 25, 2024
@VojtechBartoska VojtechBartoska unpinned this issue Sep 2, 2024
@SuGlider
Copy link
Collaborator Author

SuGlider commented Sep 9, 2024

More examples in #10299

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: In Progress Issue is in progress Type: Feature request Feature request for Arduino ESP32
Projects
Status: In Progress
Development

No branches or pull requests

2 participants