에러 체크로 함수의 신뢰성을 높이자.
함수를 잘 작성했다 하더라도, 센서의 오작동, 통신 실패 등으로 함수가 잘못된 값을 반환할수 있다.
예를 들어 통신 실패로 잘못된 온도값 2500도가 나왔다면,
이 잘못된 값을 출력하지 말고, 통신 에러가 발생했다고 반환하는 것이 좋다.
이렇게 센서값이 잘못나오는 경우도 대비해서 함수의 신뢰성을 높여보자.
▼ RobTillaart/SHT85
https://github.com/RobTillaart/SHT85
typedef enum _sht85_state_t {
SHT85_OK = 0x00, // no error
SHT85_NO_ERR = 0x00,
SHT85_ERR_WRITECMD = 0x81, // I2C write failed
SHT85_ERR_READBYTES = 0x82, // I2C read failed
SHT85_ERR_HEATER_OFF = 0x83, // Could not switch off heater
SHT85_ERR_NOT_CONNECT = 0x84, // Could not connect
SHT85_ERR_CRC_TEMP = 0x85, // CRC error in temperature
SHT85_ERR_CRC_HUM = 0x86, // CRC error in humidity
SHT85_ERR_CRC_STATUS = 0x87, // CRC error in status field
SHT85_ERR_HEATER_COOLDOWN = 0x88, // Heater need to cool down
SHT85_ERR_HEATER_ON = 0x89, // Could not switch on heater
SHT85_ERR_SERIAL = 0x8A, // Could not read serial number
} sht85_state_t;
sht85_read 함수가 센서 읽기에 실패하면 위의 에러 중 적당한 에러를 반환한다.
sht85_state_t sht85_read(sht85_t* sht85) {
// I2C 읽기가 싪패한 경우, I2C read failed
sht85->state = SHT85_ERR_READBYTES;
// 온도를 읽었지만, CRC 값이 잘못된 경우 CRC error in temperature
sht85->state = SHT85_ERR_CRC_TEMP ;
return (sht85->state);
}