diff -r bd6bb22c6533 -r 7029db7ac3db kstmApp/src/aSubReadDHT.c --- /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 +#include + +#include +#include +#include +#include +#include + +#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); +