--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kstmApp/src/aSubReadDHT.c Wed Sep 09 18:06:59 2015 +0200
@@ -0,0 +1,60 @@
+#include <stdio.h>
+#include <string.h>
+
+#include <dbDefs.h>
+#include <registryFunction.h>
+#include <subRecord.h>
+#include <aSubRecord.h>
+#include <epicsExport.h>
+
+#include "pi_2_dht_read.h"
+
+#define USED_DHT_TYPE 22
+int aSubReadDHTDebug = 0;
+unsigned short GPIOPin;
+
+static long aSubReadDHTInit(aSubRecord *precord)
+{
+unsigned short *a;
+
+ if (aSubReadDHTDebug)
+ printf("Record %s called aSubReadDHTInit(%p)\n", precord->name, (void*) precord);
+
+ a = (unsigned short *)precord->a;
+ GPIOPin = a[0];
+
+ if (aSubReadDHTDebug)
+ printf("Record %s : GPIOPin = %d\n", precord->name, GPIOPin);
+
+ return 0;
+}
+
+static long aSubReadDHTProcess(aSubRecord *precord)
+{
+float humidity, temperature;
+int ret;
+double *vala, *valb;
+
+ if (aSubReadDHTDebug)
+ printf("Record %s called aSubRreadDHTProcess(%p)\n", precord->name, (void*) precord);
+
+ ret = pi_2_dht_read(USED_DHT_TYPE, GPIOPin, &humidity, &temperature);
+
+ if (aSubReadDHTDebug)
+ printf(" ret : %d, humidity = %f, temperature = %f\n", ret, humidity, temperature);
+
+ if (!ret) {
+ vala = (double *)precord->vala;
+ valb = (double *)precord->valb;
+ vala[0] = (double)temperature;
+ valb[0] = (double)humidity;
+ }
+ return 0;
+}
+
+/* Register these symbols for use by IOC code: */
+
+epicsExportAddress(int, aSubReadDHTDebug);
+epicsRegisterFunction(aSubReadDHTInit);
+epicsRegisterFunction(aSubReadDHTProcess);
+