Started with gobotrpc autogenerated parser and ctest (not working)

This commit is contained in:
AlexanderHD27
2025-01-19 11:45:41 +01:00
parent 346e6a52b7
commit 33d3dc0608
24 changed files with 409 additions and 55 deletions

BIN
gobotrpc/.gitignore (Stored with Git LFS) vendored Normal file

Binary file not shown.

22
gobotrpc/.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,22 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"taskName": "Run Main",
"command": "python3 generator/main.py",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "dedicated",
"focus": true,
"clear": true
},
},
]
}

View File

@@ -1 +0,0 @@
,alexander,ideapad-QZYAFJK,12.01.2025 02:07,file:///home/alexander/.config/libreoffice/4;

BIN
gobotrpc/generator/main.py (Stored with Git LFS)

Binary file not shown.

BIN
gobotrpc/generator/src/__init__.py (Stored with Git LFS)

Binary file not shown.

BIN
gobotrpc/generator/src/backend/__init__.py (Stored with Git LFS) Normal file

Binary file not shown.

BIN
gobotrpc/generator/src/backend/cpp.py (Stored with Git LFS)

Binary file not shown.

BIN
gobotrpc/generator/src/backend/cpp/converter.py (Stored with Git LFS) Normal file

Binary file not shown.

BIN
gobotrpc/generator/src/backend/cpp/render.py (Stored with Git LFS) Normal file

Binary file not shown.

BIN
gobotrpc/generator/src/util.py (Stored with Git LFS)

Binary file not shown.

View File

@@ -0,0 +1,13 @@
add_libary(gobotrpc STATIC)
target_sources(gobotrpc
PRIVATE
{%- for n in cpp_files %}
{{ n }}
{%- endfor %}
)
target_include_directories(gobotrpc
PUBLIC
include
)

View File

@@ -0,0 +1,29 @@
#pragma once
/**
* This Header file was auto-generated by the GobotRPC-Protocol-Generator-Tool
*/
#include {{ "<stdint.h>" }}
#include "{{ enum_header_file }}"
enum {{ prefix }}RPCNames {{"{"}}
{%- for n in rpcNames %}
{{ n }} = {{ rpcNames[n] }},
{%- endfor %}
{{"}"}};
enum {{ prefix }}RPCTypes {{"{"}}
{%- for n in rpcTypes %}
{{ n }} = {{ rpcTypes[n] }},
{%- endfor %}
{{"}"}};
int getPackageSize(uint8_t data);
{% for struct in package_list %}
struct {{ struct.name }} {{ "{" }}
{% for field in struct.fields -%}
{{ "\t" }}{{ field.type }} {{ field.name }} : {{ field.size_bits }};
{% endfor -%}
{{ "}" }};
{% endfor %}

View File

@@ -0,0 +1,20 @@
#pragma once
/**
* This Header file was auto-generated by the GobotRPC-Protocol-Generator-Tool
*/
#include {{ "<stdint.h>" }}
{%- for h in headers %}
#include {{ "\"" + h + "\"" }}
{%- endfor %}
int getPackageSize(uint8_t data) {
switch(data) {
{%- for n in rpcSizes %}
case {{ prefix }}RPCNames::{{ n }}:
return {{ rpcSizes[n] }};
{%- endfor %}
default:
return -1;
}
};

25
gobotrpc/out/cpp/.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,25 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "cmake",
"label": "CMake: build",
"command": "build",
"targets": [
"all"
],
"group": "build",
"problemMatcher": [],
"detail": "CMake template build task",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "dedicated",
"showReuseMessage": true,
"clear": true
}
},
]
}

View File

@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.28.3)
project(TestingGobotRPCParser)
# GoogleTest requires at least C++23
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Adding gtest
include(FetchContent)
FetchContent_Declare(
googletest
gcov
URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
)
FetchContent_MakeAvailable(googletest)
add_executable(TestingGobotRPCParser test/main.cpp)
target_link_libraries(TestingGobotRPCParser gtest_main)

View File

View File

@@ -0,0 +1,11 @@
add_libary(gobotrpc STATIC)
target_sources(gobotrpc
PRIVATE
src/package_util.cpp
)
target_include_directories(gobotrpc
PUBLIC
include
)

View File

@@ -0,0 +1,33 @@
#pragma once
/**
* This Header file was auto-generated by the GobotRPC-Protocol-Generator-Tool
*/
enum class GOBOTRPC_ENUM_NodeType {
kHub = 0,
kHead = 1,
kCorexy = 2,
kVacun = 3,
};
enum class GOBOTRPC_ENUM_NodeStatus {
kReady = 0,
kWorking = 1,
kBusy = 2,
kError = 3,
};
enum class GOBOTRPC_ENUM_ErrorCode {
};
enum class GOBOTRPC_ENUM_HeadPos {
kUp = 0,
kDown = 1,
};
enum class GOBOTRPC_ENUM_StoneStatus {
kEmpty = 0,
kLow = 1,
kFill = 2,
};

View File

@@ -1,33 +0,0 @@
#pragma once
/**
* This Header file was auto-generated by the GobotRPC-Protocol-Generator-Tool
*/
enum class GOBOTRPC_ENUM_NodeType {
GOBOTRPC_ENUM_kHub = 0,
GOBOTRPC_ENUM_kHead = 1,
GOBOTRPC_ENUM_kCorexy = 2,
GOBOTRPC_ENUM_kVacun = 3,
};
enum class GOBOTRPC_ENUM_NodeStatus {
GOBOTRPC_ENUM_kReady = 0,
GOBOTRPC_ENUM_kWorking = 1,
GOBOTRPC_ENUM_kBusy = 2,
GOBOTRPC_ENUM_kError = 3,
};
enum class GOBOTRPC_ENUM_ErrorCode {
};
enum class GOBOTRPC_ENUM_HeadPos {
GOBOTRPC_ENUM_kUp = 0,
GOBOTRPC_ENUM_kDown = 1,
};
enum class GOBOTRPC_ENUM_StoneStatus {
GOBOTRPC_ENUM_kEmpty = 0,
GOBOTRPC_ENUM_kLow = 1,
GOBOTRPC_ENUM_kFill = 2,
};

View File

@@ -0,0 +1,127 @@
#pragma once
/**
* This Header file was auto-generated by the GobotRPC-Protocol-Generator-Tool
*/
#include <stdint.h>
#include "enums.hpp"
enum GOBOTRPC_RPCNames {
kInvalid = 255,
kGetInfo = 1,
kReset = 2,
kResetInfo = 3,
kStatusUpdate = 4,
kError = 5,
kHome = 7,
kGoto = 9,
kSetBoardCorner = 11,
kSetVacumOffset = 13,
kReleaseMotors = 15,
kDrop = 17,
kStoneStatus = 19,
kMoveZAxis = 21,
kSetVacum = 23,
};
enum GOBOTRPC_RPCTypes {
kReq = 0,
kRes = 1,
};
int getPackageSize(uint8_t data);
struct GOBOTRPC_GetInfoReq {
};
struct GOBOTRPC_GetInfoRes {
int32_t addr : 32;
GOBOTRPC_ENUM_NodeType type : 8;
GOBOTRPC_ENUM_NodeStatus status : 8;
};
struct GOBOTRPC_ResetReq {
};
struct GOBOTRPC_ResetInfoRes {
GOBOTRPC_ENUM_NodeStatus status : 8;
};
struct GOBOTRPC_StatusUpdateRes {
GOBOTRPC_ENUM_NodeStatus status : 8;
};
struct GOBOTRPC_ErrorRes {
GOBOTRPC_ENUM_ErrorCode error : 8;
};
struct GOBOTRPC_HomeReq {
};
struct GOBOTRPC_HomeRes {
int32_t x : 32;
int32_t y : 32;
};
struct GOBOTRPC_GotoReq {
int8_t x : 8;
int8_t y : 8;
bool offset : 8;
};
struct GOBOTRPC_GotoRes {
};
struct GOBOTRPC_SetBoardCornerReq {
int32_t x1 : 32;
int32_t y1 : 32;
int32_t x2 : 32;
int32_t y2 : 32;
};
struct GOBOTRPC_SetBoardCornerRes {
};
struct GOBOTRPC_SetVacumOffsetReq {
int32_t x : 32;
int32_t y : 32;
};
struct GOBOTRPC_SetVacumOffsetRes {
};
struct GOBOTRPC_ReleaseMotorsReq {
bool enable : 8;
};
struct GOBOTRPC_ReleaseMotorsRes {
};
struct GOBOTRPC_DropReq {
};
struct GOBOTRPC_DropRes {
GOBOTRPC_ENUM_StoneStatus status : 8;
};
struct GOBOTRPC_StoneStatusReq {
};
struct GOBOTRPC_StoneStatusRes {
GOBOTRPC_ENUM_StoneStatus status : 8;
};
struct GOBOTRPC_MoveZAxisReq {
GOBOTRPC_ENUM_HeadPos pos : 8;
};
struct GOBOTRPC_MoveZAxisRes {
};
struct GOBOTRPC_SetVacumReq {
bool enable : 8;
};
struct GOBOTRPC_SetVacumRes {
};

View File

@@ -0,0 +1,63 @@
#pragma once
/**
* This Header file was auto-generated by the GobotRPC-Protocol-Generator-Tool
*/
#include <stdint.h>
#include "package_structs.hpp"
#include "enums.hpp"
int getPackageSize(uint8_t data) {
switch(data) {
case RPCNames::GOBOTRPC_GetInfoReq:
return 0;
case RPCNames::GOBOTRPC_GetInfoRes:
return 6;
case RPCNames::GOBOTRPC_ResetReq:
return 0;
case RPCNames::GOBOTRPC_ResetInfoRes:
return 1;
case RPCNames::GOBOTRPC_StatusUpdateRes:
return 1;
case RPCNames::GOBOTRPC_ErrorRes:
return 1;
case RPCNames::GOBOTRPC_HomeReq:
return 0;
case RPCNames::GOBOTRPC_HomeRes:
return 8;
case RPCNames::GOBOTRPC_GotoReq:
return 3;
case RPCNames::GOBOTRPC_GotoRes:
return 0;
case RPCNames::GOBOTRPC_SetBoardCornerReq:
return 16;
case RPCNames::GOBOTRPC_SetBoardCornerRes:
return 0;
case RPCNames::GOBOTRPC_SetVacumOffsetReq:
return 8;
case RPCNames::GOBOTRPC_SetVacumOffsetRes:
return 0;
case RPCNames::GOBOTRPC_ReleaseMotorsReq:
return 1;
case RPCNames::GOBOTRPC_ReleaseMotorsRes:
return 0;
case RPCNames::GOBOTRPC_DropReq:
return 0;
case RPCNames::GOBOTRPC_DropRes:
return 1;
case RPCNames::GOBOTRPC_StoneStatusReq:
return 0;
case RPCNames::GOBOTRPC_StoneStatusRes:
return 1;
case RPCNames::GOBOTRPC_MoveZAxisReq:
return 1;
case RPCNames::GOBOTRPC_MoveZAxisRes:
return 0;
case RPCNames::GOBOTRPC_SetVacumReq:
return 1;
case RPCNames::GOBOTRPC_SetVacumRes:
return 0;
default:
return -1;
}
};

View File

@@ -0,0 +1,14 @@
#include <gtest/gtest.h>
TEST(DummyTest, BasicAssertions) {
// Expect two strings not to be equal.
EXPECT_STRNE("hello", "world");
// Expect equality.
EXPECT_EQ(7 * 6, 42);
}
int main(int argc, char * argv[]) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@@ -1,19 +1,9 @@
Bottleneck @ file:///croot/bottleneck_1731058641041/work
defusedxml==0.7.1 defusedxml==0.7.1
ezodf==0.3.2 ezodf==0.3.2
Jinja2==3.1.5 Jinja2==3.1.5
lxml==5.3.0 lxml==5.3.0
MarkupSafe==3.0.2 MarkupSafe==3.0.2
mkl-service==2.4.0 mkl-service==2.4.0
mkl_fft @ file:///io/mkl313/mkl_fft_1730824109137/work
mkl_random @ file:///io/mkl313/mkl_random_1730823916628/work
numexpr @ file:///croot/numexpr_1730215937391/work
numpy @ file:///croot/numpy_and_numpy_base_1725470312869/work/dist/numpy-2.0.1-cp312-cp312-linux_x86_64.whl#sha256=e2374991344fa2241a2153ef3d550d3a1cd2d50cb1f1d51eddc82870abc88021
odfpy==1.4.1 odfpy==1.4.1
pandas @ file:///croot/pandas_1732735089971/work/dist/pandas-2.2.3-cp312-cp312-linux_x86_64.whl#sha256=57b66702d418720ec8483f7c4ec7c08d41815316ad7ce09d5b7bbc34eefcfdfd
python-dateutil @ file:///croot/python-dateutil_1716495738603/work
pytz @ file:///croot/pytz_1713974312559/work
setuptools==75.1.0 setuptools==75.1.0
six @ file:///tmp/build/80754af9/six_1644875935023/work
tzdata @ file:///croot/python-tzdata_1690578112552/work
wheel==0.44.0 wheel==0.44.0

View File

@@ -34,9 +34,21 @@
"icon": "lucide-file", "icon": "lucide-file",
"title": "CAN Protocol" "title": "CAN Protocol"
} }
},
{
"id": "cb5a4191e020890f",
"type": "leaf",
"state": {
"type": "release-notes",
"state": {
"currentVersion": "1.7.7"
},
"icon": "lucide-file",
"title": "Release Notes 1.7.7"
}
} }
], ],
"currentTab": 1 "currentTab": 2
} }
], ],
"direction": "vertical" "direction": "vertical"
@@ -178,7 +190,7 @@
"command-palette:Open command palette": false "command-palette:Open command palette": false
} }
}, },
"active": "e41a6e6ed9e71bfa", "active": "cb5a4191e020890f",
"lastOpenFiles": [ "lastOpenFiles": [
"Untitled.canvas", "Untitled.canvas",
"CAN Protocol.md", "CAN Protocol.md",