#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);