i2cdump: Cleaner output in SMBus block read mode (s).

git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@4335 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
Jean Delvare committed 2007-03-03 14:57:56 +00:00
1 parent 49a1b7a503
commit 217c7bbaff
2 files changed
+19 -6

No files matched your search

+1
View File
@@ -18,6 +18,7 @@ SVN HEAD
Module smsc47m1: Add SMSC LPC47M292 support
Get rid of a useless semaphore (2.6 backport)
Programs i2cdetect, i2cdump, isadump: Flush output in real time
Program i2cdump: Cleaner output in SMBus block read mode
Program sensors: Add smsc47m2 support (fans)
Fix -A option (hide adapter name) on error
Program sensors-detect: Only probe relevant I2C addresses
+18 -6
View File
@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
int bank = 0, bankreg = 0x4E, old_bank = 0;
char filename[20];
unsigned long funcs;
int block[256];
int block[256], s_length = 0;
int pec = 0, even = 0;
int flags = 0;
int yes = 0, version = 0;
@@ -310,6 +310,9 @@ int main(int argc, char *argv[])
if (size == I2C_SMBUS_BLOCK_DATA) {
res = i2c_smbus_read_block_data(file, bank,
cblock);
/* Remember returned block length for a nicer
display later */
s_length = res;
} else {
for (res = 0; res < 256; res += i) {
i = i2c_smbus_read_i2c_block_data(file,
@@ -327,8 +330,9 @@ int main(int argc, char *argv[])
res = 256;
for (i = 0; i < res; i++)
block[i] = cblock[i];
for (i = res; i < 256; i++)
block[i] = -1;
if (size != I2C_SMBUS_BLOCK_DATA)
for (i = res; i < 256; i++)
block[i] = -1;
}
if (size == I2C_SMBUS_BYTE) {
@@ -343,6 +347,8 @@ int main(int argc, char *argv[])
printf(" 0 1 2 3 4 5 6 7 8 9 a b c d e f"
" 0123456789abcdef\n");
for (i = 0; i < 256; i+=16) {
if (size == I2C_SMBUS_BLOCK_DATA && i >= s_length)
break;
printf("%02x: ", i);
for (j = 0; j < 16; j++) {
fflush(stdout);
@@ -365,7 +371,10 @@ int main(int argc, char *argv[])
} else
res = block[i+j];
if (res < 0) {
if (size == I2C_SMBUS_BLOCK_DATA
&& i+j >= s_length) {
printf(" ");
} else if (res < 0) {
printf("XX ");
if (size == I2C_SMBUS_WORD_DATA)
printf("XX ");
@@ -378,7 +387,12 @@ int main(int argc, char *argv[])
j++;
}
printf(" ");
for (j = 0; j < 16; j++) {
if (size == I2C_SMBUS_BLOCK_DATA
&& i+j >= s_length)
break;
res = block[i+j];
if (res < 0)
printf("X");
@@ -394,8 +408,6 @@ int main(int argc, char *argv[])
printf("%c", res & 0xff);
}
printf("\n");
if (size == I2C_SMBUS_BLOCK_DATA && i == 16)
break;
}
} else {
printf(" 0,8 1,9 2,a 3,b 4,c 5,d 6,e 7,f\n");