MCPcopy Create free account
hub / github.com/RobTillaart/Arduino / _readSensor

Method _readSensor

libraries/AM2315/AM2315.cpp:177–212  ·  view source on GitHub ↗

return values: AM2315_OK AM2315_ERROR_CONNECT AM2315_MISSING_BYTES AM2315_ERROR_CHECKSUM;

Source from the content-addressed store, hash-verified

175// AM2315_MISSING_BYTES
176// AM2315_ERROR_CHECKSUM;
177int AM2315::_readSensor()
178{
179 // HANDLE PENDING IRQ etc.
180 yield();
181
182 // WAKE UP the sensor
183 if (! isConnected() ) return AM2315_ERROR_CONNECT;
184
185 // SEND COMMAND
186 _wire->beginTransmission(AM2315_ADDRESS);
187 _wire->write(0X03);
188 _wire->write(0);
189 _wire->write(4);
190 int rv = _wire->endTransmission();
191 if (rv < 0) return rv;
192
193 // REQUEST DATA
194 const int length = 8;
195 int bytes = _wire->requestFrom((int)AM2315_ADDRESS, length);
196 if (bytes == 0) return AM2315_ERROR_CONNECT;
197 if (bytes < length) return AM2315_MISSING_BYTES;
198
199 // READ DATA
200 for (int i = 0; i < bytes; i++)
201 {
202 _bits[i] = _wire->read();
203 }
204
205 // TEST CHECKSUM
206 uint16_t crc = _bits[bytes - 1] * 256 + _bits[bytes - 2];
207 if (_crc16(_bits, bytes - 2) != crc)
208 {
209 return AM2315_ERROR_CHECKSUM;
210 }
211 return AM2315_OK;
212}
213
214
215uint16_t AM2315::_crc16(uint8_t *ptr, uint8_t len)

Callers

nothing calls this directly

Calls 2

writeMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected