Compare commits
7 Commits
b8839a9b2b
...
87aae7719b
Author | SHA1 | Date |
---|---|---|
jakeg00dwin | 87aae7719b | |
jakeg00dwin | 18009c9b1f | |
jakeg00dwin | f4c29d1ac5 | |
jakeg00dwin | 688603ecfb | |
jakeg00dwin | 0ec455a53c | |
jakeg00dwin | c1a6528a1f | |
jakeg00dwin | 0ca80bdef6 |
|
@ -1,3 +1,11 @@
|
||||||
main.o
|
main.o
|
||||||
main.map
|
main.map
|
||||||
main.elf
|
main.elf
|
||||||
|
build/CMakeFiles
|
||||||
|
build/src
|
||||||
|
build/tests
|
||||||
|
build/CMakeCache.txt
|
||||||
|
build/CTestTestfile.cmake
|
||||||
|
build/Makefile
|
||||||
|
build/cmake_install.cmake
|
||||||
|
build/compile_commands.json
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
cmake_minimum_required(VERSION 3.20)
|
||||||
|
|
||||||
|
# Use the fancy version substitution
|
||||||
|
project(cmake-cpputest-template
|
||||||
|
VERSION 1.0
|
||||||
|
DESCRIPTION "template for cmake + cpputest"
|
||||||
|
LANGUAGES C CXX
|
||||||
|
)
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
|
set(TARGET_GROUP production CACHE STRING "Group to build")
|
||||||
|
|
||||||
|
if(MSVC OR MSYS OR MINGW)
|
||||||
|
message("### SETUP FOR WINDOWS ###")
|
||||||
|
add_definitions(-DWINDOWS)
|
||||||
|
else()
|
||||||
|
message("### SETUP FOR UNIX ###")
|
||||||
|
add_definitions(-DUNIX)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# For being able to used LSP
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
|
# Request C 17 standard features
|
||||||
|
set(CMAKE_C_STANDARD 17)
|
||||||
|
set(CMAKE_C_STANDARD_REQUIRED True)
|
||||||
|
set(CMAKE_C_FLAGS "-Wall -Werror -Wpedantic")
|
||||||
|
|
||||||
|
# SETUP THE CXX flags for .cpp
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||||
|
set(CMAKE_CXX_FLAGS "-Wall -Werror -Wpedantic")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# #######################################
|
||||||
|
# TESTING STUFF
|
||||||
|
# #######################################
|
||||||
|
|
||||||
|
|
||||||
|
if (UNIT_TESTING)
|
||||||
|
|
||||||
|
if(DEFINED ENV{CPPUTEST_HOME})
|
||||||
|
message(STATUS "Using CppUTest home: $ENV{CPPUTEST_HOME}")
|
||||||
|
set(CPPUTEST_INCLUDE_DIRS $ENV{CPPUTEST_HOME}/include)
|
||||||
|
set(CPPUTEST_LIBRARIES $ENV{CPPUTEST_HOME}/lib)
|
||||||
|
set(CPPUTEST_LDFLAGS CppUTest CppUTestExt)
|
||||||
|
else()
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_search_module(CPPUTEST REQUIRED cpputest>=3.8)
|
||||||
|
message(STATUS "Found CppUTest version ${CPPUTEST_VERSION}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include_directories(
|
||||||
|
${CPPUTEST_INCLUDE_DIRS}
|
||||||
|
/usr/include/c++/11/
|
||||||
|
)
|
||||||
|
link_directories(${CPPUTEST_LIBRARIES})
|
||||||
|
|
||||||
|
add_subdirectory(tests)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# #######################################
|
||||||
|
# PROJECT SPECIFIC
|
||||||
|
# #######################################
|
||||||
|
|
||||||
|
add_subdirectory(src)
|
101
README.md
101
README.md
|
@ -1,101 +0,0 @@
|
||||||
# AVR ATiny13 Project 002
|
|
||||||
|
|
||||||
This is the firmware for a latching dual relay system. It allows the user to
|
|
||||||
switch two DPDT relays by with two separate switches.
|
|
||||||
|
|
||||||
|
|
||||||
## Components:
|
|
||||||
|
|
||||||
**Micro:** AVR ATiny13, ATiny25/45/85
|
|
||||||
|
|
||||||
## Instructions:
|
|
||||||
|
|
||||||
1. Power the system using a 1.8v~5.5v power supply
|
|
||||||
2. Set/program the AVR to use a 1MHz clock rate.
|
|
||||||
3. Connect the pins as described above.
|
|
||||||
|
|
||||||
**ACTIVATING RELAYS:**
|
|
||||||
|
|
||||||
1. Activate the desired button with a quick press <= 350ms.
|
|
||||||
2. Repeat to toggle the relay.
|
|
||||||
|
|
||||||
**TEMPORARY TOGGLE:**
|
|
||||||
|
|
||||||
1. Press and hold the desired button >= 350ms.
|
|
||||||
2. Let go to disable.
|
|
||||||
|
|
||||||
**SAVING SETTINGS:**
|
|
||||||
|
|
||||||
1. Press and hold the target button.
|
|
||||||
2. While holding the button power cycle the device.
|
|
||||||
3. When the setting is successfully saved the relay/led will blink/toggle.
|
|
||||||
4. repeat until desired preset is saved.
|
|
||||||
|
|
||||||
|
|
||||||
## Technical Aspects:
|
|
||||||
|
|
||||||
The use of C style bitfields has been used inside a struct to maintain a global
|
|
||||||
state. It minimizes the size of the binary once compiled.
|
|
||||||
|
|
||||||
The majority of the code is blocking/polling; overhead from introducing
|
|
||||||
interrupts and ISR(interrupt service routines) wasn't as clean and made it more
|
|
||||||
platform dependent.
|
|
||||||
|
|
||||||
The code right now can for the most part be ported to any AVR micro-controller
|
|
||||||
with no changes.
|
|
||||||
|
|
||||||
## Timings
|
|
||||||
|
|
||||||
The current setup is calculated for a attiny13/a running at 4.8Mhz without the
|
|
||||||
clock divider fuse set.
|
|
||||||
|
|
||||||
This means that the actual f_cpu is 4.8Mhz to calculate the delay times
|
|
||||||
we can use this formula:
|
|
||||||
|
|
||||||
$$
|
|
||||||
msPerOverflow = 1000ms / (\frac{4.8Mhz}{64} * \frac{1}{256}) \approx 6.8ms
|
|
||||||
$$
|
|
||||||
|
|
||||||
Where $64$ is the pre scaler setting and $256$ is the maximum value of the 8bit
|
|
||||||
timer.
|
|
||||||
|
|
||||||
## BUILDING PROJECT:
|
|
||||||
|
|
||||||
|
|
||||||
**On Unix**
|
|
||||||
```sh
|
|
||||||
git clone <REPOURL>
|
|
||||||
cd <REPO>
|
|
||||||
make flash
|
|
||||||
```
|
|
||||||
|
|
||||||
## Flashing the Project
|
|
||||||
|
|
||||||
**On Windows(usbtinyisp)**
|
|
||||||
|
|
||||||
1. Install the usbtiny driver:
|
|
||||||
1. plug in usbtiny device
|
|
||||||
2. Install the drivers from: [adafruit](https://learn.adafruit.com/usbtinyisp/drivers)
|
|
||||||
2. open Powershell
|
|
||||||
3. navigate to the repo directory *cd Downloads\gf_002*
|
|
||||||
4. enter the command below.
|
|
||||||
|
|
||||||
```ps1
|
|
||||||
./avrdude.exe -p t13 -c usbtiny -B 125kHz -U flash:w:.\pre_built\attiny13_4-8Mhz.hex -U lfuse:w:0x79:m -U hfuse:w:0xFF:m -U lock:w:0xFF:m
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
**On Windows(usbASP)**
|
|
||||||
|
|
||||||
1. Install the usbasp driver:
|
|
||||||
1. plug in usbasp device
|
|
||||||
2. run the 'zadig-2.8.exe' program
|
|
||||||
3. select the libusb 32 on the right by clicking the down arrow to select.
|
|
||||||
2. open Powershell
|
|
||||||
3. navigate to the repo directory *cd Downloads\gf_002*
|
|
||||||
4. enter the command below.
|
|
||||||
|
|
||||||
```ps1
|
|
||||||
./avrdude.exe -p t13 -c usbasp -B 125kHz -U flash:w:.\pre_built\attiny13_4-8Mhz.hex -U lfuse:w:0x79:m -U hfuse:w:0xFF:m -U lock:w:0xFF:m
|
|
||||||
```
|
|
||||||
|
|
22341
avrdude.conf
22341
avrdude.conf
File diff suppressed because it is too large
Load Diff
BIN
avrdude.exe
BIN
avrdude.exe
Binary file not shown.
BIN
avrdude.pdb
BIN
avrdude.pdb
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
./build/compile_commands.json
|
65
makefile
65
makefile
|
@ -1,65 +0,0 @@
|
||||||
# Author: Jake Goodwin
|
|
||||||
# DATE: 2023-12-07
|
|
||||||
# Descripion: A simple makefile for building and flashing hex files
|
|
||||||
|
|
||||||
# Makefile for ATtiny13A
|
|
||||||
|
|
||||||
# Compiler
|
|
||||||
CC = avr-gcc
|
|
||||||
|
|
||||||
#Default cpu frequency is 9.8Mhz, 4.8 gives us less power consumption
|
|
||||||
#F_CPU = 1000000UL
|
|
||||||
F_CPU = 4800000UL
|
|
||||||
#F_CPU = 9800000UL
|
|
||||||
MCU = attiny13a
|
|
||||||
|
|
||||||
# Flags
|
|
||||||
CFLAGS = -g -Os -mmcu=$(MCU) -DF_CPU=$(F_CPU)
|
|
||||||
LDFLAGS = -Wl,-Map,$(TARGET).map
|
|
||||||
|
|
||||||
# Source files
|
|
||||||
SRC = main.c
|
|
||||||
|
|
||||||
# Object files
|
|
||||||
OBJ = $(SRC:.c=.o)
|
|
||||||
|
|
||||||
# Target HEX file
|
|
||||||
TARGET = main
|
|
||||||
|
|
||||||
# Flashing options
|
|
||||||
AVRDUDE = avrdude
|
|
||||||
AVRDUDE_PROGRAMMER = -c usbasp
|
|
||||||
BUADRATE = -B 125kHz
|
|
||||||
AVRDUDE_PORT = -P /dev/ttyUSB0
|
|
||||||
AVRDUDE_MCU = -p $(MCU)
|
|
||||||
|
|
||||||
|
|
||||||
# Compile and generate HEX file
|
|
||||||
all: $(TARGET).hex
|
|
||||||
|
|
||||||
$(TARGET).hex: $(TARGET).elf
|
|
||||||
avr-objcopy -j .text -j .data -O ihex $< $@
|
|
||||||
|
|
||||||
$(TARGET).elf: $(OBJ)
|
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
|
|
||||||
|
|
||||||
%.o: %.c
|
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
|
||||||
size: $(TARGET).o
|
|
||||||
avr-size --mcu=$(MCU) -t ./$(TARGET).o
|
|
||||||
# Default for the attiny13a is going to be 9.6Mhz
|
|
||||||
flash_defualt_fuses:
|
|
||||||
$(AVRDUDE) $(AVRDUDE_PROGRAMMER) $(AVRDUDE_PORT) $(AVRDUDE_MCU) $(BUADRATE) -U lfuse:w:0x6A:m -U hfuse:w:0xFF:m -U lock:w:0xFF:m
|
|
||||||
# This is for 4.8Mhz
|
|
||||||
flash_slow_fuse:
|
|
||||||
$(AVRDUDE) $(AVRDUDE_PROGRAMMER) $(AVRDUDE_PORT) $(AVRDUDE_MCU) $(BUADRATE) -U lfuse:w:0x69:m -U hfuse:w:0xFF:m -U lock:w:0xFF:m
|
|
||||||
flash_slow_nodiv8:
|
|
||||||
$(AVRDUDE) $(AVRDUDE_PROGRAMMER) $(AVRDUDE_PORT) $(AVRDUDE_MCU) $(BUADRATE) -U lfuse:w:0x79:m -U hfuse:w:0xFF:m -U lock:w:0xFF:m
|
|
||||||
flash: $(TARGET).hex
|
|
||||||
$(AVRDUDE) $(AVRDUDE_PROGRAMMER) $(AVRDUDE_PORT) $(AVRDUDE_MCU) $(BUADRATE) -U flash:w:$(TARGET).hex:i
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(OBJ) $(TARGET).elf $(TARGET).hex $(TARGET).map
|
|
||||||
|
|
||||||
.PHONY: all clean
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,242 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Author: Jake Goodwin
|
||||||
|
# Date: 2024
|
||||||
|
# Filename: otto.sh
|
||||||
|
|
||||||
|
CROSS_TC_WIN="$(pwd)/i686-w64-mingw32_toolchain.cmake"
|
||||||
|
CMAKE_VERBOSE="ON"
|
||||||
|
CROSS_COMPILE=1
|
||||||
|
TEMPLATE_FILES=".template_files"
|
||||||
|
MODULE_DIR="${TEMPLATE_FILES}/modules"
|
||||||
|
|
||||||
|
|
||||||
|
add_compile_commands () {
|
||||||
|
if [ -f ./compile_commands.json ]; then
|
||||||
|
echo "compile_commands.json already exists!\n"
|
||||||
|
else
|
||||||
|
echo "Creating new symlink for compile commands!\n"
|
||||||
|
ln -s ./build/compile_commands.json ./compile_commands.json
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
clear_cmake_cache () {
|
||||||
|
cd ./build
|
||||||
|
rm -rf CMakeCache.txt CMakeFiles/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
does_module_exist () {
|
||||||
|
local basename="$1"
|
||||||
|
|
||||||
|
if [ -d "src/${basename}" ]; then
|
||||||
|
echo "1"
|
||||||
|
else
|
||||||
|
echo "0"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
add_module_to_cmakes () {
|
||||||
|
local basename="$1"
|
||||||
|
|
||||||
|
echo "add_subdirectory(${basename})" >> ./src/CMakeLists.txt
|
||||||
|
|
||||||
|
# Tests cmake file needs to be edited in place.
|
||||||
|
sed -i'' "s/# TEST_DIRS.*$/# TEST_DIRS\r\nadd_subdirectory(${basename})/g" ./tests/CMakeLists.txt
|
||||||
|
sed -i'' "s/# TEST_LINKS.*$/# TEST_LINKS\r\n\t${basename}/g" ./tests/CMakeLists.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_module_from_cmakes () {
|
||||||
|
local basename="$1"
|
||||||
|
|
||||||
|
sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./src/CMakeLists.txt
|
||||||
|
sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./tests/CMakeLists.txt
|
||||||
|
sed -i'' "s/^.*${basename}.*$//g" ./tests/CMakeLists.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
git_add_module () {
|
||||||
|
|
||||||
|
local basename="$1"
|
||||||
|
|
||||||
|
read -p "Auto add to git?(y/n):" CHOICE
|
||||||
|
if [ "${CHOICE}" = "n" ]; then
|
||||||
|
echo "not being added!"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
modsrc_dir="./src/${basename}"
|
||||||
|
modtest_dir="./tests/${basename}"
|
||||||
|
|
||||||
|
# Now we add the new files to the git tracked files
|
||||||
|
git add ${modsrc_dir}/*
|
||||||
|
git add ${modsrc_dir}
|
||||||
|
git add ${modtest_dir}/*
|
||||||
|
git add ${modtest_dir}
|
||||||
|
git add ./src/CMakeLists.txt
|
||||||
|
git add ./tests/CMakeLists.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
git_remove_module () {
|
||||||
|
local basename="$1"
|
||||||
|
|
||||||
|
read -p "Auto del from git?(y/n):" CHOICE
|
||||||
|
if [ "${CHOICE}" -eq "n" ]; then
|
||||||
|
echo "not being removed!"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
modsrc_dir="./src/${basename}"
|
||||||
|
modtest_dir="./tests/${basename}"
|
||||||
|
|
||||||
|
# Now we add the new files to the git tracked files
|
||||||
|
git rm -r ${modsrc_dir}/*
|
||||||
|
git rm -r ${modsrc_dir}
|
||||||
|
git rm -r ${modtest_dir}/*
|
||||||
|
git rm -r ${modtest_dir}
|
||||||
|
git rm -r ./src/CMakeLists.txt
|
||||||
|
git rm -r ./tests/CMakeLists.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
add_new_module () {
|
||||||
|
read -p "Enter the name of the module:" modname
|
||||||
|
|
||||||
|
result=$(does_module_exist "$modname")
|
||||||
|
|
||||||
|
if [ "${result}" -eq "1" ]; then
|
||||||
|
echo "Module already exists!"
|
||||||
|
echo "Exiting without changing anything"
|
||||||
|
exit
|
||||||
|
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.
|
||||||
|
echo "copying & customizing template files..."
|
||||||
|
|
||||||
|
sed "s/module_name/${modname}/" $MODULE_DIR/module_name.c > $modsrc_dir/${modname}.c
|
||||||
|
sed -i'' "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.c
|
||||||
|
|
||||||
|
sed "s/module_name/${modname_cap}/" $MODULE_DIR/module_name.h > $modsrc_dir/${modname}.h
|
||||||
|
sed -i'' "3s/todays_date/$(date +%Y)/" $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.cpp > $modtest_dir/test_${modname}.cpp
|
||||||
|
sed "s/module_name/${modname}/" $MODULE_DIR/TestCMakeLists.txt > $modtest_dir/CMakeLists.txt
|
||||||
|
|
||||||
|
# Add the module to the cmake lists files.
|
||||||
|
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
|
||||||
|
git_add_module "${modname}"
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
del_module () {
|
||||||
|
read -p "Enter the name of the module:" modname
|
||||||
|
|
||||||
|
rm -r ./tests/${modname}
|
||||||
|
rm -r ./src/${modname}
|
||||||
|
remove_module_from_cmakes "${modname}"
|
||||||
|
}
|
||||||
|
|
||||||
|
cross_compile () {
|
||||||
|
echo "ERROR: Currently no toolchain / target!"
|
||||||
|
}
|
||||||
|
|
||||||
|
build_release() {
|
||||||
|
clear_cmake_cache
|
||||||
|
cmake -DCAM_HANDLER_LIB=ON -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../
|
||||||
|
make
|
||||||
|
}
|
||||||
|
|
||||||
|
build_main () {
|
||||||
|
clear_cmake_cache
|
||||||
|
|
||||||
|
cmake -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../
|
||||||
|
make main
|
||||||
|
}
|
||||||
|
|
||||||
|
run_c_tests () {
|
||||||
|
clear_cmake_cache
|
||||||
|
cmake -DUNIT_TESTING=ON -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../
|
||||||
|
make AllTests && ./tests/AllTests
|
||||||
|
}
|
||||||
|
|
||||||
|
print_menu () {
|
||||||
|
echo "BUILD MENU:"
|
||||||
|
echo "1. Run Tests"
|
||||||
|
echo "2. Build Project"
|
||||||
|
echo "3. Build for release"
|
||||||
|
echo "4. cross compile for XXXXXX"
|
||||||
|
echo "5. Add new module to project"
|
||||||
|
echo "6. Delete module from project"
|
||||||
|
echo "7. Exit"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
main() {
|
||||||
|
add_compile_commands
|
||||||
|
valid_choice=false
|
||||||
|
|
||||||
|
while [ "$valid_choice" != true ]; do
|
||||||
|
print_menu
|
||||||
|
read -p "Enter your choice: " choice
|
||||||
|
|
||||||
|
case $choice in
|
||||||
|
1)
|
||||||
|
echo "You selected Option 1"
|
||||||
|
valid_choice=true
|
||||||
|
run_c_tests
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo "You selected Option 2"
|
||||||
|
valid_choice=true
|
||||||
|
build_main
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
echo "You selected Option 3"
|
||||||
|
valid_choice=true
|
||||||
|
build_release
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
echo "You selected Option 4"
|
||||||
|
valid_choice=true
|
||||||
|
cross_compile
|
||||||
|
;;
|
||||||
|
5)
|
||||||
|
echo "You selected Option 5"
|
||||||
|
valid_choice=true
|
||||||
|
add_new_module
|
||||||
|
;;
|
||||||
|
6)
|
||||||
|
echo "You selected Option 6"
|
||||||
|
valid_choice=true
|
||||||
|
del_module
|
||||||
|
;;
|
||||||
|
7)
|
||||||
|
echo "Exiting..."
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid choice. Please select a valid option."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
|
@ -1,65 +0,0 @@
|
||||||
:1000000009C016C015C067C113C012C011C010C00E
|
|
||||||
:100010000FC00EC011241FBECFE9CDBF20E0A0E667
|
|
||||||
:10002000B0E001C01D92A637B207E1F79ED1DFC153
|
|
||||||
:10003000E7CFFC0180811182887F877F8083628384
|
|
||||||
:10004000438397B321E030E0A90101C0440F6A95D2
|
|
||||||
:10005000EAF7842F8095892387BB48B3C9010280C2
|
|
||||||
:1000600002C0880F991F0A94E2F7842B88BB47B31C
|
|
||||||
:10007000C901038002C0880F991F0A94E2F7842BFC
|
|
||||||
:1000800087BB88B3038002C0220F331F0A94E2F7B4
|
|
||||||
:100090002095282328BB0895FC019081338191FD90
|
|
||||||
:1000A0000BC09260908328B381E090E001C0880F7C
|
|
||||||
:1000B0003A95EAF7822B0BC09D7F908328B381E0AD
|
|
||||||
:1000C00090E001C0880F3A95EAF78095822388BBBB
|
|
||||||
:1000D0000895CF93DF93EC01888180FF13C0982FA0
|
|
||||||
:1000E0009C7039F4CE01D8DF888119828B7F8860BB
|
|
||||||
:1000F00007C083FF10C09981923468F08460877FC5
|
|
||||||
:10010000888309C082FF02C0CE01C6DF8881877F55
|
|
||||||
:100110008B7F88831982DF91CF9108958FEF809331
|
|
||||||
:10012000750041E062E081E790E083DF44E063E056
|
|
||||||
:100130008AE690E07EDF8FE697E10197F1F700C055
|
|
||||||
:100140000000E199FECF80E090E03DD18A3A99F439
|
|
||||||
:1001500081E090E038D19091710080FB91F990930B
|
|
||||||
:10016000710082E090E02FD190916A0080FB91F9BC
|
|
||||||
:1001700090936A000CC06AEA80E090E02BD160E0C6
|
|
||||||
:1001800081E090E027D160E082E090E023D186B367
|
|
||||||
:1001900090E00090730002C0959587950A94E2F76D
|
|
||||||
:1001A0008170992721E082272091710080FB20F93E
|
|
||||||
:1001B0002093710086B390E000906C0002C095958A
|
|
||||||
:1001C00087950A94E2F78170992731E0832790910F
|
|
||||||
:1001D0006A0080FB90F990936A0020FD05C0809131
|
|
||||||
:1001E0006A0080FF3AC01DC021FB662760F981E0EC
|
|
||||||
:1001F000682760FB21F92093710081E090E0EAD04C
|
|
||||||
:1002000084E022E098B3922798BB4FEF9DEE32E056
|
|
||||||
:10021000415090403040E1F700C00000815091F71C
|
|
||||||
:10022000DECF81FB662760F991E0692760FB81F9E9
|
|
||||||
:1002300080936A0082E090E0CDD084E020E198B322
|
|
||||||
:10024000922798BB4FEF9DEE32E0415090403040F6
|
|
||||||
:10025000E1F700C00000815091F78091710081FFAB
|
|
||||||
:100260000CC028B381E090E00090740002C0880FB9
|
|
||||||
:10027000991F0A94E2F7822B88BB80916A0081FF64
|
|
||||||
:100280000CC028B381E090E000906D0002C0880FA0
|
|
||||||
:10029000991F0A94E2F7822B88BB10926F0010928C
|
|
||||||
:1002A0006E001FBC13BE83B7836083BF789412BEF9
|
|
||||||
:1002B00089B7826089BF0895BB9A98E088B389277F
|
|
||||||
:1002C00088BB2FE739EA83E0215030408040E1F7D6
|
|
||||||
:1002D00000C00000F3CF1F920F920FB60F921124AF
|
|
||||||
:1002E0002F933F938F939F93EF93FF93F894E09115
|
|
||||||
:1002F0007000F0E086B3E05AFF4F80838091700079
|
|
||||||
:100300008F5F8093700080E090E02FEFFC01E05A57
|
|
||||||
:10031000FF4F3081232301968A309105B9F720934E
|
|
||||||
:100320007500809170008A3010F0109270008091FA
|
|
||||||
:10033000710083FF05C0809172008F5F809372000F
|
|
||||||
:1003400080916A0083FF05C080916B008F5F80936E
|
|
||||||
:100350006B007894FF91EF919F918F913F912F9136
|
|
||||||
:100360000F900FBE0F901F901895D8DE81E790E098
|
|
||||||
:10037000B0DE8AE690E0ADDE2091750030E00090BE
|
|
||||||
:10038000730002C0359527950A94E2F780917100B9
|
|
||||||
:1003900020FF02C08E7F01C0816080937100209198
|
|
||||||
:1003A000750030E000906C0002C0359527950A94E6
|
|
||||||
:1003B000E2F780916A0020FF02C08E7F01C0816059
|
|
||||||
:1003C00080936A00D3CFE199FECF8EBBE09A992744
|
|
||||||
:1003D0008DB30895262FE199FECF1CBA8EBB2DBB9D
|
|
||||||
:1003E0000FB6F894E29AE19A0FBE01960895F89438
|
|
||||||
:0203F000FFCF3D
|
|
||||||
:00000001FF
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#Author: Jake G
|
||||||
|
#Date: 2024
|
||||||
|
#Filename: setup.sh
|
||||||
|
|
||||||
|
PKG_MNGR=""
|
||||||
|
DEBIAN=0
|
||||||
|
FBSD=0
|
||||||
|
SYSINSTALL=0
|
||||||
|
DEV_UTILS="vim tmux fzf"
|
||||||
|
|
||||||
|
|
||||||
|
install_dev_utils () {
|
||||||
|
ICMD=""
|
||||||
|
if [ $DEBIAN -eq 1 ]; then
|
||||||
|
ICMD="sudo apt install"
|
||||||
|
elif [ $FBSD -eq 1 ]; then
|
||||||
|
ICMD="sudo pkg install"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for util in $DEV_UTILS
|
||||||
|
do
|
||||||
|
${ICMD} ${util}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
check_os () {
|
||||||
|
if [ -f /etc/debian_version ]; then
|
||||||
|
DEBIAN=1
|
||||||
|
elif [ -f /etc/freebsd-update.conf ]; then
|
||||||
|
FBSD=1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
remove_template_examples () {
|
||||||
|
echo "does nothing right now"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
install_needed_dependencies () {
|
||||||
|
# Check the OS
|
||||||
|
echo "checking the OS..."
|
||||||
|
# If it's debian based then apt install
|
||||||
|
|
||||||
|
# If it's freeBSD then pkg
|
||||||
|
|
||||||
|
# If it's windows....you're SOL
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
create_project_symlinks () {
|
||||||
|
# Allows the clangd LSP to find it.
|
||||||
|
ln -s ./build/compile_commands.json ./compile_commands.json
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
build_cpputest () {
|
||||||
|
git submodule add https://github.com/cpputest/cpputest.git
|
||||||
|
git sumodule status
|
||||||
|
cd ./cpputest/build
|
||||||
|
cmake ../
|
||||||
|
|
||||||
|
if [ SYSINSTALL -eq 1]; then
|
||||||
|
make install
|
||||||
|
else
|
||||||
|
make
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# The default setup stuff.
|
||||||
|
default () {
|
||||||
|
remove_template_examples
|
||||||
|
install_needed_dependencies
|
||||||
|
create_project_symlinks
|
||||||
|
}
|
||||||
|
|
||||||
|
setup() {
|
||||||
|
echo "Setting up env"
|
||||||
|
check_os
|
||||||
|
install_dev_utils
|
||||||
|
}
|
||||||
|
|
||||||
|
setup
|
|
@ -0,0 +1,3 @@
|
||||||
|
add_executable(main
|
||||||
|
main.c
|
||||||
|
)
|
|
@ -0,0 +1,12 @@
|
||||||
|
#include "CppUTest/CommandLineTestRunner.h"
|
||||||
|
|
||||||
|
|
||||||
|
//ImportTestGroups
|
||||||
|
IMPORT_TEST_GROUP(simple_test);
|
||||||
|
|
||||||
|
//START: main
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
return RUN_ALL_TESTS(argc, argv);
|
||||||
|
}
|
||||||
|
//END: main
|
|
@ -0,0 +1,16 @@
|
||||||
|
project(Tests)
|
||||||
|
|
||||||
|
# TEST_DIRS
|
||||||
|
add_subdirectory(simple_test)
|
||||||
|
|
||||||
|
# TEST_RUNNER
|
||||||
|
add_executable(AllTests
|
||||||
|
AllTests.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(AllTests
|
||||||
|
${CPPUTEST_LIBRARIES}/libCppUTest.a
|
||||||
|
${CPPUTEST_LIBRARIES}/libCppUTestExt.a
|
||||||
|
# TEST_LINKS
|
||||||
|
simple_test
|
||||||
|
)
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
# TEST_RUNNER
|
||||||
|
add_library(simple_test
|
||||||
|
simple_test.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(simple_test
|
||||||
|
${CPPUTEST_LIBRARIES}/libCppUTest.a
|
||||||
|
${CPPUTEST_LIBRARIES}/libCppUTestExt.a
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
#include "CppUTest/TestHarness.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
extern C
|
||||||
|
{
|
||||||
|
#include "simple.h"
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
TEST_GROUP(simple_test)
|
||||||
|
{
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void teardown()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST(simple_test, passing_test)
|
||||||
|
{
|
||||||
|
CHECK_TRUE(1);
|
||||||
|
}
|
BIN
zadig-2.8.exe
BIN
zadig-2.8.exe
Binary file not shown.
Loading…
Reference in New Issue