Compare commits

...

7 Commits

Author SHA1 Message Date
jakeg00dwin e5c1021d25 removed old refences to camera handler 2024-03-22 11:44:58 -07:00
jakeg00dwin 503b4eba67 updated the avrgcc toolchain file 2024-03-22 11:43:28 -07:00
jakeg00dwin 41950059a6 updated to use in place sed editing 2024-03-22 11:35:40 -07:00
jakeg00dwin 0288b6eff3 added basic parts of the avr toolchain file 2024-03-22 11:35:30 -07:00
jakeg00dwin 621f7666a6 added include for module_name.h and also top comment with info. 2024-03-09 12:17:04 -08:00
jakeg00dwin af29123df1 changed the targeted standard to C18 and CXX18 2024-03-09 12:16:48 -08:00
jakeg00dwin 9d619fc16f Split apart large function into multiple parts. 2024-03-09 12:16:31 -08:00
4 changed files with 116 additions and 31 deletions

View File

@ -1,9 +1,20 @@
/*
* Author: username
* Date: todays_date
* filename: test_module_name.c
* description: module_purpose
*/
#include <stdarg.h> #include <stdarg.h>
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include <setjmp.h> #include <setjmp.h>
#include <cmocka.h> #include <cmocka.h>
/*Including the code under test*/
#include "module_name.h"
/* A test case that does nothing and succeeds. */ /* A test case that does nothing and succeeds. */
static void null_test_success(void **state) { static void null_test_success(void **state) {
(void) state; /* unused */ (void) state; /* unused */

View File

@ -14,12 +14,12 @@ set(TARGET_GROUP production CACHE STRING "Group to build")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Request C 11 standard features # Request C 11 standard features
set(CMAKE_C_STANDARD 17) set(CMAKE_C_STANDARD 18)
set(CMAKE_C_STANDARD_REQUIRED True) set(CMAKE_C_STANDARD_REQUIRED True)
set(CMAKE_C_FLAGS "-Wall -Werror -Wpedantic") set(CMAKE_C_FLAGS "-Wall -Werror -Wpedantic")
# SETUP THE CXX flags for .cpp # SETUP THE CXX flags for .cpp
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 18)
set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_FLAGS "-Wall -Werror -Wpedantic") set(CMAKE_CXX_FLAGS "-Wall -Werror -Wpedantic")

70
otto.sh
View File

@ -3,6 +3,7 @@
# Date: 2024 # Date: 2024
# Filename: otto.sh # Filename: otto.sh
USERNAME="Jake G"
CROSS_TC_WIN="$(pwd)/i686-w64-mingw32_toolchain.cmake" CROSS_TC_WIN="$(pwd)/i686-w64-mingw32_toolchain.cmake"
CMAKE_VERBOSE="ON" CMAKE_VERBOSE="ON"
CROSS_COMPILE=1 CROSS_COMPILE=1
@ -37,8 +38,8 @@ add_module_to_cmakes () {
remove_module_from_cmakes () { remove_module_from_cmakes () {
local basename="$1" local basename="$1"
sed "s/^.*add_subdirectory(${basename}).*$//g" ./src/CMakeLists.txt > ./src/CMakeLists.txt sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./src/CMakeLists.txt
sed "s/^.*add_subdirectory(${basename}).*$//g" ./tests/CMakeLists.txt > ./tests/CMakeLists.txt sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./tests/CMakeLists.txt
} }
git_add_module () { git_add_module () {
@ -85,6 +86,40 @@ git_remove_module () {
git rm -r ./tests/CMakeLists.txt git rm -r ./tests/CMakeLists.txt
} }
add_new_source_files () {
local modname="$1"
modname_cap=$(echo $modname | sed 's/[a-z]/\U&/g')
modsrc_dir="./src/${modname}"
mkdir $modsrc_dir
sed "s/module_name/${modname}/" $MODULE_DIR/module_name.c |
sed "3s/todays_date/$(date +%Y)/" |
sed "s/username/${USERNAME}/" > $modsrc_dir/${modname}.c
sed "s/module_name/${modname_cap}/" $MODULE_DIR/module_name.h |
sed "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.h |
sed "s/username/${USERNAME}/" > $modsrc_dir/${modname}.h
sed "s/module_name/${modname}/" $MODULE_DIR/CMakeLists.txt > $modsrc_dir/CMakeLists.txt
}
add_new_test_files () {
local modname="$1"
modtest_dir="./tests/${modname}"
mkdir $modtest_dir
sed "s/module_name/${modname}/" $MODULE_DIR/test_module_name.c
sed "3s/todays_date/$(date +%Y)/" |
sed "s/username/${USERNAME}/" > $modsrc_dir/test_${modname}.c
sed "s/module_name/${modname}/" $MODULE_DIR/TestCMakeLists.txt > $modtest_dir/CMakeLists.txt
}
add_new_module () { add_new_module () {
read -p "Enter the name of the module:" modname read -p "Enter the name of the module:" modname
@ -96,40 +131,19 @@ add_new_module () {
echo "Exiting without changing anything" echo "Exiting without changing anything"
exit exit
fi fi
modname_cap=$(echo $modname | sed 's/[a-z]/\U&/g')
modsrc_dir="./src/${modname}"
modtest_dir="./tests/${modname}"
echo "creating: ${modsrc_dir}, ${modtest_dir}"
mkdir $modsrc_dir
mkdir $modtest_dir
#copy the template files. #copy the template files.
echo "copying & customizing template files..." echo "copying & customizing template files..."
sed "s/module_name/${modname}/" $MODULE_DIR/module_name.c > $modsrc_dir/${modname}.c add_new_source_files "$modname"
sed "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.c > $modsrc_dir/${modname}.c add_new_test_files "$modname"
sed "s/module_name/${modname_cap}/" $MODULE_DIR/module_name.h > $modsrc_dir/${modname}.h
sed "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.h > $modsrc_dir/${modname}.h
sed "s/module_name/${modname}/" $MODULE_DIR/CMakeLists.txt > $modsrc_dir/CMakeLists.txt
sed "s/module_name/${modname}/" $MODULE_DIR/test_module_name.c > $modtest_dir/test_${modname}.c
sed "s/module_name/${modname}/" $MODULE_DIR/TestCMakeLists.txt > $modtest_dir/CMakeLists.txt
# Add the module to the cmake lists files. # Add the module to the cmake lists files in /src/ and /tests/
add_module_to_cmakes "${modname}" add_module_to_cmakes "${modname}"
echo "Resulting files/dirs:"
tree -L 2 $modsrc_dir
tree -L 2 $modtest_dir
# Now we add the new files to the git tracked files # Now we add the new files to the git tracked files
git_add_module "${modname}" git_add_module "${modname}"
} }
@ -147,7 +161,7 @@ cross_compile () {
build_release() { build_release() {
clear_cmake_cache clear_cmake_cache
cmake -DCAM_HANDLER_LIB=ON -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../ cmake -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../
} }
build_main () { build_main () {

View File

@ -0,0 +1,60 @@
#Name of the OS
set(CMAKE_SYSTEM_NAME )
set(PROG_TYPE usbasp)
#Default MCU setup
set(MCU atmega328p)
set(F_CPU 16000000)
set(BAUD 9600)
add_definitions(-DF_CPU=${F_CPU})
# program names
set(AVRCPP avr-g++)
set(AVRC avr-gcc)
set(AVRSTRIP avr-strip)
set(OBJCOPY avr-objcopy)
set(OBJDUMP avr-objdump)
set(AVRSIZE avr-size)
set(AVRDUDE avrdude)
# Sets the compiler
# Needs to come before the project function
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_CXX_COMPILER ${AVRCPP})
set(CMAKE_C_COMPILER ${AVRC})
set(CMAKE_ASM_COMPILER ${AVRC})
project (template_project C CXX ASM)
# Compiler flags
set(CSTANDARD "-std=gnu99")
set(CDEBUG "-gstabs -g -ggdb")
set(CWARN "-Wall -Wstrict-prototypes -Wl,--gc-sections -Wl,--relax")
set(CTUNING "-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunction-sections -fdata-sections")
set(COPT "-Os -lm -lprintf_flt")
set(CMCU "-mmcu=${MCU}")
set(CDEFS "-DF_CPU=${F_CPU} -DBAUD=${BAUD}")
set(CFLAGS "${CMCU} ${CDEBUG} ${CDEFS} ${COPT} ${CWARN} ${CSTANDARD} ${CTUNING}")
set(CXXFLAGS "${CMCU} ${CDEBUG} ${CDEFS} ${COPT} ${CTUNING}")
set(CMAKE_C_FLAGS "${CFLAGS}")
set(CMAKE_CXX_FLAGS "${CXXFLAGS}")
set(CMAKE_ASM_FLAGS "${CFLAGS}")
# Project setup
include_directories(${INC_PATH} ${LIB_INC_PATH})
add_executable(${PROJECT_NAME} ${SRC_FILES} ${LIB_SRC_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}.elf")
# Compiling targets
add_custom_target(strip ALL ${AVRSTRIP} "${PROJECT_NAME}.elf" DEPENDS ${PROJECT_NAME})
add_custom_target(hex ALL ${OBJCOPY} -R .eeprom -O ihex "${PROJECT_NAME}.elf" "${PROJECT_NAME}.hex" DEPENDS strip)
add_custom_target(eeprom ${OBJCOPY} -j .eeprom --change-section-lma .eeprom=0 -O ihex "${PROJECT_NAME}.elf" "${PROJECT_NAME}.eeprom" DEPENDS strip)
# We want "flash" to be a build target.
add_custom_target(flash ${AVRDUDE} -c ${PROG_TYPE} -p ${MCU} -U flash:w:${PROJECT_NAME}.hex DEPENDS hex)
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${PROJECT_NAME}.hex;${PROJECT_NAME}.eeprom;${PROJECT_NAME}.lst")