✅ 목표 (Goal)

에러 체크로 함수의 신뢰성을 높이자.

✅ 함수가 잘못된 값을 반환할수 있다.

함수를 잘 작성했다 하더라도, 센서의 오작동, 통신 실패 등으로 함수가 잘못된 값을 반환할수 있다.

예를 들어 통신 실패로 잘못된 온도값 2500도가 나왔다면,

이 잘못된 값을 출력하지 말고, 통신 에러가 발생했다고 반환하는 것이 좋다.

이렇게 센서값이 잘못나오는 경우도 대비해서 함수의 신뢰성을 높여보자.

✅ sht85 에러 상태 코드

▼ 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);
}