-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore(stacker): create project #450
Merged
Merged
Changes from 4 commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
37c07bb
PLAT-445 stacker skeleton
ahiuchingau 1c3197f
add errors
ahiuchingau fcd03f5
add motor pins
ahiuchingau a78f357
add ci workflow
ahiuchingau 1ca12be
use correct preset name
ahiuchingau 9f63ec3
fix github workflow name
ahiuchingau 67b32f3
use stm32 vid and pick a random pid
ahiuchingau debc5fb
rename stacker to flex-stacker
ahiuchingau 7b3244f
missed a file
ahiuchingau File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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,97 @@ | ||
name: 'Tempdeck Gen3 build/test' | ||
on: | ||
pull_request: | ||
paths: | ||
- 'stm32-modules/stacker/**/*' | ||
- 'stm32-modules/common/**/*' | ||
- 'stm32-modules/include/common/**/*' | ||
- 'stm32-modules/include/stacker/**/*' | ||
- 'cmake/**/*' | ||
- 'CMakeLists.txt' | ||
- 'stm32-modules/CMakeLists.txt' | ||
- 'CMakePresets.json' | ||
- '.clang-format' | ||
- '.clang-tidy' | ||
- 'cpp-utils/**/*' | ||
paths_ignore: | ||
- 'cmake/Arduino*' | ||
push: | ||
paths: | ||
- 'stm32-modules/stacker/**/*' | ||
- 'stm32-modules/common/**/*' | ||
- 'stm32-modules/include/common/**/*' | ||
- 'stm32-modules/include/stacker/**/*' | ||
- 'cmake/**/*' | ||
- 'CMakeLists.txt' | ||
- 'stm32-modules/CMakeLists.txt' | ||
- 'CMakePresets.json' | ||
- '.clang-format' | ||
- '.clang-tidy' | ||
- '.github/workflows/stacker.yaml' | ||
paths_ignore: | ||
- 'cmake/Arduino*' | ||
branches: | ||
- '*' | ||
tags: | ||
- 'stacker@*' | ||
workflow_dispatch: | ||
|
||
|
||
defaults: | ||
run: | ||
shell: bash | ||
|
||
|
||
jobs: | ||
cross-compile-check: | ||
name: 'Cross-Compile/Check' | ||
runs-on: 'ubuntu-20.04' | ||
timeout-minutes: 10 | ||
steps: | ||
- uses: 'actions/checkout@v2' | ||
with: | ||
fetch-depth: 0 | ||
- uses: 'actions/cache@v2' | ||
with: | ||
key: stm32-cross-${{ secrets.MODULES_STM32_CACHE_VERSION }}-${{ hashFiles('cmake/*') }} | ||
restore-keys: stm32-cross-${{ secrets.MODULES_STM32_CACHE_VERSION }}- | ||
path: './stm32-tools' | ||
- name: 'Configure' | ||
run: cmake --preset=stm32-cross . | ||
- name: 'Format' | ||
run: cmake --build --preset cross --target stacker-format-ci | ||
- name: 'Lint' | ||
run: cmake --build --preset cross --target stacker-lint | ||
- name: 'Build startup app' | ||
run: cmake --build --preset cross --target stacker-startup | ||
- name: 'Build' | ||
run: cmake --build --preset cross --target stacker-hex | ||
- name: 'Build full image' | ||
run: cmake --build --preset cross --target stacker-image-hex | ||
- name: 'Build full image binary' | ||
run: cmake --build --preset cross --target stacker-image-bin | ||
host-compile-test: | ||
name: 'Host-Compile/Test' | ||
runs-on: 'ubuntu-20.04' | ||
timeout-minutes: 10 | ||
env: | ||
CC: gcc-10 | ||
CXX: g++-10 | ||
steps: | ||
- run: | | ||
sudo apt update | ||
sudo apt install gcc-10 g++-10 | ||
- uses: 'actions/checkout@v2' | ||
with: | ||
fetch-depth: 0 | ||
- uses: 'actions/cache@v2' | ||
with: | ||
path: './stm32-tools' | ||
key: stm32-host-${{ secrets.MODULES_STM32_CACHE_VERSION }}-${{ hashFiles('cmake/*') }} | ||
restore-keys: stm32-host-${{ secrets.MODULES_STM32_CACHE_VERSION }}- | ||
- name: 'Configure' | ||
run: cmake --preset=stm32-host . | ||
- name: 'Build Simulator' | ||
run: cmake --build --preset host --target stacker-simulator | ||
- name: 'Build and Test' | ||
run: cmake --build --preset stacker-build-and-test |
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 @@ | ||
/** | ||
* @file usb_hardware.h | ||
* @brief Header with forward definitions of functions | ||
* for firmware-specific USB control code. | ||
*/ | ||
|
||
#ifndef _USB_HARDWARE_C_ | ||
#define _USB_HARDWARE_C_ | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif // __cplusplus | ||
|
||
#include <stdint.h> | ||
|
||
/** | ||
* @brief Function pointer type to be invoked when a new | ||
* packet is received. | ||
* @details | ||
* - First parameter contains a pointer to the buffer of | ||
* data returned | ||
* - Second parameter contains the length of the data | ||
* returned | ||
* - The return value should be a pointer to the buffer | ||
* where the next packet of RX data shall be stored | ||
*/ | ||
typedef uint8_t *(*usb_rx_callback_t)(uint8_t *, uint32_t *); | ||
|
||
/** | ||
* @brief Function pointer used for specifying callback | ||
* for CDC initialization | ||
* @details | ||
* - Should return a pointer to a buffer to store RX packets | ||
*/ | ||
typedef uint8_t *(*usb_cdc_init_callback_t)(); | ||
|
||
/** | ||
* @brief Function pointer used for specifying callback | ||
* for CDC deinitialization | ||
*/ | ||
typedef void (*usb_cdc_deinit_callback_t)(); | ||
|
||
/** | ||
* @brief Initializes the USB hardware on the system. Provides function | ||
* pointers to the C code that will be invoked upon certain USB CDC events. | ||
* @param[in] rx_cb The function to call when a USB packet arrives | ||
* @param[in] cdc_init_cb Function to call when initializing CDC | ||
* @param[in] cdc_deinit_cb Function to call when deinitializing CDC | ||
*/ | ||
void usb_hw_init(usb_rx_callback_t rx_cb, usb_cdc_init_callback_t cdc_init_cb, | ||
usb_cdc_deinit_callback_t cdc_deinit_cb); | ||
|
||
/** | ||
* @brief Starts USB CDC on the system | ||
*/ | ||
void usb_hw_start(); | ||
|
||
/** | ||
* @brief Stop USB | ||
*/ | ||
void usb_hw_stop(); | ||
|
||
/** | ||
* @brief Send a packet over USB CDC | ||
* @param[in] buf The buffer to send | ||
* @param[in] len The length of the buffer to be sent | ||
*/ | ||
void usb_hw_send(uint8_t *buf, uint16_t len); | ||
|
||
#ifdef __cplusplus | ||
} // extern "C" | ||
#endif // __cplusplus | ||
#endif /* _USB_HARDWARE_C_ */ |
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,27 @@ | ||
#pragma once | ||
#include <charconv> | ||
#include <cstdint> | ||
|
||
#include "core/utility.hpp" | ||
|
||
namespace errors { | ||
|
||
enum class ErrorCode { | ||
// 0xx - General && comms | ||
NO_ERROR = 0, | ||
USB_TX_OVERRUN = 1, | ||
INTERNAL_QUEUE_FULL = 2, | ||
UNHANDLED_GCODE = 3, | ||
GCODE_CACHE_FULL = 4, | ||
BAD_MESSAGE_ACKNOWLEDGEMENT = 5, | ||
}; | ||
|
||
auto errorstring(ErrorCode code) -> const char*; | ||
|
||
template <typename Input, typename Limit> | ||
requires std::forward_iterator<Input> && std::sized_sentinel_for<Limit, Input> | ||
constexpr auto write_into(Input start, Limit end, ErrorCode code) -> Input { | ||
const char* str = errorstring(code); | ||
return write_string_to_iterpair(start, end, str); | ||
} | ||
}; // namespace errors |
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,37 @@ | ||
#FLEX Stacker | ||
|
||
# This variable defines the name of the target for this subfolder. | ||
set(TARGET_MODULE_NAME "stacker") | ||
|
||
add_subdirectory(src) | ||
|
||
if (${CMAKE_CROSSCOMPILING}) | ||
add_subdirectory(firmware) | ||
else() | ||
add_subdirectory(tests) | ||
add_subdirectory(simulator) | ||
endif() | ||
|
||
file(GLOB_RECURSE ${TARGET_MODULE_NAME}_SOURCES_FOR_FORMAT | ||
./*.cpp ./*.hpp ./*.h | ||
../include/${TARGET_MODULE_NAME}/*.hpp ../include/${TARGET_MODULE_NAME}/*.h) | ||
list(FILTER ${TARGET_MODULE_NAME}_SOURCES_FOR_FORMAT EXCLUDE REGEX ".*MCSDK.*") | ||
|
||
# Targets for formatting. These are here rather than in individual target CMakeLists (e.g. | ||
# the ones in tests/ or firmware/) because they don't have semantic reasoning involved and | ||
# can therefore operate on file globs, unlike lint/static analysis | ||
|
||
# Target for use during dev - edits files | ||
add_custom_target( | ||
${TARGET_MODULE_NAME}-format | ||
ALL | ||
COMMENT "Formatting code" | ||
COMMAND ${Clang_CLANGFORMAT_EXECUTABLE} -style=file -i ${${TARGET_MODULE_NAME}_SOURCES_FOR_FORMAT} | ||
) | ||
|
||
# Target for use in ci - warnings are errors, doesn't edit files | ||
add_custom_target( | ||
${TARGET_MODULE_NAME}-format-ci | ||
COMMENT "Checking format" | ||
COMMAND ${Clang_CLANGFORMAT_EXECUTABLE} -style=file -Werror --ferror-limit=0 -n ${${TARGET_MODULE_NAME}_SOURCES_FOR_FORMAT} | ||
) |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.