Thomas Cauwelier / Mbed 2 deprecated visible_light_communication

Dependencies:   SoftSerial SDFileSystem mbed wave_player

Files at this revision

API Documentation at this revision

Comitter:
Desertification
Date:
Wed May 17 09:43:38 2017 +0000
Parent:
28:0ed7ea895f75
Commit message:
DONE (for now)

Changed in this revision

Client.cpp Show annotated file Show diff for this revision Revisions of this file
Client.h Show annotated file Show diff for this revision Revisions of this file
Relay.cpp Show annotated file Show diff for this revision Revisions of this file
Relay.h Show annotated file Show diff for this revision Revisions of this file
--- a/Client.cpp	Wed May 17 00:24:13 2017 +0000
+++ b/Client.cpp	Wed May 17 09:43:38 2017 +0000
@@ -5,13 +5,14 @@
 #include "Client.h"
 
 Client::Client(PinName rx_luart, int baudrate_luart) :
-        aout(p18), fileSystem(p5, p6, p7, p8, "sd"), player(&aout), softSerial(NC, rx_luart),
-        spi_amp(p11, p12, p13, p14) {
+        aout(p18), dout(p14), fileSystem(p5, p6, p7, p8, "sd"), player(&aout), softSerial(NC, rx_luart),
+        spi_amp(p11, p12, p13, NC) {
     softSerial.baud(baudrate_luart);
     spi_amp.format(8, 0);
+    dout = 1;
     spi_amp.frequency(1000000);
     fileSystem.disk_initialize();
-    wave_file = fopen("/sd/receive.wav", "w+");
+    wave_file = fopen("/sd/receive.wav", "r+");
     if (wave_file == NULL) {
         error("Could not open file for w+\n");
     }
@@ -29,9 +30,11 @@
 void Client::set_volume() {
     while (!softSerial.readable());
     int value = softSerial.getc();
-
+    dout = 0;
+    wait(0.001);
     spi_amp.write(0);
-    spi_amp.write(int((value / 100.0) * 255.0));
+    spi_amp.write(value);
+    dout = 1;
     printf("volume set to %i\r\n", value);
 }
 
@@ -52,12 +55,15 @@
         case SEND_FILE:
             send_file();
             break;
+        case PLAY_LAST:
+            play_file();
         default:
             break;
     }
 }
 
 void Client::send_file() {
+    freopen("/sd/receive.wav", "w+", wave_file);
     printf("starting file write\r\n");
     // get file size
     int size = 0;
@@ -75,7 +81,7 @@
 
         // get max 64 bytes
         int k = 0;
-        for (k; k < 64; ++k) {
+        for (k; k < 512; ++k) {
             if (j == size) {
                 break;
             }
@@ -87,7 +93,8 @@
 
         // store max 64 bytes
         fwrite(buffer, sizeof(char), (size_t) k, wave_file);
-        //printf("wrote %i:%i bytes\r\n",k,j);
+        fflush(wave_file);
+        printf("wrote %i:%i bytes\r\n",k,j);
     }
 
     play_file();
--- a/Client.h	Wed May 17 00:24:13 2017 +0000
+++ b/Client.h	Wed May 17 09:43:38 2017 +0000
@@ -21,13 +21,15 @@
     MySoftSerial softSerial;
     SDFileSystem fileSystem;
     AnalogOut aout;
+    DigitalOut dout;
     wave_player player;
     FILE *wave_file;
 
     static const int SEND_FILE = 0b00001111;
     static const int SET_VOLUME = 0b00110011;
     static const int ACK = 0b11111111;
-    char buffer[64];
+    static const int PLAY_LAST = 0b10001011;
+    char buffer[512];
 
 
     void set_volume();
--- a/Relay.cpp	Wed May 17 00:24:13 2017 +0000
+++ b/Relay.cpp	Wed May 17 09:43:38 2017 +0000
@@ -16,6 +16,10 @@
     }
 }
 
+void Relay::play_last(){
+    
+}
+
 void Relay::set_volume(){
     while (!usb.readable());
     int volume = usb.getc();
@@ -35,6 +39,8 @@
         int b = usb.getc();
         while(!softSerial.writeable());
         softSerial.putc(b);
+        while (!usb.writeable());
+        usb.putc(ACK);
         size |=  b << ((3-i) << 3);
     }
 
@@ -44,7 +50,7 @@
 
         // get max 64 bytes
         int k = 0;
-        for (k; k < 64; ++k) {
+        for (k; k < 512; ++k) {
             if(j == size){
                 break;
             }
--- a/Relay.h	Wed May 17 00:24:13 2017 +0000
+++ b/Relay.h	Wed May 17 09:43:38 2017 +0000
@@ -20,14 +20,17 @@
 
     static const int SEND_FILE = 0b00001111;
     static const int SET_VOLUME = 0b00110011;
+    static const int PLAY_LAST = 0b10001011;
     static const int ACK = 0b11111111;
-    int buffer[64];
+    int buffer[512];
 
     void handle_type();
 
     void set_volume();
 
     void send_file();
+    
+    void play_last();
 };