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

Committer:
bertgereels
Date:
Fri Mar 23 13:42:13 2018 +0000
Revision:
3:538e17979246
Parent:
2:6bfe732ba6bc
Cleared response array before constructing ack.

Who changed what in which revision?

UserRevisionLine numberNew 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 };