commit 36a526a95b83d05ce45ba6dd8fc52b436b94c8db Author: hellerve Date: Tue Oct 10 16:30:00 2017 +0200 make it so diff --git a/README.md b/README.md new file mode 100644 index 0000000..d41a4e8 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# morse + +Morse Code through CPU utilization. + +## Usage + +The API exposes two simple functions, `dit` and `dah`. `dit` will utilize the +CPU for a second, `dah` will sleep. Knowing this, we can exchange information +by looking at the program’s CPU utilization every second. A simple POC is +included in `main.c` and `observe.sh`. It’s really, really crude. For best +results, compile without optimizations. + +
+ +Have fun! diff --git a/main.c b/main.c new file mode 100644 index 0000000..410de3d --- /dev/null +++ b/main.c @@ -0,0 +1,11 @@ +#include "morse.h" + +int main() { + dit(); + dah(); + dit(); + dit(); + dah(); + dit(); + return 0; +} diff --git a/observe.sh b/observe.sh new file mode 100755 index 0000000..0d9574c --- /dev/null +++ b/observe.sh @@ -0,0 +1,15 @@ +PID=$1 +RET=0 + +while [ "$RET" == 0 ]; do + INP=`ps -o pcpu -p $PID` + RET=$? + ARR=($INP) + echo ${ARR[1]} + if [ `echo "${ARR[1]}"'>'50 | bc -l` == 1 ]; then + echo dit + else + echo dah + fi + sleep 1 +done diff --git a/src/morse.c b/src/morse.c new file mode 100644 index 0000000..d30db32 --- /dev/null +++ b/src/morse.c @@ -0,0 +1,13 @@ +#include "morse.h" + +void dit() { + time_t t0, t1; + time(&t0); + t1 = t0; + + while(difftime(t1, t0) < 1) time(&t1); +} + +void dah() { + sleep(1); +} diff --git a/src/morse.h b/src/morse.h new file mode 100644 index 0000000..489162c --- /dev/null +++ b/src/morse.h @@ -0,0 +1,5 @@ +#include +#include + +void dit(); +void dah();