Сбор информации о погодных условиях
Dependencies: RF24 USBDevice mbed
Diff: WirelessListener.cpp
- Revision:
- 3:346b49152f1e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WirelessListener.cpp Wed Oct 28 20:49:13 2015 +0000 @@ -0,0 +1,74 @@ +#include "WirelessListener.h" + +WirelessListener::WirelessListener(uint64_t readPipe, uint64_t writePipe){ + this->readPipe = readPipe; + this->writePipe = writePipe; + + radio = new RF24(P1_22, P1_21, P1_20, P1_25, P1_24); + wirelessInit(); + + termTmp36 = new ThermometerTmp36(AnalogIn(A0)); + term503 = new Thermistor(AnalogIn(A1), 0.001995, 0.00007997, 0.0000003863); + //term503->setError(-5000); + photores = new Photoresistor(AnalogIn(A2)); + + +} + +WirelessListener::~WirelessListener(){ + delete(radio); + delete(termTmp36); + delete(term503); + delete(photores); +} + +void WirelessListener::wirelessInit(){ + radio->begin(); + radio->setAutoAck(true); + radio->enableAckPayload(); + radio->powerUp(); + radio->setPALevel(RF24_PA_HIGH); + radio->setDataRate(RF24_2MBPS); + radio->setRetries(15,15); // Retry 15 times with 4000us delay between retries. + radio->openReadingPipe(1,readPipe); + radio->openWritingPipe(writePipe); +} + +void WirelessListener::startListening(){ + radio->startListening(); + //-------------------------------- + //платформозависимая от базы часть + short request; + short response; + //-------------------------------- + while(1){ + if(radio->available()){ + #ifdef DEBUG + pc.printf("available()\r\n"); + #endif + radio->read(&request, sizeof(request)); + #ifdef DEBUG + pc.printf("request = %d\r\n", request); + #endif + switch(request){ + case SHADE_TEMPERATURE: + response = termTmp36->getTemperature()*100.0; + break; + case LIGHT_TEMPERATURE: + response = term503->getTemperature()*100.0; + break; + case LIGHT: + response = photores->getIllumination(); + break; + default: + response = 0; + } + #ifdef DEBUG + pc.printf("response = %d\r\n", response); + #endif + radio->stopListening(); + radio->write(&response, sizeof(response)); + radio->startListening(); + } + } +} \ No newline at end of file