From df39cdd30fb75163fe470cabf64a1767e73316ca Mon Sep 17 00:00:00 2001
From: Robert Hartung <hartung@ibr.cs.tu-bs.de>
Date: Mon, 7 May 2018 16:55:04 +0200
Subject: [PATCH] adds temperature sensor tmp102 to software

---
 software/main.c | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/software/main.c b/software/main.c
index 61ea03d..019c95b 100644
--- a/software/main.c
+++ b/software/main.c
@@ -33,6 +33,7 @@
 #include "net/gnrc.h"
 #include "net/gnrc/netreg.h"
 #include "net/gnrc/netif/ieee802154.h"
+#include "periph/i2c.h"
 
 #define SEND_INTERVAL (1)
 #define RCV_QUEUE_SIZE (8)
@@ -107,6 +108,7 @@ int shell_payload(int argc, char** argv) {
     } else {
         strcpy((char*)eval_message.payload, argv[1]);
         eval_message.payload_length = strlen(argv[1]);
+        //eval_message.payload_length = strncpy( (char*)eval_message.payload, argv[1], MAX_PAYLOAD_LENGTH);
     }
     return 0;
 }
@@ -119,9 +121,9 @@ int shell_memdump(int argc, char** argv) {
     const uint8_t *addr = (const uint8_t*)0x1800;
     while(addr < (const uint8_t*)0x2600) {
         uint8_t i = 0;
-        printf("%04X: ",addr);
+        printf("%04X: ",(unsigned int)addr);
         while(i<0xF) {
-            printf("%02X ", *(addr+i));
+            printf("%02X ", (unsigned int)(*(addr+i)));
             i++;
         }
         i = 0;
@@ -137,10 +139,34 @@ int shell_memdump(int argc, char** argv) {
     return 0;
 }
 
+#ifdef BOARD_INGA_BLUE
+int shell_temp(int argc, char** argv) {
+    (void) argc;
+    (void) argv;
+
+    // uint8_t result;
+    uint8_t result[2];
+
+	i2c_acquire(0);
+    //i2c_read_reg(0, 0x48, 0x00, &result);
+	i2c_read_regs(0, 0x48, 0x00, result, 2);
+	i2c_release(0);
+    //uint16_t temp = (result[0] << 8) | (result[1] >> 4);
+	//printf("temperature is %d %d\n", result[0], result[1]);
+    //printf("temperature=%u\n", temp);
+    printf("temperature=%u.%d\n", result[0], (result[1]>>4) );
+
+    return 0;
+}
+#endif
+
 shell_command_t eval_shell_commands[] = {
     {"tx", "Sends packets", shell_tx},
     {"payload", "Sets or prints the payload", shell_payload},
     {"memdump", "Prints the memory", shell_memdump},
+#ifdef BOARD_INGA_BLUE
+    {"temp", "Read temperatur", shell_temp},
+#endif
     {NULL, NULL, NULL}
 };
 
@@ -485,6 +511,9 @@ int main(void)
 {
     /// +1 -> INGA working, but TelosB/Sky not
     thread_create(dump_thread_stack, sizeof(dump_thread_stack), THREAD_PRIORITY_MAIN + 1, THREAD_CREATE_STACKTEST, dump_thread, NULL, "dump_thread");
+
+    int res = i2c_init_master(I2C_DEV(0), 2);
+    printf("i2c init: %s\n", res == 0 ? "OK\n" : "FAILED\n");
     
     gnrc_netif_t *netif = NULL;
     if((netif = gnrc_netif_iter(netif))) {
@@ -507,4 +536,4 @@ int main(void)
     shell_run(eval_shell_commands, line_buf, SHELL_BUFFER_SIZE);
 
     return 0;
-}
\ No newline at end of file
+}
-- 
GitLab