aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules4
-rw-r--r--client/CMakeLists.txt8
l---------client/compile_commands.json1
-rw-r--r--client/i2c.cpp4
-rw-r--r--i2ctcp/include.cmake19
l---------i2ctcp/lib1
-rw-r--r--lib/i2ctcp/CMakeLists.txt14
-rw-r--r--lib/i2ctcp/i2ctcpv1.c (renamed from i2ctcp/i2ctcpv1.c)0
-rw-r--r--lib/i2ctcp/i2ctcpv1.h (renamed from i2ctcp/i2ctcpv1.h)0
-rw-r--r--lib/i2ctcp/makefile4
-rw-r--r--lib/i2ctcp/readme.md (renamed from i2ctcp/readme.md)0
-rw-r--r--lib/mpack/CMakeLists.txt26
-rw-r--r--lib/mpack/makefile4
m---------lib/mpack/src (renamed from lib/mpack)0
-rw-r--r--lib/pbdrv/CMakeLists.txt40
-rw-r--r--lib/pbdrv/drv/arduino/mod.cpp (renamed from shared/pb/drv/arduino/mod.cpp)0
-rw-r--r--lib/pbdrv/drv/arduino/mod.h (renamed from shared/pb/drv/arduino/mod.h)2
-rw-r--r--lib/pbdrv/makefile4
-rw-r--r--lib/pbdrv/mod/main.h (renamed from shared/pb/mod/main.h)8
-rw-r--r--lib/pbdrv/pb-mod.c (renamed from shared/pb/moddrv.c)5
-rw-r--r--lib/pbdrv/pb-mod.h (renamed from shared/pb/moddrv.h)10
-rw-r--r--lib/pbdrv/pb-read.c3
-rw-r--r--lib/pbdrv/pb-read.h2
-rw-r--r--lib/pbdrv/pb-types.h (renamed from shared/pb/types.h)1
-rw-r--r--lib/pbdrv/pb-write.c1
-rw-r--r--lib/pbdrv/pb-write.h3
-rw-r--r--lib/pbdrv/pb.h (renamed from shared/pb/bus.h)2
-rw-r--r--lib/pbdrv/spec.adoc (renamed from shared/pb/spec.adoc)0
-rw-r--r--main/CMakeLists.txt3
l---------main/compile_commands.json1
-rw-r--r--puzzle/dummy/CMakeLists.txt2
-rw-r--r--puzzle/dummy/main.cpp7
-rw-r--r--shared/pb.cmake20
-rw-r--r--test/CMakeLists.txt7
34 files changed, 134 insertions, 72 deletions
diff --git a/.gitmodules b/.gitmodules
index 6313925..9ff7e96 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -13,8 +13,8 @@
url = https://github.com/FreeRTOS/FreeRTOS-Kernel
branch = V11.1.0
shallow = true
-[submodule "lib/mpack"]
- path = lib/mpack
+[submodule "lib/mpack/src"]
+ path = lib/mpack/src
url = https://github.com/ludocode/mpack
branch = v1.1.1
shallow = true
diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt
index b1cfbaf..7d492b0 100644
--- a/client/CMakeLists.txt
+++ b/client/CMakeLists.txt
@@ -8,10 +8,11 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
set(CMAKE_BUILD_TYPE Debug)
add_compile_definitions(DEBUG)
-project(puzzlebox_client C CXX)
+project(pbc C CXX)
-include(../i2ctcp/include.cmake)
-include(../shared/pb.cmake)
+add_subdirectory(lib/mpack)
+add_subdirectory(lib/i2ctcp)
+add_subdirectory(lib/pbdrv)
add_executable(pbc
main.cpp
@@ -27,5 +28,6 @@ target_link_libraries(pbc
i2ctcp
mpack
readline # this is such a common library that I did not bother adding it as a submodule
+ pbdrv
)
diff --git a/client/compile_commands.json b/client/compile_commands.json
deleted file mode 120000
index 25eb4b2..0000000
--- a/client/compile_commands.json
+++ /dev/null
@@ -1 +0,0 @@
-build/compile_commands.json \ No newline at end of file
diff --git a/client/i2c.cpp b/client/i2c.cpp
index 951f654..4dbc724 100644
--- a/client/i2c.cpp
+++ b/client/i2c.cpp
@@ -5,8 +5,8 @@
#include "sock.h"
#include "xxd.h"
-#include "pb/bus.h"
-#include "pb/types.h"
+#include "pb.h"
+#include "pb-types.h"
// #include "pb/mod/main.h"
diff --git a/i2ctcp/include.cmake b/i2ctcp/include.cmake
deleted file mode 100644
index b61b2a4..0000000
--- a/i2ctcp/include.cmake
+++ /dev/null
@@ -1,19 +0,0 @@
-include_directories(${CMAKE_CURRENT_LIST_DIR})
-add_library(i2ctcp STATIC
- ${CMAKE_CURRENT_LIST_DIR}/i2ctcpv1.c
- )
-
-# mpack
-include_directories(${CMAKE_CURRENT_LIST_DIR}/lib/mpack/src/mpack)
-add_library(mpack STATIC
- ${CMAKE_CURRENT_LIST_DIR}/lib/mpack/src/mpack/mpack-common.c
- ${CMAKE_CURRENT_LIST_DIR}/lib/mpack/src/mpack/mpack-expect.c
- ${CMAKE_CURRENT_LIST_DIR}/lib/mpack/src/mpack/mpack-node.c
- ${CMAKE_CURRENT_LIST_DIR}/lib/mpack/src/mpack/mpack-platform.c
- ${CMAKE_CURRENT_LIST_DIR}/lib/mpack/src/mpack/mpack-reader.c
- ${CMAKE_CURRENT_LIST_DIR}/lib/mpack/src/mpack/mpack-writer.c
- )
-
-# causes some wild crashes, please leave off
-add_compile_definitions(MPACK_READ_TRACKING=0)
-
diff --git a/i2ctcp/lib b/i2ctcp/lib
deleted file mode 120000
index dc598c5..0000000
--- a/i2ctcp/lib
+++ /dev/null
@@ -1 +0,0 @@
-../lib \ No newline at end of file
diff --git a/lib/i2ctcp/CMakeLists.txt b/lib/i2ctcp/CMakeLists.txt
new file mode 100644
index 0000000..b47b1d7
--- /dev/null
+++ b/lib/i2ctcp/CMakeLists.txt
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 3.29)
+
+set(CMAKE_C_STANDARD 11)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
+
+project(i2ctcp C CXX)
+
+add_subdirectory(../mpack ${CMAKE_CURRENT_BINARY_DIR}/mpack)
+
+add_library(i2ctcp STATIC ./i2ctcpv1.c)
+target_link_libraries(i2ctcp mpack)
+target_include_directories(i2ctcp SYSTEM INTERFACE .)
+
diff --git a/i2ctcp/i2ctcpv1.c b/lib/i2ctcp/i2ctcpv1.c
index 944df3a..944df3a 100644
--- a/i2ctcp/i2ctcpv1.c
+++ b/lib/i2ctcp/i2ctcpv1.c
diff --git a/i2ctcp/i2ctcpv1.h b/lib/i2ctcp/i2ctcpv1.h
index 799b668..799b668 100644
--- a/i2ctcp/i2ctcpv1.h
+++ b/lib/i2ctcp/i2ctcpv1.h
diff --git a/lib/i2ctcp/makefile b/lib/i2ctcp/makefile
new file mode 100644
index 0000000..5ca3fd1
--- /dev/null
+++ b/lib/i2ctcp/makefile
@@ -0,0 +1,4 @@
+TARGET = $(BUILD_DIR)/libi2ctcp.a
+
+include ../../lazy.mk
+
diff --git a/i2ctcp/readme.md b/lib/i2ctcp/readme.md
index d5bfe6d..d5bfe6d 100644
--- a/i2ctcp/readme.md
+++ b/lib/i2ctcp/readme.md
diff --git a/lib/mpack/CMakeLists.txt b/lib/mpack/CMakeLists.txt
new file mode 100644
index 0000000..0a904b0
--- /dev/null
+++ b/lib/mpack/CMakeLists.txt
@@ -0,0 +1,26 @@
+if(TARGET mpack)
+ return()
+endif()
+
+cmake_minimum_required(VERSION 3.29)
+
+set(CMAKE_C_STANDARD 11)
+set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
+
+project(mpack C)
+
+add_library(mpack STATIC
+ src/src/mpack/mpack-common.c
+ src/src/mpack/mpack-expect.c
+ src/src/mpack/mpack-node.c
+ src/src/mpack/mpack-platform.c
+ src/src/mpack/mpack-reader.c
+ src/src/mpack/mpack-writer.c
+ )
+target_include_directories(mpack SYSTEM INTERFACE
+ src/src/mpack
+ )
+
+# causes some wild crashes, please leave off
+add_compile_definitions(MPACK_READ_TRACKING=0)
+
diff --git a/lib/mpack/makefile b/lib/mpack/makefile
new file mode 100644
index 0000000..e96794a
--- /dev/null
+++ b/lib/mpack/makefile
@@ -0,0 +1,4 @@
+TARGET = $(BUILD_DIR)/libmpack.a
+
+include ../../lazy.mk
+
diff --git a/lib/mpack b/lib/mpack/src
-Subproject 79d3fcd3e04338b06e82d01a62f4aa98c7bad5f
+Subproject 79d3fcd3e04338b06e82d01a62f4aa98c7bad5f
diff --git a/lib/pbdrv/CMakeLists.txt b/lib/pbdrv/CMakeLists.txt
new file mode 100644
index 0000000..08894cc
--- /dev/null
+++ b/lib/pbdrv/CMakeLists.txt
@@ -0,0 +1,40 @@
+cmake_minimum_required(VERSION 3.29)
+
+set(CMAKE_C_STANDARD 11)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
+
+# enable debug features
+set(CMAKE_BUILD_TYPE Debug)
+add_compile_definitions(DEBUG)
+
+project(pbdrv C CXX)
+
+if(DEFINED ARDUINO)
+ set(PBDRV_ARDUINO true)
+endif()
+
+include_directories(.)
+add_library(pbdrv STATIC
+ pb-read.c
+ pb-write.c
+ )
+target_include_directories(pbdrv SYSTEM INTERFACE .)
+
+list(APPEND PBDRV_SRCS pb-mod.c)
+
+if(PBDRV_ARDUINO)
+ list(APPEND PBDRV_SRCS drv/arduino/mod.cpp)
+endif()
+
+add_library(pbdrv-mod STATIC ${PBDRV_SRCS})
+target_link_libraries(pbdrv-mod pbdrv)
+# add_dependencies(pbdrv-mod pbdrv)
+
+if(PBDRV_ARDUINO)
+ target_link_arduino_libraries(pbdrv-mod
+ core
+ Wire
+ )
+endif()
+
diff --git a/shared/pb/drv/arduino/mod.cpp b/lib/pbdrv/drv/arduino/mod.cpp
index c7bbe45..c7bbe45 100644
--- a/shared/pb/drv/arduino/mod.cpp
+++ b/lib/pbdrv/drv/arduino/mod.cpp
diff --git a/shared/pb/drv/arduino/mod.h b/lib/pbdrv/drv/arduino/mod.h
index e2e3b6d..e545d9b 100644
--- a/shared/pb/drv/arduino/mod.h
+++ b/lib/pbdrv/drv/arduino/mod.h
@@ -1,6 +1,6 @@
#pragma once
-#include "../../moddrv.h"
+#include "../../pb-mod.h"
#ifdef __cplusplus
extern "C" {
diff --git a/lib/pbdrv/makefile b/lib/pbdrv/makefile
new file mode 100644
index 0000000..c87d1af
--- /dev/null
+++ b/lib/pbdrv/makefile
@@ -0,0 +1,4 @@
+TARGET = $(BUILD_DIR)/libpbdrv.a
+
+include ../../lazy.mk
+
diff --git a/shared/pb/mod/main.h b/lib/pbdrv/mod/main.h
index 56ccd3d..535ce06 100644
--- a/shared/pb/mod/main.h
+++ b/lib/pbdrv/mod/main.h
@@ -2,12 +2,12 @@
#include "../types.h"
-typedef struct __packed {
- const uint8_t addr;
- const enum pb_state state;
+typedef struct {
+ const i2c_addr_t mod_addr;
+ const pb_global_state_t mod_state;
} pb_mod_main_mod_t;
-enum __packed {
+enum {
PB_MOD_MAIN_ADDR_MODS = 0x01, //!< connected puzzle modules
};
diff --git a/shared/pb/moddrv.c b/lib/pbdrv/pb-mod.c
index b17b7ac..740f2a5 100644
--- a/shared/pb/moddrv.c
+++ b/lib/pbdrv/pb-mod.c
@@ -1,5 +1,5 @@
-#include "types.h"
-#include "moddrv.h"
+#include "pb-types.h"
+#include "pb.h"
//! fallback module name
__weak const char * PBDRV_MOD_NAME = "???";
@@ -23,3 +23,4 @@ __weak void pbdrv_i2c_recv(const uint8_t * buf, size_t sz) {
}
__weak void pbdrv_hook_main_state_update(pb_global_state_t state) { }
+
diff --git a/shared/pb/moddrv.h b/lib/pbdrv/pb-mod.h
index b48f4db..fa290bf 100644
--- a/shared/pb/moddrv.h
+++ b/lib/pbdrv/pb-mod.h
@@ -14,15 +14,17 @@
#include <stddef.h>
#include <stdbool.h>
-#include "types.h"
-
-extern const char * PBDRV_MOD_NAME;
-extern const i2c_addr_t PBDRV_MOD_ADDR;
+#include "pb-types.h"
#ifdef __cplusplus
extern "C" {
#endif
+//! puzzle module name (optional, default = "???")
+extern const char * PBDRV_MOD_NAME;
+//! puzzle module bus address (required)
+extern const i2c_addr_t PBDRV_MOD_ADDR;
+
void pbdrv_i2c_recv(const uint8_t * buf, size_t sz);
void pbdrv_i2c_send(i2c_addr_t i2c_addr, const uint8_t * buf, size_t sz);
diff --git a/lib/pbdrv/pb-read.c b/lib/pbdrv/pb-read.c
new file mode 100644
index 0000000..843420d
--- /dev/null
+++ b/lib/pbdrv/pb-read.c
@@ -0,0 +1,3 @@
+#include "pb-read.h"
+
+
diff --git a/lib/pbdrv/pb-read.h b/lib/pbdrv/pb-read.h
new file mode 100644
index 0000000..3f59c93
--- /dev/null
+++ b/lib/pbdrv/pb-read.h
@@ -0,0 +1,2 @@
+#pragma once
+
diff --git a/shared/pb/types.h b/lib/pbdrv/pb-types.h
index 186066b..3c1314f 100644
--- a/shared/pb/types.h
+++ b/lib/pbdrv/pb-types.h
@@ -1,5 +1,6 @@
#pragma once
#include <stdint.h>
+#include <stddef.h>
#ifdef __cplusplus
extern "C" {
diff --git a/lib/pbdrv/pb-write.c b/lib/pbdrv/pb-write.c
new file mode 100644
index 0000000..65a2932
--- /dev/null
+++ b/lib/pbdrv/pb-write.c
@@ -0,0 +1 @@
+#include "pb-write.h"
diff --git a/lib/pbdrv/pb-write.h b/lib/pbdrv/pb-write.h
new file mode 100644
index 0000000..45dcbb0
--- /dev/null
+++ b/lib/pbdrv/pb-write.h
@@ -0,0 +1,3 @@
+#pragma once
+
+
diff --git a/shared/pb/bus.h b/lib/pbdrv/pb.h
index 6f464c3..e37d785 100644
--- a/shared/pb/bus.h
+++ b/lib/pbdrv/pb.h
@@ -14,5 +14,5 @@
// #define BUSADDR_MOD_AUTOMATION 0
// main controller
-#define BUSADDR_MAIN 0x00
+#define BUSADDR_MOD_MAIN 0x00
diff --git a/shared/pb/spec.adoc b/lib/pbdrv/spec.adoc
index 3172e84..3172e84 100644
--- a/shared/pb/spec.adoc
+++ b/lib/pbdrv/spec.adoc
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index 6390d7c..70cd901 100644
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -7,7 +7,8 @@ set(PICO_BOARD pico_w)
include(lib/pico-sdk/pico_sdk_init.cmake)
include(lib/FreeRTOS-Kernel/portable/ThirdParty/GCC/RP2040/FreeRTOS_Kernel_import.cmake)
-include(../i2ctcp/include.cmake)
+add_subdirectory(lib/mpack)
+add_subdirectory(lib/i2ctcp)
project(puzzlebox_main C CXX ASM)
diff --git a/main/compile_commands.json b/main/compile_commands.json
deleted file mode 120000
index 25eb4b2..0000000
--- a/main/compile_commands.json
+++ /dev/null
@@ -1 +0,0 @@
-build/compile_commands.json \ No newline at end of file
diff --git a/puzzle/dummy/CMakeLists.txt b/puzzle/dummy/CMakeLists.txt
index acc567c..435a2ad 100644
--- a/puzzle/dummy/CMakeLists.txt
+++ b/puzzle/dummy/CMakeLists.txt
@@ -14,7 +14,7 @@ set(ARDUINO_BOARD "Arduino Uno [avr.uno]")
project(pb_mod_dummy C CXX)
-include(../../shared/pb.cmake)
+add_subdirectory(lib/pbdrv)
add_executable(main
main.cpp
diff --git a/puzzle/dummy/main.cpp b/puzzle/dummy/main.cpp
index edcc587..1c79441 100644
--- a/puzzle/dummy/main.cpp
+++ b/puzzle/dummy/main.cpp
@@ -1,7 +1,7 @@
#include <Arduino.h>
#include <Wire.h>
-#include "pb/drv/arduino/mod.h"
+#include "drv/arduino/mod.h"
const char * PBDRV_MOD_NAME = "dummy";
const i2c_addr_t PBDRV_MOD_ADDR = 0x20;
@@ -10,8 +10,5 @@ void setup() {
pbdrv_setup();
}
-void loop() {
- pbdrv_i2c_send(0x00, (uint8_t *) "hoi", 3);
- delay(100);
-}
+void loop() { }
diff --git a/shared/pb.cmake b/shared/pb.cmake
deleted file mode 100644
index 71a28cb..0000000
--- a/shared/pb.cmake
+++ /dev/null
@@ -1,20 +0,0 @@
-if(DEFINED ARDUINO)
- set(PBDRV_ARDUINO true)
-endif()
-
-include_directories(${CMAKE_CURRENT_LIST_DIR})
-
-list(APPEND PBDRV_SRCS "${CMAKE_CURRENT_LIST_DIR}/pb/moddrv.c")
-
-if(PBDRV_ARDUINO)
- list(APPEND PBDRV_SRCS "${CMAKE_CURRENT_LIST_DIR}/pb/drv/arduino/mod.cpp")
-endif()
-
-add_library(pbdrv-mod STATIC ${PBDRV_SRCS})
-
-if(PBDRV_ARDUINO)
- target_link_arduino_libraries(pbdrv-mod
- core
- Wire
- )
-endif()
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index e139c34..818c533 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -6,21 +6,20 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
project(pbtest C CXX ASM)
-include(../i2ctcp/include.cmake)
-include(../shared/pb.cmake)
-
add_executable(test
ExampleTest.cpp
i2ctcp/main.cpp
)
-# enable_testing()
add_subdirectory(lib/googletest)
+add_subdirectory(lib/pbdrv)
+add_subdirectory(lib/i2ctcp)
# target_include_directories(tests PRIVATE ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(test
gtest_main
i2ctcp
mpack
+ pbdrv
)