kstmApp/src/aSubReadDHT.c
changeset 1 7029db7ac3db
equal deleted inserted replaced
0:bd6bb22c6533 1:7029db7ac3db
       
     1 #include <stdio.h>
       
     2 #include <string.h>
       
     3 
       
     4 #include <dbDefs.h>
       
     5 #include <registryFunction.h>
       
     6 #include <subRecord.h>
       
     7 #include <aSubRecord.h>
       
     8 #include <epicsExport.h>
       
     9 
       
    10 #include "pi_2_dht_read.h"
       
    11 
       
    12 #define USED_DHT_TYPE 22
       
    13 int aSubReadDHTDebug = 0;
       
    14 unsigned short GPIOPin;
       
    15 
       
    16 static long aSubReadDHTInit(aSubRecord *precord)
       
    17 {
       
    18 unsigned short *a;
       
    19 
       
    20   if (aSubReadDHTDebug)
       
    21     printf("Record %s called aSubReadDHTInit(%p)\n", precord->name, (void*) precord);
       
    22 
       
    23   a = (unsigned short *)precord->a; 
       
    24   GPIOPin = a[0];
       
    25 
       
    26   if (aSubReadDHTDebug)
       
    27     printf("Record %s : GPIOPin = %d\n", precord->name, GPIOPin);
       
    28 
       
    29   return 0;
       
    30 }
       
    31 
       
    32 static long aSubReadDHTProcess(aSubRecord *precord)
       
    33 {
       
    34 float humidity, temperature;
       
    35 int ret;
       
    36 double *vala, *valb;
       
    37 
       
    38   if (aSubReadDHTDebug)
       
    39     printf("Record %s called aSubRreadDHTProcess(%p)\n", precord->name, (void*) precord);
       
    40 
       
    41   ret = pi_2_dht_read(USED_DHT_TYPE, GPIOPin, &humidity, &temperature);
       
    42 
       
    43   if (aSubReadDHTDebug)
       
    44     printf(" ret : %d, humidity = %f, temperature = %f\n", ret, humidity, temperature);
       
    45 
       
    46   if (!ret) {
       
    47     vala = (double *)precord->vala;
       
    48     valb = (double *)precord->valb;
       
    49     vala[0] = (double)temperature;
       
    50     valb[0] = (double)humidity;
       
    51   }
       
    52   return 0;
       
    53 }
       
    54 
       
    55 /* Register these symbols for use by IOC code: */
       
    56 
       
    57 epicsExportAddress(int, aSubReadDHTDebug);
       
    58 epicsRegisterFunction(aSubReadDHTInit);
       
    59 epicsRegisterFunction(aSubReadDHTProcess);
       
    60