From 30547ed47ab653586073ae87d0c986c14ddaf241 Mon Sep 17 00:00:00 2001
From: Nicholas Tay <nick@windblume.net>
Date: Thu, 28 Apr 2022 21:54:45 +1000
Subject: Iterate boards in C

---
 Makefile |  4 +++-
 clak.c   | 18 ++++++++++++++++--
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 2635da2..c2a94a6 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,9 @@ $(NAME): $(NAME).c $(BOARD_FILES) board/boards.h
 board/boards.h:
 	printf "#ifndef BOARD_DEFAULTS_H\n#define BOARD_DEFAULTS_H\n\n" > board/boards.h
 	for board in $(BOARDS); do echo "#include \"$$board/board.h\"" >> board/boards.h; done
-	printf "\n#endif /* BOARD_DEFAULTS_H */" >> board/boards.h
+	printf "\n#define BOARDS " >> board/boards.h
+	for board in $(BOARDS); do printf "BOARD(\"$$board\", board_$${board}_board_down_wav) " >> board/boards.h; done
+	printf "\n\n#endif /* BOARD_DEFAULTS_H */" >> board/boards.h
 
 $(BOARD_FILES): %.h: %_down.wav
 	xxd -i "$<" "$@"
diff --git a/clak.c b/clak.c
index 3a0c5bf..5e947e9 100644
--- a/clak.c
+++ b/clak.c
@@ -3,15 +3,29 @@
 #include <windows.h>
 
 #include "board/boards.h"
+#define BOARD(str, buf) { .name = str, .wav = buf },
+
+typedef struct {
+	char *name;
+	unsigned char* wav;
+} Board;
+
+Board boards[] = {
+	BOARDS
+};
+int const boards_n = sizeof(boards) / sizeof(boards[0]);
 
 int main(void)
 {
 	float volume = 0.05;
 	DWORD channel_volume = volume * 0xFFFF;
 	waveOutSetVolume(NULL, (channel_volume << 16) | channel_volume);
-	while (1) {
-		PlaySound((const char *) board_mxblue_board_down_wav, NULL, SND_MEMORY | SND_SYNC | SND_NODEFAULT);
+
+	for (int i = 0; i < boards_n; ++i) {
+		printf("name: %s\n", boards[i].name);
+		PlaySound((const char *) boards[i].wav, NULL, SND_MEMORY | SND_SYNC | SND_NODEFAULT);
 		Sleep(500);
 	}
+
 	return 0;
 }
\ No newline at end of file
-- 
cgit