kstmApp/src/aSubReadDHT.c
author Heinz Junkes <junkes@fhi-berlin.mpg.de>
Wed, 09 Sep 2015 18:06:59 +0200
changeset 1 7029db7ac3db
permissions -rw-r--r--
Add adcPi device support

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