Part One of my Project Course. Implementation of simple I/O and a custom defined protocol over UDP/IP.
Dependencies: C12832 LM75B mbed EthernetInterface mbed-rtos
slave.h@2:6bfe732ba6bc, 2018-03-19 (annotated)
- Committer:
- bertgereels
- Date:
- Mon Mar 19 11:32:54 2018 +0000
- Revision:
- 2:6bfe732ba6bc
- Parent:
- 1:b5c534165dfe
Project is now fully functional.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bertgereels | 0:88d3b9015f7c | 1 | #pragma once |
bertgereels | 0:88d3b9015f7c | 2 | |
bertgereels | 0:88d3b9015f7c | 3 | #include "mbed.h" |
bertgereels | 1:b5c534165dfe | 4 | #include "temperature.h" |
bertgereels | 1:b5c534165dfe | 5 | #include "buzzer_music.h" |
bertgereels | 1:b5c534165dfe | 6 | #include "lcd.h" |
bertgereels | 1:b5c534165dfe | 7 | #include "rgb.h" |
bertgereels | 1:b5c534165dfe | 8 | #include "potentiometer.h" |
bertgereels | 0:88d3b9015f7c | 9 | |
bertgereels | 0:88d3b9015f7c | 10 | namespace ProjectOne{ |
bertgereels | 0:88d3b9015f7c | 11 | |
bertgereels | 0:88d3b9015f7c | 12 | class Slave{ |
bertgereels | 0:88d3b9015f7c | 13 | public: |
bertgereels | 2:6bfe732ba6bc | 14 | /* |
bertgereels | 2:6bfe732ba6bc | 15 | * Constructor for Slave class. |
bertgereels | 2:6bfe732ba6bc | 16 | * |
bertgereels | 2:6bfe732ba6bc | 17 | @param The id for the slave that is selected on boot. |
bertgereels | 2:6bfe732ba6bc | 18 | @param Pointer to temperature class object. |
bertgereels | 2:6bfe732ba6bc | 19 | @param Pointer to potentiometer class object. |
bertgereels | 2:6bfe732ba6bc | 20 | @param Pointer to lcd class object. |
bertgereels | 2:6bfe732ba6bc | 21 | @param Pointer to rgb class object. |
bertgereels | 2:6bfe732ba6bc | 22 | @param Pointer to buzzermusic class object. |
bertgereels | 2:6bfe732ba6bc | 23 | @return Nothing. |
bertgereels | 2:6bfe732ba6bc | 24 | */ |
bertgereels | 1:b5c534165dfe | 25 | Slave(int slave_id, Temperature *temperature, Potentiometer *potentiometer, LCD *lcd, RGB *rgb, BuzzerMusic *buzzerMusic); |
bertgereels | 2:6bfe732ba6bc | 26 | |
bertgereels | 2:6bfe732ba6bc | 27 | /* |
bertgereels | 2:6bfe732ba6bc | 28 | * Method that contains the slave state-machine. |
bertgereels | 2:6bfe732ba6bc | 29 | * Waits for incoming UDP packets from master. |
bertgereels | 2:6bfe732ba6bc | 30 | * Determines what type of command is received. |
bertgereels | 2:6bfe732ba6bc | 31 | * Executes method according to received command. |
bertgereels | 2:6bfe732ba6bc | 32 | * Sends acknowledgement back to the master. |
bertgereels | 2:6bfe732ba6bc | 33 | * |
bertgereels | 2:6bfe732ba6bc | 34 | @param Nothing. |
bertgereels | 2:6bfe732ba6bc | 35 | @return Nothing. |
bertgereels | 2:6bfe732ba6bc | 36 | */ |
bertgereels | 0:88d3b9015f7c | 37 | void handleIncomingFrame(void); |
bertgereels | 0:88d3b9015f7c | 38 | |
bertgereels | 0:88d3b9015f7c | 39 | private: |
bertgereels | 0:88d3b9015f7c | 40 | enum slaveStates{ |
bertgereels | 1:b5c534165dfe | 41 | STATE_INIT, |
bertgereels | 0:88d3b9015f7c | 42 | STATE_WAIT_FOR_FRAME, |
bertgereels | 0:88d3b9015f7c | 43 | STATE_HANDLE_FRAME, |
bertgereels | 1:b5c534165dfe | 44 | STATE_HANDLE_REQUEST, |
bertgereels | 1:b5c534165dfe | 45 | STATE_SEND_ACKNOWLEDGEMENT |
bertgereels | 0:88d3b9015f7c | 46 | }; |
bertgereels | 0:88d3b9015f7c | 47 | |
bertgereels | 0:88d3b9015f7c | 48 | slaveStates CurrentSlaveState; |
bertgereels | 1:b5c534165dfe | 49 | |
bertgereels | 1:b5c534165dfe | 50 | const static char *MASK; |
bertgereels | 1:b5c534165dfe | 51 | const static char *GATEWAY; |
bertgereels | 1:b5c534165dfe | 52 | |
bertgereels | 1:b5c534165dfe | 53 | int slaveId; |
bertgereels | 1:b5c534165dfe | 54 | |
bertgereels | 1:b5c534165dfe | 55 | Temperature *slaveTemp; |
bertgereels | 1:b5c534165dfe | 56 | Potentiometer *slavePot; |
bertgereels | 1:b5c534165dfe | 57 | LCD *slaveLcd; |
bertgereels | 1:b5c534165dfe | 58 | RGB *slaveRgb; |
bertgereels | 1:b5c534165dfe | 59 | BuzzerMusic *slaveBuzzerMusic; |
bertgereels | 1:b5c534165dfe | 60 | |
bertgereels | 2:6bfe732ba6bc | 61 | char ip_address[14]; |
bertgereels | 2:6bfe732ba6bc | 62 | char *command_info[3]; |
bertgereels | 2:6bfe732ba6bc | 63 | |
bertgereels | 1:b5c534165dfe | 64 | float temperatureValue; |
bertgereels | 1:b5c534165dfe | 65 | float potentiometerValue; |
bertgereels | 1:b5c534165dfe | 66 | string response; |
bertgereels | 0:88d3b9015f7c | 67 | |
bertgereels | 0:88d3b9015f7c | 68 | }; |
bertgereels | 0:88d3b9015f7c | 69 | |
bertgereels | 0:88d3b9015f7c | 70 | }; |