From eaa16b313bdda3cda7c8922a84863e705ce1eb34 Mon Sep 17 00:00:00 2001
From: Manohar Vanga <manohar.vanga@cern.ch>
Date: Thu, 24 Nov 2011 14:59:51 +0100
Subject: [PATCH] simulation: fix temperature readings of ds18b20 chip

Signed-off-by: Manohar Vanga <manohar.vanga@cern.ch>
---
 simulation/test/test1w.c | 3 ++-
 simulation/wb_onewire.c  | 6 +++---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/simulation/test/test1w.c b/simulation/test/test1w.c
index 0bc16d4..eda81b8 100644
--- a/simulation/test/test1w.c
+++ b/simulation/test/test1w.c
@@ -37,7 +37,8 @@ int main(int argc, char *argv[])
 		return ret;
 	}
 
-	printf("Temp: %08x\n", a.temp/16.0);
+	printf("Temp RAW: %08x\n", a.temp);
+	printf("Temp: %08f\n", a.temp/16.0);
 
 	close(fd);
 	return 0;
diff --git a/simulation/wb_onewire.c b/simulation/wb_onewire.c
index 3746ac6..f684aa9 100644
--- a/simulation/wb_onewire.c
+++ b/simulation/wb_onewire.c
@@ -135,7 +135,7 @@ void ds18b20_read_serial(struct wb_onewire_dev *dev, int port, uint8_t *sbuf)
 	wb_onewire_reset(dev, port);
 	wb_onewire_writebyte(dev, port, 0x33);
 	sbuf[0] = wb_onewire_readbyte(dev, port);
-	for (i = 6; i >= 1; i--)
+	for (i = 1; i <= 6; i++)
 		sbuf[i] = wb_onewire_readbyte(dev, port);
 	sbuf[7] = wb_onewire_readbyte(dev, port);
 }
@@ -158,7 +158,7 @@ int ds18b20_read_temp(struct wb_onewire_dev *dev, int port, uint8_t *serial)
 	int temp;
 	ds18b20_access(dev, port, serial);
 	printk("serial: ");
-	for (i = 0; i < 8; i++)
+	for (i = 7; i >= 0; i--)
 		printk("%02x ", serial[i]);
 	printk("\n");
 	wb_onewire_writebyte(dev, port, 0x44);
@@ -168,7 +168,7 @@ int ds18b20_read_temp(struct wb_onewire_dev *dev, int port, uint8_t *serial)
 	wb_onewire_writebyte(dev, port, 0xbe);
 	wb_onewire_readblock(dev, port, data, 9);
 	printk("data: ");
-	for (i = 0; i < 9; i++)
+	for (i = 8; i >= 0; i--)
 		printk("%2x ", data[i]);
 	printk("\n");
 	temp = (data[1] << 8) | data[0];
-- 
GitLab