aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2024-05-10 14:49:36 +0200
committerlonkaars <loek@pipeframe.xyz>2024-05-10 14:49:36 +0200
commit573643a1d3220830de47c810cb1a6be629ce7abd (patch)
tree162a6923f388fef4ab62ddb7ed4a2c82f274fa97
parentae8dfd2028bfbac5f37bbf4f5d7c2d8bff618b02 (diff)
WIP protobuf hello world
-rw-r--r--.gitignore3
-rw-r--r--.gitmodules12
-rw-r--r--client/.gitignore1
-rw-r--r--client/CMakeLists.txt14
l---------client/compile_commands.json1
-rw-r--r--client/main.cpp25
-rw-r--r--client/makefile2
-rw-r--r--lazy.mk20
m---------lib/FreeRTOS-Kernel (renamed from main/lib/FreeRTOS-Kernel)0
m---------lib/googletest (renamed from test/lib/googletest)0
m---------lib/pico-sdk (renamed from main/lib/pico-sdk)0
-rw-r--r--main/.gitignore2
l---------main/lib1
-rw-r--r--main/makefile19
-rw-r--r--proto/.gitignore1
-rw-r--r--proto/include.cmake1
-rw-r--r--proto/makefile7
-rw-r--r--proto/puzbusv1.proto12
-rw-r--r--test/CMakeLists.txt2
l---------test/lib1
20 files changed, 98 insertions, 26 deletions
diff --git a/.gitignore b/.gitignore
index 0902ca8..19dc4f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
build
-.vscode/** \ No newline at end of file
+.vscode/**
+.cache
diff --git a/.gitmodules b/.gitmodules
index 58b768d..fc98963 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,15 +1,15 @@
-[submodule "main/lib/pico-sdk"]
- path = main/lib/pico-sdk
+[submodule "pico-sdk"]
+ path = lib/pico-sdk
url = https://github.com/raspberrypi/pico-sdk
branch = 1.5.1
shallow = true
-[submodule "test/lib/googletest"]
- path = test/lib/googletest
+[submodule "googletest"]
+ path = lib/googletest
url = https://github.com/google/googletest
branch = v1.14.0
shallow = true
-[submodule "main/lib/FreeRTOS-Kernel"]
- path = main/lib/FreeRTOS-Kernel
+[submodule "FreeRTOS-Kernel"]
+ path = lib/FreeRTOS-Kernel
url = https://github.com/FreeRTOS/FreeRTOS-Kernel
branch = V11.1.0
shallow = true
diff --git a/client/.gitignore b/client/.gitignore
new file mode 100644
index 0000000..ba2906d
--- /dev/null
+++ b/client/.gitignore
@@ -0,0 +1 @@
+main
diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt
new file mode 100644
index 0000000..9e433b1
--- /dev/null
+++ b/client/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)
+
+include(../proto/include.cmake)
+
+project(puzzlebox_client C CXX)
+
+add_executable(main
+ main.cpp
+ )
+
diff --git a/client/compile_commands.json b/client/compile_commands.json
new file mode 120000
index 0000000..25eb4b2
--- /dev/null
+++ b/client/compile_commands.json
@@ -0,0 +1 @@
+build/compile_commands.json \ No newline at end of file
diff --git a/client/main.cpp b/client/main.cpp
new file mode 100644
index 0000000..7a05049
--- /dev/null
+++ b/client/main.cpp
@@ -0,0 +1,25 @@
+#include <cstdio>
+#include <string>
+
+#include "puzbusv1.pb.h"
+
+int main() {
+ GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+ puzbus::I2CMsg test_msg;
+
+ test_msg.set_address(0x39);
+ test_msg.set_data("Test message data!");
+
+ std::string output;
+ test_msg.SerializeToString(&output);
+
+ printf("output[%lu]:\n", output.size());
+ for (size_t i = 0; i < output.size(); i++) {
+ printf("%02x ", output[i]);
+ }
+ printf("\n");
+
+ return 0;
+}
+
diff --git a/client/makefile b/client/makefile
new file mode 100644
index 0000000..8352615
--- /dev/null
+++ b/client/makefile
@@ -0,0 +1,2 @@
+include ../lazy.mk
+
diff --git a/lazy.mk b/lazy.mk
new file mode 100644
index 0000000..2620961
--- /dev/null
+++ b/lazy.mk
@@ -0,0 +1,20 @@
+# this file is for lazy people (loek)
+
+BUILD_DIR ?= build
+TARGET ?= $(BUILD_DIR)/main
+
+.PHONY: FORCE
+
+all: FORCE $(TARGET)
+
+$(BUILD_DIR)/build.ninja: CMakeLists.txt
+ mkdir -p $(BUILD_DIR)
+ cmake -B $(BUILD_DIR) -G Ninja --fresh --log-level WARNING
+
+$(TARGET): $(BUILD_DIR)/build.ninja FORCE
+ ninja -C $(BUILD_DIR)
+# ninja automatically builds in parallel, so is preferred
+
+clean: FORCE
+ $(RM) -r $(BUILD_DIR)
+
diff --git a/main/lib/FreeRTOS-Kernel b/lib/FreeRTOS-Kernel
-Subproject dbf70559b27d39c1fdb68dfb9a32140b6a6777a
+Subproject dbf70559b27d39c1fdb68dfb9a32140b6a6777a
diff --git a/test/lib/googletest b/lib/googletest
-Subproject 5197b1a8e6a1ef9f214f4aa537b0be17cbf9194
+Subproject 5197b1a8e6a1ef9f214f4aa537b0be17cbf9194
diff --git a/main/lib/pico-sdk b/lib/pico-sdk
-Subproject 6a7db34ff63345a7badec79ebea3aaef1712f37
+Subproject 6a7db34ff63345a7badec79ebea3aaef1712f37
diff --git a/main/.gitignore b/main/.gitignore
index 7c3ba25..0e56cf2 100644
--- a/main/.gitignore
+++ b/main/.gitignore
@@ -1,3 +1 @@
config.h
-build
-.cache
diff --git a/main/lib b/main/lib
new file mode 120000
index 0000000..dc598c5
--- /dev/null
+++ b/main/lib
@@ -0,0 +1 @@
+../lib \ No newline at end of file
diff --git a/main/makefile b/main/makefile
index 1986cd3..9df4f09 100644
--- a/main/makefile
+++ b/main/makefile
@@ -1,22 +1,9 @@
-# this file is for lazy people (loek)
+TARGET = $(BUILD_DIR)/main.uf2
-.PHONY: FORCE
+include ../lazy.mk
-all: FORCE build/main.uf2
-
-build/build.ninja: CMakeLists.txt
- mkdir -p build
- cmake -B build -G Ninja --fresh --log-level WARNING
-
-build/main.uf2: build/build.ninja FORCE
- ninja -C build
-# ninja automatically builds in parallel, so is preferred
-
-flash: build/main.uf2 FORCE
+flash: $(TARGET) FORCE
picotool load -fx $<
# -f forces a reboot of the pico before flashing
# -x resets the pico after flashing
-clean: FORCE
- $(RM) -r build
-
diff --git a/proto/.gitignore b/proto/.gitignore
new file mode 100644
index 0000000..75feca5
--- /dev/null
+++ b/proto/.gitignore
@@ -0,0 +1 @@
+*.pb.*
diff --git a/proto/include.cmake b/proto/include.cmake
new file mode 100644
index 0000000..d5beaef
--- /dev/null
+++ b/proto/include.cmake
@@ -0,0 +1 @@
+include_directories(${CMAKE_CURRENT_LIST_DIR})
diff --git a/proto/makefile b/proto/makefile
new file mode 100644
index 0000000..3bc4ca4
--- /dev/null
+++ b/proto/makefile
@@ -0,0 +1,7 @@
+PROTOCARGS += --cpp_out .
+
+all: puzbusv1.pb.cc puzbusv1.pb.h
+
+%.pb.cc %.pb.h &: %.proto
+ protoc $(PROTOCARGS) $<
+
diff --git a/proto/puzbusv1.proto b/proto/puzbusv1.proto
new file mode 100644
index 0000000..6b4fa52
--- /dev/null
+++ b/proto/puzbusv1.proto
@@ -0,0 +1,12 @@
+syntax = "proto2";
+
+package puzbus;
+
+message I2CMsg {
+ // 32-bit is the smallest integer format supported by protobuf, even though
+ // we only need 7-10 bits for the I2C address.
+ required uint32 address = 1;
+
+ optional bytes data = 2;
+}
+
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index a0bd099..a280a86 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -20,4 +20,4 @@ target_link_libraries(tests PRIVATE gtest_main)
add_test(
NAME tests
COMMAND tests
-) \ No newline at end of file
+)
diff --git a/test/lib b/test/lib
new file mode 120000
index 0000000..dc598c5
--- /dev/null
+++ b/test/lib
@@ -0,0 +1 @@
+../lib \ No newline at end of file