Projet S5 Info - Advanced

Dependencies:   TextLCD XBeeLib mbed-rtos mbed

Fork of Coordinateur by Vincent Belanger

Committer:
vinbel93
Date:
Wed Apr 06 14:19:30 2016 +0000
Revision:
2:a7820185e9a8
Parent:
1:33b4a3b5cdb5
Child:
4:714484401021
change name

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jasmou 0:3acd447c12c0 1 #include "mbed.h"
vinbel93 2:a7820185e9a8 2 #include "rtos.h"
jasmou 0:3acd447c12c0 3 #include "XBeeLib.h"
vinbel93 1:33b4a3b5cdb5 4 #include "SDFileSystem.h"
vinbel93 1:33b4a3b5cdb5 5 #include "wave_player.h"
jasmou 0:3acd447c12c0 6
jasmou 0:3acd447c12c0 7 using namespace XBeeLib;
vinbel93 1:33b4a3b5cdb5 8
vinbel93 1:33b4a3b5cdb5 9 SDFileSystem sd(p5, p6, p7, p8, "sd"); // MOSI, MISO, SCLK, SSEL
vinbel93 2:a7820185e9a8 10 PwmOut speaker(p21);
vinbel93 2:a7820185e9a8 11 //wave_player player(&DACout);
jasmou 0:3acd447c12c0 12 Serial pc(USBTX, USBRX);
vinbel93 2:a7820185e9a8 13 osThreadId threadIDC5;
vinbel93 2:a7820185e9a8 14 osThreadId threadIDG5;
jasmou 0:3acd447c12c0 15
jasmou 0:3acd447c12c0 16 bool capt_1;
jasmou 0:3acd447c12c0 17 bool capt_2;
jasmou 0:3acd447c12c0 18 bool capt_3;
jasmou 0:3acd447c12c0 19 bool capt_4;
jasmou 0:3acd447c12c0 20 bool capt_5;
jasmou 0:3acd447c12c0 21 bool capt_6;
jasmou 0:3acd447c12c0 22
jasmou 0:3acd447c12c0 23 /** Callback function, invoked at packet reception */
jasmou 0:3acd447c12c0 24 static void receive_cb(const RemoteXBeeZB& remote, bool broadcast, const uint8_t *const data, uint16_t len)
jasmou 0:3acd447c12c0 25 {
jasmou 0:3acd447c12c0 26 const uint64_t remote_addr64 = remote.get_addr64();
jasmou 0:3acd447c12c0 27
jasmou 0:3acd447c12c0 28 pc.printf("\r\nGot packet, len %d\r\nData: ", len);
jasmou 0:3acd447c12c0 29
jasmou 0:3acd447c12c0 30 for (int i = 0; i < len; i++)
jasmou 0:3acd447c12c0 31 {
jasmou 0:3acd447c12c0 32 pc.printf("%02x ", data[i]);
jasmou 0:3acd447c12c0 33 }
jasmou 0:3acd447c12c0 34
vinbel93 1:33b4a3b5cdb5 35 capt_1 = (data[0] & 0b10000000);
vinbel93 1:33b4a3b5cdb5 36 capt_2 = (data[0] & 0b01000000);
vinbel93 1:33b4a3b5cdb5 37 capt_3 = (data[0] & 0b00100000);
vinbel93 1:33b4a3b5cdb5 38 capt_4 = (data[0] & 0b00010000);
vinbel93 1:33b4a3b5cdb5 39 capt_5 = (data[0] & 0b00001000);
vinbel93 1:33b4a3b5cdb5 40 capt_6 = (data[0] & 0b00000100);
vinbel93 1:33b4a3b5cdb5 41
vinbel93 1:33b4a3b5cdb5 42 pc.printf("\r\n%i ", capt_1);
vinbel93 1:33b4a3b5cdb5 43 pc.printf("%i ", capt_2);
vinbel93 1:33b4a3b5cdb5 44 pc.printf("%i ", capt_3);
vinbel93 1:33b4a3b5cdb5 45 pc.printf("%i ", capt_4);
vinbel93 1:33b4a3b5cdb5 46 pc.printf("%i ", capt_5);
vinbel93 1:33b4a3b5cdb5 47 pc.printf("%i ", capt_6);
vinbel93 1:33b4a3b5cdb5 48
jasmou 0:3acd447c12c0 49 pc.printf("\r\n");
vinbel93 2:a7820185e9a8 50
vinbel93 2:a7820185e9a8 51 osSignalSet(threadIDC5, 0x1);
vinbel93 2:a7820185e9a8 52 osSignalSet(threadIDG5, 0x2);
jasmou 0:3acd447c12c0 53 }
vinbel93 2:a7820185e9a8 54
vinbel93 2:a7820185e9a8 55 void playFile(const char* name)
vinbel93 1:33b4a3b5cdb5 56 {
vinbel93 2:a7820185e9a8 57 /*
vinbel93 2:a7820185e9a8 58 FILE *fp = fopen(name, "r");
vinbel93 1:33b4a3b5cdb5 59 if(fp == NULL) {
vinbel93 1:33b4a3b5cdb5 60 pc.printf("Could not open file for read\r\n");
vinbel93 1:33b4a3b5cdb5 61 }
vinbel93 1:33b4a3b5cdb5 62 else {
vinbel93 1:33b4a3b5cdb5 63 player.play(fp);
vinbel93 1:33b4a3b5cdb5 64 }
vinbel93 1:33b4a3b5cdb5 65 fclose(fp);
vinbel93 2:a7820185e9a8 66 */
vinbel93 2:a7820185e9a8 67
vinbel93 2:a7820185e9a8 68 speaker.period(1.0/500.0); // 500hz period
vinbel93 2:a7820185e9a8 69 speaker =0.5; //50% duty cycle - max volume
vinbel93 2:a7820185e9a8 70 wait(3);
vinbel93 2:a7820185e9a8 71 speaker=0.0; // turn off audio
vinbel93 2:a7820185e9a8 72 wait(2);
vinbel93 2:a7820185e9a8 73 }
vinbel93 2:a7820185e9a8 74
vinbel93 2:a7820185e9a8 75 void playC5(void const* args)
vinbel93 2:a7820185e9a8 76 {
vinbel93 2:a7820185e9a8 77 threadIDC5 = osThreadGetId();
vinbel93 2:a7820185e9a8 78
vinbel93 2:a7820185e9a8 79 osSignalWait(0x1, osWaitForever);
vinbel93 2:a7820185e9a8 80 pc.printf("Wait done C5");
vinbel93 2:a7820185e9a8 81 playFile("/sd/Synth/C5.wav");
vinbel93 2:a7820185e9a8 82 }
vinbel93 2:a7820185e9a8 83
vinbel93 2:a7820185e9a8 84 void playG5(void const* args)
vinbel93 2:a7820185e9a8 85 {
vinbel93 2:a7820185e9a8 86 threadIDG5 = osThreadGetId();
vinbel93 2:a7820185e9a8 87
vinbel93 2:a7820185e9a8 88 osSignalWait(0x2, osWaitForever);
vinbel93 2:a7820185e9a8 89 pc.printf("Wait done G5");
vinbel93 2:a7820185e9a8 90 //wait(1);
vinbel93 2:a7820185e9a8 91 //playFile("/sd/Synth/A5.wav");
vinbel93 2:a7820185e9a8 92 }
vinbel93 2:a7820185e9a8 93
vinbel93 2:a7820185e9a8 94 int main()
vinbel93 2:a7820185e9a8 95 {
vinbel93 2:a7820185e9a8 96 Thread C5(playC5);
vinbel93 2:a7820185e9a8 97 //C5.set_priority(osPriorityHigh);
vinbel93 2:a7820185e9a8 98 Thread G5(playG5);
vinbel93 2:a7820185e9a8 99 //G5.set_priority(osPriorityHigh);
vinbel93 1:33b4a3b5cdb5 100
vinbel93 1:33b4a3b5cdb5 101 XBeeZB xbee = XBeeZB(p13, p14, p8, NC, NC, 9600);
vinbel93 2:a7820185e9a8 102
jasmou 0:3acd447c12c0 103 /* Register callbacks */
jasmou 0:3acd447c12c0 104 xbee.register_receive_cb(&receive_cb);
vinbel93 2:a7820185e9a8 105
jasmou 0:3acd447c12c0 106 RadioStatus const radioStatus = xbee.init();
vinbel93 2:a7820185e9a8 107
jasmou 0:3acd447c12c0 108 MBED_ASSERT(radioStatus == Success);
jasmou 0:3acd447c12c0 109
jasmou 0:3acd447c12c0 110 /* Wait until the device has joined the network */
jasmou 0:3acd447c12c0 111 pc.printf("Waiting for device to join the network: ");
jasmou 0:3acd447c12c0 112 while (!xbee.is_joined()) {
jasmou 0:3acd447c12c0 113 wait_ms(1000);
jasmou 0:3acd447c12c0 114 }
jasmou 0:3acd447c12c0 115 pc.printf("OK\r\n");
jasmou 0:3acd447c12c0 116
jasmou 0:3acd447c12c0 117 while (true) {
jasmou 0:3acd447c12c0 118 xbee.process_rx_frames();
vinbel93 2:a7820185e9a8 119 wait_ms(2000);
jasmou 0:3acd447c12c0 120 }
jasmou 0:3acd447c12c0 121 }