Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter

- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
This commit is contained in:
Eric F
2026-06-08 00:38:27 -04:00
parent 468cfeaa50
commit d398a6ced2
7326 changed files with 1177561 additions and 7 deletions

View File

@@ -0,0 +1,65 @@
.. _howto_document:
######################
Documenting Quickstart
######################
This is a short how-to for writing documentation in EVerest. Please refer to the
`Documentation README <https://github.com/EVerest/EVerest/blob/main/docs/README.md>`_
for build instructions for the documentation.
To get more detailed information, see
:ref:`Documenting EVerest <documenting_everest>`.
1. Decide which type of documentation you want to create:
a. If you are not familiar with the Diátaxis way of organizing documentation,
read the subsection :ref:`Structure of the Documentation <exp_the_everest_documentation_structure_of_doc>`.
b. If you cannot clearly decide which category your contribution belongs to,
consider splitting it up to align with the Diátaxis philosophy.
2. Decide where to place the documentation
a. Module documentation goes into the modules ``docs`` directory. Provide
at least an index.rst file in this directory.
b. If you want to document some partial aspects of your code (like a
specific algorithm you use), you can add a section in the ``README.md``
close to the source code. That could for example be in the ``lib/everest/...``
directory of the EVerest repository or in the corresponding GitHub repository
if the code is not part of EVerest.
c. For documentation that is required to understand an important part or
concept of EVerest, place the new documentation in a proper location in
the ``docs`` directory of the
`EVerest main repository <https://github.com/EVerest/EVerest>`_.
d. When in doubt, use the EVerest main repository.
3. Create an issue (in case of bigger documentation changes).
Consider to create a documentation issue inside of the
EVerest GitHub repository you just have chosen.
Describe the most important aspects of the topic to be documented.
4. Create a Git branch like ``docs/name-of-topic`` in the EVerest main
repository.
Put a note in the issue to inform the community that you start working on
new documentation to solve that issue.
5. Create the documentation.
You can use existing ``.rst`` files as template for creating new
documentation pages. See this page for getting an idea how to use
reStructuredText:
https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html
Also have a look at our
:ref:`best practices page for using Sphinx in EVerest <everest_doc_sphinx_style_code>`.
6. Create pull request (PR).
After having finished your work, create a PR and set a reference to the
originating issue (if existing).
The maintainers of the repository will get informed automatically.
Alternatively, you can try to find people who have the required knowledge in
and also have the time to review your PR.
You might find them via Zulip or the working groups.

View File

@@ -0,0 +1,143 @@
.. _extending_everest_documentation:
###################################
Extending the EVerest Documentation
###################################
If you want to start documenting quickly without the need of reading through
all the theory about current documentation structure and best practices, have
a look at our :ref:`How to write EVerest documentation <howto_document>`.
.. note::
For doing quick changes in existing documentation pages, the "How to" might
be a good choice. You also can use the "How to" for creating completely new
pages. But doing this, prepare for getting more change requests by other
community members during the review process. To avoid this, read through
the page you are currently reading to get more theory.
********************************
Process of EVerest documentation
********************************
Preparing a new documentation page
==================================
Let's suppose, you are aware of a brand-new EVerest feature that is still not
documented. Or you found some aspect of EVerest that still lacks a
corresponding documentation page.
This is what to do:
1. Check the existing documentation for similar sections.
a. Search https://everest.github.io/nightly/index.html
b. Is it a module that you want to add documentation to? Then have a look
at the ``EVerest`` repository in the ``modules`` directory and check
if any documentation pages already do exist there.
c. Use GitHub search with ``org:EVerest`` and your keywords to check if you
can find existing documentation snippets near the source code of the
feature.
If you can find something that is related to the topic on your mind, please
decide, whether a new documentation section should be added or the existing
page should be updated.
2. Create a GitHub issue
a. In the repository https://github.com/EVerest/EVerest, click on ``Issues``
and then ``New issue``.
b. Choose ``Feature Request`` and fill out the title and
the description fields. Answer the templated questions, which have already
been added to the description text area.
c. Also add a reference to any related documentation pages and describe how
the new documentation parts shall relate to that (new section, change of
docs, new page with reference to existing ones etc.).
3. Optionally: Inform others about the issue
Especially if you do not want to create documentation on your own (due to
lack of time or knowledge), you can inform others about this new
documentation requirement (the issue). This is optional as the maintainers
of the EVerest documentation will get informed about the newly created issue.
But by taking the topic into an appropriate working group or into the EVerest
Zulip channels, you could find the right people who have time and knowledge
to create such a new section in the documentation.
Creating a new documentation page
=================================
Creating a Git branch
---------------------
As with source code feature development, documentation is also organized with
Git branches. The scheme to name a branch should be adhered to
.. code-block:: bash
docs/name-of-topic
Optionally, to better find your own branches in a list, you could also add
your name initials.
In case your name is Abraham Braveman and you are creating a documentation
about Plug'n'Charge, you could name your branch
.. code-block:: bash
docs/ab-plug-n-charge
Choosing the type of documentation
----------------------------------
The EVerest documentation follows the Diátaxis philosphy. Find an explanation in
the :ref:`Structure of the Documentation <exp_the_everest_documentation_structure_of_doc>`
section.
Choosing a place to store the docs
----------------------------------
If you want to create a new documentation page, you should first check if
pages with similar topics are already existing. It is a good idea to place
your new page in the same location.
In general, you can decide where to put your documentation pages:
* The repository for the main documentation:
https://github.com/EVerest/EVerest in directory ``docs/sources/``
* Directly inside of the ``docs`` directory in your modules directory structure.
The ``index.rst`` in this location will be included into the auto-generated
``reference`` documentation page of this module.
* Near the source code which implements the feature that is to be documented.
.. note::
Don't be afraid to put your documentation at a "wrong" location. It is more
important that documentation does exist. The maintainers of the EVerest
documentation will help you to move your docs to a suitable place during the
PR review phase.
Writing
-------
Best practice is to look at existing documentation sources to get an idea about
how headlines or bullet points are to be handled.
You can create a ``Draft pull request`` on GitHub at an early stage of your
work to let others already get an idea how the new documentation part will look
like and give them the opportunity to comment on your work already.
.. note::
Consider referencing to existing docs with the same topic and vice versa.
Test the generated html to be correct in formatting an test all the links you
included in your text. Build instructions can be found in `docs/README.md`.
Creating a PR and merge
-----------------------
If you have finished your documentation work, you can create a pull request
for your branch. Don't forget to reference the originating issue (if existing).
The maintainers of the corresponding repository will get informed and will try
to invest time to review your work.
After merging the PR, don't forget to also close the issue and eventually
inform the community about your newly created documentation work.

View File

@@ -0,0 +1,38 @@
.. _documenting_everest:
###################
Documenting EVerest
###################
Documentation helps beginners to start with EVerest and advanced users to
be effective by quickly having required information had hand. Find out how
to help writing and keeping documentation up to date.
.. grid:: 1 2 2 3
:gutter: 2
.. grid-item-card:: Write Documentation
:link: extending-everest-documentation
:link-type: doc
How to write documentation for EVerest. A detailed description.
.. grid-item-card:: Documenting Quickstart
:link: change-documentation-quickstart
:link-type: doc
Short description with the most important steps required to change the EVerest documentation.
.. grid-item-card:: Sphinx Style Guide
:link: sphinx-style-guide
:link-type: doc
How to achieve the desired formatting with Sphinx.
.. toctree::
:hidden:
:maxdepth: 1
extending-everest-documentation
change-documentation-quickstart
sphinx-style-guide

View File

@@ -0,0 +1,656 @@
.. _everest_doc_sphinx_style_code:
##################
Sphinx Style Guide
##################
*********
Headlines
*********
Example:
.. code-block:: rst
###################
How To: Sphinx (h1)
###################
**************
Headlines (h2)
**************
Headline (h3)
=============
Headline (h4)
-------------
Headline (h5)
^^^^^^^^^^^^^
Headline (h6)
"""""""""""""
Result:
.. raw:: html
<div class="highlight-rst"><pre>
<h1>How To: Sphinx (h1)</h1>
<h2>Headlines (h2)</h2>
<h3>Headline (h3)</h3>
<h4>Headline (h4)</h4>
<h5>Headline (h5)</h5>
<h6>Headline (h6)</h6>
</pre></div>
******
Styles
******
.. code-block:: rst
**Bold text**
*Italic text*
``Inline literal/code``
:sup:`super`\ Script
:sub:`sub`\ Script
.. line-block::
**Bold text**
*Italic text*
``Inline literal/code``
:sup:`super`\ Script
:sub:`sub`\ Script
************
Bullet Lists
************
.. code-blocK:: rst
* Unordered item
* Unordered item
#. Nestes ordered item
#. Nestes ordered item
#. Nested ordered item
* Unordered item
* Unordered item
* Unordered item
#. Nestes ordered item
#. Nestes ordered item
#. Nested ordered item
* Unordered item
*****************
Targets and Links
*****************
.. code-block:: rst
.. Anchor target
.. _anchorbyref:
.. _Anchor link by text:
.. External target
.. _external_link_ref: https://example.com
.. _External link name: https://example.com
.. Footnote target
.. [1] footnote text
.. Citation target
.. [cit1] A global citation
.. External links
`External link <https://example.com>`_
`External link name`_
`Example Text <External link name>`_
`External link by ref <external_link_ref>`_
.. Internal links
`Anchor link by text`_
`Anchor <Anchor link by text>`_
`Anchor by ref <anchorbyref>`_
:ref:`Anchor <anchorbyref>`
.. Footnote
Reference a footnote [1]_
.. Citation
Reference a global citation [cit1]_
.. Section Link
Section Heading
===============
`Link <Section Heading>`_
.. anchor target
.. _anchorbyref:
.. _Anchor link by text:
.. external target
.. _external_link_ref: https://example.com
.. _External link name: https://example.com
.. footnote target
.. [1] footnote text
.. citation target
.. [cit1] A global citation
.. External links
| `External link <https://example.com>`_
| `External link name`_
| `Example Text <External link name>`_
| `External link by ref <external_link_ref>`_
.. Internal links
| `Anchor link by text`_
| `Anchor <Anchor link by text>`_
| `Anchor by ref <anchorbyref>`_
| :ref:`Anchor <anchorbyref>`
.. Footnote
Reference a footnote [1]_
.. Citation
Reference a global citation [cit1]_
.. Section Link
Section Heading
===============
`Link <Section Heading_>`_
******
Tables
******
.. code-block:: rst
+-----------------+-----------------+-----------------+
| Grid table | Header 2 | Header 3 |
| | | |
+=================+=================+=================+
| Column 1 | Column 2 | Vertical |
+-----------------+-----------------+ column +
| Horizontal span | span |
+-----------------+-----------------+-----------------+
============ ======== ========
Simple table Header 2 Header 3
============ ======== ========
Column 1 Column 2 Column 3
Horizontal column span ...
---------------------- --------
... ... ...
============ ======== ========
.. csv-table:: table title
:header: "Header 1", "Header 2", "Header 3"
:widths: 20, 20, 20
:encoding: utf-8
:header-rows: 1
"Row 1, Column 1", "Row 1, Column 2", "Row 1, Column 3"
"Row 2, Column 1", "Row 2, Column 2", "Row 2, Column 3"
The ``csv-table`` directive can be used to create tables from CSV files:
.. code-block:: rst
.. csv-table:: table title
:header: "Header 1", "Header 2", "Header 3"
:widths: 20, 20, 20
:encoding: utf-8
:header-rows: 1
:file: table.csv
Grid table
==========
+-----------------+-----------------+-----------------+
| Grid table | Header 2 | Header 3 |
| | | |
+=================+=================+=================+
| Column 1 | Column 2 | Vertical |
+-----------------+-----------------+ column +
| Horizontal span | span |
+-----------------+-----------------+-----------------+
Simple table
============
============ ======== ========
Simple table Header 2 Header 3
============ ======== ========
Column 1 Column 2 Column 3
Horizontal column span ...
---------------------- --------
... ... ...
============ ======== ========
CSV table
=========
.. csv-table:: table title
:header: "Header 1", "Header 2", "Header 3"
:widths: 20, 20, 20
:encoding: utf-8
:header-rows: 1
"Row 1, Column 1", "Row 1, Column 2", "Row 1, Column 3"
"Row 2, Column 1", "Row 2, Column 2", "Row 2, Column 3"
******************
Images and Figures
******************
Figures are images with captions. They support all image options.
.. code-block:: rst
.. image:: image.png
:alt: Image alt text
:width: 150px
:height: 150px
:align: center
:target: target_
.. figure:: image.png
:align: center
:height: 150px
:name: figure-name
Figure caption :figure:`figure-name` or `Example <figure-name>`_
Image
=====
.. image:: https://via.placeholder.com/150
:alt: Image alt text
:width: 150px
:height: 150px
:align: center
:target: https://example.com
Figure
======
.. figure:: https://via.placeholder.com/150
:alt: Figure alt text
:align: center
:target: https://example.com
:name: figure-name
Figure caption `figure-name`_ or `Example <figure-name_>`_
********
Comments
********
.. code-block:: rst
.. comment
This is a comment
**********
Directives
**********
.. code-block:: rst
.. directive:: argument
:option: value
Directive content
*****************
Table of Contents
*****************
.. code-block:: rst
.. local table of contents. The ``:local:`` option is optional.
.. contents:: Table of Contents
:local:
:depth: 2
.. defines global structure and includes all sub toc-trees and tocs
Can also be set to visible by omitting the ``:hidden:`` option
.. toc-tree:: Table of Contents
:maxdepth: 2
:numbered:
:hidden:
file.rst
second_file
directory/file
Table of Contents (this document)
=================================
.. contents:: Table of Contents
:depth: 2
:class: this-will-duplicate-information-and-it-is-still-useful-here
:backlinks: none
************************
Content Block Directives
************************
.. contents:: Content Block Directives
:depth: 1
:class: this-will-duplicate-information-and-it-is-still-useful-here
:backlinks: none
:local:
``.. topic::`` *[title]*
=========================
.. code-block:: rst
.. topic:: Topic title
Topic content
.. topic:: Topic
Topic content
``.. sidebar::`` *[title]*
===========================
.. code-block:: rst
.. sidebar:: Sidebar title
Sidebar content
.. sidebar:: Sidebar
Sidebar content
``.. admonition::`` *[title]*
=============================
.. code-block:: rst
.. admonition:: Admonition title
Admonition content
.. admonition:: Admonition title
Admonition content
``.. attention::``
==================
.. code-block:: rst
.. attention::
Attention content
.. attention::
Attention content
``.. caution::``
================
.. code-block:: rst
.. caution::
Caution content
.. caution::
Caution content
``.. danger::``
===============
.. code-block:: rst
.. danger::
Danger content
.. danger::
Danger content
``.. error::``
==============
.. code-block:: rst
.. error::
Error content
.. error::
Error content
``.. hint::``
=============
.. code-block:: rst
.. hint::
Hint content
.. hint::
Hint content
``.. important::``
==================
.. code-block:: rst
.. important::
Important content
.. important::
Important content
``.. note::``
=============
.. code-block:: rst
.. note::
Note content
.. note::
Note content
``.. tip::``
============
.. code-block:: rst
.. tip::
Tip content
.. tip::
Tip content
``.. warning::``
================
.. code-block:: rst
.. warning::
Warning content
.. warning::
Warning content
``.. seealso::``
================
.. code-block:: rst
.. seealso::
See also content
.. seealso::
See also content
``.. versionadded::`` *[version]*
==================================
.. code-block:: rst
.. versionadded:: 1.0
Version added content
.. versionadded:: 1.0
Version added content
``.. versionchanged::`` *[version]*
====================================
.. code-block:: rst
.. versionchanged:: 1.0
Version changed content
.. versionchanged:: 1.0
Version changed content
``.. deprecated::`` *[version]*
===============================
.. code-block:: rst
.. deprecated:: 1.0
Deprecated content
.. deprecated:: 1.0
Deprecated content
``.. math::``
=============
.. code-block:: rst
.. math::
\int_{-\infty}^\infty g(x) dx = 1
.. math::
\int_{-\infty}^\infty g(x) dx = 1
``.. raw::`` *output format*
============================
.. code-block:: rst
.. raw:: html
<div>Raw HTML content</div>
.. raw:: html
<div>Raw HTML content</div>
*************
Code Examples
*************
.. code-block:: rst
.. code-block:: python
:linenos:
:emphasize-lines: 2,3
:caption: Code caption
:name: code-name
// Code example
some_function();
any_var = 42;
// Do another thing
another_function();
.. literalinclude:: index.rst
:language: rst
:linenos:
:emphasize-lines: 2-5
:dedent: 4
.. code-block:: python
:linenos:
:emphasize-lines: 2,3
:caption: Code caption
:name: code-name
// Code example
some_function();
any_var = 42;
// Do another thing
another_function();
.. literalinclude:: index.rst
:language: rst
:linenos:
:emphasize-lines: 2-5
:dedent: 0