kopia lustrzana https://github.com/espressif/esp-idf
Merge branch 'feature/docs_update' into 'master'
Feature/docs update https://github.com/espressif/esp-idf/pull/77 Update to the API documentation, links fix, instructions for writing documentation. Replaces !173. See merge request !180pull/89/merge
commit
e94ef1d56e
|
@ -39,6 +39,7 @@ If this process passes, it will be merged onto the public github repository.
|
|||
Legal Part
|
||||
----------
|
||||
|
||||
Before a contribution can be accepted, you will need to sign our `Contributor Agreement <http://esp-idf.readthedocs.io/en/latest/contributing.html>`_. You will be prompted for this automatically as part of the Pull Request process.
|
||||
Before a contribution can be accepted, you will need to sign our :doc:`contributor-agreement`. You will be prompted for this automatically as part of the Pull Request process.
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
PROJECT_NAME = "ESP32 Programming Guide"
|
||||
|
||||
INPUT = ../components/esp32/include/esp_wifi.h ../components/driver/include/driver ../components/esp32/include/rom/gpio.h ../components/bt/include ../components/nvs_flash/include ../components/log/include ../components/vfs/include
|
||||
INPUT = ../components/esp32/include/esp_wifi.h ../components/driver/include/driver ../components/bt/include ../components/nvs_flash/include ../components/log/include ../components/vfs/include
|
||||
|
||||
WARN_NO_PARAMDOC = YES
|
||||
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
Bluetooth API
|
||||
=============
|
||||
Bluetooth
|
||||
=========
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
`Instructions`_
|
||||
|
||||
Application Example
|
||||
-------------------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
`Instructions`_
|
||||
|
||||
Reference
|
||||
---------
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
`Instructions`_
|
||||
|
||||
.. _Instructions: template.html
|
||||
|
||||
Type Definitions
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
Wi-Fi API
|
||||
=========
|
||||
Wi-Fi
|
||||
=====
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
`Instructions`_
|
||||
|
||||
Application Example
|
||||
-------------------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
`Instructions`_
|
||||
|
||||
Reference
|
||||
---------
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
`Instructions`_
|
||||
|
||||
.. _Instructions: template.html
|
||||
|
||||
Macros
|
||||
------
|
||||
|
@ -22,14 +24,13 @@ Macros
|
|||
.. doxygendefine:: WIFI_INIT_CONFIG_DEFAULT
|
||||
|
||||
|
||||
Typedefs
|
||||
--------
|
||||
Type Definitions
|
||||
----------------
|
||||
|
||||
.. doxygentypedef:: wifi_promiscuous_cb_t
|
||||
.. doxygentypedef:: wifi_rxcb_t
|
||||
.. doxygentypedef:: esp_vendor_ie_cb_t
|
||||
|
||||
|
||||
Functions
|
||||
---------
|
||||
|
||||
|
@ -42,11 +43,12 @@ Functions
|
|||
.. doxygenfunction:: esp_wifi_connect
|
||||
.. doxygenfunction:: esp_wifi_disconnect
|
||||
.. doxygenfunction:: esp_wifi_clear_fast_connect
|
||||
.. doxygenfunction:: esp_wifi_kick_station
|
||||
.. doxygenfunction:: esp_wifi_deauth_sta
|
||||
.. doxygenfunction:: esp_wifi_scan_start
|
||||
.. doxygenfunction:: esp_wifi_scan_stop
|
||||
.. doxygenfunction:: esp_wifi_get_ap_num
|
||||
.. doxygenfunction:: esp_wifi_get_ap_list
|
||||
.. doxygenfunction:: esp_wifi_scan_get_ap_num
|
||||
.. doxygenfunction:: esp_wifi_scan_get_ap_records
|
||||
.. doxygenfunction:: esp_wifi_sta_get_ap_info
|
||||
.. doxygenfunction:: esp_wifi_set_ps
|
||||
.. doxygenfunction:: esp_wifi_get_ps
|
||||
.. doxygenfunction:: esp_wifi_set_protocol
|
||||
|
@ -64,11 +66,12 @@ Functions
|
|||
.. doxygenfunction:: esp_wifi_get_promiscuous
|
||||
.. doxygenfunction:: esp_wifi_set_config
|
||||
.. doxygenfunction:: esp_wifi_get_config
|
||||
.. doxygenfunction:: esp_wifi_get_station_list
|
||||
.. doxygenfunction:: esp_wifi_free_station_list
|
||||
.. doxygenfunction:: esp_wifi_ap_get_sta_list
|
||||
.. doxygenfunction:: esp_wifi_set_storage
|
||||
.. doxygenfunction:: esp_wifi_reg_rxcb
|
||||
.. doxygenfunction:: esp_wifi_set_auto_connect
|
||||
.. doxygenfunction:: esp_wifi_get_auto_connect
|
||||
.. doxygenfunction:: esp_wifi_set_vendor_ie
|
||||
.. doxygenfunction:: esp_wifi_set_vendor_ie_cb
|
||||
|
||||
|
||||
|
|
|
@ -1,26 +1,120 @@
|
|||
GPIO API
|
||||
========
|
||||
GPIO
|
||||
====
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
`Instructions`_
|
||||
|
||||
Application Example
|
||||
-------------------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
`Instructions`_
|
||||
|
||||
Reference
|
||||
---------
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
`Instructions`_
|
||||
|
||||
.. _Instructions: template.html
|
||||
|
||||
Macros
|
||||
------
|
||||
|
||||
.. doxygendefine:: GPIO_SEL_0
|
||||
.. doxygendefine:: GPIO_SEL_1
|
||||
.. doxygendefine:: GPIO_SEL_2
|
||||
.. doxygendefine:: GPIO_SEL_3
|
||||
.. doxygendefine:: GPIO_SEL_4
|
||||
.. doxygendefine:: GPIO_SEL_5
|
||||
.. doxygendefine:: GPIO_SEL_6
|
||||
.. doxygendefine:: GPIO_SEL_7
|
||||
.. doxygendefine:: GPIO_SEL_8
|
||||
.. doxygendefine:: GPIO_SEL_9
|
||||
.. doxygendefine:: GPIO_SEL_10
|
||||
.. doxygendefine:: GPIO_SEL_11
|
||||
.. doxygendefine:: GPIO_SEL_12
|
||||
.. doxygendefine:: GPIO_SEL_13
|
||||
.. doxygendefine:: GPIO_SEL_14
|
||||
.. doxygendefine:: GPIO_SEL_15
|
||||
.. doxygendefine:: GPIO_SEL_16
|
||||
.. doxygendefine:: GPIO_SEL_17
|
||||
.. doxygendefine:: GPIO_SEL_18
|
||||
.. doxygendefine:: GPIO_SEL_19
|
||||
.. doxygendefine:: GPIO_SEL_21
|
||||
.. doxygendefine:: GPIO_SEL_22
|
||||
.. doxygendefine:: GPIO_SEL_23
|
||||
.. doxygendefine:: GPIO_SEL_25
|
||||
.. doxygendefine:: GPIO_SEL_26
|
||||
.. doxygendefine:: GPIO_SEL_27
|
||||
.. doxygendefine:: GPIO_SEL_32
|
||||
.. doxygendefine:: GPIO_SEL_33
|
||||
.. doxygendefine:: GPIO_SEL_34
|
||||
.. doxygendefine:: GPIO_SEL_35
|
||||
.. doxygendefine:: GPIO_SEL_36
|
||||
.. doxygendefine:: GPIO_SEL_37
|
||||
.. doxygendefine:: GPIO_SEL_38
|
||||
.. doxygendefine:: GPIO_SEL_39
|
||||
.. doxygendefine:: GPIO_PIN_REG_0
|
||||
.. doxygendefine:: GPIO_PIN_REG_1
|
||||
.. doxygendefine:: GPIO_PIN_REG_2
|
||||
.. doxygendefine:: GPIO_PIN_REG_3
|
||||
.. doxygendefine:: GPIO_PIN_REG_4
|
||||
.. doxygendefine:: GPIO_PIN_REG_5
|
||||
.. doxygendefine:: GPIO_PIN_REG_6
|
||||
.. doxygendefine:: GPIO_PIN_REG_7
|
||||
.. doxygendefine:: GPIO_PIN_REG_8
|
||||
.. doxygendefine:: GPIO_PIN_REG_9
|
||||
.. doxygendefine:: GPIO_PIN_REG_10
|
||||
.. doxygendefine:: GPIO_PIN_REG_11
|
||||
.. doxygendefine:: GPIO_PIN_REG_12
|
||||
.. doxygendefine:: GPIO_PIN_REG_13
|
||||
.. doxygendefine:: GPIO_PIN_REG_14
|
||||
.. doxygendefine:: GPIO_PIN_REG_15
|
||||
.. doxygendefine:: GPIO_PIN_REG_16
|
||||
.. doxygendefine:: GPIO_PIN_REG_17
|
||||
.. doxygendefine:: GPIO_PIN_REG_18
|
||||
.. doxygendefine:: GPIO_PIN_REG_19
|
||||
.. doxygendefine:: GPIO_PIN_REG_20
|
||||
.. doxygendefine:: GPIO_PIN_REG_21
|
||||
.. doxygendefine:: GPIO_PIN_REG_22
|
||||
.. doxygendefine:: GPIO_PIN_REG_23
|
||||
.. doxygendefine:: GPIO_PIN_REG_25
|
||||
.. doxygendefine:: GPIO_PIN_REG_26
|
||||
.. doxygendefine:: GPIO_PIN_REG_27
|
||||
.. doxygendefine:: GPIO_PIN_REG_32
|
||||
.. doxygendefine:: GPIO_PIN_REG_33
|
||||
.. doxygendefine:: GPIO_PIN_REG_34
|
||||
.. doxygendefine:: GPIO_PIN_REG_35
|
||||
.. doxygendefine:: GPIO_PIN_REG_36
|
||||
.. doxygendefine:: GPIO_PIN_REG_37
|
||||
.. doxygendefine:: GPIO_PIN_REG_38
|
||||
.. doxygendefine:: GPIO_PIN_REG_39
|
||||
.. doxygendefine:: GPIO_APP_CPU_INTR_ENA
|
||||
.. doxygendefine:: GPIO_APP_CPU_NMI_INTR_ENA
|
||||
.. doxygendefine:: GPIO_PRO_CPU_INTR_ENA
|
||||
.. doxygendefine:: GPIO_PRO_CPU_NMI_INTR_ENA
|
||||
.. doxygendefine:: GPIO_SDIO_EXT_INTR_ENA
|
||||
.. doxygendefine:: GPIO_MODE_DEF_INPUT
|
||||
.. doxygendefine:: GPIO_MODE_DEF_OUTPUT
|
||||
.. doxygendefine:: GPIO_MODE_DEF_OD
|
||||
.. doxygendefine:: GPIO_PIN_COUNT
|
||||
.. doxygendefine:: GPIO_IS_VALID_GPIO
|
||||
.. doxygendefine:: GPIO_IS_VALID_OUTPUT_GPIO
|
||||
|
||||
Type Definitions
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
.. doxygentypedef:: gpio_event_callback
|
||||
|
||||
Enumerations
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. doxygenenum:: gpio_num_t
|
||||
.. doxygenenum:: gpio_int_type_t
|
||||
.. doxygenenum:: gpio_mode_t
|
||||
.. doxygenenum:: gpio_pullup_t
|
||||
.. doxygenenum:: gpio_pulldown_t
|
||||
.. doxygenenum:: gpio_pull_mode_t
|
||||
|
||||
Functions
|
||||
|
@ -37,54 +131,3 @@ Functions
|
|||
.. doxygenfunction:: gpio_wakeup_enable
|
||||
.. doxygenfunction:: gpio_wakeup_disable
|
||||
.. doxygenfunction:: gpio_isr_register
|
||||
|
||||
*Example code:* Configuration of GPIO as an output
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
gpio_config_t io_conf;
|
||||
io_conf.intr_type = GPIO_INTR_DISABLE; //disable interrupt
|
||||
io_conf.mode = GPIO_MODE_OUTPUT; //set as output mode
|
||||
io_conf.pin_bit_mask = GPIO_SEL_18 | GPIO_SEL_19; //bit mask of the pins that you want to set,e.g.GPIO18/19
|
||||
io_conf.pull_down_en = 0; //disable pull-down mode
|
||||
io_conf.pull_up_en = 0; //disable pull-up mode
|
||||
gpio_config(&io_conf); //configure GPIO with the given settings
|
||||
|
||||
*Example code:* Configuration of GPIO as an input
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
gpio_config_t io_conf;
|
||||
io_conf.intr_type = GPIO_INTR_POSEDGE; //set posedge interrupt
|
||||
io_conf.mode = GPIO_MODE_INPUT; //set as input
|
||||
io_conf.pin_bit_mask = GPIO_SEL_4 | GPIO_SEL_5; //bit mask of the pins that you want to set, e.g.,GPIO4/5
|
||||
io_conf.pull_down_en = 0; //disable pull-down mode
|
||||
io_conf.pull_up_en = 1; //enable pull-up mode
|
||||
gpio_config(&io_conf); //configure GPIO with the given settings
|
||||
|
||||
|
||||
ROM GPIO functions
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. doxygenfunction:: gpio_init
|
||||
.. doxygenfunction:: gpio_output_set
|
||||
.. doxygenfunction:: gpio_output_set_high
|
||||
.. doxygenfunction:: gpio_input_get
|
||||
.. doxygenfunction:: gpio_input_get_high
|
||||
.. doxygenfunction:: gpio_intr_handler_register
|
||||
.. doxygenfunction:: gpio_intr_pending
|
||||
.. doxygenfunction:: gpio_intr_pending_high
|
||||
.. doxygenfunction:: gpio_intr_ack
|
||||
.. doxygenfunction:: gpio_intr_ack_high
|
||||
.. doxygenfunction:: gpio_pin_wakeup_enable
|
||||
.. doxygenfunction:: gpio_pin_wakeup_disable
|
||||
.. doxygenfunction:: gpio_matrix_in
|
||||
.. doxygenfunction:: gpio_matrix_out
|
||||
.. doxygenfunction:: gpio_pad_select_gpio
|
||||
.. doxygenfunction:: gpio_pad_set_drv
|
||||
.. doxygenfunction:: gpio_pad_pullup
|
||||
.. doxygenfunction:: gpio_pad_pulldown
|
||||
.. doxygenfunction:: gpio_pad_unhold
|
||||
.. doxygenfunction:: gpio_pad_hold
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
LED Control
|
||||
===========
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
`Instructions`_
|
||||
|
||||
Application Example
|
||||
-------------------
|
||||
|
||||
`Instructions`_
|
||||
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
`Instructions`_
|
||||
|
||||
.. _Instructions: template.html
|
||||
|
||||
Data Structures
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. doxygenstruct:: ledc_channel_config_t
|
||||
.. doxygenstruct:: ledc_timer_config_t
|
||||
|
||||
Macros
|
||||
^^^^^^
|
||||
|
||||
.. doxygendefine:: LEDC_APB_CLK_HZ
|
||||
.. doxygendefine:: LEDC_REF_CLK_HZ
|
||||
|
||||
Enumerations
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. doxygenenum:: ledc_mode_t
|
||||
.. doxygenenum:: ledc_intr_type_t
|
||||
.. doxygenenum:: ledc_duty_direction_t
|
||||
.. doxygenenum:: ledc_clk_src_t
|
||||
.. doxygenenum:: ledc_timer_t
|
||||
.. doxygenenum:: ledc_channel_t
|
||||
.. doxygenenum:: ledc_timer_bit_t
|
||||
|
||||
Functions
|
||||
^^^^^^^^^
|
||||
|
||||
.. doxygenfunction:: ledc_channel_config
|
||||
.. doxygenfunction:: ledc_timer_config
|
||||
.. doxygenfunction:: ledc_update_duty
|
||||
.. doxygenfunction:: ledc_stop
|
||||
.. doxygenfunction:: ledc_set_freq
|
||||
.. doxygenfunction:: ledc_get_freq
|
||||
.. doxygenfunction:: ledc_set_duty
|
||||
.. doxygenfunction:: ledc_get_duty
|
||||
.. doxygenfunction:: ledc_set_fade
|
||||
.. doxygenfunction:: ledc_isr_register
|
||||
.. doxygenfunction:: ledc_timer_set
|
||||
.. doxygenfunction:: ledc_timer_rst
|
||||
.. doxygenfunction:: ledc_timer_pause
|
||||
.. doxygenfunction:: ledc_timer_resume
|
||||
.. doxygenfunction:: ledc_bind_channel_timer
|
|
@ -3,6 +3,33 @@
|
|||
API Reference
|
||||
-------------
|
||||
|
||||
Macros
|
||||
^^^^^^
|
||||
|
||||
.. doxygendefine:: LOG_COLOR_E
|
||||
.. doxygendefine:: LOG_COLOR_W
|
||||
.. doxygendefine:: LOG_COLOR_I
|
||||
.. doxygendefine:: LOG_COLOR_D
|
||||
.. doxygendefine:: LOG_COLOR_V
|
||||
.. doxygendefine:: LOG_RESET_COLOR
|
||||
.. doxygendefine:: LOG_FORMAT
|
||||
.. doxygendefine:: LOG_LOCAL_LEVEL
|
||||
.. doxygendefine:: ESP_EARLY_LOGE
|
||||
.. doxygendefine:: ESP_EARLY_LOGW
|
||||
.. doxygendefine:: ESP_EARLY_LOGI
|
||||
.. doxygendefine:: ESP_EARLY_LOGD
|
||||
.. doxygendefine:: ESP_EARLY_LOGV
|
||||
.. doxygendefine:: ESP_LOGE
|
||||
.. doxygendefine:: ESP_LOGW
|
||||
.. doxygendefine:: ESP_LOGI
|
||||
.. doxygendefine:: ESP_LOGD
|
||||
.. doxygendefine:: ESP_LOGV
|
||||
|
||||
Type Definitions
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
.. doxygentypedef:: vprintf_like_t
|
||||
|
||||
Enumerations
|
||||
^^^^^^^^^^^^
|
||||
|
||||
|
@ -17,3 +44,11 @@ Functions
|
|||
.. doxygenfunction:: esp_log_write
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
.. include:: ../../components/nvs_flash/README.rst
|
||||
|
||||
Application Example
|
||||
-------------------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
Macros
|
||||
^^^^^^
|
||||
|
||||
.. doxygendefine:: ESP_ERR_NVS_BASE
|
||||
.. doxygendefine:: ESP_ERR_NVS_NOT_INITIALIZED
|
||||
.. doxygendefine:: ESP_ERR_NVS_NOT_FOUND
|
||||
.. doxygendefine:: ESP_ERR_NVS_TYPE_MISMATCH
|
||||
.. doxygendefine:: ESP_ERR_NVS_READ_ONLY
|
||||
.. doxygendefine:: ESP_ERR_NVS_NOT_ENOUGH_SPACE
|
||||
.. doxygendefine:: ESP_ERR_NVS_INVALID_NAME
|
||||
.. doxygendefine:: ESP_ERR_NVS_INVALID_HANDLE
|
||||
.. doxygendefine:: ESP_ERR_NVS_REMOVE_FAILED
|
||||
.. doxygendefine:: ESP_ERR_NVS_KEY_TOO_LONG
|
||||
.. doxygendefine:: ESP_ERR_NVS_PAGE_FULL
|
||||
.. doxygendefine:: ESP_ERR_NVS_INVALID_STATE
|
||||
.. doxygendefine:: ESP_ERR_NVS_INVALID_LENGTH
|
||||
|
||||
Type Definitions
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
.. doxygentypedef:: nvs_handle
|
||||
|
||||
Enumerations
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. doxygenenum:: nvs_open_mode
|
||||
|
||||
Functions
|
||||
^^^^^^^^^
|
||||
.. doxygenfunction:: nvs_open
|
||||
.. doxygenfunction:: nvs_set_i8
|
||||
.. doxygenfunction:: nvs_set_u8
|
||||
.. doxygenfunction:: nvs_set_i16
|
||||
.. doxygenfunction:: nvs_set_u16
|
||||
.. doxygenfunction:: nvs_set_i32
|
||||
.. doxygenfunction:: nvs_set_u32
|
||||
.. doxygenfunction:: nvs_set_i64
|
||||
.. doxygenfunction:: nvs_set_u64
|
||||
.. doxygenfunction:: nvs_set_str
|
||||
.. doxygenfunction:: nvs_set_blob
|
||||
.. doxygenfunction:: nvs_get_i8
|
||||
.. doxygenfunction:: nvs_get_u8
|
||||
.. doxygenfunction:: nvs_get_i16
|
||||
.. doxygenfunction:: nvs_get_u16
|
||||
.. doxygenfunction:: nvs_get_i32
|
||||
.. doxygenfunction:: nvs_get_u32
|
||||
.. doxygenfunction:: nvs_get_i64
|
||||
.. doxygenfunction:: nvs_get_u64
|
||||
.. doxygenfunction:: nvs_get_str
|
||||
.. doxygenfunction:: nvs_get_blob
|
||||
.. doxygenfunction:: nvs_erase_key
|
||||
.. doxygenfunction:: nvs_erase_all
|
||||
.. doxygenfunction:: nvs_commit
|
||||
.. doxygenfunction:: nvs_close
|
||||
.. doxygenfunction:: nvs_flash_init
|
||||
.. doxygenfunction:: nvs_flash_init_custom
|
||||
|
|
@ -1,70 +1,91 @@
|
|||
Template API
|
||||
=============
|
||||
Template
|
||||
========
|
||||
|
||||
.. note::
|
||||
|
||||
*INSTRUCTIONS*
|
||||
|
||||
1. Use this file as a template to document API.
|
||||
2. Change the file name to the name of the header file that represents documented API.
|
||||
3. Include respective files with descriptions from the API folder using ``..include::``
|
||||
|
||||
* README.rst
|
||||
* example.rst
|
||||
|
||||
4. Optionally provide description right in this file.
|
||||
5. Once done, remove all instructions like this one and any superfluous headers.
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
INSTRUCTIONS: Provide overview where and how this API may be used. For large number of functions, break down description into groups.
|
||||
.. note::
|
||||
|
||||
Use the folowing heading levels:
|
||||
*INSTRUCTIONS*
|
||||
|
||||
* # with overline, for parts
|
||||
* \* with overline, for chapters
|
||||
* =, for sections
|
||||
* -, for subsections
|
||||
* ^, for subsubsections
|
||||
* ", for paragraphs
|
||||
1. Provide overview where and how this API may be used.
|
||||
2. Where applicable include code snippets to illustrate functionality of particular functions.
|
||||
3. To distinguish between sections, use the following `heading levels <http://www.sphinx-doc.org/en/stable/rest.html#sections>`_:
|
||||
|
||||
* ``#`` with overline, for parts
|
||||
* ``*`` with overline, for chapters
|
||||
* ``=``, for sections
|
||||
* ``-``, for subsections
|
||||
* ``^``, for subsubsections
|
||||
* ``"``, for paragraphs
|
||||
|
||||
Application Example
|
||||
-------------------
|
||||
|
||||
INSTRUCTIONS: Provide one or more pratical examples to demonstrate functionality of this API.
|
||||
.. note::
|
||||
|
||||
*INSTRUCTIONS*
|
||||
|
||||
Reference
|
||||
---------
|
||||
1. Provide one or more practical examples to demonstrate functionality of this API.
|
||||
2. Break down the code into parts and describe functionality of each part.
|
||||
3. Provide screenshots if applicable.
|
||||
|
||||
INSTRUCTIONS: Provide list of API memebers divided into sections. Use coresponding **.. doxygen** directices, so member documentation is auto updated.
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
* Data Structures **.. doxygenstruct**
|
||||
* Macros **.. doxygendefine**
|
||||
* Type Definitions **.. doxygentypedef**
|
||||
* Enumerations **.. doxygenenum**
|
||||
* Functions **.. doxygenfunction**
|
||||
* Variables **.. doxygenvariable**
|
||||
.. note::
|
||||
|
||||
Include code snippotes to ilustrate functionality of particular functions where applicable. Skip section hearder if empty.
|
||||
*INSTRUCTIONS*
|
||||
|
||||
1. Provide list of API members divided into sections.
|
||||
2. Use corresponding ``.. doxygen..`` directives, so member documentation is auto updated.
|
||||
|
||||
* Data Structures -``.. doxygenstruct::``
|
||||
* Macros - ``.. doxygendefine::``
|
||||
* Type Definitions - ``.. doxygentypedef::``
|
||||
* Enumerations - ``.. doxygenenum::``
|
||||
* Functions - ``.. doxygenfunction::``
|
||||
|
||||
See `Breathe documentation <https://breathe.readthedocs.io/en/latest/directives.html>`_ for additional information.
|
||||
|
||||
3. Once done remove superfluous headers.
|
||||
4. When changes are committed and documentation is build, check how this section rendered. :doc:`Correct annotations <../documenting-code>` in respective header files, if required.
|
||||
|
||||
Data Structures
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. Data Structures .. doxygenstruct
|
||||
``.. doxygenstruct:: name_of_structure``
|
||||
|
||||
Macros
|
||||
^^^^^^
|
||||
|
||||
.. Macros .. doxygendefine
|
||||
``.. doxygendefine:: name_of_macro``
|
||||
|
||||
Type Definitions
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
.. Type Definitions .. doxygentypedef
|
||||
``.. doxygentypedef:: name_of_type``
|
||||
|
||||
Enumerations
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. Enumerations .. doxygenenum
|
||||
``.. doxygenenum:: name_of_enumeration``
|
||||
|
||||
Functions
|
||||
^^^^^^^^^
|
||||
|
||||
.. Functions .. doxygenfunction
|
||||
|
||||
Variables
|
||||
^^^^^^^^^
|
||||
|
||||
.. Variables .. doxygenvariable
|
||||
|
||||
|
||||
``.. doxygenfunction:: name_of_function``
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
.. include:: ../../components/vfs/README.rst
|
||||
|
||||
Application Example
|
||||
-------------------
|
||||
|
||||
`Instructions <http://esp-idf.readthedocs.io/en/latest/api/template.html>`_
|
||||
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
Defines
|
||||
^^^^^^^
|
||||
Macros
|
||||
^^^^^^
|
||||
|
||||
.. doxygendefine:: ESP_VFS_PATH_MAX
|
||||
.. doxygendefine:: ESP_VFS_PATH_MAX
|
||||
.. doxygendefine:: ESP_VFS_FLAG_DEFAULT
|
||||
.. doxygendefine:: ESP_VFS_FLAG_CONTEXT_PTR
|
||||
|
||||
.. doxygendefine:: ESP_VFS_FLAG_CONTEXT_PTR
|
||||
|
||||
Structures
|
||||
^^^^^^^^^^
|
||||
|
@ -19,9 +23,15 @@ Structures
|
|||
Functions
|
||||
^^^^^^^^^
|
||||
|
||||
.. doxygenfunction:: esp_vfs_dev_uart_register
|
||||
.. doxygenfunction:: esp_vfs_register
|
||||
|
||||
|
||||
|
||||
|
||||
.. doxygenfunction:: esp_vfs_write
|
||||
.. doxygenfunction:: esp_vfs_lseek
|
||||
.. doxygenfunction:: esp_vfs_read
|
||||
.. doxygenfunction:: esp_vfs_open
|
||||
.. doxygenfunction:: esp_vfs_close
|
||||
.. doxygenfunction:: esp_vfs_fstat
|
||||
.. doxygenfunction:: esp_vfs_stat
|
||||
.. doxygenfunction:: esp_vfs_link
|
||||
.. doxygenfunction:: esp_vfs_unlink
|
||||
.. doxygenfunction:: esp_vfs_rename
|
||||
.. doxygenfunction:: esp_vfs_dev_uart_register
|
||||
|
|
24
docs/conf.py
24
docs/conf.py
|
@ -75,13 +75,23 @@ copyright = u'2016, Espressif'
|
|||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# This is supposed to be "the short X.Y version", but it's the only version
|
||||
# visible when you open index.html.
|
||||
# Display full version to make things less confusing.
|
||||
# If needed, nearest tag is returned by 'git describe --abbrev=0'.
|
||||
version = run_cmd_get_output('git describe')
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = run_cmd_get_output('git describe')
|
||||
|
||||
# Different setup depending if script is running on ReadTheDocs or elsewhere
|
||||
on_rtd = os.environ.get('READTHEDOCS') == 'True'
|
||||
if on_rtd:
|
||||
# The short X.Y version.
|
||||
# Apparently ReadTheDocs is getting confused by other version / release
|
||||
# ReadTheDocs is building specific or the latest release from GitHub.
|
||||
version = '1.0'
|
||||
release = '1.0'
|
||||
else:
|
||||
# This is supposed to be "the short X.Y version", but it's the only version
|
||||
# visible when you open index.html.
|
||||
# Display full version to make things less confusing.
|
||||
# If needed, nearest tag is returned by 'git describe --abbrev=0'.
|
||||
version = run_cmd_get_output('git describe')
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = run_cmd_get_output('git describe')
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -13,7 +13,7 @@ Framework (esp-idf) ("We" or "Us").
|
|||
The purpose of this contributor agreement ("Agreement") is to clarify
|
||||
and document the rights granted by contributors to Us. To make this
|
||||
document effective, please follow the instructions at
|
||||
https://github.com/espressif/esp-idf/blob/master/CONTRIBUTING.md.
|
||||
https://github.com/espressif/esp-idf/blob/master/CONTRIBUTING.rst.
|
||||
|
||||
1. DEFINITIONS
|
||||
~~~~~~~~~~~~~~
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
Deep Sleep Wake Stubs
|
||||
---------------------
|
||||
=====================
|
||||
|
||||
ESP32 supports running a "deep sleep wake stub" when coming out of deep sleep. This function runs immediately as soon as the chip wakes up - before any normal initialisation, bootloader, or ESP-IDF code has run. After the wake stub runs, the SoC can go back to sleep or continue to start ESP-IDF normally.
|
||||
|
||||
Deep sleep wake stub code is loaded into "RTC Fast Memory" and any data which it uses must also be loaded into RTC memory. RTC memory regions hold their contents during deep sleep.
|
||||
|
||||
Rules for Wake Stubs
|
||||
====================
|
||||
--------------------
|
||||
|
||||
Wake stub code must be carefully written:
|
||||
|
||||
|
@ -23,9 +23,9 @@ Wake stub code must be carefully written:
|
|||
* Wake stub code is a part of the main esp-idf app. During normal running of esp-idf, functions can call the wake stub functions or access RTC memory. It is as if these were regular parts of the app.
|
||||
|
||||
Implementing A Stub
|
||||
===================
|
||||
-------------------
|
||||
|
||||
The wake stub in esp-idf is called ``esp_wake_deep_sleep()``. This function runs whenever the SoC wakes from deep sleep. There is a default version of this function provided in esp-idf, but the default function is weak-linked so if your app contains a function named ``esp_wake_deep_sleep()` then this will override the default.
|
||||
The wake stub in esp-idf is called ``esp_wake_deep_sleep()``. This function runs whenever the SoC wakes from deep sleep. There is a default version of this function provided in esp-idf, but the default function is weak-linked so if your app contains a function named ``esp_wake_deep_sleep()`` then this will override the default.
|
||||
|
||||
If supplying a custom wake stub, the first thing it does should be to call ``esp_default_wake_deep_sleep()``.
|
||||
|
||||
|
@ -36,7 +36,7 @@ If you want to swap between different deep sleep stubs at runtime, it is also po
|
|||
All of these functions are declared in the ``esp_deepsleep.h`` header under components/esp32.
|
||||
|
||||
Loading Code Into RTC Memory
|
||||
============================
|
||||
----------------------------
|
||||
|
||||
Wake stub code must be resident in RTC Fast Memory. This can be done in one of two ways.
|
||||
|
||||
|
@ -53,7 +53,7 @@ The first way is simpler for very short and simple code, or for source files whe
|
|||
|
||||
|
||||
Loading Data Into RTC Memory
|
||||
============================
|
||||
----------------------------
|
||||
|
||||
Data used by stub code must be resident in RTC Slow Memory. This memory is also used by the ULP.
|
||||
|
||||
|
|
|
@ -1,10 +1,18 @@
|
|||
Documenting Code
|
||||
================
|
||||
|
||||
The purpose of this description is to provide quick summary on documentation style used in `espressif/esp-idf`_ repository and how to add new documentation.
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
When documenting code for this repository, please follow `Doxygen style <http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html#specialblock>`_. You are doing it by inserting special commands, for instance ``@param``, into standard comments blocks like for example ``/* @param ratio this is oxygen to air ratio */``.
|
||||
When documenting code for this repository, please follow `Doxygen style <http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html#specialblock>`_. You are doing it by inserting special commands, for instance ``@param``, into standard comments blocks, for example:
|
||||
|
||||
::
|
||||
|
||||
/**
|
||||
* @param ratio this is oxygen to air ratio
|
||||
*/
|
||||
|
||||
Doxygen is phrasing the code, extracting the commands together with subsequent text, and building documentation out of it.
|
||||
|
||||
|
@ -14,20 +22,19 @@ Typical comment block, that contains documentation of a function, looks like bel
|
|||
:align: center
|
||||
:alt: Sample inline code documentation
|
||||
|
||||
Doxygen supports couple of formatting styles. It also gives you great flexibility on level of details to include in documentation. To get the taste of available features please check data reach and very well organized `Doxygen Manual <http://www.stack.nl/~dimitri/doxygen/manual/index.html>`_.
|
||||
Doxygen supports couple of formatting styles. It also gives you great flexibility on level of details to include in documentation. To get familiar with available features, please check data reach and very well organized `Doxygen Manual <http://www.stack.nl/~dimitri/doxygen/manual/index.html>`_.
|
||||
|
||||
Why we need it?
|
||||
---------------
|
||||
|
||||
The purpose of this description is to provide quick summary on documentation style used in `espressif/esp-idf <https://github.com/espressif/esp-idf>`_ repository.
|
||||
The ultimate goal is to ensure that all the code is consistently documented, so we can use tools like `Sphinx <http://www.sphinx-doc.org/>`_ and `Breathe <https://breathe.readthedocs.io/>`_ to aid preparation and automatic updates of API documentation when the code changes.
|
||||
|
||||
The ultimate goal is to ensure that all the code is consistently documented, so we can use tools like `Sphinx <http://www.sphinx-doc.org/>`_ and `Breathe <https://breathe.readthedocs.io/>`_ to aid preparation and automatic updates of API documentation when the code changes. The above piece of code renders in Sphinx like below:
|
||||
With these tools the above piece of code renders like below:
|
||||
|
||||
.. image:: _static/doc-code-documentation-rendered.png
|
||||
:align: center
|
||||
:alt: Sample inline code after rendering
|
||||
|
||||
|
||||
Go for it!
|
||||
----------
|
||||
|
||||
|
@ -57,7 +64,7 @@ When writing code for this repository, please follow guidelines below.
|
|||
|
||||
6. To provide well formatted lists, break the line after command (like ``@return`` in example below).
|
||||
|
||||
::
|
||||
.. code-block:: c
|
||||
|
||||
...
|
||||
*
|
||||
|
@ -70,53 +77,76 @@ When writing code for this repository, please follow guidelines below.
|
|||
*
|
||||
...
|
||||
|
||||
|
||||
7. Overview of functionality of documented header file, or group of files that make a library, should be placed in separate ``README.rst`` file.
|
||||
7. Overview of functionality of documented header file, or group of files that make a library, should be placed in the same directory in a separate ``README.rst`` file. If directory contains header files for different APIs, then the file name should be ``apiname-readme.rst``.
|
||||
|
||||
Go one extra mile
|
||||
-----------------
|
||||
|
||||
There are couple of tips how you can make your documentation even better and more useful to the reader.
|
||||
There is couple of tips, how you can make your documentation even better and more useful to the reader.
|
||||
|
||||
Add code snippets to illustrate implementation. To do so, enclose the snippet using ``@code{c}`` and ``@endcode`` commands.
|
||||
1. Add code snippets to illustrate implementation. To do so, enclose snippet using ``@code{c}`` and ``@endcode`` commands.
|
||||
|
||||
::
|
||||
.. code-block:: c
|
||||
|
||||
...
|
||||
*
|
||||
* @code{c}
|
||||
* // Example of using nvs_get_i32:
|
||||
* int32_t max_buffer_size = 4096; // default value
|
||||
* esp_err_t err = nvs_get_i32(my_handle, "max_buffer_size", &max_buffer_size);
|
||||
* assert(err == ESP_OK || err == ESP_ERR_NVS_NOT_FOUND);
|
||||
* // if ESP_ERR_NVS_NOT_FOUND was returned, max_buffer_size will still
|
||||
* // have its default value.
|
||||
* @endcode
|
||||
*
|
||||
...
|
||||
...
|
||||
*
|
||||
* @code{c}
|
||||
* // Example of using nvs_get_i32:
|
||||
* int32_t max_buffer_size = 4096; // default value
|
||||
* esp_err_t err = nvs_get_i32(my_handle, "max_buffer_size", &max_buffer_size);
|
||||
* assert(err == ESP_OK || err == ESP_ERR_NVS_NOT_FOUND);
|
||||
* // if ESP_ERR_NVS_NOT_FOUND was returned, max_buffer_size will still
|
||||
* // have its default value.
|
||||
* @endcode
|
||||
*
|
||||
...
|
||||
|
||||
To highlight some information use command ``@attention`` or ``@note``. Example below also shows how to use a numbered list.
|
||||
The code snippet should be enclosed in a comment block of the function that it illustrates.
|
||||
|
||||
::
|
||||
2. To highlight some important information use command ``@attention`` or ``@note``.
|
||||
|
||||
...
|
||||
*
|
||||
* @attention
|
||||
* 1. This API only impact WIFI_MODE_STA or WIFI_MODE_APSTA mode
|
||||
* 2. If the ESP32 is connected to an AP, call esp_wifi_disconnect to disconnect.
|
||||
*
|
||||
...
|
||||
.. code-block:: c
|
||||
|
||||
...
|
||||
*
|
||||
* @attention
|
||||
* 1. This API only impact WIFI_MODE_STA or WIFI_MODE_APSTA mode
|
||||
* 2. If the ESP32 is connected to an AP, call esp_wifi_disconnect to disconnect.
|
||||
*
|
||||
...
|
||||
|
||||
Use markdown to make your documentation even more readable. With markdown you can add headers, links, tables and more.
|
||||
Above example also shows how to use a numbered list.
|
||||
|
||||
::
|
||||
3. Use markdown to make your documentation even more readable. You will add headers, links, tables and more.
|
||||
|
||||
...
|
||||
*
|
||||
* [ESP32 Technical Reference](http://espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf)
|
||||
*
|
||||
...
|
||||
.. code-block:: c
|
||||
|
||||
...
|
||||
*
|
||||
* [ESP32 Technical Reference](http://espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf)
|
||||
*
|
||||
...
|
||||
|
||||
.. note::
|
||||
|
||||
Code snippets, notes, links, etc. will not make it to the documentation, if not enclosed in a comment block associated with one of documented objects.
|
||||
|
||||
5. Prepare one or more complete code examples together with description. Place them in a separate file ``example.rst`` in the same directory as the API header files. If directory contains header files for different APIs, then the file name should be ``apiname-example.rst``.
|
||||
|
||||
Put it all together
|
||||
-------------------
|
||||
|
||||
Once all the above steps are complete, follow instruction in :doc:`api/template` and create a single file, that will merge all individual pieces of prepared documentation. Finally add a link to this file to respective ``.. toctree::`` in ``index.rst`` file located in ``/docs`` folder.
|
||||
|
||||
OK, but I am new to Sphinx!
|
||||
---------------------------
|
||||
|
||||
1. No worries. All the software you need is well documented. It is also open source and free. Start by checking `Sphinx <http://www.sphinx-doc.org/>`_ documentation. If you are not clear how to write using rst markup language, see `reStructuredText Primer <http://www.sphinx-doc.org/en/stable/rest.html>`_.
|
||||
2. Check the source files of this documentation to understand what is behind of what you see now on the screen. Sources are maintained on GitHub in `espressif/esp-idf`_ repository in `/docs <https://github.com/espressif/esp-idf/tree/master/docs>`_ folder. You can go directly to the source file of this page by scrolling up and clicking the link in the top right corner. When on GitHub, see what's really inside, open source files by clicking ``Raw`` button.
|
||||
3. You will likely want to see how documentation builds and looks like before posting it on the GitHub. There are two options to do so:
|
||||
|
||||
* Install `Sphinx <http://www.sphinx-doc.org/>`_, `Breathe <https://breathe.readthedocs.io/>`_ and `Doxygen <http://www.stack.nl/~dimitri/doxygen/>`_ to build it locally. You would need a Linux machine for that.
|
||||
* Set up an account on `Read the Docs <https://readthedocs.org/>`_ and build documentation in the cloud. Read the Docs provides document building and hosting for free and their service works really quick and great.
|
||||
|
||||
Wrap up
|
||||
-------
|
||||
|
@ -124,3 +154,6 @@ Wrap up
|
|||
We love good code that is doing cool things.
|
||||
We love it even better, if it is well documented, so we can quickly make it run and also do the cool things.
|
||||
|
||||
Go ahead, contribute your code and documentation!
|
||||
|
||||
.. _espressif/esp-idf: https://github.com/espressif/esp-idf/
|
||||
|
|
|
@ -5,7 +5,6 @@ ESP32 Programming Guide
|
|||
|
||||
Until ESP-IDF release 1.0, this documentation is a draft. It is incomplete and may have mistakes. Please mind your step!
|
||||
|
||||
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
|
@ -16,8 +15,6 @@ Contents:
|
|||
Linux <linux-setup>
|
||||
Mac OS <macos-setup>
|
||||
|
||||
.. Configure - TBA
|
||||
|
||||
.. Connect - TBA
|
||||
|
||||
.. toctree::
|
||||
|
@ -35,16 +32,74 @@ Contents:
|
|||
build_system
|
||||
openocd
|
||||
|
||||
.. API Reference
|
||||
..
|
||||
Table of Contents Outline
|
||||
..
|
||||
1. System - TBA
|
||||
1.1. Fundamentals of multiprocessor programming with FreeRTOS - TBA
|
||||
1.2. Application startup flow - TBA
|
||||
1.3. Flash encryption and secure boot: how they work and APIs - TBA
|
||||
1.4. Lower Power Coprocessor - TBA
|
||||
1.5. Watchdogs
|
||||
1.6. ...
|
||||
2. Memeory - TBA
|
||||
2.1. Memory layout of the application (IRAM/IROM, limitations of each) - TBA
|
||||
2.2. Flash layout and partitions - TBA
|
||||
2.3. Flash access APIs - TBA
|
||||
2.4. Partition APIs - TBA
|
||||
2.5. OTA mechanism (app partitions, OTA partition) and APIs - TBA
|
||||
2.6. ...
|
||||
3. Wi-Fi
|
||||
4. Bluetooth
|
||||
4.1. BT Classic - TBA
|
||||
4.2. BLE
|
||||
5. Ethernet - TBA
|
||||
6. Interfaces
|
||||
6.1. GPIO
|
||||
6.2. ADC - TBA
|
||||
6.3. DAC - TBA
|
||||
6.4. UART - TBA
|
||||
6.5. I2C - TBA
|
||||
6.6. I2S - TBA
|
||||
6.7. SPI - TBA
|
||||
6.8. CAN - TBA
|
||||
6.9. SD Controller - TBA
|
||||
6.10. Infrared - TBA
|
||||
6.11. Pulse Counter - TBA
|
||||
6.12. PWM - TBA
|
||||
6.13. LED PWM
|
||||
6.14. ...
|
||||
7. Sensors - TBA
|
||||
7.1. Hall Sensor - TBA
|
||||
7.2. Temperature Sensor - TBA
|
||||
7.3. Touch Sensor - TBA
|
||||
8. Protocols - TBA
|
||||
9. Components
|
||||
9.1. Logging <api/log>
|
||||
9.2 Non-Volatile Storage <api/nvs_flash>
|
||||
9.3 Virtual Filesystem <api/vfs>
|
||||
9.3. Http sever - TBA
|
||||
10. Applications - TBA
|
||||
..
|
||||
API Dcoumentation Teamplate
|
||||
..
|
||||
|
||||
.. toctree::
|
||||
:caption: API Reference
|
||||
:maxdepth: 1
|
||||
|
||||
Wi-Fi <api/esp_wifi>
|
||||
Bluetooth <api/bt>
|
||||
|
||||
GPIO <api/gpio>
|
||||
LED Control <api/ledc>
|
||||
|
||||
Logging <api/log>
|
||||
Non-volatile storage <api/nvs>
|
||||
Virtual filesystem <api/vfs>
|
||||
Non-Volatile Storage <api/nvs_flash>
|
||||
Virtual Filesystem <api/vfs>
|
||||
deep-sleep-stub
|
||||
|
||||
Template <api/template>
|
||||
|
||||
.. toctree::
|
||||
|
@ -76,3 +131,4 @@ Indices
|
|||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ If you're looking for a more bare-bones project to start from, try [esp-idf-temp
|
|||
|
||||
If you have a new example you think we'd like, please consider sending it to us as a Pull Request.
|
||||
|
||||
Please read the esp-idf CONTRIBUTING.md file which lays out general contribution rules.
|
||||
Please read the esp-idf CONTRIBUTING.rst file which lays out general contribution rules.
|
||||
|
||||
In addition, here are some tips for creating good examples:
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue