Commit Graph

15 Commits

Author SHA1 Message Date
3677b50fe1 Added Resillance to SegFaults by forking tests
A child process is created which runs the test operation. It then
returns the exit status if exited properly and termination signal if
not.

A Termination signal of (11) corresponds to a segfault so keep that in
mind.
2025-12-23 21:46:32 -08:00
a490341129 Created Initial Attempt Testing Framework
The framework, completely contained in x_tfw4c.c, uses pre-compiler
MACROS to create an environment where it is easy to create unit tests
and run regression tests.

It iterates through a linked list of test structs that contain the test
function that should be executed and the name of the test to be
displayed.

This is a simple rework of a prior test framework that did not
dynamically add new tests at compile time.

Next steps would be to have it display more metadata and have some
resilience to crashes in the tests.
2025-12-23 21:46:32 -08:00
4320c26105 Added Template Makefile
This Makefile will be used as a way to start new projects with the same
hierarchy. It will also be tightly coupled with the x testing framework
for c (x_tfw4c).

It has targets to setup the source, include, object, and tests
directories using the `make dirs` command.

There is some fun interesting things that I used to get the target to
recompile when the header files are updated using the -MMD and -MP flags
in gcc.

These flags basically allow for the generation of dependencies from each
source file that are exported and then included using the -include
$(DEPENDENCIES) line at the bottem of the Makefile.
2025-12-23 21:46:32 -08:00
69861846a2 Added the linker error playground
Here is a project where I was just trying to figure out the nuances of
different Translation Units and the scope of variables and function.

TLDR: run gcc d.c b.c c.c and see that the linker errors

There is storage duration and linkage that can be specified for vars and
funtions.

There are four different types of Storage Duration
Automatic - which is get initialized when the block starts and dies when
the block ends
Static - which is the entire duration of the program
Thread - which i didn't get into really
Allocated - which is the typical heap allocation thingys

There are three types of linkage. Basically where can you reach a
varibale from
No Linkage - can only be refered to in the block
Internal Linkage - can only be refered to in the same TLU
External Linkage - can be reachable by any TLU in the program

This shows how defining a variable in 1 h file (a.h), which will have
external linkage because it is a file scope variables not declared
static will default to, and then #include-ing the h file in multiple
other files will lead to redefiniation exceptions thrown by the linker.

If confused see more here:
https://en.cppreference.com/w/c/language/storage_class_specifiers.html
2025-12-19 13:06:31 -08:00
0c834ca675 Added pic project for 101 2024-10-24 15:18:43 -07:00
17fadb5151 Added matrix calcs and time_tests 2024-10-07 18:16:21 -07:00
ba52c3baed Add Reference design notes for salinity 2024-06-11 21:15:30 -07:00
eb4ffb54cb Add c_projects 2024-04-18 12:33:14 -07:00
e92aa147fa Added pics from pulsar circuit driven by teensy 2024-04-17 13:08:41 -07:00
a072c91c81 Added graph 2024-03-25 19:28:45 -07:00
0c55235596 Added readme to epoxy_transducer 2024-03-25 19:23:09 -07:00
1a48e961bb Added piecewise snippet 2024-03-22 18:06:25 -07:00
8ebc6a36bc Added scope fft snippet
Used to compare the fft of signals taken from the DSOX2024A oscope
2024-03-21 10:54:10 -07:00
02512129e2 Added time of flight data analysis script
Used to compare expected time of flight to measured when using epoxyed desoldered hc-sr04 ultrasonic transducers.
2024-03-21 10:53:11 -07:00
a0bfb24a57 Initial commit 2024-03-21 17:42:07 +00:00