12 Commits
lcd ... aht20

Author SHA1 Message Date
dce3e3600d WIP 2025-11-01 09:35:00 -04:00
c087c2446a Flashing works. 2025-09-27 20:12:13 -04:00
08639679fb Move to 04_. 2025-09-21 12:23:36 -04:00
9eeabf0683 WIP 2025-09-21 12:18:53 -04:00
1eb00aea6e thx linux 2025-09-21 12:18:53 -04:00
945e6ba2ff thx windows 2025-09-21 12:18:53 -04:00
a5ee28596a Commit 2025-09-21 12:18:53 -04:00
85f588fcb3 [esp] Add Rust no-std example. 2025-09-21 12:07:30 -04:00
bb28b1e2ef [esp] Add Rust example with std. 2025-07-06 13:22:06 -04:00
20efb62615 [cpp] Fix root project build and dependencies. 2025-07-05 13:42:59 -04:00
edde77b9c3 [esp] Remove arduino-esp32 from LCD example. 2025-03-14 09:46:47 -04:00
5565ad5170 [esp] Add I2C LCD example. 2025-03-01 18:36:03 -05:00
126 changed files with 2160 additions and 559 deletions

View File

@@ -1,6 +1,6 @@
################################################################################
## Author: Shaun Reed ##
## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ##
## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ##
## About: A root project for practicing C++ ##
## This project can be built to debug and run all nested projects ##
## Or, any subdirectory with a project() statement can be selected ##
@@ -16,10 +16,32 @@ project(
DESCRIPTION "A root project for several small cpp practice projects"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
add_compile_options("-Wall")
option(KLIPS_CCACHE "Enable ccache" ON)
if (KLIPS_CCACHE)
find_program(SCCACHE_PATH sccache)
if(SCCACHE_PATH)
message(STATUS "[Klips] Found sccache: ${SCCACHE_PATH}")
set(CMAKE_CXX_COMPILER_LAUNCHER ${SCCACHE_PATH})
set(CMAKE_C_COMPILER_LAUNCHER ${SCCACHE_PATH})
else()
message(STATUS "[Klips] Failed to find sccache, falling back to ccache.")
find_program(CCACHE_PATH ccache)
if(CCACHE_PATH)
message(STATUS "[Klips] Found ccache: ${CCACHE_PATH}")
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PATH})
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PATH})
else()
message(WARNING "[Klips] Failed to find sccache and ccache. Compilation will not be cached.")
endif()
endif()
endif()
add_subdirectory(algorithms)
add_subdirectory(catch2)
add_subdirectory(cmake-example)
@@ -28,4 +50,15 @@ add_subdirectory(datastructs)
add_subdirectory(graphics)
add_subdirectory(multithreading)
add_subdirectory(patterns)
find_package(Qt6 COMPONENTS UiPlugin Core Gui Widgets)
if (NOT Qt6_FOUND)
message(
WARNING
"[Klips] Qt examples will not be built.\n"
"On Ubuntu 24.04 Qt6 can be installed using apt:\n"
" sudo apt install qt6-base-dev qt6-tools-dev\n"
)
else()
add_subdirectory(qt)
endif()

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing various algorithms in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing algorithms using graphs in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "Practice implementing and using object graphs in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-graphs-object graph.cpp

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "Practice implementing and using simple graphs in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-graphs-simple graph.cpp

View File

@@ -8,9 +8,8 @@
################################################################################
*/
#include <algorithm>
#include "lib-graph.hpp"
#include <algorithm>
void Graph::BFS(int startNode)
{

View File

@@ -15,6 +15,7 @@
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <cstdint>
class Graph {

View File

@@ -14,5 +14,6 @@ project(
DESCRIPTION "Practice implementing and using templated graphs in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(algo-graphs-templated graph.cpp)

View File

@@ -18,6 +18,7 @@
#include <unordered_set>
#include <utility>
#include <vector>
#include <cstdint>
/******************************************************************************/

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "Practice implementing and using weighted graphs in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-graphs-weighted graph.cpp

View File

@@ -18,6 +18,7 @@
#include <unordered_set>
#include <utility>
#include <vector>
#include <cstdint>
/******************************************************************************/

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing various sorting algorithms in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing insertion sort in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-sort-insertion insertion-sort.cpp

View File

@@ -14,6 +14,8 @@ project (
DESCRIPTION "A project for practicing merge sort in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-sort-merge merge-sort.cpp
lib-merge.cpp lib-merge.h

View File

@@ -12,6 +12,7 @@
#include <algorithm>
#include <iostream>
#include <vector>
#include <cstdint>
void MergeSort(std::vector<int> &array, size_t lhs, size_t rhs)
{

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing quick sort in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-sort-quick quick-sort.cpp

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing radix sort in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-sort-radix radix-sort.cpp

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing selection sort in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-sort-select select-sort.cpp

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing algorithms using trees in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for testing BST algorithms"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-trees-bst driver.cpp

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for testing red-black tree algorithms"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
algo-trees-redblack driver.cpp

View File

@@ -12,6 +12,7 @@
#define REDBLACK_H
#include <iostream>
#include <cstdint>
enum Color {Black, Red};

View File

@@ -14,18 +14,22 @@ project(
DESCRIPTION "Practice project for learning Catch2"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options(-Wall)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
Include(FetchContent)
FetchContent_Declare(
Catch2
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
GIT_TAG v3.0.1
GIT_TAG v3.4.0
)
FetchContent_MakeAvailable(Catch2)
add_subdirectory(src)
add_subdirectory(test)
add_library(klips SHARED src/klips.cpp)
target_include_directories(klips PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
add_executable(test_klips src/test_klips.cpp)
target_link_libraries(test_klips PUBLIC Catch2::Catch2WithMain klips)

View File

@@ -1,22 +0,0 @@
################################################################################
## Author: Shaun Reed ##
## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ##
## About: Practice project for testing with catch2 framework ##
## ##
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
################################################################################
cmake_minimum_required(VERSION 3.15)
project(
#[[NAME]] Catch2
VERSION 1.0
DESCRIPTION "Practice project for learning Catch2"
LANGUAGES CXX
)
add_compile_options(-Wall)
add_definitions("-std=c++17")
add_library(klips SHARED klips.cpp)
target_include_directories(klips PRIVATE ${CMAKE_SOURCE_DIR}/include)

View File

@@ -2,7 +2,8 @@
#include <iostream>
#include "../bin/catch.hpp"
#include "catch2/catch_all.hpp"
#include "klips.hpp"
#include "type_name.hpp"
@@ -139,7 +140,7 @@ template <> template <bool must_find> void test_config_get<std::string>::run() {
TEMPLATE_PRODUCT_TEST_CASE("Test", "[test]", test_config_get,
(int, std::string)) {
TT();
TestType t;
// TestType t;
test_config_get<int> s;
s.template run<true>();
// TestType t;

View File

@@ -1,22 +0,0 @@
################################################################################
## Author: Shaun Reed ##
## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ##
## About: Practice project for testing with catch2 framework ##
## ##
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
################################################################################
cmake_minimum_required(VERSION 3.15)
project(
#[[NAME]] Catch2
VERSION 1.0
DESCRIPTION "Practice project for learning Catch2"
LANGUAGES CXX
)
add_compile_options(-Wall)
add_executable(test_klips test_klips.cpp)
target_link_libraries(test_klips PRIVATE Catch2::Catch2WithMain klips)
target_include_directories(test_klips PRIVATE ${CMAKE_SOURCE_DIR}/include)

View File

@@ -22,6 +22,7 @@ project (
DESCRIPTION "A basic CMake template for C++ projects"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
# Include any directories the compiler may need
include_directories(./include)

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing cryptography in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "Practice implementing columnar transposition in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
crypto-columnar-transposition driver.cpp

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing various data structures in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for testing a basic implementation of a BST"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
data-bst driver.cpp

View File

@@ -10,6 +10,7 @@
#include "bst.h"
#include <cstdint>
/********************************************************************************
* Constructors, Destructors, Operators

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "Project for testing circular doubly linked list implementation"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
data-circular-doubly-linked-list driver.cpp

View File

@@ -10,6 +10,7 @@
#include "circledoublelist.h"
#include <cstdint>
/******************************************************************************
* Constructors, Destructors, Operators

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "Project for testing circular singly linked list implementation"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
data-circular-singly-linked-list driver.cpp

View File

@@ -10,6 +10,7 @@
#include "circlesinglelist.h"
#include <cstdint>
/******************************************************************************
* Constructors, Destructors, Operators

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for testing a doubly linked list implementation"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
data-doubly-linked-list driver.cpp

View File

@@ -10,6 +10,7 @@
#include "doublelist.h"
#include <cstdint>
/******************************************************************************
* Constructors, Destructors, Operators

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for testing a max heap implementation"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
data-max-heap driver.cpp

View File

@@ -10,6 +10,7 @@
#include "maxheap.h"
#include <cstdint>
/********************************************************************************
* Constructors, Destructors, Operators

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "Project for testing queue implementation"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
data-queue driver.cpp

View File

@@ -10,6 +10,7 @@
#include "queuelist.h"
#include <cstdint>
/******************************************************************************
* Constructors, Destructors, Operators

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for testing a singly linked list implementation"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
data-singly-linked-list driver.cpp

View File

@@ -10,6 +10,7 @@
#include "singlelist.h"
#include <cstdint>
/******************************************************************************
* Constructors, Destructors, Operators

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for testing a Stack implementation"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
data-stack driver.cpp

View File

@@ -10,6 +10,7 @@
#include "stacklist.h"
#include <cstdint>
/******************************************************************************
* Constructors, Destructors, Operators

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for practicing templated data structures in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_subdirectory(doublelist)
add_subdirectory(queuelist)

View File

@@ -14,5 +14,6 @@ project (
DESCRIPTION "A project for practicing templated doubly linked list implementations"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(data-templates-doubly-linked-list driver.cpp)

View File

@@ -14,5 +14,6 @@ project (
DESCRIPTION "A project for practicing templated queue implementations"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(data-templates-queue driver.cpp)

View File

@@ -14,5 +14,6 @@ project (
DESCRIPTION "A project for practicing templated Stack implementations"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(data-templates-stack driver.cpp)

View File

@@ -14,5 +14,6 @@ project (
DESCRIPTION "A project for practicing templated Vector implementations"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(data-templates-vectors driver.cpp)

View File

@@ -14,6 +14,7 @@ project (
DESCRIPTION "A project for testing a basic Vector implementation"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
data-vectors driver.cpp

View File

@@ -10,6 +10,7 @@
#include "vector.h"
#include <cstdint>
/******************************************************************************
* Constructors, Destructors, Operators

View File

@@ -1,6 +1,6 @@
################################################################################
## Author: Shaun Reed ##
## Legal: All Content (c) 2021 Shaun Reed, all rights reserved ##
## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ##
## About: A root project for practicing C++ ##
## This project can be built to debug and run all nested projects ##
## Or, any subdirectory with a project() statement can be selected ##
@@ -16,6 +16,7 @@ project(
DESCRIPTION "A root project for practicing graphics programming in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

View File

@@ -1,6 +1,6 @@
################################################################################
## Author: Shaun Reed ##
## Legal: All Content (c) 2021 Shaun Reed, all rights reserved ##
## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ##
## ##
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
################################################################################
@@ -8,40 +8,46 @@
# Define CMake version
cmake_minimum_required(VERSION 3.15)
include(FetchContent)
project(
#[[NAME]] OpenGL-Cmake
DESCRIPTION "Example project for building OpenGL projects with CMake"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_library(graphics-lib-opengl src/lib-opengl-test.cpp)
target_include_directories(graphics-lib-opengl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
# Find OpenGL package
find_package(OpenGL REQUIRED)
if (OPENGL_FOUND)
# Link opengl-test executable to OpenGL
target_include_directories(graphics-lib-opengl PUBLIC ${OPENGL_INCLUDE_DIR})
target_link_libraries(graphics-lib-opengl PUBLIC ${OPENGL_LIBRARIES})
else()
find_package(OpenGL)
if (NOT OPENGL_FOUND)
message(
"Error: CMake was unable to find the OpenGL package\n"
"Please install OpenGL and try again\n"
"[Klips] Error: CMake was unable to find OpenGL.\n"
"On Ubuntu 24.04 OpenGL can be installed using apt:\n"
" sudo apt install libopengl-dev libgl1-mesa-dev mesa-common-dev libglu1-mesa-dev\n"
)
endif()
# Link opengl-test executable to OpenGL
message(STATUS "[Klips] Found OpenGL: ${OPENGL_INCLUDE_DIR}")
target_include_directories(graphics-lib-opengl PUBLIC ${OPENGL_INCLUDE_DIR})
target_link_libraries(graphics-lib-opengl PUBLIC ${OPENGL_LIBRARIES})
# Find GLUT package
find_package(GLUT REQUIRED)
if (GLUT_FOUND)
find_package(GLUT QUIET)
if(NOT GLUT_FOUND)
message(
FATAL_ERROR
"[Klips] Failed to fetch GLUT. Could not find dependency X11 input libraries.\n"
"On Ubuntu 24.04 Xi can be installed using apt:\n"
" sudo apt install libxi-dev\n"
"Alternatively, on Ubuntu 24.04 GLUT can be installed with apt:\n"
" sudo apt install freeglut3-dev\n"
)
endif()
message(STATUS "[Klips] Found GLUT: ${GLUT_INCLUDE_DIR}")
# Link lib-opengl-test executable to GLUT
target_include_directories(graphics-lib-opengl PUBLIC ${GLUT_INCLUDE_DIR})
target_link_libraries(graphics-lib-opengl PUBLIC ${GLUT_LIBRARIES})
else()
message(
"Error: CMake was unable to find the GLUT package\n"
"Please install GLUT (freeglut3-dev) and try again\n"
)
endif()
# Add test executable
add_executable(graphics-cmake-opengl apps/test-gl.cpp)

View File

@@ -1,6 +1,6 @@
################################################################################
## Author: Shaun Reed ##
## Legal: All Content (c) 2021 Shaun Reed, all rights reserved ##
## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ##
## ##
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
################################################################################
@@ -13,6 +13,7 @@ project(
DESCRIPTION "Example project for building SDL projects with CMake"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
# Add Library
add_library(
@@ -27,10 +28,16 @@ target_include_directories( # When calling library, include a directo
)
# Search for SDL2 package
find_package(SDL2 REQUIRED sdl2)
find_package(SDL2 QUIET)
if (NOT SDL2_FOUND)
message(FATAL_ERROR
"[Klips] Failed to find SDL2.\n"
"On Ubuntu 24.04 SDL2 can be installed using apt:\n"
" sudo apt install libsdl2-dev\n"
)
endif()
message(STATUS "[Klips] Found SDL2: ${SDL2_INCLUDE_DIRS}")
# If SDL2 was found successfully, link to lib-sdl-test
if (SDL2_FOUND)
# Any target that links with this library will also link to SDL2
# + Because we choose PUBLIC visibility
target_include_directories(graphics-lib-sdl PUBLIC ${SDL2_INCLUDE_DIRS})
@@ -48,10 +55,3 @@ if (SDL2_FOUND)
PRIVATE # Visibility
graphics-lib-sdl # Library to link
)
else()
message(
"Error: CMake was unable to find SDL2 package.\n"
"Please install the libsdl2-dev package and try again.\n"
)
endif()

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "Practice with multithreaded programming in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
add_compile_options("-Wall")

View File

@@ -18,6 +18,7 @@ project(
DESCRIPTION "Example of condition_variables in multithreaded C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
multithread-conditions driver.cpp

View File

@@ -18,6 +18,7 @@ project(
DESCRIPTION "Example and solution for deadlocks in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
multithread-deadlock driver.cpp

View File

@@ -18,6 +18,7 @@ project(
DESCRIPTION "Example and solution for livelocks in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
multithread-livelock driver.cpp

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "Example and solution for race conditions"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
multithread-race-condition driver.cpp

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "A project for practicing various design patterns in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

View File

@@ -13,6 +13,7 @@ project(
DESCRIPTION "An example of the abstract factory design pattern in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options("-Wall")
add_executable(

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "An example of the adapter design pattern in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options("-Wall")
add_executable(

View File

@@ -2,6 +2,7 @@
#ifndef ADAPTER_HPP
#define ADAPTER_HPP
#include <ctime>
#include <random>
// Target implementation to adapt to a new interface

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "An example of the bridge design pattern in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options("-Wall")
add_executable(

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "An example of the factory design pattern in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options("-Wall")
add_executable(

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "An example of the state design pattern in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options("-Wall")
add_executable(

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "An example of the prototype design pattern in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options("-Wall")
add_executable(

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "An example of the singleton design pattern in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_executable(
patterns-singleton main.cpp

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "An example of the state design pattern in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options("-Wall")
add_executable(

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "An example of the visitor design pattern in C++"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options("-Wall")
add_executable(

View File

@@ -14,6 +14,7 @@ project(
DESCRIPTION "A root project for several small Qt6 practice projects"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
add_compile_options("-Wall")

View File

@@ -14,6 +14,9 @@ project(
DESCRIPTION "Example of a widget plugin collection for Qt Designer"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
# Lowercase string to use as a slug for executable names for identification.
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
include(GenerateExportHeader)
@@ -51,43 +54,56 @@ endif()
set(QT_INSTALL_DIR "${QT_DIR}/6.3.1/gcc_64/" CACHE PATH "Path to Qt6 install")
list(APPEND CMAKE_PREFIX_PATH "${QT_INSTALL_DIR}")
find_package(Qt6 REQUIRED COMPONENTS UiPlugin Core Gui Widgets)
find_package(Qt6 COMPONENTS UiPlugin Core Gui Widgets)
if (NOT Qt6_FOUND)
message(
FATAL_ERROR
"[Klips] Error: CMake was unable to find Qt6 libraries.\n"
"The example will not be built until the build is configured with these packages installed.\n"
"On Ubuntu 24.04 Qt6 can be installed using apt:\n"
" sudo apt-get install qt6-base-dev qt6-tools-dev\n"
)
endif()
# Creating a library with two plugins for the collection.
qt_add_library(widget-plugin-library
set(WIDGET_PLUGIN_LIBRARY widget-plugin-library_${PROJECT_NAME_LOWER})
qt_add_library(${WIDGET_PLUGIN_LIBRARY}
textview.cpp textview.h
widgetplugin.cpp widgetplugin.h
)
target_sources(widget-plugin-library PRIVATE
target_sources(${WIDGET_PLUGIN_LIBRARY} PRIVATE
textview.cpp textview.h
treeview.cpp treeview.h
widgetplugin.cpp widgetplugin.h
)
set_target_properties(widget-plugin-library PROPERTIES
set_target_properties(${WIDGET_PLUGIN_LIBRARY} PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
)
target_link_libraries(widget-plugin-library
target_link_libraries(${WIDGET_PLUGIN_LIBRARY}
PUBLIC Qt::UiPlugin Qt::Core Qt::Gui Qt::Widgets
)
install(TARGETS widget-plugin-library
install(TARGETS ${WIDGET_PLUGIN_LIBRARY}
RUNTIME DESTINATION "${QT_PLUGIN_LIBRARY_DIR}"
BUNDLE DESTINATION "${QT_PLUGIN_LIBRARY_DIR}"
LIBRARY DESTINATION "${QT_PLUGIN_LIBRARY_DIR}"
)
generate_export_header(widget-plugin-library)
generate_export_header(${WIDGET_PLUGIN_LIBRARY}
BASE_NAME widget_plugin_library
EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/widget-plugin-library_export.h"
)
# Creating the collection
qt_add_library(widget-plugin-collection
set(WIDGET_PLUGIN_COLLECTION widget-plugin-collection_${PROJECT_NAME_LOWER})
qt_add_library(${WIDGET_PLUGIN_COLLECTION}
widgetplugincollection.cpp widgetplugincollection.h
)
target_link_libraries(widget-plugin-collection
Qt6::Widgets Qt6::UiPlugin widget-plugin-library
target_link_libraries(${WIDGET_PLUGIN_COLLECTION}
Qt6::Widgets Qt6::UiPlugin ${WIDGET_PLUGIN_LIBRARY}
)
install(TARGETS widget-plugin-collection
install(TARGETS ${WIDGET_PLUGIN_COLLECTION}
RUNTIME DESTINATION "${QT_PLUGIN_INSTALL_DIR}"
BUNDLE DESTINATION "${QT_PLUGIN_INSTALL_DIR}"
LIBRARY DESTINATION "${QT_PLUGIN_INSTALL_DIR}"
@@ -101,10 +117,11 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/app-dir.h.in"
@ONLY
)
qt_add_executable(widget-app
set(WIDGET_APP widget-app_${PROJECT_NAME_LOWER})
qt_add_executable(${WIDGET_APP}
widgetapp.cpp widgetapp.h widgetapp.ui
main.cpp
)
target_link_libraries(widget-app
PRIVATE Qt::Widgets widget-plugin-library
target_link_libraries(${WIDGET_APP}
PRIVATE Qt::Widgets ${WIDGET_PLUGIN_LIBRARY}
)

View File

@@ -1,6 +1,6 @@
#ifndef APPDIR_H_IN
#define APPDIR_H_IN
#define APP_DIR "/home/kapper/Code/klips/cpp/qt/designer-plugin-collection"
#define APP_DIR "/media/shaun/Storage/Code/klips/cpp/qt/designer-plugin-collection"
#endif // APPDIR_H_IN

View File

@@ -1,6 +1,6 @@
################################################################################
## Author: Shaun Reed ##
## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ##
## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ##
## About: Example of making widget plugins for Qt Designer ##
## ##
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
@@ -14,6 +14,9 @@ project(
DESCRIPTION "Example of a widget plugin for Qt Designer"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
# Lowercase string to use as a slug for executable names for identification.
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
include(GenerateExportHeader)
@@ -42,35 +45,44 @@ endif()
set(QT_INSTALL_DIR "${QT_DIR}/6.3.1/gcc_64/" CACHE PATH "Path to Qt6 install")
list(APPEND CMAKE_PREFIX_PATH "${QT_INSTALL_DIR}")
find_package(Qt6 REQUIRED COMPONENTS UiPlugin Core Gui Widgets)
find_package(Qt6 COMPONENTS UiPlugin Core Gui Widgets)
if (NOT Qt6_FOUND)
message(
FATAL_ERROR
"[Klips] Error: CMake was unable to find Qt6 libraries.\n"
"The example will not be built until the build is configured with these packages installed.\n"
"On Ubuntu 24.04 Qt6 can be installed using apt:\n"
" sudo apt-get install qt6-base-dev qt6-tools-dev\n"
)
endif()
# Creating the plugin
qt_add_library(widget-plugin)
target_sources(widget-plugin PRIVATE
set(WIDGET_PLUGIN widget-plugin_${PROJECT_NAME_LOWER})
qt_add_library(${WIDGET_PLUGIN})
target_sources(${WIDGET_PLUGIN} PRIVATE
text-view.cpp text-view.h
widget-plugin.cpp widget-plugin.h
)
set_target_properties(widget-plugin PROPERTIES
set_target_properties(${WIDGET_PLUGIN} PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
)
target_link_libraries(widget-plugin PUBLIC
target_link_libraries(${WIDGET_PLUGIN} PUBLIC
Qt::UiPlugin Qt::Core Qt::Gui Qt::Widgets
)
install(TARGETS widget-plugin
install(TARGETS ${WIDGET_PLUGIN}
RUNTIME DESTINATION "${QT_PLUGIN_INSTALL_DIR}"
BUNDLE DESTINATION "${QT_PLUGIN_INSTALL_DIR}"
LIBRARY DESTINATION "${QT_PLUGIN_INSTALL_DIR}"
)
# Application that will use the widget plugin
qt_add_executable(widget-app
set(WIDGET_APP widget-app_${PROJECT_NAME_LOWER})
qt_add_executable(${WIDGET_APP}
widget-app.cpp widget-app.h widget-app.ui
main.cpp
)
target_link_libraries(widget-app PRIVATE
Qt::Widgets widget-plugin
target_link_libraries(${WIDGET_APP} PRIVATE
Qt::Widgets ${WIDGET_PLUGIN}
)

View File

@@ -1,6 +1,6 @@
################################################################################
## Author: Shaun Reed ##
## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ##
## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ##
## About: Practice project for using Qt Designer with custom C++ widgets ##
## ##
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
@@ -14,6 +14,7 @@ project(
DESCRIPTION "Practice using Qt designer for desktop applications"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options(-Wall)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -28,7 +29,16 @@ set(QT_DIR "$ENV{HOME}/Code/Clones/Qt/6.3.1/gcc_64/" CACHE PATH "Path to Qt6")
list(APPEND CMAKE_PREFIX_PATH "${QT_DIR}")
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
find_package(Qt6 COMPONENTS Core Gui Widgets)
if (NOT Qt6_FOUND)
message(
FATAL_ERROR
"[Klips] Error: CMake was unable to find Qt6 libraries.\n"
"The example will not be built until the build is configured with these packages installed.\n"
"On Ubuntu 24.04 Qt6 can be installed using apt:\n"
" sudo apt-get install qt6-base-dev qt6-tools-dev\n"
)
endif()
qt_add_executable(designer
designer.cpp designer.h designer.ui

View File

@@ -1,6 +1,6 @@
################################################################################
## Author: Shaun Reed ##
## Legal: All Content (c) 2022 Shaun Reed, all rights reserved ##
## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ##
## About: Practice project for using signals and slots in Qt ##
## ##
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
@@ -14,6 +14,7 @@ project(
DESCRIPTION "Practice using signals and slots in Qt 6"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
add_compile_options(-Wall)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -28,7 +29,16 @@ set(QT_DIR "$ENV{HOME}/Code/Clones/Qt/6.3.1/gcc_64/" CACHE PATH "Path to Qt6")
list(APPEND CMAKE_PREFIX_PATH "${QT_DIR}")
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
find_package(Qt6 COMPONENTS Core Gui Widgets)
if (NOT Qt6_FOUND)
message(
FATAL_ERROR
"[Klips] Error: CMake was unable to find Qt6 libraries.\n"
"The example will not be built until the build is configured with these packages installed.\n"
"On Ubuntu 24.04 Qt6 can be installed using apt:\n"
" sudo apt-get install qt6-base-dev qt6-tools-dev\n"
)
endif()
qt_add_executable(slots
text-view.cpp text-view.h

View File

@@ -22,7 +22,7 @@ public:
public:
signals:
void sendTest()QWidget;
void sendTest();
private:
signals:

8
esp/README.md Normal file
View File

@@ -0,0 +1,8 @@
# esp
```bash
shaunrd0/klips/esp/
├── cpp # Examples of ESP32 projects written in C++
├── rust # Examples of ESP32 projects written in Rust
└── README.md
```

View File

@@ -12,6 +12,7 @@ project(
DESCRIPTION "Example ESP-IDF cmake project"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
# For writing pure cmake components, see the documentation
# https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components

View File

@@ -12,6 +12,7 @@ project(
DESCRIPTION "Temperature and humidity from DHT sensor served on a web page"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
# For writing pure cmake components, see the documentation
# https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components

View File

@@ -12,6 +12,7 @@ project(
DESCRIPTION "Simple I2C device scanner"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
# For writing pure cmake components, see the documentation
# https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components
idf_build_set_property(COMPILE_OPTIONS "-Wno-error" APPEND)

View File

@@ -12,6 +12,7 @@ project(
DESCRIPTION "Using the SSD1306 LCD display with ESP-IDF and LVGL over I2C"
LANGUAGES CXX
)
message(STATUS "[Klips] Configuring example: ${PROJECT_NAME}")
# For writing pure cmake components, see the documentation
# https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#writing-pure-cmake-components
idf_build_set_property(COMPILE_OPTIONS "-Wno-error" APPEND)

View File

@@ -1,6 +1,5 @@
## IDF Component Manager Manifest File
dependencies:
idf: '>=5.3.0'
espressif/arduino-esp32: ^3.1.1
lvgl/lvgl: "9.2.0"
esp_lcd_sh1107: "^1"

View File

@@ -15,7 +15,7 @@
I2C i2c(PIN_SDA, PIN_SCL, PIN_RST);
void setup()
extern "C" void app_main(void)
{
SSD1306 ssd1306(i2c);
Display d(ssd1306);
@@ -37,5 +37,3 @@ void setup()
LV_LABEL_LONG_CLIP,
LV_ALIGN_BOTTOM_MID);
}
void loop() { }

View File

@@ -44,21 +44,24 @@ struct Pixel {
*
* Therefore, each uint8 in the draw buffer stores the state of 8 pixels.
* Below is an example of calculating for [x, y] pixel coordinates [20, 10].
* The example uses a horizontal resolution of 128.
*
* For the horizontal case, each row (y_) of the image is represented by
* `hor_res_ >> 3` bytes (16). The byte-offset of the first pixel in the 10th
* For the horizontal case, each row (y) of the image is represented by
* `hor_res >> 3` bytes (16). The byte-offset of the first pixel in the 10th
* row for example is `16 * 10` = 160.
*
* Since the pixels are stored horizontally we must calculate the 20th pixel
* column (x_) as `160 + (20 >> 3)`, or `160 + (20 / 8)` to get a final offset
* column (x) as `160 + (20 >> 3)`, or `160 + (20 / 8)` to get a final offset
* of 162.
*
* @param x X pixel coordinate to find byte offset.
* @param y Y pixel coordinate to find byte offset.
* @param hor_res horizontal resolution of the display.
* @return byte offset for a single-byte monochrome pixel at [x,y].
*/
[[maybe_unused]] [[nodiscard]] static ptrdiff_t
horizontal_byte_offset(const int32_t &x, const int32_t &y, const int32_t& hor_res)
horizontal_byte_offset(const int32_t &x, const int32_t &y,
const int32_t &hor_res = LCD_V_RES)
{
// Convert pixel (bit) coordinates to byte coordinates in the draw buffer.
return (hor_res >> 3) * y + (x >> 3);
@@ -75,22 +78,25 @@ struct Pixel {
*
* Therefore, each uint8 in the draw buffer stores the state of 8 pixels.
* Below is an example of calculating for [x, y] pixel coordinates [20, 10].
* The example uses a horizontal resolution of 128.
*
* For the vertical case, each row (y_) of the image is represented by
* `hor_res_` bytes (128) - one for each column (x_). Because the pixels are
* For the vertical case, each row (y) of the image is represented by
* `hor_res` bytes (128) - one for each column (x). Because the pixels are
* stored vertically, the byte-offset of the first pixel in the 10th row is
* `128 * (10 >> 3)` or * `128 * (10 / 8)` = 128.
*
* From this location we can simply calculate the 20th pixel column (x_) as
* From this location we can simply calculate the 20th pixel column (x) as
* `128 + 20` to get a final offset of 148, because the pixels are stored in a
* columnar format.
*
* @param x X pixel coordinate to find byte offset.
* @param y Y pixel coordinate to find byte offset.
* @param hor_res horizontal resolution of the display.
* @return byte offset for a single-byte monochrome pixel at [x,y].
*/
[[maybe_unused]] [[nodiscard]] static ptrdiff_t
vertical_byte_offset(const int32_t &x, const int32_t &y, const int32_t& hor_res)
vertical_byte_offset(const int32_t &x, const int32_t &y,
const int32_t &hor_res = LCD_V_RES)
{
// Convert pixel (bit) coordinates to byte coordinates in the draw buffer.
return hor_res * (y >> 3) + x;
@@ -167,7 +173,8 @@ public:
height_(height),
rst_num_(i2c.rst_num_),
lv_buf_size_(draw_buf_size),
esp_io_config_(io_config) { }
esp_io_config_(io_config),
lv_buf_(nullptr) { }
virtual ~IPanelDevice() = default;
@@ -231,24 +238,6 @@ public:
*/
virtual void *vendor_config() = 0;
//
// PUBLIC MEMBERS
/// Width of the device screen in pixels.
int32_t width_;
/// Height of the device screen in pixels.
int32_t height_;
/// RST GPIO pin number.
int rst_num_;
/// LVGL draw buffer size for the device.
size_t lv_buf_size_;
/// ESP LCD panel IO configuration.
esp_lcd_panel_io_i2c_config_t esp_io_config_;
/**
* Registers LVGL draw buffers and callbacks for this display.
*
@@ -269,6 +258,24 @@ public:
*/
virtual void register_lvgl_tick_timer();
//
// PUBLIC MEMBERS
/// Width of the device screen in pixels.
int32_t width_;
/// Height of the device screen in pixels.
int32_t height_;
/// RST GPIO pin number.
int rst_num_;
/// LVGL draw buffer size for the device.
size_t lv_buf_size_;
/// ESP LCD panel IO configuration.
esp_lcd_panel_io_i2c_config_t esp_io_config_;
protected:
/**
* Static accessor to a static buffer to store draw buffer data for the panel.

View File

@@ -386,123 +386,6 @@ CONFIG_PARTITION_TABLE_OFFSET=0x8000
CONFIG_PARTITION_TABLE_MD5=y
# end of Partition Table
#
# Arduino Configuration
#
CONFIG_ARDUINO_VARIANT="esp32"
CONFIG_ENABLE_ARDUINO_DEPENDS=y
CONFIG_AUTOSTART_ARDUINO=y
# CONFIG_ARDUINO_RUN_CORE0 is not set
CONFIG_ARDUINO_RUN_CORE1=y
# CONFIG_ARDUINO_RUN_NO_AFFINITY is not set
CONFIG_ARDUINO_RUNNING_CORE=1
CONFIG_ARDUINO_LOOP_STACK_SIZE=8192
# CONFIG_ARDUINO_EVENT_RUN_CORE0 is not set
CONFIG_ARDUINO_EVENT_RUN_CORE1=y
# CONFIG_ARDUINO_EVENT_RUN_NO_AFFINITY is not set
CONFIG_ARDUINO_EVENT_RUNNING_CORE=1
# CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE0 is not set
# CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE1 is not set
CONFIG_ARDUINO_SERIAL_EVENT_RUN_NO_AFFINITY=y
CONFIG_ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE=-1
CONFIG_ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE=2048
CONFIG_ARDUINO_SERIAL_EVENT_TASK_PRIORITY=24
CONFIG_ARDUINO_UDP_RUN_CORE0=y
# CONFIG_ARDUINO_UDP_RUN_CORE1 is not set
# CONFIG_ARDUINO_UDP_RUN_NO_AFFINITY is not set
CONFIG_ARDUINO_UDP_RUNNING_CORE=0
CONFIG_ARDUINO_UDP_TASK_PRIORITY=3
# CONFIG_ARDUINO_ISR_IRAM is not set
# CONFIG_DISABLE_HAL_LOCKS is not set
#
# Debug Log Configuration
#
# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_NONE is not set
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_ERROR=y
# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_WARN is not set
# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO is not set
# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG is not set
# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_VERBOSE is not set
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=1
# CONFIG_ARDUHAL_LOG_COLORS is not set
# CONFIG_ARDUHAL_ESP_LOG is not set
# end of Debug Log Configuration
CONFIG_ARDUHAL_PARTITION_SCHEME_DEFAULT=y
# CONFIG_ARDUHAL_PARTITION_SCHEME_MINIMAL is not set
# CONFIG_ARDUHAL_PARTITION_SCHEME_NO_OTA is not set
# CONFIG_ARDUHAL_PARTITION_SCHEME_HUGE_APP is not set
# CONFIG_ARDUHAL_PARTITION_SCHEME_MIN_SPIFFS is not set
CONFIG_ARDUHAL_PARTITION_SCHEME="default"
# CONFIG_AUTOCONNECT_WIFI is not set
# CONFIG_ARDUINO_SELECTIVE_COMPILATION is not set
# end of Arduino Configuration
#
# ESP RainMaker Config
#
CONFIG_ESP_RMAKER_NO_CLAIM=y
# CONFIG_ESP_RMAKER_USE_ESP_SECURE_CERT_MGR is not set
CONFIG_ESP_RMAKER_USE_NVS=y
CONFIG_ESP_RMAKER_CLAIM_TYPE=0
# CONFIG_ESP_RMAKER_READ_MQTT_HOST_FROM_CONFIG is not set
# CONFIG_ESP_RMAKER_READ_NODE_ID_FROM_CERT_CN is not set
CONFIG_ESP_RMAKER_MQTT_USE_BASIC_INGEST_TOPICS=y
CONFIG_ESP_RMAKER_MQTT_ENABLE_BUDGETING=y
CONFIG_ESP_RMAKER_MQTT_DEFAULT_BUDGET=100
CONFIG_ESP_RMAKER_MQTT_MAX_BUDGET=1024
CONFIG_ESP_RMAKER_MQTT_BUDGET_REVIVE_PERIOD=5
CONFIG_ESP_RMAKER_MQTT_BUDGET_REVIVE_COUNT=1
CONFIG_ESP_RMAKER_MAX_PARAM_DATA_SIZE=1024
# CONFIG_ESP_RMAKER_DISABLE_USER_MAPPING_PROV is not set
# CONFIG_ESP_RMAKER_USER_ID_CHECK is not set
# CONFIG_RMAKER_NAME_PARAM_CB is not set
# CONFIG_ESP_RMAKER_LOCAL_CTRL_FEATURE_ENABLE is not set
# CONFIG_ESP_RMAKER_LOCAL_CTRL_AUTO_ENABLE is not set
CONFIG_ESP_RMAKER_CONSOLE_UART_NUM_0=y
# CONFIG_ESP_RMAKER_CONSOLE_UART_NUM_1 is not set
CONFIG_ESP_RMAKER_CONSOLE_UART_NUM=0
CONFIG_ESP_RMAKER_USE_CERT_BUNDLE=y
#
# ESP RainMaker OTA Config
#
CONFIG_ESP_RMAKER_OTA_AUTOFETCH=y
CONFIG_ESP_RMAKER_OTA_AUTOFETCH_PERIOD=0
# CONFIG_ESP_RMAKER_SKIP_COMMON_NAME_CHECK is not set
# CONFIG_ESP_RMAKER_SKIP_VERSION_CHECK is not set
# CONFIG_ESP_RMAKER_SKIP_SECURE_VERSION_CHECK is not set
# CONFIG_ESP_RMAKER_SKIP_PROJECT_NAME_CHECK is not set
CONFIG_ESP_RMAKER_OTA_HTTP_RX_BUFFER_SIZE=1024
CONFIG_ESP_RMAKER_OTA_ROLLBACK_WAIT_PERIOD=90
# CONFIG_ESP_RMAKER_OTA_DISABLE_AUTO_REBOOT is not set
CONFIG_ESP_RMAKER_OTA_TIME_SUPPORT=y
# end of ESP RainMaker OTA Config
#
# ESP RainMaker Scheduling
#
CONFIG_ESP_RMAKER_SCHEDULING_MAX_SCHEDULES=10
# end of ESP RainMaker Scheduling
#
# ESP RainMaker Scenes
#
CONFIG_ESP_RMAKER_SCENES_MAX_SCENES=10
# CONFIG_ESP_RMAKER_SCENES_DEACTIVATE_SUPPORT is not set
# end of ESP RainMaker Scenes
#
# ESP RainMaker Command-Response
#
CONFIG_ESP_RMAKER_CMD_RESP_ENABLE=y
# CONFIG_ESP_RMAKER_CMD_RESP_TEST_ENABLE is not set
# end of ESP RainMaker Command-Response
CONFIG_ESP_RMAKER_USING_NETWORK_PROV=y
# end of ESP RainMaker Config
#
# Compiler options
#
@@ -1929,260 +1812,6 @@ CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y
# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set
# end of Wi-Fi Provisioning Manager
#
# DSP Library
#
CONFIG_DSP_OPTIMIZATIONS_SUPPORTED=y
# CONFIG_DSP_ANSI is not set
CONFIG_DSP_OPTIMIZED=y
CONFIG_DSP_OPTIMIZATION=1
# CONFIG_DSP_MAX_FFT_SIZE_512 is not set
# CONFIG_DSP_MAX_FFT_SIZE_1024 is not set
# CONFIG_DSP_MAX_FFT_SIZE_2048 is not set
CONFIG_DSP_MAX_FFT_SIZE_4096=y
# CONFIG_DSP_MAX_FFT_SIZE_8192 is not set
# CONFIG_DSP_MAX_FFT_SIZE_16384 is not set
# CONFIG_DSP_MAX_FFT_SIZE_32768 is not set
CONFIG_DSP_MAX_FFT_SIZE=4096
# end of DSP Library
#
# Modbus configuration
#
CONFIG_FMB_COMM_MODE_TCP_EN=y
CONFIG_FMB_TCP_PORT_DEFAULT=502
CONFIG_FMB_TCP_PORT_MAX_CONN=5
CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20
# CONFIG_FMB_TCP_UID_ENABLED is not set
CONFIG_FMB_COMM_MODE_RTU_EN=y
CONFIG_FMB_COMM_MODE_ASCII_EN=y
CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=3000
CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200
CONFIG_FMB_QUEUE_LENGTH=20
CONFIG_FMB_PORT_TASK_STACK_SIZE=4096
CONFIG_FMB_SERIAL_BUF_SIZE=256
CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8
CONFIG_FMB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS=0
CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000
CONFIG_FMB_PORT_TASK_PRIO=10
# CONFIG_FMB_PORT_TASK_AFFINITY_NO_AFFINITY is not set
CONFIG_FMB_PORT_TASK_AFFINITY_CPU0=y
# CONFIG_FMB_PORT_TASK_AFFINITY_CPU1 is not set
CONFIG_FMB_PORT_TASK_AFFINITY=0x0
CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y
CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233
CONFIG_FMB_CONTROLLER_SLAVE_ID_MAX_SIZE=32
CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20
CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
CONFIG_FMB_CONTROLLER_STACK_SIZE=4096
CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20
# CONFIG_FMB_TIMER_PORT_ENABLED is not set
# CONFIG_FMB_TIMER_USE_ISR_DISPATCH_METHOD is not set
# CONFIG_FMB_EXT_TYPE_SUPPORT is not set
# end of Modbus configuration
#
# ESP serial flasher
#
CONFIG_SERIAL_FLASHER_MD5_ENABLED=y
CONFIG_SERIAL_FLASHER_RESET_HOLD_TIME_MS=100
CONFIG_SERIAL_FLASHER_BOOT_HOLD_TIME_MS=50
# end of ESP serial flasher
#
# Zigbee
#
# CONFIG_ZB_ENABLED is not set
# end of Zigbee
#
# Diagnostics data store
#
CONFIG_DIAG_DATA_STORE_RTC=y
# CONFIG_DIAG_DATA_STORE_FLASH is not set
CONFIG_DIAG_DATA_STORE_REPORTING_WATERMARK_PERCENT=80
#
# RTC Store
#
CONFIG_RTC_STORE_DATA_SIZE=3072
CONFIG_RTC_STORE_CRITICAL_DATA_SIZE=2048
# end of RTC Store
# end of Diagnostics data store
#
# Diagnostics
#
CONFIG_DIAG_LOG_MSG_ARG_FORMAT_TLV=y
# CONFIG_DIAG_LOG_MSG_ARG_FORMAT_STRING is not set
CONFIG_DIAG_LOG_MSG_ARG_MAX_SIZE=64
CONFIG_DIAG_LOG_DROP_WIFI_LOGS=y
CONFIG_DIAG_ENABLE_METRICS=y
CONFIG_DIAG_METRICS_MAX_COUNT=20
CONFIG_DIAG_ENABLE_HEAP_METRICS=y
CONFIG_DIAG_ENABLE_WIFI_METRICS=y
CONFIG_DIAG_ENABLE_VARIABLES=y
CONFIG_DIAG_VARIABLES_MAX_COUNT=20
CONFIG_DIAG_ENABLE_NETWORK_VARIABLES=y
# CONFIG_DIAG_MORE_NETWORK_VARS is not set
# CONFIG_DIAG_USE_EXTERNAL_LOG_WRAP is not set
# end of Diagnostics
#
# ESP Insights
#
# CONFIG_ESP_INSIGHTS_ENABLED is not set
# CONFIG_ESP_INSIGHTS_TRANSPORT_MQTT is not set
CONFIG_ESP_INSIGHTS_TRANSPORT_HTTPS=y
CONFIG_ESP_INSIGHTS_TRANSPORT_HTTPS_HOST="https://client.insights.espressif.com"
CONFIG_ESP_INSIGHTS_CLOUD_POST_MIN_INTERVAL_SEC=60
CONFIG_ESP_INSIGHTS_CLOUD_POST_MAX_INTERVAL_SEC=240
# end of ESP Insights
#
# esp-modem
#
CONFIG_ESP_MODEM_CMUX_DEFRAGMENT_PAYLOAD=y
# CONFIG_ESP_MODEM_USE_INFLATABLE_BUFFER_IF_NEEDED is not set
CONFIG_ESP_MODEM_CMUX_DELAY_AFTER_DLCI_SETUP=0
# CONFIG_ESP_MODEM_CMUX_USE_SHORT_PAYLOADS_ONLY is not set
# CONFIG_ESP_MODEM_ADD_CUSTOM_MODULE is not set
CONFIG_ESP_MODEM_C_API_STR_MAX=128
# CONFIG_ESP_MODEM_URC_HANDLER is not set
# CONFIG_ESP_MODEM_PPP_ESCAPE_BEFORE_EXIT is not set
# CONFIG_ESP_MODEM_ADD_DEBUG_LOGS is not set
# end of esp-modem
#
# OpenThread RCP Update
#
# CONFIG_AUTO_UPDATE_RCP is not set
# CONFIG_CREATE_OTA_IMAGE_WITH_RCP_FW is not set
# end of OpenThread RCP Update
#
# ESP Secure Cert Manager
#
# CONFIG_ESP_SECURE_CERT_SUPPORT_LEGACY_FORMATS is not set
# end of ESP Secure Cert Manager
#
# jsmn
#
# CONFIG_JSMN_PARENT_LINKS is not set
# CONFIG_JSMN_STRICT is not set
# CONFIG_JSMN_STATIC is not set
# end of jsmn
#
# libsodium
#
# end of libsodium
#
# mDNS
#
CONFIG_MDNS_MAX_INTERFACES=3
CONFIG_MDNS_MAX_SERVICES=10
CONFIG_MDNS_TASK_PRIORITY=1
CONFIG_MDNS_ACTION_QUEUE_LEN=16
CONFIG_MDNS_TASK_STACK_SIZE=4096
# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set
CONFIG_MDNS_TASK_AFFINITY_CPU0=y
# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set
CONFIG_MDNS_TASK_AFFINITY=0x0
#
# MDNS Memory Configuration
#
CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL=y
CONFIG_MDNS_MEMORY_ALLOC_INTERNAL=y
# CONFIG_MDNS_MEMORY_CUSTOM_IMPL is not set
# end of MDNS Memory Configuration
CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000
CONFIG_MDNS_TIMER_PERIOD_MS=100
# CONFIG_MDNS_NETWORKING_SOCKET is not set
# CONFIG_MDNS_SKIP_SUPPRESSING_OWN_QUERIES is not set
# CONFIG_MDNS_ENABLE_DEBUG_PRINTS is not set
CONFIG_MDNS_ENABLE_CONSOLE_CLI=y
# CONFIG_MDNS_RESPOND_REVERSE_QUERIES is not set
CONFIG_MDNS_MULTIPLE_INSTANCE=y
#
# MDNS Predefined interfaces
#
CONFIG_MDNS_PREDEF_NETIF_STA=y
CONFIG_MDNS_PREDEF_NETIF_AP=y
CONFIG_MDNS_PREDEF_NETIF_ETH=y
# end of MDNS Predefined interfaces
# end of mDNS
#
# Network Provisioning Manager
#
CONFIG_NETWORK_PROV_NETWORK_TYPE_WIFI=y
CONFIG_NETWORK_PROV_SCAN_MAX_ENTRIES=16
CONFIG_NETWORK_PROV_AUTOSTOP_TIMEOUT=30
# CONFIG_NETWORK_PROV_BLE_FORCE_ENCRYPTION is not set
CONFIG_NETWORK_PROV_WIFI_STA_ALL_CHANNEL_SCAN=y
# CONFIG_NETWORK_PROV_WIFI_STA_FAST_SCAN is not set
# end of Network Provisioning Manager
#
# ESP RainMaker Common
#
CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y
# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set
CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1
CONFIG_ESP_RMAKER_MQTT_PORT_443=y
# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set
CONFIG_ESP_RMAKER_MQTT_PORT=1
# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set
CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y
CONFIG_ESP_RMAKER_MQTT_PRODUCT_NAME="RMDev"
CONFIG_ESP_RMAKER_MQTT_PRODUCT_VERSION="1x0"
CONFIG_ESP_RMAKER_MQTT_PRODUCT_SKU="EX00"
CONFIG_ESP_RMAKER_MQTT_USE_CERT_BUNDLE=y
CONFIG_ESP_RMAKER_MAX_MQTT_SUBSCRIPTIONS=10
CONFIG_ESP_RMAKER_MQTT_KEEP_ALIVE_INTERVAL=120
CONFIG_ESP_RMAKER_NETWORK_OVER_WIFI=y
CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=4096
CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5
CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry"
CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds"
CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai"
CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org"
CONFIG_ESP_RMAKER_MAX_COMMANDS=10
# end of ESP RainMaker Common
#
# LittleFS
#
# CONFIG_LITTLEFS_SDMMC_SUPPORT is not set
CONFIG_LITTLEFS_MAX_PARTITIONS=3
CONFIG_LITTLEFS_PAGE_SIZE=256
CONFIG_LITTLEFS_OBJ_NAME_LEN=64
CONFIG_LITTLEFS_READ_SIZE=128
CONFIG_LITTLEFS_WRITE_SIZE=128
CONFIG_LITTLEFS_LOOKAHEAD_SIZE=128
CONFIG_LITTLEFS_CACHE_SIZE=512
CONFIG_LITTLEFS_BLOCK_CYCLES=512
CONFIG_LITTLEFS_USE_MTIME=y
# CONFIG_LITTLEFS_USE_ONLY_HASH is not set
# CONFIG_LITTLEFS_HUMAN_READABLE is not set
CONFIG_LITTLEFS_MTIME_USE_SECONDS=y
# CONFIG_LITTLEFS_MTIME_USE_NONCE is not set
# CONFIG_LITTLEFS_SPIFFS_COMPAT is not set
# CONFIG_LITTLEFS_FLUSH_FILE_EVERY_WRITE is not set
# CONFIG_LITTLEFS_FCNTL_GET_PATH is not set
# CONFIG_LITTLEFS_MULTIVERSION is not set
# CONFIG_LITTLEFS_MALLOC_STRATEGY_DISABLE is not set
CONFIG_LITTLEFS_MALLOC_STRATEGY_DEFAULT=y
# CONFIG_LITTLEFS_MALLOC_STRATEGY_INTERNAL is not set
CONFIG_LITTLEFS_ASSERTS=y
# end of LittleFS
#
# LVGL configuration
#
@@ -2583,7 +2212,6 @@ CONFIG_LOG_BOOTLOADER_LEVEL=3
CONFIG_FLASHMODE_DIO=y
# CONFIG_FLASHMODE_DOUT is not set
CONFIG_MONITOR_BAUD=115200
# CONFIG_ESP_RMAKER_LOCAL_CTRL_ENABLE is not set
CONFIG_OPTIMIZATION_LEVEL_DEBUG=y
CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
@@ -2775,17 +2403,4 @@ CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
CONFIG_SUPPORT_TERMIOS=y
CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1
CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=3000
CONFIG_MB_MASTER_DELAY_MS_CONVERT=200
CONFIG_MB_QUEUE_LENGTH=20
CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096
CONFIG_MB_SERIAL_BUF_SIZE=256
CONFIG_MB_SERIAL_TASK_PRIO=10
CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y
CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233
CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20
CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
CONFIG_MB_CONTROLLER_STACK_SIZE=4096
CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
# CONFIG_MB_TIMER_PORT_ENABLED is not set
# End of deprecated options

View File

@@ -1,7 +1,7 @@
# esp
# esp/cpp
```bash
shaunrd0/klips/esp/
shaunrd0/klips/esp/cpp
├── 01_led-button # Simple LED circuit controlled by an on board button.
├── 02_led-button-web # LED controlled by a button or within a web browser.
├── 03_temp-humidity-web # Temperature and humidity sensor within a web browser.

View File

@@ -0,0 +1,16 @@
[build]
target = "xtensa-esp32-espidf"
[target.xtensa-esp32-espidf]
linker = "ldproxy"
runner = "espflash flash --monitor"
rustflags = [ "--cfg", "espidf_time64"]
[unstable]
build-std = ["std", "panic_abort"]
[env]
MCU="esp32"
# Note: this variable is not used by the pio builder (`cargo build --features pio`)
ESP_IDF_VERSION = "v5.2.3"

5
esp/rust/01_esp-idf-std/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
/.vscode
/.idea
/.embuild
/target
/Cargo.lock

View File

@@ -0,0 +1,49 @@
[package]
name = "esp-idf-std"
version = "0.1.0"
authors = ["Shaun Reed <shaunrd0@gmail.com>"]
edition = "2021"
resolver = "2"
rust-version = "1.77"
[[bin]]
name = "esp-idf-std"
harness = false # do not use the built in cargo test harness -> resolve rust-analyzer errors
[profile.release]
opt-level = "s"
[profile.dev]
debug = true # Symbols are nice and they don't increase the size on Flash
opt-level = "z"
[features]
default = []
experimental = ["esp-idf-svc/experimental"]
[dependencies]
log = "0.4"
esp-idf-svc = "0.51"
esp-idf-hal = "0.45.2"
anyhow = "1.0.98"
# --- Optional Embassy Integration ---
# esp-idf-svc = { version = "0.51", features = ["critical-section", "embassy-time-driver", "embassy-sync"] }
# If you enable embassy-time-driver, you MUST also add one of:
# a) Standalone Embassy libs ( embassy-time, embassy-sync etc) with a foreign async runtime:
# embassy-time = { version = "0.4.0", features = ["generic-queue-8"] } # NOTE: any generic-queue variant will work
# b) With embassy-executor:
# embassy-executor = { version = "0.7", features = ["executor-thread", "arch-std"] }
# NOTE: if you use embassy-time with embassy-executor you don't need the generic-queue-8 feature
# --- Temporary workaround for embassy-executor < 0.8 ---
# esp-idf-svc = { version = "0.51", features = ["embassy-time-driver", "embassy-sync"] }
# critical-section = { version = "1.1", features = ["std"], default-features = false }
[build-dependencies]
embuild = "0.33"

View File

@@ -0,0 +1,32 @@
# 01_esp-idf-std
This is an example of using ESP-IDF with std enabled in Rust using templates provided by https://github.com/esp-rs/esp-idf-template
When flashed to a device, the application just adjusts the intensity of the on-board LED for visual verification that flashing works correctly.
Steps used to generate this project
```bash
cargo install cargo-generate
cargo generate --git https://github.com/esp-rs/esp-idf-template.git --name esp-idf-rust-std -d mcu=esp32 -d std=true
```
Steps to build and flash this project
```bash
# Install espflash if you don't have it already
cargo install espflash
# Export esp-idf build environment
. ~/export-esp.sh
# Build and flash to the device
cargo build
cargo run
# Check the serial monitor (optional)
sudo usermod -aG dialout $USER
newgrp dialout
espflash monitor
```
For more detailed information on setting up a development environment, see [the esp/rust README](/esp/rust/README.md)

View File

@@ -0,0 +1,3 @@
fn main() {
embuild::espidf::sysenv::output();
}

View File

@@ -0,0 +1,2 @@
[toolchain]
channel = "esp"

View File

@@ -0,0 +1,10 @@
# Rust often needs a bit of an extra main task stack size compared to C (the default is 3K)
CONFIG_ESP_MAIN_TASK_STACK_SIZE=8000
# Use this to set FreeRTOS kernel tick frequency to 1000 Hz (100 Hz by default).
# This allows to use 1 ms granularity for thread sleeps (10 ms by default).
#CONFIG_FREERTOS_HZ=1000
# Workaround for https://github.com/espressif/esp-idf/issues/7631
#CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
#CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=n

View File

@@ -0,0 +1,35 @@
use esp_idf_hal::delay::FreeRtos;
use esp_idf_hal::ledc::*;
use esp_idf_hal::peripherals::Peripherals;
use esp_idf_hal::prelude::*;
fn main() -> anyhow::Result<()> {
esp_idf_hal::sys::link_patches();
println!("Configuring output channel");
let peripherals = Peripherals::take()?;
// Channel for on-board LED on ESP32
let mut channel = LedcDriver::new(
peripherals.ledc.channel0,
LedcTimerDriver::new(
peripherals.ledc.timer0,
&config::TimerConfig::new().frequency(25_u32.kHz().into()),
)?,
peripherals.pins.gpio2,
)?;
println!("Starting duty-cycle loop");
let max_duty = channel.get_max_duty();
// Cycle the channel duty every 500ms to visually show that things are working when flashed.
for numerator in [0, 1, 2, 3, 4, 5].iter().cycle() {
println!("Duty {numerator}/5");
channel.set_duty(max_duty * numerator / 5)?;
FreeRtos::delay_ms(500);
}
// We want this to run forever, so don't let the application terminate.
loop {
FreeRtos::delay_ms(1000);
}
}

View File

@@ -0,0 +1,15 @@
[target.xtensa-esp32-none-elf]
runner = "espflash flash --monitor --chip esp32"
[env]
ESP_LOG = "info"
[build]
rustflags = [
"-C", "link-arg=-nostartfiles",
]
target = "xtensa-esp32-none-elf"
[unstable]
build-std = ["core"]

19
esp/rust/02_esp-gen-no-std/.gitignore vendored Normal file
View File

@@ -0,0 +1,19 @@
# will have compiled files and executables
debug/
target/
.vscode/
.zed/
.helix/
# These are backup files generated by rustfmt
**/*.rs.bk
# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb
# RustRover
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

963
esp/rust/02_esp-gen-no-std/Cargo.lock generated Normal file
View File

@@ -0,0 +1,963 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "anyhow"
version = "1.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
[[package]]
name = "basic-toml"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a"
dependencies = [
"serde",
]
[[package]]
name = "bitfield"
version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62a3a774b2fcac1b726922b921ebba5e9fe36ad37659c822cf8ff2c1e0819892"
dependencies = [
"bitfield-macros",
]
[[package]]
name = "bitfield-macros"
version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52511b09931f7d5fe3a14f23adefbc23e5725b184013e96c8419febb61f14734"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "bitflags"
version = "2.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
[[package]]
name = "bytemuck"
version = "1.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677"
[[package]]
name = "byteorder"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "cfg-if"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9"
[[package]]
name = "critical-section"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
[[package]]
name = "darling"
version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
dependencies = [
"darling_core 0.20.11",
"darling_macro 0.20.11",
]
[[package]]
name = "darling"
version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
dependencies = [
"darling_core 0.21.3",
"darling_macro 0.21.3",
]
[[package]]
name = "darling_core"
version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
"strsim",
"syn",
]
[[package]]
name = "darling_core"
version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "darling_macro"
version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
dependencies = [
"darling_core 0.20.11",
"quote",
"syn",
]
[[package]]
name = "darling_macro"
version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
dependencies = [
"darling_core 0.21.3",
"quote",
"syn",
]
[[package]]
name = "delegate"
version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6178a82cf56c836a3ba61a7935cdb1c49bfaa6fa4327cd5bf554a503087de26b"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "document-features"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d"
dependencies = [
"litrs",
]
[[package]]
name = "embassy-futures"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01"
[[package]]
name = "embassy-sync"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d2c8cdff05a7a51ba0087489ea44b0b1d97a296ca6b1d6d1a33ea7423d34049"
dependencies = [
"cfg-if",
"critical-section",
"embedded-io-async",
"futures-sink",
"futures-util",
"heapless",
]
[[package]]
name = "embedded-hal"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89"
[[package]]
name = "embedded-hal-async"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884"
dependencies = [
"embedded-hal",
]
[[package]]
name = "embedded-io"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
[[package]]
name = "embedded-io-async"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ff09972d4073aa8c299395be75161d582e7629cd663171d62af73c8d50dba3f"
dependencies = [
"embedded-io",
]
[[package]]
name = "embedded-storage"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a21dea9854beb860f3062d10228ce9b976da520a73474aed3171ec276bc0c032"
[[package]]
name = "enumset"
version = "1.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25b07a8dfbbbfc0064c0a6bdf9edcf966de6b1c33ce344bdeca3b41615452634"
dependencies = [
"enumset_derive",
]
[[package]]
name = "enumset_derive"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f43e744e4ea338060faee68ed933e46e722fb7f3617e722a5772d7e856d8b3ce"
dependencies = [
"darling 0.21.3",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "equivalent"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "esp-bootloader-esp-idf"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a093dbdc64b0288baacc214c2e8c2f3f13ecbf979c36ee2f63797ecf22538f1"
dependencies = [
"cfg-if",
"document-features",
"embedded-storage",
"esp-config",
"esp-rom-sys",
"jiff",
"strum",
]
[[package]]
name = "esp-config"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abd4a8db4b72794637a25944bc8d361c3cc271d4f03987ce8741312b6b61529c"
dependencies = [
"document-features",
"esp-metadata-generated",
"evalexpr",
"serde",
"serde_yaml",
]
[[package]]
name = "esp-gen-no-std"
version = "0.1.0"
dependencies = [
"critical-section",
"esp-bootloader-esp-idf",
"esp-hal",
"esp-println",
"fugit",
"log",
]
[[package]]
name = "esp-hal"
version = "1.0.0-rc.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3887eda2917deef3d99e7a5c324f9190714e99055361ad36890dffd0a995b49"
dependencies = [
"bitfield",
"bitflags",
"bytemuck",
"cfg-if",
"critical-section",
"delegate",
"document-features",
"embassy-futures",
"embassy-sync",
"embedded-hal",
"embedded-hal-async",
"enumset",
"esp-config",
"esp-hal-procmacros",
"esp-metadata-generated",
"esp-riscv-rt",
"esp-rom-sys",
"esp32",
"esp32c2",
"esp32c3",
"esp32c6",
"esp32h2",
"esp32s2",
"esp32s3",
"fugit",
"instability",
"paste",
"portable-atomic",
"riscv",
"serde",
"strum",
"xtensa-lx",
"xtensa-lx-rt",
]
[[package]]
name = "esp-hal-procmacros"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbece384edaf0d1eabfa45afa96d910634d4158638ef983b2d419a8dec832246"
dependencies = [
"document-features",
"litrs",
"proc-macro-crate",
"proc-macro2",
"quote",
"syn",
"termcolor",
]
[[package]]
name = "esp-metadata"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6fbc1d166be84c0750f121e95c8989ddebd7e7bdd86af3594a6cfb34f039650"
dependencies = [
"anyhow",
"basic-toml",
"indexmap",
"proc-macro2",
"quote",
"serde",
"strum",
]
[[package]]
name = "esp-metadata-generated"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "189d36b8c8a752bdebec67fd02a15ebb1432feea345553749bca7ce2393cc795"
dependencies = [
"esp-metadata",
]
[[package]]
name = "esp-println"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e7e3ab41e96093d7fd307e93bfc88bd646a8ff23036ebf809e116b18869f719"
dependencies = [
"critical-section",
"document-features",
"esp-metadata-generated",
"log",
"portable-atomic",
]
[[package]]
name = "esp-riscv-rt"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a00370dfcb0ccc01c6b2540076379c6efd6890a27f584de217c38e3239e19d5"
dependencies = [
"document-features",
"riscv",
"riscv-rt-macros",
]
[[package]]
name = "esp-rom-sys"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "646aca2b30503b6c6f34250255fbd5887fd0c4104ea90802c1fea34f3035e7d6"
dependencies = [
"cfg-if",
"document-features",
"esp-metadata-generated",
]
[[package]]
name = "esp32"
version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7680f79e3a4770e59c2dc25b17dcd852921ee57ffae9a4c4806c9ca5001d54d"
dependencies = [
"critical-section",
"vcell",
]
[[package]]
name = "esp32c2"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da1bcf86fca83543e0e95561cba27bbcc6b6e7adc5428f49187f5868bc0c3ed2"
dependencies = [
"critical-section",
"vcell",
]
[[package]]
name = "esp32c3"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce2c5a33d4377f974cbe8cadf8307f04f2c39755704cb09e81852c63ee4ac7b8"
dependencies = [
"critical-section",
"vcell",
]
[[package]]
name = "esp32c6"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ca8fc81b7164df58b5e04aaac9e987459312e51903cca807317990293973a6e"
dependencies = [
"critical-section",
"vcell",
]
[[package]]
name = "esp32h2"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80171d08c17d8c63b53334c60ca654786a7593481531d19b639c4e5c76d276de"
dependencies = [
"critical-section",
"vcell",
]
[[package]]
name = "esp32s2"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c90d347480fca91f4be3e94b576af9c6c7987795c58dc3c5a7c108b6b3966dc"
dependencies = [
"critical-section",
"vcell",
]
[[package]]
name = "esp32s3"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3769c56222c4548833f236c7009f1f8b3f2387af26366f6bd1cea456666a49d"
dependencies = [
"critical-section",
"vcell",
]
[[package]]
name = "evalexpr"
version = "12.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02a3229bec56a977f174b32fe7b8d89e8c79ebb4493d10ad763b6676dc2dc0c9"
[[package]]
name = "fnv"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "fugit"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17186ad64927d5ac8f02c1e77ccefa08ccd9eaa314d5a4772278aa204a22f7e7"
dependencies = [
"gcd",
]
[[package]]
name = "futures-core"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
[[package]]
name = "futures-sink"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
[[package]]
name = "futures-task"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
[[package]]
name = "futures-util"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
dependencies = [
"futures-core",
"futures-task",
"pin-project-lite",
"pin-utils",
]
[[package]]
name = "gcd"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a"
[[package]]
name = "hash32"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
dependencies = [
"byteorder",
]
[[package]]
name = "hashbrown"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
[[package]]
name = "heapless"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
dependencies = [
"hash32",
"stable_deref_trait",
]
[[package]]
name = "heck"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "ident_case"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "indexmap"
version = "2.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5"
dependencies = [
"equivalent",
"hashbrown",
"serde",
"serde_core",
]
[[package]]
name = "indoc"
version = "2.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
[[package]]
name = "instability"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "435d80800b936787d62688c927b6490e887c7ef5ff9ce922c6c6050fca75eb9a"
dependencies = [
"darling 0.20.11",
"indoc",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "itoa"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "jiff"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49"
dependencies = [
"jiff-static",
"log",
"portable-atomic",
"portable-atomic-util",
"serde",
]
[[package]]
name = "jiff-static"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "litrs"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed"
dependencies = [
"proc-macro2",
]
[[package]]
name = "log"
version = "0.4.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
[[package]]
name = "memchr"
version = "2.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
[[package]]
name = "paste"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]]
name = "pin-project-lite"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
[[package]]
name = "pin-utils"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "portable-atomic"
version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
[[package]]
name = "portable-atomic-util"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
dependencies = [
"portable-atomic",
]
[[package]]
name = "proc-macro-crate"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
dependencies = [
"toml_edit",
]
[[package]]
name = "proc-macro2"
version = "1.0.101"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
[[package]]
name = "r0"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd7a31eed1591dcbc95d92ad7161908e72f4677f8fabf2a32ca49b4237cbf211"
[[package]]
name = "riscv"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ea8ff73d3720bdd0a97925f0bf79ad2744b6da8ff36be3840c48ac81191d7a7"
dependencies = [
"critical-section",
"embedded-hal",
"paste",
"riscv-macros",
"riscv-pac",
]
[[package]]
name = "riscv-macros"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f265be5d634272320a7de94cea15c22a3bfdd4eb42eb43edc528415f066a1f25"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "riscv-pac"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8188909339ccc0c68cfb5a04648313f09621e8b87dc03095454f1a11f6c5d436"
[[package]]
name = "riscv-rt-macros"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc71814687c45ba4cd1e47a54e03a2dbc62ca3667098fbae9cc6b423956758fa"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "ryu"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
name = "serde"
version = "1.0.226"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd"
dependencies = [
"serde_core",
"serde_derive",
]
[[package]]
name = "serde_core"
version = "1.0.226"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.226"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_yaml"
version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap",
"itoa",
"ryu",
"serde",
"unsafe-libyaml",
]
[[package]]
name = "stable_deref_trait"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]]
name = "strsim"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "strum"
version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
dependencies = [
"strum_macros",
]
[[package]]
name = "strum_macros"
version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
dependencies = [
"heck",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "syn"
version = "2.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "termcolor"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
dependencies = [
"winapi-util",
]
[[package]]
name = "toml_datetime"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1"
dependencies = [
"serde_core",
]
[[package]]
name = "toml_edit"
version = "0.23.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b"
dependencies = [
"indexmap",
"toml_datetime",
"toml_parser",
"winnow",
]
[[package]]
name = "toml_parser"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627"
dependencies = [
"winnow",
]
[[package]]
name = "unicode-ident"
version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
[[package]]
name = "unsafe-libyaml"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
[[package]]
name = "vcell"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002"
[[package]]
name = "winapi-util"
version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
"windows-sys",
]
[[package]]
name = "windows-link"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65"
[[package]]
name = "windows-sys"
version = "0.61.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa"
dependencies = [
"windows-link",
]
[[package]]
name = "winnow"
version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
dependencies = [
"memchr",
]
[[package]]
name = "xtensa-lx"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a564fffeb3cd773a524e8d8a5c66ca5e9739ea7450e36a3e6a54dd31f1e652f"
dependencies = [
"critical-section",
]
[[package]]
name = "xtensa-lx-rt"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "520a8fb0121eb6868f4f5ff383e262dc863f9042496724e01673a98a9b7e6c2b"
dependencies = [
"document-features",
"r0",
"xtensa-lx",
"xtensa-lx-rt-proc-macros",
]
[[package]]
name = "xtensa-lx-rt-proc-macros"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5a56a616147f5947ceb673790dd618d77b30e26e677f4a896df049d73059438"
dependencies = [
"proc-macro2",
"quote",
"syn",
]

Some files were not shown because too many files have changed in this diff Show More