From 3f7ffa2069bb1ede22738e622411a48fb3ebb148 Mon Sep 17 00:00:00 2001 From: John Janus Date: Sat, 16 Sep 2017 23:41:43 +0200 Subject: [PATCH] working, Makefile needs some love --- Makefile | 11 ++++++----- fakeradio | Bin 0 -> 14332 bytes ledtest | Bin 0 -> 13400 bytes mp3player.c | 2 ++ mp3player.h | 12 ++++-------- simple_try.c | 4 +++- test | Bin 0 -> 14308 bytes 7 files changed, 15 insertions(+), 14 deletions(-) create mode 100755 fakeradio create mode 100755 ledtest create mode 100755 test diff --git a/Makefile b/Makefile index 66bee6a..3669f8c 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,12 @@ CC = gcc CFLAGS = -std=gnu11 -Wall -LDFLAGS = -lpthread -lao -lmpg123 -fakeradio: simple_try.c - $(CC) $(CFLAGS) -o ledtest simple_try.c $(LDFLAGS) +LDFLAGS = -lpthread -lao -lmpg123 -lwiringPi +fakeradio: main.o mp3player.o + $(CC) $(CFLAGS) -o fakeradio main.o mp3player.o $(LDFLAGS) + +main.o: simple_try.c + $(CC) $(CFLAGS) -o main.o simple_try.c $(LDFLAGS) mp3player.o: mp3player.h mp3player.c $(CC) $(CFLAGS) -o mp3player.o mp3player.c $(LDFLAGS) -mp3test: mp3player.o - $(CC) $(CFLAGS) -o mp3test mp3player.o $(LDFLAGS) diff --git a/fakeradio b/fakeradio new file mode 100755 index 0000000000000000000000000000000000000000..4e75de12cd2cc743fa5d536d888d7dec80085771 GIT binary patch literal 14332 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 literal 0 HcmV?d00001 diff --git a/ledtest b/ledtest new file mode 100755 index 0000000000000000000000000000000000000000..6da6eba8e283a32e2735d41310c94a858f2c1cac GIT binary patch literal 13400 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 L=>Vs4&ES3ybU`k% literal 0 HcmV?d00001 diff --git a/mp3player.c b/mp3player.c index 1533920..954f141 100644 --- a/mp3player.c +++ b/mp3player.c @@ -1,5 +1,7 @@ #include "mp3player.h" #include +#include +#include #define BITS 8 pthread_t startPlayThread(const char* file) diff --git a/mp3player.h b/mp3player.h index 546d5c7..ae3dfdf 100644 --- a/mp3player.h +++ b/mp3player.h @@ -1,13 +1,9 @@ -#ifndef MP3PLAYER -#define MP3PLAYER +#ifndef _MY_MP3PLAYER +#define _MY_MP3PLAYER #include -#include -#include -#include -#include -pthread_t startPlayThread(const char* file); +pthread_t startPlayThread(const char*); -void* playFunc(void* file); +void* playFunc(void*); #endif diff --git a/simple_try.c b/simple_try.c index 70269ee..ddf1106 100644 --- a/simple_try.c +++ b/simple_try.c @@ -5,6 +5,7 @@ #include #include #include + #include "mp3player.h" #define PWRLED 8 @@ -78,7 +79,7 @@ int main(void) { pinMode(CHNL1LED, OUTPUT); pinMode(CHNL2LED, OUTPUT); - printf("initialize mutex and condition variable"); + printf("initialize mutex and condition variable\n"); mut = malloc (sizeof(pthread_mutex_t)); pthread_mutex_init(mut, NULL); wakeup = malloc(sizeof(pthread_cond_t)); @@ -110,6 +111,7 @@ int main(void) { playThread = startPlayThread("dansk01.mp3"); } } + delay(500); pthread_mutex_unlock(mut); } diff --git a/test b/test new file mode 100755 index 0000000000000000000000000000000000000000..a4ad8ff35e947d258618923e2b31de4e4d7afb67 GIT binary patch literal 14308 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 literal 0 HcmV?d00001 -- 2.47.0