Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dce3e3600d | |||
| c087c2446a | |||
| 08639679fb | |||
| 9eeabf0683 | |||
| 1eb00aea6e | |||
| 945e6ba2ff | |||
| a5ee28596a | |||
| 85f588fcb3 | |||
| bb28b1e2ef | |||
| 20efb62615 | |||
| edde77b9c3 | |||
| 5565ad5170 |
@@ -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)
|
||||
add_subdirectory(qt)
|
||||
|
||||
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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -8,9 +8,8 @@
|
||||
################################################################################
|
||||
*/
|
||||
|
||||
#include <algorithm>
|
||||
#include "lib-graph.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
void Graph::BFS(int startNode)
|
||||
{
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
|
||||
class Graph {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <unordered_set>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <unordered_set>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
void MergeSort(std::vector<int> &array, size_t lhs, size_t rhs)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#define REDBLACK_H
|
||||
|
||||
#include <iostream>
|
||||
#include <cstdint>
|
||||
|
||||
enum Color {Black, Red};
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -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;
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,10 +10,11 @@
|
||||
|
||||
#include "bst.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/********************************************************************************
|
||||
* Constructors, Destructors, Operators
|
||||
*********************************************************************************/
|
||||
* Constructors, Destructors, Operators
|
||||
*********************************************************************************/
|
||||
|
||||
/** Copy Assignment Operator
|
||||
* @brief Empty the calling object's root BinaryNode, and copy the rhs data
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "circledoublelist.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/******************************************************************************
|
||||
* Constructors, Destructors, Operators
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "circlesinglelist.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/******************************************************************************
|
||||
* Constructors, Destructors, Operators
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "doublelist.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/******************************************************************************
|
||||
* Constructors, Destructors, Operators
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,10 +10,11 @@
|
||||
|
||||
#include "maxheap.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/********************************************************************************
|
||||
* Constructors, Destructors, Operators
|
||||
*********************************************************************************/
|
||||
* Constructors, Destructors, Operators
|
||||
*********************************************************************************/
|
||||
|
||||
/** default constructor
|
||||
* Constructs a heap with the given default values
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "queuelist.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/******************************************************************************
|
||||
* Constructors, Destructors, Operators
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "singlelist.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/******************************************************************************
|
||||
* Constructors, Destructors, Operators
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "stacklist.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/******************************************************************************
|
||||
* Constructors, Destructors, Operators
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "vector.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/******************************************************************************
|
||||
* Constructors, Destructors, Operators
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
# 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()
|
||||
find_package(GLUT QUIET)
|
||||
if(NOT GLUT_FOUND)
|
||||
message(
|
||||
"Error: CMake was unable to find the GLUT package\n"
|
||||
"Please install GLUT (freeglut3-dev) and try again\n"
|
||||
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})
|
||||
|
||||
# Add test executable
|
||||
add_executable(graphics-cmake-opengl apps/test-gl.cpp)
|
||||
|
||||
@@ -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,31 +28,30 @@ target_include_directories( # When calling library, include a directo
|
||||
)
|
||||
|
||||
# Search for SDL2 package
|
||||
find_package(SDL2 REQUIRED sdl2)
|
||||
|
||||
# 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})
|
||||
target_link_libraries(graphics-lib-sdl PUBLIC "${SDL2_LIBRARIES}")
|
||||
|
||||
# Creating executable
|
||||
add_executable(
|
||||
graphics-cmake-sdl # Exe name
|
||||
apps/sdl-test.cpp # Exe Source(s)
|
||||
)
|
||||
|
||||
# Linking the exe to library
|
||||
target_link_libraries(
|
||||
graphics-cmake-sdl # Executable to link
|
||||
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"
|
||||
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}")
|
||||
|
||||
# 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})
|
||||
target_link_libraries(graphics-lib-sdl PUBLIC "${SDL2_LIBRARIES}")
|
||||
|
||||
# Creating executable
|
||||
add_executable(
|
||||
graphics-cmake-sdl # Exe name
|
||||
apps/sdl-test.cpp # Exe Source(s)
|
||||
)
|
||||
|
||||
# Linking the exe to library
|
||||
target_link_libraries(
|
||||
graphics-cmake-sdl # Executable to link
|
||||
PRIVATE # Visibility
|
||||
graphics-lib-sdl # Library to link
|
||||
)
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#ifndef ADAPTER_HPP
|
||||
#define ADAPTER_HPP
|
||||
|
||||
#include <ctime>
|
||||
#include <random>
|
||||
|
||||
// Target implementation to adapt to a new interface
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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}
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
|
||||
public:
|
||||
signals:
|
||||
void sendTest()QWidget;
|
||||
void sendTest();
|
||||
|
||||
private:
|
||||
signals:
|
||||
|
||||
8
esp/README.md
Normal file
8
esp/README.md
Normal 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
|
||||
```
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
@@ -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() { }
|
||||
|
||||
@@ -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.
|
||||
@@ -367,10 +374,10 @@ private:
|
||||
* 0, 0, 0, 0,
|
||||
* 0] 0] 0] 0]
|
||||
*
|
||||
* These layouts in memory have no opinion on the shape of the image. The
|
||||
* beginning and end of a row or a column for example is entirely dependent
|
||||
* on how the data is accessed. The vertical and horitzontal resolution may
|
||||
* vary between displays.
|
||||
* These layouts in memory have no opinion on the shape of the image. The
|
||||
* beginning and end of a row or a column for example is entirely dependent
|
||||
* on how the data is accessed. The vertical and horitzontal resolution may
|
||||
* vary between displays.
|
||||
*
|
||||
* For the LV_COLOR_FORMAT_I1 color format we are using, an additional buffer
|
||||
* is needed for transposing the bits to the vertical arrangement required by
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
16
esp/rust/01_esp-idf-std/.cargo/config.toml
Normal file
16
esp/rust/01_esp-idf-std/.cargo/config.toml
Normal 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
5
esp/rust/01_esp-idf-std/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/.vscode
|
||||
/.idea
|
||||
/.embuild
|
||||
/target
|
||||
/Cargo.lock
|
||||
49
esp/rust/01_esp-idf-std/Cargo.toml
Normal file
49
esp/rust/01_esp-idf-std/Cargo.toml
Normal 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"
|
||||
32
esp/rust/01_esp-idf-std/README.md
Normal file
32
esp/rust/01_esp-idf-std/README.md
Normal 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)
|
||||
3
esp/rust/01_esp-idf-std/build.rs
Normal file
3
esp/rust/01_esp-idf-std/build.rs
Normal file
@@ -0,0 +1,3 @@
|
||||
fn main() {
|
||||
embuild::espidf::sysenv::output();
|
||||
}
|
||||
2
esp/rust/01_esp-idf-std/rust-toolchain.toml
Normal file
2
esp/rust/01_esp-idf-std/rust-toolchain.toml
Normal file
@@ -0,0 +1,2 @@
|
||||
[toolchain]
|
||||
channel = "esp"
|
||||
10
esp/rust/01_esp-idf-std/sdkconfig.defaults
Normal file
10
esp/rust/01_esp-idf-std/sdkconfig.defaults
Normal 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
|
||||
35
esp/rust/01_esp-idf-std/src/main.rs
Normal file
35
esp/rust/01_esp-idf-std/src/main.rs
Normal 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);
|
||||
}
|
||||
}
|
||||
15
esp/rust/02_esp-gen-no-std/.cargo/config.toml
Normal file
15
esp/rust/02_esp-gen-no-std/.cargo/config.toml
Normal 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
19
esp/rust/02_esp-gen-no-std/.gitignore
vendored
Normal 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
963
esp/rust/02_esp-gen-no-std/Cargo.lock
generated
Normal 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
Reference in New Issue
Block a user