From 36a526a95b83d05ce45ba6dd8fc52b436b94c8db Mon Sep 17 00:00:00 2001 From: hellerve Date: Tue, 10 Oct 2017 16:30:00 +0200 Subject: [PATCH] make it so --- README.md | 15 +++++++++++++++ main.c | 11 +++++++++++ observe.sh | 15 +++++++++++++++ src/morse.c | 13 +++++++++++++ src/morse.h | 5 +++++ 5 files changed, 59 insertions(+) create mode 100644 README.md create mode 100644 main.c create mode 100755 observe.sh create mode 100644 src/morse.c create mode 100644 src/morse.h 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();