Skip to content

Commit dd3e0c2

Browse files
author
James Foster
authored
Refactor to use subclass RTD when calculating temperature (#9)
Fixes #7.
1 parent 419ea5a commit dd3e0c2

File tree

6 files changed

+14
-30
lines changed

6 files changed

+14
-30
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ vendor
1515
# C++ stuff
1616
*.bin
1717
*.bin.dSYM
18+
settings.json

scripts/install_libraries.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
#!/bin/bash
2+
3+
# Remove this file when https://github.com/Arduino-CI/arduino_ci/issues/278 is fixed
4+
25
# arduino_ci runs this script in its GitHub Action because it is referenced by CUSTOM_INIT_SCRIPT
36
# arduino_ci ensures that the script is run in the libraries directory
47

src/Adafruit_MAX31865.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class Adafruit_MAX31865_Base {
7878

7979
uint8_t readFault(void);
8080
void clearFault(void);
81-
uint16_t readRTD();
81+
virtual uint16_t readRTD();
8282

8383
void setWires(max31865_numwires_t wires);
8484
void autoConvert(bool b);

src/Adafruit_MAX31865_CI.cpp

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@
1010

1111
Adafruit_MAX31865_CI::Adafruit_MAX31865_CI(int8_t spi_cs, int8_t spi_mosi,
1212
int8_t spi_miso, int8_t spi_clk)
13-
: Adafruit_MAX31865_Base(spi_cs, spi_mosi, spi_miso, spi_clk) {
14-
rtd = 0;
15-
fault = 0;
16-
}
13+
: Adafruit_MAX31865_Base(spi_cs, spi_mosi, spi_miso, spi_clk) {}
1714

1815
Adafruit_MAX31865_CI::Adafruit_MAX31865_CI(int8_t spi_cs)
1916
: Adafruit_MAX31865_Base(spi_cs) {}
@@ -22,17 +19,9 @@ bool Adafruit_MAX31865_CI::begin(max31865_numwires_t wires) {
2219
return Adafruit_MAX31865_Base::begin(wires);
2320
}
2421

25-
uint8_t Adafruit_MAX31865_CI::readFault(void) { return fault; }
26-
27-
void Adafruit_MAX31865_CI::clearFault(void) { fault = 0; }
28-
22+
// BAD: see https://github.com/Arduino-CI/Adafruit_MAX31865/issues/7
2923
float Adafruit_MAX31865_CI::temperature(float RTDnominal, float refResistor) {
3024
return Adafruit_MAX31865_Base::temperature(RTDnominal, refResistor);
3125
}
3226

33-
uint16_t Adafruit_MAX31865_CI::readRTD(void) {
34-
// return Adafruit_MAX31865_Base::readRTD();
35-
return rtd;
36-
}
37-
3827
#endif

src/Adafruit_MAX31865_CI.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ class Adafruit_MAX31865_CI : Adafruit_MAX31865_Base {
1111

1212
bool begin(max31865_numwires_t x = MAX31865_2WIRE);
1313

14-
uint8_t readFault(void);
15-
void clearFault(void);
16-
uint16_t readRTD();
14+
void clearFault(void) { fault = 0; }
15+
uint8_t readFault(void) { return fault; }
16+
uint16_t readRTD() { return rtd; }
1717

1818
float temperature(float RTDnominal, float refResistor);
1919

@@ -23,8 +23,8 @@ class Adafruit_MAX31865_CI : Adafruit_MAX31865_Base {
2323
void setFault(uint8_t newFault) { fault = newFault; }
2424

2525
private:
26-
uint16_t rtd;
27-
uint8_t fault;
26+
uint16_t rtd = 0;
27+
uint8_t fault = 0;
2828
};
2929

3030
#endif

test/Common.cpp

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,8 @@ unittest(begin) {
7070
}
7171

7272
unittest(get_temp) {
73-
vector<int> expected{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,
74-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
75-
0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
76-
2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2,
77-
2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
78-
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
79-
2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,
80-
2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
8173
Adafruit_MAX31865_Test thermo(ss, mosi, miso, sck);
8274
thermo.begin(MAX31865_3WIRE);
83-
BitCollector pinValues(false);
84-
thermo.temperature(100.0, 430.0);
85-
assertTrue(pinValues.isEqualTo(expected));
75+
int temp = (int)thermo.temperature(100.0, 430.0);
76+
assertEqual(temp, -242);
8677
}

0 commit comments

Comments
 (0)