Based on another DHT library, this is just a modified one without using the RTC component

Dependencies:   mbed

Revision:
2:ce7b80e0bb2e
Parent:
1:6df9454191d4
Child:
3:8c402316ce7e
--- a/DHT/DHT.cpp	Fri Dec 21 03:47:05 2018 +0000
+++ b/DHT/DHT.cpp	Thu Dec 27 21:38:08 2018 +0000
@@ -94,7 +94,7 @@
             wait_us(30);
             bitTimes[i*8 + j] = DHT_io;
             int count = 0;
-            while (DHT_io == 1 && count < 110) {
+            while (DHT_io == 1 && count < 100) {
                 wait_us(1);
                 count++;
             }
@@ -102,27 +102,35 @@
     }
     DHT_io.output();
     DHT_io = 1;
-    for (i = 0; i < 5; i++) {
-        b=0;
+
+    BuildRxBytes(bitTimes);
+    /*for (i = 0; i < 5; i++) {
+        b = 0;
         for (j = 0; j< 8; j++) {
-            if (bitTimes[i*8+j+1] > 0) {
+            if ( bitTimes[ i*8+j+1 ] > 0) {
                 b |= ( 1 << (7-j));
             }
         }
         DHT_data[i]=b;
-    }
+    }*/
 
-    if (DHT_data[4] == ((DHT_data[0] + DHT_data[1] + DHT_data[2] + DHT_data[3]) & 0xFF)) {
+    /*if (DHT_data[4] == ((DHT_data[0] + DHT_data[1] + DHT_data[2] + DHT_data[3]) & 0xFF)) {
         _lastReadTime = currentTime;
         _lastTemperature = CalcTemperature();
         _lastHumidity = CalcHumidity();
 
     } else {
         err = ERROR_CHECKSUM;
+    }*/
+
+    if(ValidCheckSum()){
+        _lastReadTime = currentTime;
+    }
+    else{
+        err = ERROR_CHECKSUM;
     }
 
     return err;
-
 }
 
 float DHT::CalcTemperature() {
@@ -208,4 +216,27 @@
     return 0;
 }
 
+void  DHT::BuildRxBytes(unsigned int * bitTimes ){
+    int byteValue = 0;
+    for (int byteCount = 0; byteCount < 5; byteCount++) {
+        byteValue = 0;
+        for (int bit = 0; bit < 8; bit++) {
+            if ( bitTimes[ (byteCount * 8)+ bit + 1] > 0) {
+                byteValue |= ( 1 << (7 - bit) );
+            }
+        }
+        DHT_data[byteCount] = byteValue;
+    }
+}
 
+bool  DHT::ValidCheckSum(void){
+    bool CorrectCheckSum = false;
+
+    if (DHT_data[4] == ((DHT_data[0] + DHT_data[1] + DHT_data[2] + DHT_data[3]) & 0xFF)) {
+        _lastTemperature = CalcTemperature();
+        _lastHumidity = CalcHumidity();
+        CorrectCheckSum = true;
+    }
+
+    return CorrectCheckSum;
+}