OneWire Temperature library for interfacing DS18B20

Dependents:   DallasTemperature project1

Committer:
Wimpie
Date:
Sun Apr 17 17:27:20 2011 +0000
Revision:
0:ad90c2e86a63
improved 1W search function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wimpie 0:ad90c2e86a63 1 /*
Wimpie 0:ad90c2e86a63 2 * OneWireThermometer. Base class for Maxim One-Wire Thermometers.
Wimpie 0:ad90c2e86a63 3 * Uses the OneWireCRC library.
Wimpie 0:ad90c2e86a63 4 *
Wimpie 0:ad90c2e86a63 5 * Copyright (C) <2010> Petras Saduikis <petras@petras.co.uk>
Wimpie 0:ad90c2e86a63 6 *
Wimpie 0:ad90c2e86a63 7 * This file is part of OneWireThermometer.
Wimpie 0:ad90c2e86a63 8 *
Wimpie 0:ad90c2e86a63 9 * OneWireThermometer is free software: you can redistribute it and/or modify
Wimpie 0:ad90c2e86a63 10 * it under the terms of the GNU General Public License as published by
Wimpie 0:ad90c2e86a63 11 * the Free Software Foundation, either version 3 of the License, or
Wimpie 0:ad90c2e86a63 12 * (at your option) any later version.
Wimpie 0:ad90c2e86a63 13 *
Wimpie 0:ad90c2e86a63 14 * OneWireThermometer is distributed in the hope that it will be useful,
Wimpie 0:ad90c2e86a63 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Wimpie 0:ad90c2e86a63 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Wimpie 0:ad90c2e86a63 17 * GNU General Public License for more details.
Wimpie 0:ad90c2e86a63 18 *
Wimpie 0:ad90c2e86a63 19 * You should have received a copy of the GNU General Public License
Wimpie 0:ad90c2e86a63 20 * along with OneWireThermometer. If not, see <http://www.gnu.org/licenses/>.
Wimpie 0:ad90c2e86a63 21 */
Wimpie 0:ad90c2e86a63 22
Wimpie 0:ad90c2e86a63 23 #ifndef SNATCH59_ONEWIRETHERMOMETER_H
Wimpie 0:ad90c2e86a63 24 #define SNATCH59_ONEWIRETHERMOMETER_H
Wimpie 0:ad90c2e86a63 25
Wimpie 0:ad90c2e86a63 26 #include "mbed.h"
Wimpie 0:ad90c2e86a63 27 #include "OneWireCRC.h"
Wimpie 0:ad90c2e86a63 28 #include "OneWireDefs.h"
Wimpie 0:ad90c2e86a63 29
Wimpie 0:ad90c2e86a63 30 typedef unsigned char BYTE; // something a byte wide
Wimpie 0:ad90c2e86a63 31
Wimpie 0:ad90c2e86a63 32 class OneWireThermometer {
Wimpie 0:ad90c2e86a63 33 public:
Wimpie 0:ad90c2e86a63 34 OneWireThermometer(PinName pin, bool crcOn, bool useAddr, bool parasitic, int device_id, unsigned char *Address );
Wimpie 0:ad90c2e86a63 35
Wimpie 0:ad90c2e86a63 36 bool initialize();
Wimpie 0:ad90c2e86a63 37 float readTemperature();
Wimpie 0:ad90c2e86a63 38 virtual void setResolution(eResolution resln) = 0;
Wimpie 0:ad90c2e86a63 39
Wimpie 0:ad90c2e86a63 40 protected:
Wimpie 0:ad90c2e86a63 41 bool _useParasiticPower;
Wimpie 0:ad90c2e86a63 42 bool _useCRC;
Wimpie 0:ad90c2e86a63 43 bool _useAddress;
Wimpie 0:ad90c2e86a63 44 int _deviceId;
Wimpie 0:ad90c2e86a63 45
Wimpie 0:ad90c2e86a63 46 eResolution _resolution;
Wimpie 0:ad90c2e86a63 47 BYTE _ROMCode[8];
Wimpie 0:ad90c2e86a63 48
Wimpie 0:ad90c2e86a63 49
Wimpie 0:ad90c2e86a63 50 OneWireCRC oneWire;
Wimpie 0:ad90c2e86a63 51
Wimpie 0:ad90c2e86a63 52 void resetAndAddress();
Wimpie 0:ad90c2e86a63 53 bool readAndValidateData(BYTE* data);
Wimpie 0:ad90c2e86a63 54 virtual float calculateTemperature(BYTE* data) = 0; // device specific
Wimpie 0:ad90c2e86a63 55 };
Wimpie 0:ad90c2e86a63 56
Wimpie 0:ad90c2e86a63 57 #endif