-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from YarikRevich/feature/base
Feature: implement basic logic
- Loading branch information
Showing
216 changed files
with
15,108 additions
and
26,386 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
name: Build | ||
|
||
on: [push, pull_request] | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- uses: xanderhendriks/[email protected] | ||
with: | ||
project-path: '.' | ||
project-target: './Debug' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# MacOS | ||
|
||
.DS_Store | ||
|
||
# CMake | ||
|
||
cmake-build-debug/ | ||
|
||
# CubeMX | ||
|
||
Debug/ | ||
|
||
# CubeIDE | ||
|
||
.settings/ | ||
|
||
# IDEA | ||
|
||
.idea/ |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
#THIS FILE IS AUTO GENERATED FROM THE TEMPLATE! DO NOT CHANGE! | ||
set(CMAKE_SYSTEM_NAME Generic) | ||
set(CMAKE_SYSTEM_VERSION 1) | ||
cmake_minimum_required(VERSION 3.27) | ||
|
||
# specify cross-compilers and tools | ||
set(CMAKE_C_COMPILER arm-none-eabi-gcc) | ||
set(CMAKE_CXX_COMPILER arm-none-eabi-g++) | ||
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc) | ||
set(CMAKE_AR arm-none-eabi-ar) | ||
set(CMAKE_OBJCOPY arm-none-eabi-objcopy) | ||
set(CMAKE_OBJDUMP arm-none-eabi-objdump) | ||
set(SIZE arm-none-eabi-size) | ||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) | ||
|
||
# project settings | ||
project(light_detector C CXX ASM) | ||
set(CMAKE_CXX_STANDARD 17) | ||
set(CMAKE_C_STANDARD 11) | ||
|
||
#Uncomment for hardware floating point | ||
#add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING) | ||
#add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) | ||
#add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) | ||
|
||
#Uncomment for software floating point | ||
#add_compile_options(-mfloat-abi=soft) | ||
|
||
add_compile_options(-mcpu=cortex-m4 -mthumb -mthumb-interwork) | ||
add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) | ||
|
||
# uncomment to mitigate c++17 absolute addresses warnings | ||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register") | ||
|
||
# Enable assembler files preprocessing | ||
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>) | ||
|
||
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release") | ||
message(STATUS "Maximum optimization for speed") | ||
add_compile_options(-Ofast) | ||
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") | ||
message(STATUS "Maximum optimization for speed, debug info included") | ||
add_compile_options(-Ofast -g) | ||
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel") | ||
message(STATUS "Maximum optimization for size") | ||
add_compile_options(-Os) | ||
else () | ||
message(STATUS "Minimal optimization, debug info included") | ||
add_compile_options(-Og -g) | ||
endif () | ||
|
||
include_directories(Core/Inc Core/External/Proto/Buffer Core/External/Proto/Buffer/Request Core/External/Proto/Buffer/Response Core/External/Sensor Core/External/Proto/Helper Core/External/Proto/Codec Core/External/Proto/Generated Core/External/Proto/Generated/Content Core/External/Scheduler Core/External/Scheduler/Handler Core/External/State Core/External/Tools/Indicator Core/External/Tools/Mutex Core/External/Tools/Sequence ThirdParty/Inc Drivers/STM32L4xx_HAL_Driver/Inc Drivers/STM32L4xx_HAL_Driver/Inc/Legacy Drivers/CMSIS/Device/ST/STM32L4xx/Include Drivers/CMSIS/Include) | ||
|
||
add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32L476xx) | ||
|
||
file(GLOB_RECURSE SOURCES "ThirdParty/*.*" "Core/*.*" "Drivers/*.*") | ||
|
||
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32L476RGTX_FLASH.ld) | ||
|
||
add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map) | ||
add_link_options(-mcpu=cortex-m4 -mthumb -mthumb-interwork) | ||
add_link_options(-T ${LINKER_SCRIPT}) | ||
|
||
add_executable(${PROJECT_NAME}.elf ${SOURCES} ${LINKER_SCRIPT}) | ||
|
||
set(HEX_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex) | ||
set(BIN_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.bin) | ||
|
||
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD | ||
COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE} | ||
COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE} | ||
COMMENT "Building ${HEX_FILE} | ||
Building ${BIN_FILE}") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
#${templateWarning} | ||
set(CMAKE_SYSTEM_NAME Generic) | ||
set(CMAKE_SYSTEM_VERSION 1) | ||
${cmakeRequiredVersion} | ||
# specify cross-compilers and tools | ||
set(CMAKE_C_COMPILER arm-none-eabi-gcc) | ||
set(CMAKE_CXX_COMPILER arm-none-eabi-g++) | ||
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc) | ||
set(CMAKE_AR arm-none-eabi-ar) | ||
set(CMAKE_OBJCOPY arm-none-eabi-objcopy) | ||
set(CMAKE_OBJDUMP arm-none-eabi-objdump) | ||
set(SIZE arm-none-eabi-size) | ||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) | ||
|
||
# project settings | ||
project(${projectName} C CXX ASM) | ||
set(CMAKE_CXX_STANDARD 17) | ||
set(CMAKE_C_STANDARD 11) | ||
|
||
#Uncomment for hardware floating point | ||
#add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING) | ||
#add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) | ||
#add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) | ||
|
||
#Uncomment for software floating point | ||
#add_compile_options(-mfloat-abi=soft) | ||
|
||
add_compile_options(-mcpu=${mcpu} -mthumb -mthumb-interwork) | ||
add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) | ||
|
||
# uncomment to mitigate c++17 absolute addresses warnings | ||
#set(CMAKE_CXX_FLAGS "$${CMAKE_CXX_FLAGS} -Wno-register") | ||
|
||
# Enable assembler files preprocessing | ||
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>) | ||
|
||
if ("$${CMAKE_BUILD_TYPE}" STREQUAL "Release") | ||
message(STATUS "Maximum optimization for speed") | ||
add_compile_options(-Ofast) | ||
elseif ("$${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") | ||
message(STATUS "Maximum optimization for speed, debug info included") | ||
add_compile_options(-Ofast -g) | ||
elseif ("$${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel") | ||
message(STATUS "Maximum optimization for size") | ||
add_compile_options(-Os) | ||
else () | ||
message(STATUS "Minimal optimization, debug info included") | ||
add_compile_options(-Og -g) | ||
endif () | ||
|
||
include_directories(${includes}) | ||
|
||
add_definitions(${defines}) | ||
|
||
file(GLOB_RECURSE SOURCES ${sources}) | ||
|
||
set(LINKER_SCRIPT $${CMAKE_SOURCE_DIR}/${linkerScript}) | ||
|
||
add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=$${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.map) | ||
add_link_options(-mcpu=${mcpu} -mthumb -mthumb-interwork) | ||
add_link_options(-T $${LINKER_SCRIPT}) | ||
|
||
add_executable($${PROJECT_NAME}.elf $${SOURCES} $${LINKER_SCRIPT}) | ||
|
||
set(HEX_FILE $${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.hex) | ||
set(BIN_FILE $${PROJECT_BINARY_DIR}/$${PROJECT_NAME}.bin) | ||
|
||
add_custom_command(TARGET $${PROJECT_NAME}.elf POST_BUILD | ||
COMMAND $${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:$${PROJECT_NAME}.elf> $${HEX_FILE} | ||
COMMAND $${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:$${PROJECT_NAME}.elf> $${BIN_FILE} | ||
COMMENT "Building $${HEX_FILE} | ||
Building $${BIN_FILE}") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
#include "request_buffer.h" | ||
|
||
template<uint32_t BUFFER_SIZE> | ||
RequestBuffer<BUFFER_SIZE>::RequestBuffer() : index(0), size(0), bytes{0} { | ||
} | ||
|
||
template<uint32_t BUFFER_SIZE> | ||
uint8_t * RequestBuffer<BUFFER_SIZE>::get_raw_buffer() { | ||
return this->bytes[0]; | ||
} | ||
|
||
template<uint32_t BUFFER_SIZE> | ||
uint32_t RequestBuffer<BUFFER_SIZE>::get_size() const { | ||
return index; | ||
} | ||
|
||
template<uint32_t BUFFER_SIZE> | ||
uint32_t RequestBuffer<BUFFER_SIZE>::get_max_size() const { | ||
return size; | ||
} | ||
|
||
template<uint32_t BUFFER_SIZE> | ||
bool RequestBuffer<BUFFER_SIZE>::peek(uint8_t &byte) const { | ||
bool result = this->index < this->size; | ||
if (result) { | ||
byte = *this->bytes[this->index]; | ||
} | ||
|
||
return result; | ||
} | ||
|
||
template<uint32_t BUFFER_SIZE> | ||
bool RequestBuffer<BUFFER_SIZE>::advance() { | ||
const bool result = this->index < this->size; | ||
if (result) { | ||
++this->index; | ||
} | ||
return result; | ||
} | ||
|
||
template<uint32_t BUFFER_SIZE> | ||
bool RequestBuffer<BUFFER_SIZE>::advance(const uint32_t src) { | ||
this->index += src; | ||
const bool result = this->index < this->size; | ||
if (result) { | ||
this->index = this->size; | ||
} | ||
|
||
return result; | ||
} | ||
|
||
template<uint32_t BUFFER_SIZE> | ||
bool RequestBuffer<BUFFER_SIZE>::pop(uint8_t &byte) { | ||
bool result = this->index < this->size; | ||
if (result) { | ||
byte = *this->bytes[this->index]; | ||
++this->index; | ||
} | ||
|
||
return result; | ||
} | ||
|
||
template class RequestBuffer<DEFAULT_REQUEST_BUFFER_SIZE>; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
#ifndef LIGHT_DETECTOR_REQUEST_BUFFER_H | ||
#define LIGHT_DETECTOR_REQUEST_BUFFER_H | ||
|
||
#include "ReadBufferInterface.h" | ||
|
||
#include <cstdio> | ||
|
||
#define DEFAULT_REQUEST_BUFFER_SIZE 100 | ||
|
||
/** | ||
* Represents request buffer implementation for protocol buffers serialization. | ||
* | ||
* @tparam BUFFER_SIZE - given size of the internal request buffer. | ||
*/ | ||
template<uint32_t BUFFER_SIZE> | ||
class RequestBuffer : public EmbeddedProto::ReadBufferInterface { | ||
public: | ||
RequestBuffer(); | ||
|
||
~RequestBuffer() override = default; | ||
|
||
/** | ||
* Retrieves raw buffer used for direct data injection. | ||
* | ||
* @return raw buffer reference. | ||
*/ | ||
uint8_t *get_raw_buffer(); | ||
|
||
/** | ||
* @see EmbeddedProto::ReadBufferInterface | ||
*/ | ||
[[nodiscard]] uint32_t get_size() const override; | ||
|
||
/** | ||
* @see EmbeddedProto::ReadBufferInterface | ||
*/ | ||
[[nodiscard]] uint32_t get_max_size() const override; | ||
|
||
/** | ||
* @see EmbeddedProto::ReadBufferInterface | ||
*/ | ||
bool peek(uint8_t &byte) const override; | ||
|
||
/** | ||
* @see EmbeddedProto::ReadBufferInterface | ||
*/ | ||
bool advance() override; | ||
|
||
/** | ||
* @see EmbeddedProto::ReadBufferInterface | ||
*/ | ||
bool advance(const uint32_t N) override; | ||
|
||
/** | ||
* @see EmbeddedProto::ReadBufferInterface | ||
*/ | ||
bool pop(uint8_t &byte) override; | ||
|
||
private: | ||
/** | ||
* Represents current buffer cursor position. | ||
*/ | ||
uint32_t index; | ||
|
||
/** | ||
* Represents max size of the buffer. | ||
*/ | ||
uint32_t size = BUFFER_SIZE; | ||
|
||
/** | ||
* Represents current buffer data. | ||
*/ | ||
uint8_t *bytes[BUFFER_SIZE]; | ||
}; | ||
|
||
#endif //LIGHT_DETECTOR_REQUEST_BUFFER_H |
Oops, something went wrong.