several improvements draft

Thu, 08 Sep 2016 20:02:23 +0200

author
David Douard <david.douard@logilab.fr>
date
Thu, 08 Sep 2016 20:02:23 +0200
changeset 2
d0826e4a1ff7
parent 1
3021fc79cc3b
child 3
a3233abe730e

several improvements

src/main.cpp file | annotate | diff | comparison | revisions
--- a/src/main.cpp	Tue Jul 19 21:17:39 2016 +0200
+++ b/src/main.cpp	Thu Sep 08 20:02:23 2016 +0200
@@ -12,13 +12,13 @@
 #include "SPI8.h"
 #include "ILI9341.h"
 
-Serial pc(USBTX, USBRX);
-BufferedSerial hp(PA_0, PA_1, 32); // serial4
+//Serial pc(USBTX, USBRX);
+BufferedSerial hp(NC, PA_1, 64, 0); // serial4
 
 ILI9341 tft(SPI_8, 24000000, PA_7, PA_6, PA_5, PA_4, PB_6, PC_7, "myLCD"); // Spi 8bit, 24MHz, mosi, miso, sclk, cs, reset, dc
 //ILI9341 tft(SPI_8, 24000000, PA_7, PA_6, PA_5, PA_4, PB_6, PB_5, "myLCD");
 
-#define MAX_BUFF 13
+#define MAX_BUFF 16
 uint8_t curchar;
 uint8_t cmd;
 uint8_t nchars;
@@ -30,7 +30,7 @@
   uint16_t color;
   uint16_t bgcolor;
   uint8_t y0;
-  uint8_t fmt; // 0=>ascii, 1=>hex, 2=>bits
+  uint8_t fmt; // 0=>ascii, 1=>hex, 2=>bits, 3=>flags
   uint8_t maxsize;
   const unsigned char* font;
   char buffer[MAX_BUFF+1];
@@ -38,13 +38,33 @@
 
 static DSP table[] =
 {
-  { 0x00, Yellow, Red,    5,    0, MAX_BUFF, Arial28x28},
-  { 0x0C, Red,    Blue,   40,   0, 3,        Arial28x28},
-  { 0x01, Blue,   Yellow, 75,   1, MAX_BUFF, Arial12x12},
-  { 0x02, Blue,   Yellow, 110,  1, MAX_BUFF, Arial12x12},
+  { 0x00, Blue,   Black,  5,    0, MAX_BUFF, Arial28x28},
+  { 0x0C, Blue,   Black,  40,   0, 3,        Arial28x28},
+  { 0x01, Green,  Black,  95,   1, MAX_BUFF, Arial12x12},
+  { 0x02, Green,  Black,  110,  1, MAX_BUFF, Arial12x12},
   { 0x0A, Blue,   Yellow, 145,  2, 4,        Arial12x12},
+  { 0x0A, Yellow, Black,  70 ,  3, 4,        Arial12x12},
   { 0xFF, Red,    Black,  210,  0, MAX_BUFF, Arial12x12},
 };
+
+typedef struct _FLAG
+{
+  uint8_t flag;
+  uint8_t x;
+  uint8_t y;
+  const char* msg;
+} FLAG;
+
+static const FLAG flags[] =
+  {
+    { 0x00, 0,   70, "Alarm"},  // F1.1
+    { 0x01, 40,  70, "Mx+B"},   // F1.2
+    { 0x03, 40,  70, "Channels"},   // F1.4
+    { 0x14, 70,  70, "4W"}, // F2.5
+    { 0x33, 90,  70, "VIEW"},
+    { 0x34, 120, 70, "MON"},
+    { 0x36, 150, 70, "CONFIG"},
+  };
 #define DEBUG
 #ifdef DEBUG
 #define DBGPIN PC_0
@@ -67,9 +87,9 @@
     // init the LCD
 
     tft.set_orientation(3);
-    pc.baud (115200);
-    pc.printf("\n\nSystem Core Clock = %.3f MHZ\r\n",
-	      (float)SystemCoreClock/1000000);
+    //pc.baud (115200);
+    //pc.printf("\n\nSystem Core Clock = %.3f MHZ\r\n",
+    //      (float)SystemCoreClock/1000000);
 
     hp.baud(187500);
 
@@ -104,42 +124,76 @@
       tft.foreground(fgcolor);
       tft.locate(0, table[i].y0);
       tft.set_font((unsigned char*) table[i].font);
-      break;
+      oldv = table[i].buffer;
+      
+      switch (table[i].fmt) {
+      case 0: //ascii
+	tft.printf(txt);
+	for (uint8_t j=strlen(txt); j<table[i].maxsize; j++)
+	  tft.printf(" ");
+	break;
+      case 1: // hex
+	for (uint8_t j=0;; j++) {
+	  if (txt[j] == 0x00)
+	    break;
+	  tft.printf("%02X ", txt[j]);
+	}
+	for (uint8_t j=3*strlen(txt); j<table[i].maxsize; j++)
+	  tft.printf(" ");
+	break;
+      case 2: // binary
+	tft.foreground(fgcolor);
+	tft.printf(" [");
+	for (uint8_t j=0; j<max(nchar, table[i].maxsize) ; j++) {
+	  if (j>0) {
+	    tft.foreground(fgcolor);
+	    tft.printf(" | ");
+	  }
+	  for (uint8_t k=0; k<8; k++) {
+	    if (txt[j] & (1 << (7-k)))
+	      tft.foreground(fgcolor);
+	    else
+	      tft.foreground(bgcolor);
+	    tft.printf("%d", (8-k));
+	  }
+	}
+	tft.foreground(fgcolor);
+	tft.printf("]");
+	break;
+      case 3: // flags
+	for (uint8_t j=0; j<max(nchar, table[i].maxsize) ; j++) {
+	  for (uint8_t k=0; k<8; k++) {
+	    if ((txt[j] & (1 << k) ) != (oldv[j] & (1 << k))) {
+	 
+	      if (txt[j] & (1 << k))
+		tft.foreground(fgcolor);
+	      else
+		tft.foreground(bgcolor);
+	      for (uint8_t l=0;
+		   l<(sizeof(flags)/sizeof(flags[0])); ++l) {
+		if (flags[l].flag == ((j<<4) + k)) {
+		  tft.locate(flags[l].x, flags[l].y);
+		  tft.printf(flags[l].msg);
+		  break;
+		}
+	      }
+	    }
+	  }
+	  oldv[j] = txt[j];
+	}
+	break;
+      }
+
     }
   }
 
-  switch (table[i].fmt) {
-  case 0: //ascii
-    tft.printf(txt);
-    for (uint8_t j=nchar; j<table[i].maxsize; j++)
-      tft.printf(" ");
-    break;
-  case 1: // hex
-    for (uint8_t j=0; j<nchar; j++)
-      tft.printf("%02X ", txt[j]);
-    for (uint8_t j=nchar; j<table[i].maxsize; j++)
-      tft.printf(" ");
-    break;
-  case 2: // binary
-    for (uint8_t j=0; j<max(nchar, table[i].maxsize) ; j++) {
-      //tft.setCursor(x0+w*i, y0+10);
-      for (uint8_t k=0; k<8; k++) {
-	if (txt[j] & (1 << (7-k)))
-	  tft.foreground(fgcolor);
-	else
-	  tft.foreground(bgcolor);
-	tft.printf("%d", (8-k));
-      }
-    }
-    break;
-  }
 }
 
 
 void loop() { // run over and over
   if (hp.readable()) {
       uint8_t val = hp.getc();
-      DebugPulse();
+      DebugPulse(3);
       // 0xFF: idle
       // 0xFE: frame finished
       // 0x66: Start of transmission received
@@ -151,8 +205,8 @@
           } else {
               // display "junk" byte
               //DebugPulse();
-              go_msg();
-              tft.printf("%02X:> %02x", cmd, val);
+              show(0xFF, "", 0);
+	      tft.printf("%02X:> %02x", cmd, val);
           }
 
       } else if (cmd == 0xFE ) {
@@ -164,29 +218,29 @@
               // probably an ACK for a keypad related event
           } else {
               // display "junk" byte
-              //DebugPulse();
-              go_msg();
+              DebugPulse();
+              show(0xFF, "", 5);
               tft.printf("%02X=> %02x", cmd, val);
           }
 
       } else if (cmd == 0x66) { // waiting for the display command
-          if ((val == 0x0C) || (val == 0x00) || val == 0x01 || val == 0x02 || val == 0x0A) {
+	if ((val == 0x0C) || (val == 0x00) || (val == 0x01) || (val == 0x02) || (val == 0x0A)) {
               cmd = val;
               nchars = 0;
           } else {
               cmd = 0xFE;
               // display unknown cmd byte
-              //DebugPulse();
-              go_msg();
+              DebugPulse();
+              show(0xFF, "", 10);
               tft.printf("%02X-> %02x", cmd, val);
           }
 
       } else if (cmd == 0x99) { // waiting for a 0x00, it's the DP that sent a keypress event
         if (val != 0x00) {
-            go_msg();
-	    tft.printf("%02X kp %02X", cmd, val);
+              show(0xFF, "", 0);
+	      tft.printf("%02X kp %02X", cmd, val);
         }
-        cmd =0xFF;
+        cmd = 0xFF;
 
       } else if (nchars == 0) { // waiting for the number of chars to display
           if (val>MAX_BUFF) {
@@ -194,7 +248,7 @@
               //dsp();
               //tft << cmd << " got len " << val;
               //DebugPulse();
-              go_msg();
+              show(0xFF, "", 0);
 	      tft.printf("%02X len %d", cmd, val);
               cmd = 0xFE; // weird
           } else {
@@ -213,6 +267,9 @@
               cmd = 0xFE;
           }
       }
+
+      DebugPulse(4);
+      
   }
 }
 

mercurial

PKO®vIXï0Zù + ¤�whatever-b027bc447b57/content/10MHz_ref.rstUT§½4XPKO®vIš0òvP - ¤�[whatever-b027bc447b57/content/10MHz_ref_2.rstUT§½4XPKO®vIì'…C5i* ¤�5 whatever-b027bc447b57/content/LPD422FM.rstUT§½4XPKO®vI¹›²âf‚) ¤�Ëwhatever-b027bc447b57/content/TeK2445.rstUT§½4XPKO®vI×rrQ ¾+ ¤�‘whatever-b027bc447b57/content/TeK2445_2.rstUT§½4XPKO®vIeó µ t+ ¤�D&whatever-b027bc447b57/content/TeK2445_3.rstUT§½4XPKO®vIðõj„Ñ) ¤�[2whatever-b027bc447b57/content/ZPB30A1.rstUT§½4XPKO®vIZ%G·t& ) ¤�Œ:whatever-b027bc447b57/content/hp3456a.rstUT§½4XPKO®vIÁ�KÙ� )* ¤�`Awhatever-b027bc447b57/content/hp34970a.rstUT§½4XPKO®vIDœ�. Á!, ¤�NKwhatever-b027bc447b57/content/hp34970a_2.rstUT§½4XPKO®vIÔõ| Þê, ¤�ßTwhatever-b027bc447b57/content/hp34970a_3.rstUT§½4XPKO®vI^¸¾a  ó, ¤� ]whatever-b027bc447b57/content/hp34970a_4.rstUT§½4XPKO®vIKÕX$ 3 ¤�#iwhatever-b027bc447b57/content/hp34970a_protocol.rstUT§½4XPKO®vIL’­… ) ¤�±rwhatever-b027bc447b57/content/hp5334a.rstUT§½4XPKO®vIÑìvø# í) ¤�ywhatever-b027bc447b57/content/hp8904a.rstUT§½4XPKO®vI´Ai6Ì: + ¤�¢†whatever-b027bc447b57/content/hp8904a_2.rstUT§½4XPKO®vI½Î—Ô`7B:< ¤�Ћwhatever-b027bc447b57/content/images/ZPB30A1/DS1Z_serial.pngUT§½4XPKO®vIñînÇ ç> ¤�£Ãwhatever-b027bc447b57/content/images/ZPB30A1/overall_setup.jpgUT§½4XPKO®vICW—\kf”h8 ¤�#Äwhatever-b027bc447b57/content/images/ZPB30A1/zpb30a1.jpgUT§½4XPKO®vICÆ$+z> ¤�ý* whatever-b027bc447b57/content/images/ZPB30A1/zpb30a1_board.jpgUT§½4XPKO®vI¯ìì›j¥n§? ¤��Ewhatever-b027bc447b57/content/images/ZPB30A1/zpb30a1_bottom.jpgUT§½4XPKO®vI� |�ùÕØ? ¤�}ëwhatever-b027bc447b57/content/images/ZPB30A1/zpb30a1_mosfet.jpgUT§½4XPKO®vI~ÈSö-!> ¤�ìÁwhatever-b027bc447b57/content/images/ZPB30A1/zpb30a1_setup.jpgUT§½4XPKO®vIzXAÔŽ� e’ 9 ¤�Žá!whatever-b027bc447b57/content/images/freq_ref/efratom.jpgUT§½4XPKO®vI)β8+ü,C ¤�Œr+whatever-b027bc447b57/content/images/freq_ref/efratom_enclosure.jpgUT§½4XPKO®vIDI1l¤ ñ¦ @ ¤�>ž2whatever-b027bc447b57/content/images/freq_ref/efratom_inside.jpgUT§½4XPKO®vI6¾¿ � ²� > ¤�!C=whatever-b027bc447b57/content/images/freq_ref/efratom_lamp.jpgUT§½4XPKO®vIüè¤†Š H"A ¤�¡ÒFwhatever-b027bc447b57/content/images/freq_ref/efratom_sticker.jpgUT§½4XPKO®vIËêKe.ÿ â 8 ¤�£óMwhatever-b027bc447b57/content/images/freq_ref/extron.jpgUT§½4XPKO®vIùˆú»n ªÈ H ¤�@óXwhatever-b027bc447b57/content/images/freq_ref/extron_dephasing_10MHz.jpgUT§½4XPKO®vIÖF÷z˜ ¼è > ¤�Äacwhatever-b027bc447b57/content/images/freq_ref/extron_fixed.jpgUT§½4XPKO®vIçÒpëƒ ‡Õ F ¤�=úlwhatever-b027bc447b57/content/images/freq_ref/extron_working_10MHz.jpgUT§½4XPKO®vI³nïÍcõËM ¤�¥~ywhatever-b027bc447b57/content/images/freq_ref/lt1616_bipolar_output_DC2DC.svgUT§½4XPKO®vIlSë_\”^8 ¤�Œšywhatever-b027bc447b57/content/images/hp3456a/1.0011v.jpgUT§½4XPKO®vIi�¹žðj? ¤�Z÷�whatever-b027bc447b57/content/images/hp3456a/geller_2016_02.svgUT§½4XPKO®vIÑuýÜ‚ªÜ? ¤�À„whatever-b027bc447b57/content/images/hp3456a/geller_2016_11.svgUT§½4XPKO®vI°¿æ*P{ f~ 4 ¤�„„whatever-b027bc447b57/content/images/hp3456a/psu.jpgUT§½4XPKO®vIJ“¾ÇMWY7 ¤�ÍÿŽwhatever-b027bc447b57/content/images/hp3456a/psu_C7.jpgUT§½4XPKO®vI[&§†¦Ê0î> ¤�ˆW•whatever-b027bc447b57/content/images/hp3456a/psu_schematic.svgUT§½4XPKO®vID üŸl@„;? ¤�£"—whatever-b027bc447b57/content/images/hp34970a/block_diagram.svgUT§½4XPKO®vI›òÓð:´<= ¤�…c—whatever-b027bc447b57/content/images/hp34970a/bottom-view.jpgUT§½4XPKO®vI†ó´}sZâd9 ¤�éžžwhatever-b027bc447b57/content/images/hp34970a/channel.jpgUT§½4XPKO®vI»¤šÚZJe7 ¤�Ìùžwhatever-b027bc447b57/content/images/hp34970a/digit.jpgUT§½4XPKO®vIä%0(}èë5 ¤�UŸwhatever-b027bc447b57/content/images/hp34970a/dmm.jpgUT§½4XPKO®vI2Rc²ÚIÞ> ¤�ý=¦whatever-b027bc447b57/content/images/hp34970a/fm24c04_dump.jpgUT§½4XPKO®vI¢#êX’ F A ¤�$¯whatever-b027bc447b57/content/images/hp34970a/front-panel-pcb.jpgUT§½4XPKO®vIÐ)µ<îÕ u× E ¤�.7¸whatever-b027bc447b57/content/images/hp34970a/front-panel-sockets.jpgUT§½4XPKO®vI™œdõà—Ä= ¤�˜ Âwhatever-b027bc447b57/content/images/hp34970a/front-panel.jpgUT§½4XPKO®vI¤½Qiqp^r< ¤�ìÐÉwhatever-b027bc447b57/content/images/hp34970a/front-view.jpgUT§½4XPKO®vIj�6EבÙ6 ¤�ÐAÏwhatever-b027bc447b57/content/images/hp34970a/oled.jpgUT§½4XPKO®vI qytå)ç= ¤�‚Õwhatever-b027bc447b57/content/images/hp34970a/oled_module.jpgUT§½4XPKO®vIâ0«@ƒ% :u = ¤�ýþÕwhatever-b027bc447b57/content/images/hp34970a/poc_display.jpgUT§½4XPKO®vIÐ'?§{Ñ Œ) E ¤�ô$àwhatever-b027bc447b57/content/images/hp34970a/poc_display_mux_off.jpgUT§½4XPK55fëöê