Coordinator v2
Dependencies: NerfUSXbee PinDetect EthernetInterface JSON MFRC522 WebSocketClient mbed-rtos mbed
main.cpp@1:e1c5259b7d9a, 2017-04-10 (annotated)
- 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?
User | Revision | Line number | New 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 |