aboutsummaryrefslogtreecommitdiff
path: root/puzzle
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-06-15 13:30:45 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-06-15 13:30:45 +0200
commit20f442e5f5aa6a4fcf07f65e2f446a3c0ff8e4f2 (patch)
tree99f2422681eaa34a6f21b54d86e67115c291d5ce /puzzle
parentdbe08a8cd3d29cee7ba1adae4841c0a831784f31 (diff)
WIP freertos + Arduino workaround
Diffstat (limited to 'puzzle')
-rw-r--r--puzzle/dummy/CMakeLists.txt7
-rw-r--r--puzzle/dummy/FreeRTOSConfig.h51
-rw-r--r--puzzle/dummy/main.cpp40
3 files changed, 72 insertions, 26 deletions
diff --git a/puzzle/dummy/CMakeLists.txt b/puzzle/dummy/CMakeLists.txt
index c485e74..f80d18c 100644
--- a/puzzle/dummy/CMakeLists.txt
+++ b/puzzle/dummy/CMakeLists.txt
@@ -12,6 +12,12 @@ add_compile_definitions(DEBUG)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/lib/Arduino-CMake-Toolchain/Arduino-toolchain.cmake)
set(ARDUINO_BOARD "Arduino Uno [avr.uno]")
+# freertos
+add_library(freertos_config INTERFACE)
+target_include_directories(freertos_config SYSTEM INTERFACE .)
+set(FREERTOS_PORT GCC_ATMEGA)
+set(FREERTOS_HEAP 4)
+
# used for testing
# set(ARDUINO_BOARD "Raspberry Pi Pico W [rp2040.rpipicow]")
# add_compile_definitions(USE_TINYUSB)
@@ -20,6 +26,7 @@ set(ARDUINO_BOARD "Arduino Uno [avr.uno]")
project(pb_mod_dummy C CXX)
add_subdirectory(lib/pbdrv)
+add_subdirectory(lib/FreeRTOS-Kernel)
add_executable(main
main.cpp
diff --git a/puzzle/dummy/FreeRTOSConfig.h b/puzzle/dummy/FreeRTOSConfig.h
new file mode 100644
index 0000000..ab6bd7f
--- /dev/null
+++ b/puzzle/dummy/FreeRTOSConfig.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#define configUSE_PREEMPTION 1
+#define configUSE_IDLE_HOOK 0
+#define configUSE_TICK_HOOK 0
+#define configMAX_PRIORITIES 32
+#define configMINIMAL_STACK_SIZE ((configSTACK_DEPTH_TYPE) 192)
+#define configUSE_16_BIT_TICKS 1
+#define configIDLE_SHOULD_YIELD 1
+#define configUSE_MUTEXES 1
+#define configUSE_RECURSIVE_MUTEXES 1
+#define configUSE_APPLICATION_TASK_TAG 0
+#define configUSE_COUNTING_SEMAPHORES 1
+#define configQUEUE_REGISTRY_SIZE 8
+#define configUSE_QUEUE_SETS 0
+#define configUSE_TIME_SLICING 1
+#define configSTACK_DEPTH_TYPE uint16_t
+#define configSUPPORT_STATIC_ALLOCATION 0
+#define configSUPPORT_DYNAMIC_ALLOCATION 1
+#define configTOTAL_HEAP_SIZE (1024)
+#define configCHECK_FOR_STACK_OVERFLOW 0
+#define configUSE_MALLOC_FAILED_HOOK 0
+#define configUSE_DAEMON_TASK_STARTUP_HOOK 0
+#define configGENERATE_RUN_TIME_STATS 0
+#define configUSE_TRACE_FACILITY 0
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
+#define configUSE_TIMERS 1
+#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)
+#define configTIMER_QUEUE_LENGTH 10
+#define configTIMER_TASK_STACK_DEPTH 92
+
+#include <assert.h>
+#define configASSERT(x) assert(x)
+
+#define INCLUDE_vTaskPrioritySet 1
+#define INCLUDE_uxTaskPriorityGet 1
+#define INCLUDE_vTaskDelete 1
+#define INCLUDE_vTaskSuspend 1
+#define INCLUDE_vTaskDelayUntil 1
+#define INCLUDE_vTaskDelay 1
+#define INCLUDE_xTaskGetSchedulerState 1
+#define INCLUDE_xTaskGetCurrentTaskHandle 1
+#define INCLUDE_uxTaskGetStackHighWaterMark 1
+#define INCLUDE_xTaskGetIdleTaskHandle 1
+#define INCLUDE_eTaskGetState 1
+#define INCLUDE_xTimerPendFunctionCall 1
+#define INCLUDE_xTaskAbortDelay 1
+#define INCLUDE_xTaskGetHandle 1
+#define INCLUDE_xTaskResumeFromISR 1
+#define INCLUDE_xQueueGetMutexHolder 1
+
diff --git a/puzzle/dummy/main.cpp b/puzzle/dummy/main.cpp
index e5f5e24..ddf3bf0 100644
--- a/puzzle/dummy/main.cpp
+++ b/puzzle/dummy/main.cpp
@@ -1,38 +1,26 @@
#include <Arduino.h>
#include <Wire.h>
+#include <FreeRTOS.h>
+#include <task.h>
+
#include "drv/arduino/mod.h"
#include "pb-mod.h"
-#define TEST_A
-
-#ifdef TEST_A
-#define ADDR_RX 0x69
-#define ADDR_TX 0x20
-#define MSG "aa"
-#define MSG_SIZE 3
-#define MSG_DELAY 10
-#endif
-
-#ifdef TEST_B
-#define ADDR_TX 0x69
-#define ADDR_RX 0x20
-#define MSG "bbbbbbbb"
-#define MSG_SIZE 9
-#define MSG_DELAY 10
-#endif
-
const char * PB_MOD_NAME = "dummy";
-const i2c_addr_t PB_MOD_ADDR = ADDR_RX;
+const i2c_addr_t PB_MOD_ADDR = 0x69;
-void setup() {
- pb_setup();
+void testTask() {
+ while(1) {
+ vTaskDelay(1000 / portTICK_PERIOD_MS);
+ Serial.write("Hello world!\r\n");
+ }
}
-void loop() {
- // pb_i2c_send(ADDR_TX, (uint8_t *) MSG, MSG_SIZE);
- // delay(MSG_DELAY);
+void setup() {
+ Serial.begin(115200);
+ Serial.write("setup called\r\n");
+ xTaskCreate((TaskFunction_t) testTask, "test", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, NULL);
+ Serial.write("setup done\r\n");
}
-void pb_i2c_recv(const uint8_t * data, size_t size) { }
-