Files
a2bfc/ow-temp.c
2007-09-24 03:27:51 +00:00

36 lines
783 B
C

#include "ow-temp.h"
short ow_temp_read(unsigned char* devid, unsigned char format)
{
unsigned char data[8];
short rawtemp;
unsigned char i;
if (!ow_temp_idcheck(devid))
return OW_ERR_INVALIDDEVICE;
ow_selectdevice(devid);
ow_writebyte(68); // ask for a temperature reading
ow_wait(); // wait for operation to complete
ow_selectdevice(devid);
ow_writebyte(190); // retrieve the reading
for (i=0; i<8; i++)
data[i]=ow_readbyte();
rawtemp=(short)(data[0]+((int)data[1]<<8));
switch (format)
{
case OW_TEMP_FAHRENHEIT:
return (rawtemp*9+8)/80+32;
case OW_TEMP_CELSIUS:
return (rawtemp+8)>>4;
case OW_TEMP_RAW:
default:
return rawtemp;
}
}
unsigned char ow_temp_idcheck(unsigned char* devid)
{
return (devid[0]==40)?1:0;
}