Leon Wehmeier / Mbed OS fiasco_max32630

Dependencies:   SoftSerial MAX14690 Buffer

Fork of rtos_threading_with_callback by mbed_example

Committer:
lwehmeier
Date:
Sun Feb 25 16:40:28 2018 +0000
Revision:
2:bf699e054b34
Child:
3:d7ec6dc025b0
changed to modular design; rtos support; BMI160, BMP180, SSD1306, MPU6050, DHT11, SD support implemented; bit stuffing for link layer implemented; priority queue for data transmission; high-priority SPI link layer output thread

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lwehmeier 2:bf699e054b34 1 #include "mbed.h"
lwehmeier 2:bf699e054b34 2 #include "DHT.h"
lwehmeier 2:bf699e054b34 3 #include "rtos.h"
lwehmeier 2:bf699e054b34 4 #include "global.h"
lwehmeier 2:bf699e054b34 5
lwehmeier 2:bf699e054b34 6 class DHTData
lwehmeier 2:bf699e054b34 7 {
lwehmeier 2:bf699e054b34 8 public:
lwehmeier 2:bf699e054b34 9 static void run()
lwehmeier 2:bf699e054b34 10 {
lwehmeier 2:bf699e054b34 11 while(1)
lwehmeier 2:bf699e054b34 12 {
lwehmeier 2:bf699e054b34 13 int error = dht.readData();
lwehmeier 2:bf699e054b34 14 if (0 == error) {
lwehmeier 2:bf699e054b34 15 float c = dht.ReadTemperature(CELCIUS);
lwehmeier 2:bf699e054b34 16 float h = dht.ReadHumidity();
lwehmeier 2:bf699e054b34 17 humidity = h;
lwehmeier 2:bf699e054b34 18 float dpf = dht.CalcdewPointFast(c, h);
lwehmeier 2:bf699e054b34 19 printf("DHT: Temperature in Celcius: %4.2f\r\n", c);
lwehmeier 2:bf699e054b34 20 printf("DHT: Humidity is %4.2f, Dewpoint: %4.2f\r\n", h, dpf);
lwehmeier 2:bf699e054b34 21
lwehmeier 2:bf699e054b34 22 {
lwehmeier 2:bf699e054b34 23 linkPacket *p = new linkPacket();
lwehmeier 2:bf699e054b34 24 uint8_t *data = new uint8_t[4];
lwehmeier 2:bf699e054b34 25 data[0]=((uint8_t*)&h)[0];
lwehmeier 2:bf699e054b34 26 data[1]=((uint8_t*)&h)[1];
lwehmeier 2:bf699e054b34 27 data[2]=((uint8_t*)&h)[2];
lwehmeier 2:bf699e054b34 28 data[3]=((uint8_t*)&h)[3];
lwehmeier 2:bf699e054b34 29 p->payload=data;
lwehmeier 2:bf699e054b34 30 p->payloadSz=4;
lwehmeier 2:bf699e054b34 31 p->priority =3;
lwehmeier 2:bf699e054b34 32 p->frameType = FRAMETYPE_HUMIDITY;
lwehmeier 2:bf699e054b34 33 txQueue.addPacket(p);
lwehmeier 2:bf699e054b34 34 }
lwehmeier 2:bf699e054b34 35 {
lwehmeier 2:bf699e054b34 36 linkPacket *p = new linkPacket();
lwehmeier 2:bf699e054b34 37 uint8_t *data = new uint8_t[4];
lwehmeier 2:bf699e054b34 38 data[0]=((uint8_t*)&dpf)[0];
lwehmeier 2:bf699e054b34 39 data[1]=((uint8_t*)&dpf)[1];
lwehmeier 2:bf699e054b34 40 data[2]=((uint8_t*)&dpf)[2];
lwehmeier 2:bf699e054b34 41 data[3]=((uint8_t*)&dpf)[3];
lwehmeier 2:bf699e054b34 42 p->payload=data;
lwehmeier 2:bf699e054b34 43 p->payloadSz=4;
lwehmeier 2:bf699e054b34 44 p->priority =3;
lwehmeier 2:bf699e054b34 45 p->frameType = FRAMETYPE_DEWPOINT;
lwehmeier 2:bf699e054b34 46 txQueue.addPacket(p);
lwehmeier 2:bf699e054b34 47 }
lwehmeier 2:bf699e054b34 48
lwehmeier 2:bf699e054b34 49 } else {
lwehmeier 2:bf699e054b34 50 printf("DHT: Error: %d\r\n", error);
lwehmeier 2:bf699e054b34 51 }
lwehmeier 2:bf699e054b34 52 rtos::Thread::wait(20000);//ms
lwehmeier 2:bf699e054b34 53 }
lwehmeier 2:bf699e054b34 54 }
lwehmeier 2:bf699e054b34 55 DHTData()
lwehmeier 2:bf699e054b34 56 {
lwehmeier 2:bf699e054b34 57 registerThread(DHTData::run);
lwehmeier 2:bf699e054b34 58 }
lwehmeier 2:bf699e054b34 59 static DHT dht;
lwehmeier 2:bf699e054b34 60 };
lwehmeier 2:bf699e054b34 61 DHT DHTData::dht(P3_2, DHT11);;
lwehmeier 2:bf699e054b34 62
lwehmeier 2:bf699e054b34 63 // some witchcraft to register run function without touching anything outside our library
lwehmeier 2:bf699e054b34 64 static DHTData _dummy;