annotate service/arduinoNode/arduino-libraries/DallasTemperature/DallasTemperature.h @ 1449:a2bc6602a0db

dockerfile deps Ignore-this: b12d406bc1fee7c07092d273904b8b3d darcs-hash:8b40b2634a6df26e0de4f6ef31c6ef2aabf14c31
author drewp <drewp@bigasterisk.com>
date Wed, 25 Sep 2019 17:25:19 -0700
parents 4f5825a9fc47
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
970
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 #ifndef DallasTemperature_h
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2 #define DallasTemperature_h
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 #define DALLASTEMPLIBVERSION "3.7.2"
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6 // This library is free software; you can redistribute it and/or
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7 // modify it under the terms of the GNU Lesser General Public
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
8 // License as published by the Free Software Foundation; either
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9 // version 2.1 of the License, or (at your option) any later version.
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11 // set to true to include code for new and delete operators
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12 #ifndef REQUIRESNEW
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13 #define REQUIRESNEW false
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 #endif
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16 // set to true to include code implementing alarm search functions
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17 #ifndef REQUIRESALARMS
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18 #define REQUIRESALARMS true
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19 #endif
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21 #include <inttypes.h>
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22 #include <OneWire.h>
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 // Model IDs
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25 #define DS18S20MODEL 0x10 // also DS1820
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26 #define DS18B20MODEL 0x28
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27 #define DS1822MODEL 0x22
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28 #define DS1825MODEL 0x3B
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
30 // OneWire commands
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
31 #define STARTCONVO 0x44 // Tells device to take a temperature reading and put it on the scratchpad
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
32 #define COPYSCRATCH 0x48 // Copy EEPROM
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
33 #define READSCRATCH 0xBE // Read EEPROM
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
34 #define WRITESCRATCH 0x4E // Write to EEPROM
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
35 #define RECALLSCRATCH 0xB8 // Reload from last known
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
36 #define READPOWERSUPPLY 0xB4 // Determine if device needs parasite power
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
37 #define ALARMSEARCH 0xEC // Query bus for devices with an alarm condition
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
38
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
39 // Scratchpad locations
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
40 #define TEMP_LSB 0
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
41 #define TEMP_MSB 1
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
42 #define HIGH_ALARM_TEMP 2
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
43 #define LOW_ALARM_TEMP 3
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
44 #define CONFIGURATION 4
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
45 #define INTERNAL_BYTE 5
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
46 #define COUNT_REMAIN 6
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
47 #define COUNT_PER_C 7
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
48 #define SCRATCHPAD_CRC 8
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
49
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
50 // Device resolution
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
51 #define TEMP_9_BIT 0x1F // 9 bit
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
52 #define TEMP_10_BIT 0x3F // 10 bit
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
53 #define TEMP_11_BIT 0x5F // 11 bit
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
54 #define TEMP_12_BIT 0x7F // 12 bit
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
55
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
56 // Error Codes
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
57 #define DEVICE_DISCONNECTED_C -127
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
58 #define DEVICE_DISCONNECTED_F -196.6
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
59 #define DEVICE_DISCONNECTED_RAW -7040
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
60
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
61 typedef uint8_t DeviceAddress[8];
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
62
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
63 class DallasTemperature
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
64 {
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
65 public:
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
66
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
67 DallasTemperature(OneWire*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
68
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
69 // initialise bus
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
70 void begin(void);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
71
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
72 // returns the number of devices found on the bus
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
73 uint8_t getDeviceCount(void);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
74
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
75 // returns true if address is valid
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
76 bool validAddress(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
77
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
78 // finds an address at a given index on the bus
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
79 bool getAddress(uint8_t*, uint8_t);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
80
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
81 // attempt to determine if the device at the given address is connected to the bus
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
82 bool isConnected(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
83
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
84 // attempt to determine if the device at the given address is connected to the bus
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
85 // also allows for updating the read scratchpad
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
86 bool isConnected(const uint8_t*, uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
87
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
88 // read device's scratchpad
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
89 void readScratchPad(const uint8_t*, uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
90
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
91 // write device's scratchpad
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
92 void writeScratchPad(const uint8_t*, const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
93
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
94 // read device's power requirements
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
95 bool readPowerSupply(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
96
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
97 // get global resolution
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
98 uint8_t getResolution();
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
99
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
100 // set global resolution to 9, 10, 11, or 12 bits
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
101 void setResolution(uint8_t);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
102
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
103 // returns the device resolution: 9, 10, 11, or 12 bits
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
104 uint8_t getResolution(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
105
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
106 // set resolution of a device to 9, 10, 11, or 12 bits
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
107 bool setResolution(const uint8_t*, uint8_t);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
108
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
109 // sets/gets the waitForConversion flag
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
110 void setWaitForConversion(bool);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
111 bool getWaitForConversion(void);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
112
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
113 // sets/gets the checkForConversion flag
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
114 void setCheckForConversion(bool);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
115 bool getCheckForConversion(void);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
116
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
117 // sends command for all devices on the bus to perform a temperature conversion
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
118 void requestTemperatures(void);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
119
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
120 // sends command for one device to perform a temperature conversion by address
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
121 bool requestTemperaturesByAddress(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
122
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
123 // sends command for one device to perform a temperature conversion by index
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
124 bool requestTemperaturesByIndex(uint8_t);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
125
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
126 // returns temperature raw value (12 bit integer of 1/16 degrees C)
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
127 int16_t getTemp(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
128
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
129 // returns temperature in degrees C
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
130 float getTempC(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
131
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
132 // returns temperature in degrees F
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
133 float getTempF(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
134
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
135 // Get temperature for device index (slow)
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
136 float getTempCByIndex(uint8_t);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
137
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
138 // Get temperature for device index (slow)
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
139 float getTempFByIndex(uint8_t);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
140
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
141 // returns true if the bus requires parasite power
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
142 bool isParasitePowerMode(void);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
143
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
144 bool isConversionAvailable(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
145
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
146 #if REQUIRESALARMS
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
147
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
148 typedef void AlarmHandler(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
149
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
150 // sets the high alarm temperature for a device
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
151 // accepts a char. valid range is -55C - 125C
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
152 void setHighAlarmTemp(const uint8_t*, char);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
153
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
154 // sets the low alarm temperature for a device
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
155 // accepts a char. valid range is -55C - 125C
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
156 void setLowAlarmTemp(const uint8_t*, char);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
157
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
158 // returns a signed char with the current high alarm temperature for a device
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
159 // in the range -55C - 125C
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
160 char getHighAlarmTemp(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
161
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
162 // returns a signed char with the current low alarm temperature for a device
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
163 // in the range -55C - 125C
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
164 char getLowAlarmTemp(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
165
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
166 // resets internal variables used for the alarm search
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
167 void resetAlarmSearch(void);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
168
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
169 // search the wire for devices with active alarms
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
170 bool alarmSearch(uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
171
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
172 // returns true if ia specific device has an alarm
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
173 bool hasAlarm(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
174
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
175 // returns true if any device is reporting an alarm on the bus
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
176 bool hasAlarm(void);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
177
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
178 // runs the alarm handler for all devices returned by alarmSearch()
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
179 void processAlarms(void);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
180
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
181 // sets the alarm handler
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
182 void setAlarmHandler(const AlarmHandler *);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
183
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
184 // The default alarm handler
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
185 static void defaultAlarmHandler(const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
186
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
187 #endif
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
188
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
189 // convert from Celsius to Fahrenheit
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
190 static float toFahrenheit(float);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
191
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
192 // convert from Fahrenheit to Celsius
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
193 static float toCelsius(float);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
194
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
195 // convert from raw to Celsius
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
196 static float rawToCelsius(int16_t);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
197
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
198 // convert from raw to Fahrenheit
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
199 static float rawToFahrenheit(int16_t);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
200
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
201 #if REQUIRESNEW
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
202
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
203 // initialize memory area
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
204 void* operator new (unsigned int);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
205
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
206 // delete memory reference
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
207 void operator delete(void*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
208
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
209 #endif
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
210
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
211 private:
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
212 typedef uint8_t ScratchPad[9];
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
213
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
214 // parasite power on or off
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
215 bool parasite;
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
216
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
217 // used to determine the delay amount needed to allow for the
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
218 // temperature conversion to take place
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
219 uint8_t bitResolution;
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
220
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
221 // used to requestTemperature with or without delay
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
222 bool waitForConversion;
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
223
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
224 // used to requestTemperature to dynamically check if a conversion is complete
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
225 bool checkForConversion;
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
226
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
227 // count of devices on the bus
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
228 uint8_t devices;
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
229
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
230 // Take a pointer to one wire instance
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
231 OneWire* _wire;
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
232
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
233 // reads scratchpad and returns the raw temperature
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
234 int16_t calculateTemperature(const uint8_t*, uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
235
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
236 int16_t millisToWaitForConversion(uint8_t);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
237
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
238 void blockTillConversionComplete(uint8_t, const uint8_t*);
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
239
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
240 #if REQUIRESALARMS
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
241
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
242 // required for alarmSearch
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
243 uint8_t alarmSearchAddress[8];
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
244 char alarmSearchJunction;
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
245 uint8_t alarmSearchExhausted;
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
246
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
247 // the alarm handler function pointer
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
248 AlarmHandler *_AlarmHandler;
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
249
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
250 #endif
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
251
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
252 };
4f5825a9fc47 some external arduino libs, minus examples and docs
drewp <drewp@bigasterisk.com>
parents:
diff changeset
253 #endif