Сбор информации о погодных условиях
Dependencies: RF24 USBDevice mbed
WirelessListener.cpp@3:346b49152f1e, 2015-10-28 (annotated)
- Committer:
- pro100kot14
- Date:
- Wed Oct 28 20:49:13 2015 +0000
- Revision:
- 3:346b49152f1e
Added the class that implements the data transmission through the module nRF24L01;; Running waiting for requests and responses to them
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pro100kot14 | 3:346b49152f1e | 1 | #include "WirelessListener.h" |
pro100kot14 | 3:346b49152f1e | 2 | |
pro100kot14 | 3:346b49152f1e | 3 | WirelessListener::WirelessListener(uint64_t readPipe, uint64_t writePipe){ |
pro100kot14 | 3:346b49152f1e | 4 | this->readPipe = readPipe; |
pro100kot14 | 3:346b49152f1e | 5 | this->writePipe = writePipe; |
pro100kot14 | 3:346b49152f1e | 6 | |
pro100kot14 | 3:346b49152f1e | 7 | radio = new RF24(P1_22, P1_21, P1_20, P1_25, P1_24); |
pro100kot14 | 3:346b49152f1e | 8 | wirelessInit(); |
pro100kot14 | 3:346b49152f1e | 9 | |
pro100kot14 | 3:346b49152f1e | 10 | termTmp36 = new ThermometerTmp36(AnalogIn(A0)); |
pro100kot14 | 3:346b49152f1e | 11 | term503 = new Thermistor(AnalogIn(A1), 0.001995, 0.00007997, 0.0000003863); |
pro100kot14 | 3:346b49152f1e | 12 | //term503->setError(-5000); |
pro100kot14 | 3:346b49152f1e | 13 | photores = new Photoresistor(AnalogIn(A2)); |
pro100kot14 | 3:346b49152f1e | 14 | |
pro100kot14 | 3:346b49152f1e | 15 | |
pro100kot14 | 3:346b49152f1e | 16 | } |
pro100kot14 | 3:346b49152f1e | 17 | |
pro100kot14 | 3:346b49152f1e | 18 | WirelessListener::~WirelessListener(){ |
pro100kot14 | 3:346b49152f1e | 19 | delete(radio); |
pro100kot14 | 3:346b49152f1e | 20 | delete(termTmp36); |
pro100kot14 | 3:346b49152f1e | 21 | delete(term503); |
pro100kot14 | 3:346b49152f1e | 22 | delete(photores); |
pro100kot14 | 3:346b49152f1e | 23 | } |
pro100kot14 | 3:346b49152f1e | 24 | |
pro100kot14 | 3:346b49152f1e | 25 | void WirelessListener::wirelessInit(){ |
pro100kot14 | 3:346b49152f1e | 26 | radio->begin(); |
pro100kot14 | 3:346b49152f1e | 27 | radio->setAutoAck(true); |
pro100kot14 | 3:346b49152f1e | 28 | radio->enableAckPayload(); |
pro100kot14 | 3:346b49152f1e | 29 | radio->powerUp(); |
pro100kot14 | 3:346b49152f1e | 30 | radio->setPALevel(RF24_PA_HIGH); |
pro100kot14 | 3:346b49152f1e | 31 | radio->setDataRate(RF24_2MBPS); |
pro100kot14 | 3:346b49152f1e | 32 | radio->setRetries(15,15); // Retry 15 times with 4000us delay between retries. |
pro100kot14 | 3:346b49152f1e | 33 | radio->openReadingPipe(1,readPipe); |
pro100kot14 | 3:346b49152f1e | 34 | radio->openWritingPipe(writePipe); |
pro100kot14 | 3:346b49152f1e | 35 | } |
pro100kot14 | 3:346b49152f1e | 36 | |
pro100kot14 | 3:346b49152f1e | 37 | void WirelessListener::startListening(){ |
pro100kot14 | 3:346b49152f1e | 38 | radio->startListening(); |
pro100kot14 | 3:346b49152f1e | 39 | //-------------------------------- |
pro100kot14 | 3:346b49152f1e | 40 | //платформозависимая от базы часть |
pro100kot14 | 3:346b49152f1e | 41 | short request; |
pro100kot14 | 3:346b49152f1e | 42 | short response; |
pro100kot14 | 3:346b49152f1e | 43 | //-------------------------------- |
pro100kot14 | 3:346b49152f1e | 44 | while(1){ |
pro100kot14 | 3:346b49152f1e | 45 | if(radio->available()){ |
pro100kot14 | 3:346b49152f1e | 46 | #ifdef DEBUG |
pro100kot14 | 3:346b49152f1e | 47 | pc.printf("available()\r\n"); |
pro100kot14 | 3:346b49152f1e | 48 | #endif |
pro100kot14 | 3:346b49152f1e | 49 | radio->read(&request, sizeof(request)); |
pro100kot14 | 3:346b49152f1e | 50 | #ifdef DEBUG |
pro100kot14 | 3:346b49152f1e | 51 | pc.printf("request = %d\r\n", request); |
pro100kot14 | 3:346b49152f1e | 52 | #endif |
pro100kot14 | 3:346b49152f1e | 53 | switch(request){ |
pro100kot14 | 3:346b49152f1e | 54 | case SHADE_TEMPERATURE: |
pro100kot14 | 3:346b49152f1e | 55 | response = termTmp36->getTemperature()*100.0; |
pro100kot14 | 3:346b49152f1e | 56 | break; |
pro100kot14 | 3:346b49152f1e | 57 | case LIGHT_TEMPERATURE: |
pro100kot14 | 3:346b49152f1e | 58 | response = term503->getTemperature()*100.0; |
pro100kot14 | 3:346b49152f1e | 59 | break; |
pro100kot14 | 3:346b49152f1e | 60 | case LIGHT: |
pro100kot14 | 3:346b49152f1e | 61 | response = photores->getIllumination(); |
pro100kot14 | 3:346b49152f1e | 62 | break; |
pro100kot14 | 3:346b49152f1e | 63 | default: |
pro100kot14 | 3:346b49152f1e | 64 | response = 0; |
pro100kot14 | 3:346b49152f1e | 65 | } |
pro100kot14 | 3:346b49152f1e | 66 | #ifdef DEBUG |
pro100kot14 | 3:346b49152f1e | 67 | pc.printf("response = %d\r\n", response); |
pro100kot14 | 3:346b49152f1e | 68 | #endif |
pro100kot14 | 3:346b49152f1e | 69 | radio->stopListening(); |
pro100kot14 | 3:346b49152f1e | 70 | radio->write(&response, sizeof(response)); |
pro100kot14 | 3:346b49152f1e | 71 | radio->startListening(); |
pro100kot14 | 3:346b49152f1e | 72 | } |
pro100kot14 | 3:346b49152f1e | 73 | } |
pro100kot14 | 3:346b49152f1e | 74 | } |