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

Dependents:   IQS622_HelloWorld

A library that performs a register dump of the Azoteq IQS622 ultra low power multisensor registers.

More information on the IQS622 here:

Components / IQS622
Azoteq IQS622 ultra low power sensor for ambient light, active (reflective) IR, magnetic field, capacitance and inductive proximity. Empowers next-generation user interfaces.


Low Cost Evaluation Board for Azoteq IQS622 Ultra Low Power (5uA) I2C Multi-Function Sensor with Light Sensor, Active (Reflective) IR, Touch and Hall Effect Sensor


Revision:
1:20266bfaa709
Parent:
0:932376194edb
Child:
2:e8e0c85e8d9b
diff -r 932376194edb -r 20266bfaa709 IQS622DisplayTerminal.cpp
--- 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