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:
- 5:2f315f806f0c
- Parent:
- 4:cfd35dc9976a
- Child:
- 7:2cb11d8fa4a8
--- a/IQS621DisplayTerminal.cpp Sat May 13 00:14:25 2017 +0000 +++ b/IQS621DisplayTerminal.cpp Sun May 14 19:31:18 2017 +0000 @@ -15,19 +15,20 @@ IQS621Display::IQS621Display() : Serial(USBTX,USBRX) // use mbed default serial port #endif -{ +{ frameCounter=0; baud(DISPLAY_BAUD_RATE); -} +} #if defined(TARGET_TEENSY3_1) || defined (TARGET_TEENSY3_2) || IQS_USE_USBSERIAL -void IQS621Display::baud(int baudRate){} +void IQS621Display::baud(int baudRate) {} #endif // display a startup message to serial port -void IQS621Display::helloMessage(bool waitForUser) { +void IQS621Display::helloMessage(bool waitForUser) +{ puts("\x1b[2J \x1b[?25l \x1b[H"); // ANSII/VT100 codes to clear screen, invisible cursor, home cursor - printf(" IQS621 Register Display\r\n\r\n"); + printf(" IQS621 Register Display\r\n\r\n"); printf("To get a smooth screen refresh effect, use a terminal program that supports ANSI/VT100 escape codes such as Tera Term.\r\n\r\n"); printf("Handy hint - In many terminal programs, Alt-B (break) will reset your mbed Board.\r\n\r\n"); printf("Press any key to continue...\r\n"); @@ -36,47 +37,50 @@ } // show headings and I2C error count -void IQS621Display::showStatus(int I2Cspeed, int I2CErrorCount) { +void IQS621Display::showStatus(int I2Cspeed, int I2CErrorCount) +{ frameCounter++; puts("\x1b[H"); // ANSI/VT100 command for cursor home - printf("\t"); + printf("\t"); printf("\t IQS621 Register Display\r\n\r\n"); // heading printf("\t Frame number %06d", frameCounter); printf("\t I2C Speed %dk", I2Cspeed/1000); 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++) { + +// 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]); + 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 - } - } +#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 + } +} // formatted hex display of IQS621 registers -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); +void IQS621Display::showRegisters(char * buffer, char * color, bool showAllRegisters) +{ + bool d = showAllRegisters; // if true show all 16 registers per line + printf("\r\n\r\n Device ID & Version (46) [00] "); showLine(buffer,color,0x00,d?0x02:0x0f); + printf("\r\n\r\n Events and Flags [10] "); showLine(buffer,color,0x10,d?0x1e:0x1f); + printf("\r\n\r\n Channels 0-6 Raw Values [20] "); showLine(buffer,color,0x20,d?0x2d:0x2f); + printf("\r\n\r\n Long Term Average Data [30] "); showLine(buffer,color,0x30,d?0x33:0x3f); + printf("\r\n\r\n Proxfusion Settings [40] "); showLine(buffer,color,0x40,d?0x4d:0x4f); + printf("\r\n\r\n Proxfusion Thresholds [50] "); showLine(buffer,color,0x50,d?0x54:0x5f); + printf("\r\n\r\n Metal Detect Threshold [60] "); showLine(buffer,color,0x60,d?0x63:0x6f); + printf("\r\n\r\n Ambient Light Settings [70] "); showLine(buffer,color,0x70,d?0x73:0x7f); + printf("\r\n\r\n Ambient Light Thresholds [80] "); showLine(buffer,color,0x80,d?0x83:0x8f); + printf("\r\n\r\n Hall Sensor Settings [90] "); showLine(buffer,color,0x90,d?0x93:0x9f); + printf("\r\n\r\n Hall Switch Thresholds [A0] "); showLine(buffer,color,0xa0,d?0xa2:0xaf); + printf("\r\n\r\n Temperature Cal/Limits [C0] "); showLine(buffer,color,0xc0,d?0xc3:0xcf); + printf("\r\n\r\n Device & Power Settings [D0] "); showLine(buffer,color,0xd0,d?0xd7:0xdf); printf("\r\n\r\n"); } \ No newline at end of file