Files
a2bfc/ow-temp.c

31 lines
663 B
C

#include "ow-temp.h"
short ow_temp_read(unsigned char* devid, unsigned char format)
{
unsigned char t1, t2;
short rawtemp;
if (devid[0]!=40)
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
t1=ow_readbyte();
t2=ow_readbyte();
ow_reset();
rawtemp=(short)(t1+((int)t2<<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;
}
}