sqefqsdf
Dependencies: C12832 EthernetInterface LM75B mbed-rtos mbed
Fork of app-board-LM75B by
Diff: IOController.cpp
- Revision:
- 6:77a4c45f6416
diff -r 608f2bf4d3f7 -r 77a4c45f6416 IOController.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOController.cpp Thu Mar 23 12:51:27 2017 +0000 @@ -0,0 +1,163 @@ +#include "IOController.h" + +IOController::IOController() +{ + + printf("-------------STARTING PROGRAM------------\r\n"); + printf("-----------------------------------------\r\n"); + + //INPUT + temperatureSensor = new TemperatureSensor(p28, p27); + potentiometer = new Potentiometer(p19); + joystick = new Joystick(p15,p12,p13,p16,p14); + + //OUTPUT + speaker = new Speaker(p26); + rgbLed = new RGB(p23,p24,p25); + lcd = new LCD(p5, p7, p6, p8, p11); + destinationID = 114; + + //ETHERNET + //communication = new Communication(); + receivePacket = new Packet(); + /* + std::vector<uint8_t> IDN; + IDN.push_back(110); + IDN.push_back(113); + std::vector<int16_t> TMP; + TMP.push_back(temperatureSensor->temp_short()); + TMP.push_back(temperatureSensor->temp_short()); + receivePacket = new Packet(2, 111, 240, IDN , TMP); + printf("Packet 1 :'%s'\r\n",receivePacket->toDataString().c_str()); + receivePacket2 = new Packet(); + receivePacket2->dataInput(receivePacket->toDataString()); + printf("Packet 2 :'%s'\r\n",receivePacket2->toDataString().c_str()); + std::string str = receivePacket->toDataString(); + for (int i =0; i<str.size();i++){ + printf("char i: %c\r\n",str[i]); + } + float s =temperatureSensor->average(TMP); + printf("average: %f",s); + */ + startReceiving = false; + rgbLed->off(); +} + +IOController::~IOController() +{ + delete temperatureSensor; + delete potentiometer; + delete joystick; + delete speaker; + delete rgbLed; + delete lcd; + delete receivePacket; + delete communication; +} + +int IOController::run() +{ + Joystick::Direction direction = joystick-> getDirection();//get direction input + switch(direction) { + case Joystick::UP: { + lcd->cls(); + lcd->locate(0,3); + lcd->printf("Receiving mode"); + communication = new Communication(); + communication->connect(); + startReceiving = true; + break; + } + case Joystick::DOWN: { + + /*float temperature = temperatureSensor->read(); + lcd->cls(); + lcd->locate(0,3); + lcd->printf("Temp = %.3f\n", temperature); + */ + rgbLed->setRgbColor(potentiometer->readValue()); + std::string test; + //12, 101, 1, 8, 230, 1, 105 + char ca[] = {0xAA,0x00,0xFF,0x55}; + + for (int i = 0; i<sizeof(ca);i++){ + test.push_back(ca[i]); + } + char c = receivePacket->crc(test,0); + lcd->cls(); + lcd->locate(0,3); + lcd->printf("Dest. ID= %d\n", c); + break; + } + + case Joystick::RIGHT: { + destinationID = (destinationID < 117) ? destinationID+1 : destinationID; + lcd->cls(); + lcd->locate(0,3); + lcd->printf("Dest. ID= %d\n", destinationID); + wait_ms(300); + break; + } + + case Joystick::LEFT: { + destinationID = (destinationID > 100) ? destinationID-1 : destinationID; + lcd->cls(); + lcd->locate(0,3); + lcd->printf("Dest ID= %d\n", destinationID); + wait_ms(300); + break; + } + case Joystick::MIDDLE: { + communication = new Communication(); + communication->setOwnID(114); + communication->connect(); + destinationID = 113; + receivePacket->addValues(receivePacket->getNUM(),destinationID,potentiometer->readValue(), communication->getOwnID() ,temperatureSensor->temp_short()); + lcd->cls(); + lcd->locate(0,3); + lcd->printf("Sending to %d\n", destinationID); + communication->sendDataPacket(receivePacket->toDataString()); + startReceiving = true; + wait_ms(500); + break; + } + default: { + if(startReceiving) { + std::string buf; + //get data from other mbed + buf = communication->getData(); + + //info into Packet + receivePacket->dataInput(buf); + + //Set color + rgbLed->setRgbColor(receivePacket->getPWM()); + + //Set speaker + speaker->play(receivePacket->getNUM()); + + //Average temperature on LCD + lcd->cls(); + lcd->locate(0,3); + float s =temperatureSensor->average(receivePacket->getTMP()); + lcd->printf("Average %f\n", s); + + + + if (!receivePacket->idCheck(communication->getOwnID()) || !receivePacket->crcCheck()){ + lcd->printf("GAME OVER\n", s); + return -1; + } + //change packet to data + receivePacket->addValues(receivePacket->getNUM(),destinationID,potentiometer->readValue(), communication->getOwnID() ,temperatureSensor->temp_short()); + + //sending data to next + communication->sendDataPacket(receivePacket->toDataString()); + wait_ms(110); + break; + + } + } + } + return 1; +} \ No newline at end of file