Use types and conversion macro from ntc.h.
[bertos.git] / bertos / drv / lm75.c
index 845fa3a49c3941545cb87c485406e830104b7ff7..3a30aadddb8e93af7c8d417ec074182cbf232193 100644 (file)
@@ -43,6 +43,7 @@
 #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(addr_t sens_addr)
 {
        uint8_t data[2];
        int16_t degree;
@@ -63,10 +65,10 @@ deci_celsius_t lm75_read(addr_t sens_addr)
        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);
 
@@ -75,9 +77,8 @@ deci_celsius_t lm75_read(addr_t sens_addr)
 
 void lm75_init(void)
 {
-       i2c_init();
-       LOG_INFO("Init I2C module.\n");
-
+       // Check dependence
+       MOD_CHECK(i2c);
        LM75_HW_INIT();
 }