Register display for Azoteq IQS621 ultra low power I2C multi-function sensor.
A library that performs a register dump of the Azoteq IQS621 ultra low power multisensor registers.
More information on the IQS621 here:
Serial Terminal Output
IQS621 Register display as performed by mbed LPC1768.
Note the frame number - over half a million register dumps were performed with zero I2C errors.
Diff: IQS621DisplayTerminal.cpp
- Revision:
- 3:10112b6b8d3c
- Parent:
- 2:f47e3cecd5b0
- Child:
- 4:cfd35dc9976a
--- a/IQS621DisplayTerminal.cpp Sat May 06 10:30:57 2017 +0000 +++ b/IQS621DisplayTerminal.cpp Fri May 12 23:13:19 2017 +0000 @@ -46,21 +46,45 @@ printf("\t I2C Errors %d", I2CErrorCount); } + +// dump one line of text from the buffer with VT100 color formatting +void IQS621Display::showLine(char * buffer, char * color, int startbyte, int endbyte) { + for (int i=startbyte; i<=endbyte; i++) { + if ( color == NULL || color[i] == 0 ) + printf("%02x ", buffer[i]); + else + #define USE_IQS_COLOR_DISPLAY + #ifndef DONT_USE_IQS_COLOR_DISPLAY + printf("\x1b[32m%02x\x1b[30m ", buffer[i]); // print out in green (ANSI VT100 code) + #else + printf("%02x ", buffer[i]); // print out in black & white + #endif + } + } + + +static char checkerBoard [] = { // a byte array with alternate 0's and 1's +0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, +0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, +0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, +0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, +}; + // formatted hex display of IQS621 registers -void IQS621Display::showRegisters(char * buffer) { - #define ShowLine(FROM,TO) for(int j=(FROM);j<=(TO);j++)printf("%02x ",buffer[j]) - printf("\r\n\r\n Device ID & Version (46) [00] "); ShowLine(0x00,0x02); - printf("\r\n\r\n Events and Flags [10] "); ShowLine(0x10,0x1e); - printf("\r\n\r\n Channels 0-6 Raw Values [20] "); ShowLine(0x20,0x2d); - printf("\r\n\r\n Long Term Average Data [30] "); ShowLine(0x30,0x33); - printf("\r\n\r\n Proxfusion Settings [40] "); ShowLine(0x40,0x4d); - printf("\r\n\r\n Proxfusion Thresholds [50] "); ShowLine(0x50,0x54); - printf("\r\n\r\n Metal Detect Threshold [60] "); ShowLine(0x60,0x63); - printf("\r\n\r\n Ambient Light Settings [70] "); ShowLine(0x70,0x73); - printf("\r\n\r\n Ambient Light Thresholds [80] "); ShowLine(0x80,0x83); - printf("\r\n\r\n Hall Sensor Settings [90] "); ShowLine(0x90,0x93); - printf("\r\n\r\n Hall Switch Thresholds [A0] "); ShowLine(0xa0,0xa2); - printf("\r\n\r\n Temperature Cal/Limits [C0] "); ShowLine(0xc0,0xc3); - printf("\r\n\r\n Device & Power Settings [D0] "); ShowLine(0xd0,0xd7); +void IQS621Display::showRegisters(char * buffer, char * color) { + + printf("\r\n\r\n Device ID & Version (46) [00] "); showLine(buffer,color,0x00,0x02); + printf("\r\n\r\n Events and Flags [10] "); showLine(buffer,color,0x10,0x1e); + printf("\r\n\r\n Channels 0-6 Raw Values [20] "); showLine(buffer,color,0x20,0x2d); + printf("\r\n\r\n Long Term Average Data [30] "); showLine(buffer,color,0x30,0x33); + printf("\r\n\r\n Proxfusion Settings [40] "); showLine(buffer,color,0x40,0x4d); + printf("\r\n\r\n Proxfusion Thresholds [50] "); showLine(buffer,color,0x50,0x54); + printf("\r\n\r\n Metal Detect Threshold [60] "); showLine(buffer,color,0x60,0x63); + printf("\r\n\r\n Ambient Light Settings [70] "); showLine(buffer,color,0x70,0x73); + printf("\r\n\r\n Ambient Light Thresholds [80] "); showLine(buffer,color,0x80,0x83); + printf("\r\n\r\n Hall Sensor Settings [90] "); showLine(buffer,color,0x90,0x93); + printf("\r\n\r\n Hall Switch Thresholds [A0] "); showLine(buffer,color,0xa0,0xa2); + printf("\r\n\r\n Temperature Cal/Limits [C0] "); showLine(buffer,color,0xc0,0xc3); + printf("\r\n\r\n Device & Power Settings [D0] "); showLine(buffer,color,0xd0,0xd7); printf("\r\n\r\n"); } \ No newline at end of file