Sound update

Dependencies:   4DGL-uLCD-SE Physac-MBED PinDetect SDFileSystem mbed-rtos mbed

Revision:
20:73e4f12277bd
Parent:
19:6d9bee043ede
Child:
21:df9e8f45e14c
diff -r 6d9bee043ede -r 73e4f12277bd main.cpp
--- a/main.cpp	Sun Dec 04 23:31:28 2022 +0000
+++ b/main.cpp	Mon Dec 05 20:51:36 2022 +0000
@@ -3,12 +3,25 @@
 
 #include "globals.h"
 #include "hockey.h"
+#include "tetris.h"
 
 //#include "Speaker.h"
 #include "SDFileSystem.h"
 #include "uLCD_4DGL.h"
 
+
+
+///////////////////////////
+// GLOBALS.H DEFINITIONS //
+///////////////////////////
+// The following variables are declared as extern in "globals.h", and we define
+// them here:
+volatile bool game1 = false;
+volatile bool game2 = false;
+
 Serial pc(USBTX, USBRX);
+Mutex pc_mutex;
+
 //uLCD_4DGL uLCD(p28, p27, p29);
 uLCD_4DGL uLCD(p9,p10,p30);
 Mutex uLCD_mutex;
@@ -16,22 +29,32 @@
 BluefruitController blue(p13,p14);
 BusIn navSwitch(p15, p16, p17, p18, p19);
 
-SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
-
-DigitalOut myled(LED1);
-//AnalogOut DACout(p20);
+SDFileSystem sd(p5, p6, p7, p8, "sd");
 PwmOut Rgb(p23);
 PwmOut rGb(p24);
 PwmOut rgB(p25);
 PwmOut PWMout(p21);
+//AnalogOut DACout(p20);
 //wave_player waver(&DACout);
 
 
-volatile bool game1 = false;
-volatile bool game2 = false;
-/*
-void thread3(void const *argument)
+
+////////////////////////////////
+// MAIN.CPP LOCAL DEFINITIONS //
+////////////////////////////////
+// The following variables are *not* from "globals.h" and are not meant for
+// reference outside of main.cpp
+DigitalOut myled(LED1);
+
+
+
+//////////////////////
+// MAIN.CPP THREADS //
+//////////////////////
+void audioThread()
 {
+    while(true) Thread::wait(1000);
+    /*
     FILE *wave_file;
     PWMout.period(1.0/400000.0);
     while (game1 == false && game2 == false) {
@@ -49,12 +72,11 @@
         waver.play(wave_file);
         fclose(wave_file);
     }
+    */
 }
-*/
 
-void thread4(void const *argument)
+void ledThread()
 {
-    /*
     float x = 0.0;
     while(1) {
         //get a new random number for PWM
@@ -75,21 +97,30 @@
             Thread::wait(4000.0 * rand() / float(RAND_MAX));
         }
     }
-    */
 }
 
 int main()
 {
-    printf("Starting thread 2\r\n");
-    game2 = true;
-    Thread thread2(hockeyGame);    
-    //Thread thread3(thread3);
-//    Thread thread4(thread4);
+    // Launch four threads
+    Thread thread1(tetrisGame, osPriorityHigh);
+    Thread thread2(hockeyGame, osPriorityHigh);
+    Thread thread3(audioThread, osPriorityLow);
+    Thread thread4(ledThread, osPriorityLow);
 
+    // The main thread goes on to blink LEDs
     while (true) {
         myled = 1;
         Thread::wait(500);
         myled = 0;
         Thread::wait(500);
+        
+        PRINTF("[MAIN] Thread stacks: %lu %lu %lu %lu\r\n",
+            thread1.used_stack(),
+            thread2.used_stack(),
+            thread3.used_stack(),
+            thread4.used_stack());
+        
+        // Launch into the air hockey game
+        if (game2 != true) game2 = true;
     }
 }