Register Display On Serial Terminal For Azoteq IQS622 Ultra Low Power (5uA) I2C Multi-Function Sensor with Light Sensor + Active (Reflective) IR + Touch + Hall Effect Sensor
A library that performs a register dump of the Azoteq IQS622 ultra low power multisensor registers.
More information on the IQS622 here:
Diff: IQS622DisplayTerminal.cpp
- Revision:
- 1:20266bfaa709
- Parent:
- 0:932376194edb
- Child:
- 2:e8e0c85e8d9b
--- a/IQS622DisplayTerminal.cpp Tue May 09 04:55:29 2017 +0000 +++ b/IQS622DisplayTerminal.cpp Sat May 13 01:18:57 2017 +0000 @@ -15,19 +15,20 @@ IQS622Display::IQS622Display() : 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 IQS622Display::baud(int baudRate){} +void IQS622Display::baud(int baudRate) {} #endif // display a startup message to serial port -void IQS622Display::helloMessage(bool waitForUser) { +void IQS622Display::helloMessage(bool waitForUser) +{ puts("\x1b[2J \x1b[?25l \x1b[H"); // ANSII/VT100 codes to clear screen, invisible cursor, home cursor - printf(" IQS622 Register Display\r\n\r\n"); + printf(" IQS622 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,30 +37,47 @@ } // show headings and I2C error count -void IQS622Display::showStatus(int I2Cspeed, int I2CErrorCount) { +void IQS622Display::showStatus(int I2Cspeed, int I2CErrorCount) +{ frameCounter++; puts("\x1b[H"); // ANSI/VT100 command for cursor home - printf("\t"); + printf("\t"); printf("\t IQS622 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 IQS622Display::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 + } +} + // formatted hex display of IQS622 registers -void IQS622Display::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 (42) [00] "); ShowLine(0x00,0x02); - printf("\r\n\r\n Events and Flags [10] "); ShowLine(0x10,0x1a); - printf("\r\n\r\n Channel 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 SAR Thresholds [60] "); ShowLine(0x60,0x65); - printf("\r\n\r\n Light/IR Sensor Settings [70] "); ShowLine(0x70,0x74); - printf("\r\n\r\n Active IR Thresholds [90] "); ShowLine(0x90,0x92); - printf("\r\n\r\n Hall Sensor Settings [A0] "); ShowLine(0xa0,0xa3); - printf("\r\n\r\n Hall Switch Thresholds [B0] "); ShowLine(0xb0,0xb2); - printf("\r\n\r\n Device & Power Settings [D0] "); ShowLine(0xd0,0xd6); +void IQS622Display::showRegisters(char * buffer,char * color) +{ + printf("\r\n\r\n Device ID & Version (42) [00] "); showLine(buffer,color,0x00,0x02); + printf("\r\n\r\n Events and Flags [10] "); showLine(buffer,color,0x10,0x1a); + printf("\r\n\r\n Channel 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 SAR Thresholds [60] "); showLine(buffer,color,0x60,0x65); + printf("\r\n\r\n Light/IR Sensor Settings [70] "); showLine(buffer,color,0x70,0x74); + printf("\r\n\r\n Active IR Thresholds [90] "); showLine(buffer,color,0x90,0x92); + printf("\r\n\r\n Hall Sensor Settings [A0] "); showLine(buffer,color,0xa0,0xa3); + printf("\r\n\r\n Hall Switch Thresholds [B0] "); showLine(buffer,color,0xb0,0xb2); + printf("\r\n\r\n Device & Power Settings [D0] "); showLine(buffer,color,0xd0,0xd6); printf("\r\n\r\n"); } \ No newline at end of file