Coordinator v2

Dependencies:   NerfUSXbee PinDetect EthernetInterface JSON MFRC522 WebSocketClient mbed-rtos mbed

Committer:
Ismael Balafrej
Date:
Mon Apr 10 15:02:24 2017 -0400
Revision:
1:e1c5259b7d9a
Child:
2:019d8848cf7e
V1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ismael Balafrej 1:e1c5259b7d9a 1 #include <vector>
Ismael Balafrej 1:e1c5259b7d9a 2 #include "ports.hpp"
Ismael Balafrej 1:e1c5259b7d9a 3 #include "serverEvents.hpp"
Ismael Balafrej 1:e1c5259b7d9a 4 #include "Target.hpp"
Ismael Balafrej 1:e1c5259b7d9a 5 #include "RealXbeeReceiver.hpp"
Ismael Balafrej 1:e1c5259b7d9a 6 #include "BtnHandler.hpp"
Ismael Balafrej 1:e1c5259b7d9a 7 #include "GameCoordinator.hpp"
Ismael Balafrej 1:e1c5259b7d9a 8 #include "FreeMem.h"
Ismael Balafrej 1:e1c5259b7d9a 9 #include "MFRC522.h"
Ismael Balafrej 1:e1c5259b7d9a 10
Ismael Balafrej 1:e1c5259b7d9a 11 #define MF_RESET D8
Ismael Balafrej 1:e1c5259b7d9a 12
Ismael Balafrej 1:e1c5259b7d9a 13 DigitalOut LedGreen(LED1);
Ismael Balafrej 1:e1c5259b7d9a 14 MFRC522 RfChip(p5, p6, p7, p21, p22);
Ismael Balafrej 1:e1c5259b7d9a 15
Ismael Balafrej 1:e1c5259b7d9a 16 int main()
Ismael Balafrej 1:e1c5259b7d9a 17 {
Ismael Balafrej 1:e1c5259b7d9a 18 cls();
Ismael Balafrej 1:e1c5259b7d9a 19 toPc("Coordinator starting...");
Ismael Balafrej 1:e1c5259b7d9a 20 toPc("Initial Memory: %i", FreeMem());
Ismael Balafrej 1:e1c5259b7d9a 21
Ismael Balafrej 1:e1c5259b7d9a 22 //Starting the different threads
Ismael Balafrej 1:e1c5259b7d9a 23 //Websocket
Ismael Balafrej 1:e1c5259b7d9a 24 Thread Twebsocket_message_receiver(websocket_message_receiver, osPriorityLow, 2300);
Ismael Balafrej 1:e1c5259b7d9a 25 Thread Twebsocket_message_sender(websocket_message_sender, osPriorityLow, 1500);
Ismael Balafrej 1:e1c5259b7d9a 26
Ismael Balafrej 1:e1c5259b7d9a 27 //Xbee
Ismael Balafrej 1:e1c5259b7d9a 28 RealXbeeReceiver xbeeReceiver;
Ismael Balafrej 1:e1c5259b7d9a 29 xbeeReceiver.start(&dispatch_event_from_target);
Ismael Balafrej 1:e1c5259b7d9a 30
Ismael Balafrej 1:e1c5259b7d9a 31 //Btn interupts
Ismael Balafrej 1:e1c5259b7d9a 32 BtnHandler startBtn(p21, "start");
Ismael Balafrej 1:e1c5259b7d9a 33 BtnHandler nextBtn(p22, "navigate", "next");
Ismael Balafrej 1:e1c5259b7d9a 34 BtnHandler previousBtn(p23, "navigate", "previous");
Ismael Balafrej 1:e1c5259b7d9a 35
Ismael Balafrej 1:e1c5259b7d9a 36 //Creating the targets with their 64 bits address
Ismael Balafrej 1:e1c5259b7d9a 37 //Bruno/Max Router
Ismael Balafrej 1:e1c5259b7d9a 38 gameCoordinator.targets.push_back(Target(0x0013A200, 0x4086DA0E, 0));
Ismael Balafrej 1:e1c5259b7d9a 39 gameCoordinator.targets.push_back(Target(0x0013A200, 0x4086DA0E, 1));
Ismael Balafrej 1:e1c5259b7d9a 40 //TODO: more targets
Ismael Balafrej 1:e1c5259b7d9a 41
Ismael Balafrej 1:e1c5259b7d9a 42 RfChip.PCD_Init();
Ismael Balafrej 1:e1c5259b7d9a 43
Ismael Balafrej 1:e1c5259b7d9a 44 while(1) {
Ismael Balafrej 1:e1c5259b7d9a 45 LedGreen = 1;
Ismael Balafrej 1:e1c5259b7d9a 46
Ismael Balafrej 1:e1c5259b7d9a 47 // Look for new cards
Ismael Balafrej 1:e1c5259b7d9a 48 if ( ! RfChip.PICC_IsNewCardPresent())
Ismael Balafrej 1:e1c5259b7d9a 49 {
Ismael Balafrej 1:e1c5259b7d9a 50 toPc("No card detected");
Ismael Balafrej 1:e1c5259b7d9a 51 Thread::wait(500);
Ismael Balafrej 1:e1c5259b7d9a 52 continue;
Ismael Balafrej 1:e1c5259b7d9a 53 }
Ismael Balafrej 1:e1c5259b7d9a 54
Ismael Balafrej 1:e1c5259b7d9a 55 // Select one of the cards
Ismael Balafrej 1:e1c5259b7d9a 56 if ( ! RfChip.PICC_ReadCardSerial())
Ismael Balafrej 1:e1c5259b7d9a 57 {
Ismael Balafrej 1:e1c5259b7d9a 58 toPc("Cant read serial");
Ismael Balafrej 1:e1c5259b7d9a 59 Thread::wait(500);
Ismael Balafrej 1:e1c5259b7d9a 60 //wait_ms(500);
Ismael Balafrej 1:e1c5259b7d9a 61 continue;
Ismael Balafrej 1:e1c5259b7d9a 62 }
Ismael Balafrej 1:e1c5259b7d9a 63 toPc("Printing card");
Ismael Balafrej 1:e1c5259b7d9a 64 LedGreen = 0;
Ismael Balafrej 1:e1c5259b7d9a 65
Ismael Balafrej 1:e1c5259b7d9a 66 // Print Card UID
Ismael Balafrej 1:e1c5259b7d9a 67 pc.printf("Card UID: ");
Ismael Balafrej 1:e1c5259b7d9a 68 for (uint8_t i = 0; i < RfChip.uid.size; i++)
Ismael Balafrej 1:e1c5259b7d9a 69 {
Ismael Balafrej 1:e1c5259b7d9a 70 pc.printf(" %X02", RfChip.uid.uidByte[i]);
Ismael Balafrej 1:e1c5259b7d9a 71 }
Ismael Balafrej 1:e1c5259b7d9a 72 pc.printf("\n\r");
Ismael Balafrej 1:e1c5259b7d9a 73
Ismael Balafrej 1:e1c5259b7d9a 74
Ismael Balafrej 1:e1c5259b7d9a 75 //Memory monitoring
Ismael Balafrej 1:e1c5259b7d9a 76 // toPc("Thread Twebsocket_message_receiver max stack: %i / %i", Twebsocket_message_receiver.max_stack(), Twebsocket_message_receiver.stack_size());
Ismael Balafrej 1:e1c5259b7d9a 77 // toPc("Thread Twebsocket_message_sender max stack: %i / %i", Twebsocket_message_sender.max_stack(), Twebsocket_message_sender.stack_size());
Ismael Balafrej 1:e1c5259b7d9a 78 // toPc("Thread gameCoordinator.Tget_next_round max stack: %i / %i", gameCoordinator.Tget_next_round.max_stack(), gameCoordinator.Tget_next_round.stack_size());
Ismael Balafrej 1:e1c5259b7d9a 79 // toPc("Thread xbeeReceiver.message_handler_thread max stack: %i / %i", xbeeReceiver.message_handler_thread.max_stack(), xbeeReceiver.message_handler_thread.stack_size());
Ismael Balafrej 1:e1c5259b7d9a 80 // toPc("Thread xbeeReceiver.message_reader_thread max stack: %i / %i", xbeeReceiver.message_reader_thread.max_stack(), xbeeReceiver.message_reader_thread.stack_size());
Ismael Balafrej 1:e1c5259b7d9a 81 // toPc("Free Memory: %i", FreeMem());
Ismael Balafrej 1:e1c5259b7d9a 82 Thread::wait(1000);
Ismael Balafrej 1:e1c5259b7d9a 83 }
Ismael Balafrej 1:e1c5259b7d9a 84 //Thread::wait(osWaitForever);
Ismael Balafrej 1:e1c5259b7d9a 85 }
Ismael Balafrej 1:e1c5259b7d9a 86