#include "cfg/cfg_lm75.h"
#include <cfg/debug.h>
+#include <cfg/module.h>
// Define logging setting (for cfg/log.h module).
#define LOG_LEVEL LM75_LOG_LEVEL
#include <cfg/log.h>
#include <drv/i2c.h>
+#include <drv/ntc.h> // Macro and data type to manage celsius degree
#define SELECT_ADDRESS(addr) LM75_ADDRESS_BYTE | (addr << 1)
-deci_celsius_t lm75_read(addr_t sens_addr)
+deg_t lm75_read(uint8_t sens_addr)
{
uint8_t data[2];
int16_t degree;
i2c_start_w(SELECT_ADDRESS(sens_addr));
i2c_put(LM75_PAD_BYTE);
i2c_start_r(SELECT_ADDRESS(sens_addr));
- i2c_recv(&data, sizeof(data));
+ i2c_recv(data, sizeof(data));
- degree = (uint16_t)data[0];
- deci_degree = (uint16_t)(((data[1] >> 7) & 1 ) * 5);
+ degree = (int16_t)data[0];
+ deci_degree = (int16_t)(((data[1] >> 7) & 1 ) * 5);
LOG_INFO("[%d.%d C]\n", degree, deci_degree);
void lm75_init(void)
{
- i2c_init();
- LOG_INFO("Init I2C module.\n");
-
+ // Check dependence
+ MOD_CHECK(i2c);
LM75_HW_INIT();
}