diff options
author | lonkaars <loek@pipeframe.xyz> | 2024-05-10 14:49:36 +0200 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2024-05-10 14:49:36 +0200 |
commit | 573643a1d3220830de47c810cb1a6be629ce7abd (patch) | |
tree | 162a6923f388fef4ab62ddb7ed4a2c82f274fa97 | |
parent | ae8dfd2028bfbac5f37bbf4f5d7c2d8bff618b02 (diff) |
WIP protobuf hello world
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | .gitmodules | 12 | ||||
-rw-r--r-- | client/.gitignore | 1 | ||||
-rw-r--r-- | client/CMakeLists.txt | 14 | ||||
l--------- | client/compile_commands.json | 1 | ||||
-rw-r--r-- | client/main.cpp | 25 | ||||
-rw-r--r-- | client/makefile | 2 | ||||
-rw-r--r-- | lazy.mk | 20 | ||||
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/.gitignore | 2 | ||||
l--------- | main/lib | 1 | ||||
-rw-r--r-- | main/makefile | 19 | ||||
-rw-r--r-- | proto/.gitignore | 1 | ||||
-rw-r--r-- | proto/include.cmake | 1 | ||||
-rw-r--r-- | proto/makefile | 7 | ||||
-rw-r--r-- | proto/puzbusv1.proto | 12 | ||||
-rw-r--r-- | test/CMakeLists.txt | 2 | ||||
l--------- | test/lib | 1 |
20 files changed, 98 insertions, 26 deletions
@@ -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 + @@ -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 |