kstmApp/src/aSubReadDHT.c
changeset 1 7029db7ac3db
--- /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);
+