test

Dependents:   Telemetria_RX_SD_GPS_copy Telemetria_RX_SD_GPS Telemetria_TX Telemetria_TX ... more

Committer:
Helmut Tschemernjak
Date:
Wed Jul 26 15:18:35 2017 +0200
Revision:
75:7330dd86cdea
Parent:
74:66223d437a25
Child:
79:8ae448a3c1fd
Added a default Serial configuration which allows to switch
between Serial and SerialUSB via a single simple define.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Helmut Tschemernjak 74:66223d437a25 1 #ifdef ARDUINO
Helmut Tschemernjak 74:66223d437a25 2
Helmut Tschemernjak 74:66223d437a25 3 #include <Arduino.h>
Helmut Tschemernjak 74:66223d437a25 4 #include "arduino-util.h"
Helmut Tschemernjak 74:66223d437a25 5 #include <cstdarg>
Helmut Tschemernjak 74:66223d437a25 6 #include <stdio.h>
Helmut Tschemernjak 74:66223d437a25 7
Helmut Tschemernjak 74:66223d437a25 8
Helmut Tschemernjak 74:66223d437a25 9 char tmpbuf[160];
Helmut Tschemernjak 74:66223d437a25 10 extern int us_getTicker(void);
Helmut Tschemernjak 74:66223d437a25 11 extern int s_getTicker(void);
Helmut Tschemernjak 75:7330dd86cdea 12 extern Stream *ser;
Helmut Tschemernjak 74:66223d437a25 13
Helmut Tschemernjak 74:66223d437a25 14 void
Helmut Tschemernjak 74:66223d437a25 15 dprintf(const char *format, ...)
Helmut Tschemernjak 74:66223d437a25 16 {
Helmut Tschemernjak 74:66223d437a25 17 int secs = s_getTicker();
Helmut Tschemernjak 74:66223d437a25 18 int s = secs % 60;
Helmut Tschemernjak 74:66223d437a25 19 int m = secs / 60;
Helmut Tschemernjak 74:66223d437a25 20 int h = secs / 3600;
Helmut Tschemernjak 75:7330dd86cdea 21 int us = us_getTicker() & ((1000000)-1);
Helmut Tschemernjak 74:66223d437a25 22
Helmut Tschemernjak 74:66223d437a25 23 snprintf(tmpbuf, sizeof(tmpbuf)-1, "%02d:%02d:%02d.%.06d ", h, m, s, us);
Helmut Tschemernjak 75:7330dd86cdea 24 ser->write(tmpbuf, (int) sizeof "00:00:34.3436868 " -1);
Helmut Tschemernjak 74:66223d437a25 25
Helmut Tschemernjak 74:66223d437a25 26 va_list arg;
Helmut Tschemernjak 74:66223d437a25 27 va_start(arg, format);
Helmut Tschemernjak 74:66223d437a25 28 int len = vsnprintf(tmpbuf, sizeof(tmpbuf)-3, format, arg);
Helmut Tschemernjak 74:66223d437a25 29 tmpbuf[len] = '\r';
Helmut Tschemernjak 74:66223d437a25 30 tmpbuf[len+1] = '\n';
Helmut Tschemernjak 74:66223d437a25 31 tmpbuf[len+2] = 0;
Helmut Tschemernjak 75:7330dd86cdea 32 ser->write(tmpbuf, len+3);
Helmut Tschemernjak 74:66223d437a25 33 va_end(arg);
Helmut Tschemernjak 74:66223d437a25 34 }
Helmut Tschemernjak 74:66223d437a25 35
Helmut Tschemernjak 74:66223d437a25 36 void
Helmut Tschemernjak 74:66223d437a25 37 rprintf(const char *format, ...)
Helmut Tschemernjak 74:66223d437a25 38 {
Helmut Tschemernjak 74:66223d437a25 39 va_list arg;
Helmut Tschemernjak 74:66223d437a25 40 va_start(arg, format);
Helmut Tschemernjak 74:66223d437a25 41 int len = vsnprintf(tmpbuf, sizeof(tmpbuf)-3, format, arg);
Helmut Tschemernjak 74:66223d437a25 42 tmpbuf[len] = 0;
Helmut Tschemernjak 75:7330dd86cdea 43 ser->write(tmpbuf, len+1);
Helmut Tschemernjak 74:66223d437a25 44 va_end(arg);
Helmut Tschemernjak 74:66223d437a25 45 }
Helmut Tschemernjak 74:66223d437a25 46
Helmut Tschemernjak 74:66223d437a25 47 void
Helmut Tschemernjak 74:66223d437a25 48 dump(const char *title, const void *data, int len)
Helmut Tschemernjak 74:66223d437a25 49 {
Helmut Tschemernjak 74:66223d437a25 50 dprintf("dump(\"%s\", 0x%x, %d bytes)", title, data, len);
Helmut Tschemernjak 74:66223d437a25 51
Helmut Tschemernjak 74:66223d437a25 52 int i, j, cnt;
Helmut Tschemernjak 74:66223d437a25 53 unsigned char *u;
Helmut Tschemernjak 74:66223d437a25 54 const int width = 16;
Helmut Tschemernjak 74:66223d437a25 55 const int seppos = 7;
Helmut Tschemernjak 74:66223d437a25 56
Helmut Tschemernjak 74:66223d437a25 57 cnt = 0;
Helmut Tschemernjak 74:66223d437a25 58 u = (unsigned char *)data;
Helmut Tschemernjak 74:66223d437a25 59 while (len > 0) {
Helmut Tschemernjak 74:66223d437a25 60 rprintf("%08x: ", (unsigned int)data + cnt);
Helmut Tschemernjak 74:66223d437a25 61 cnt += width;
Helmut Tschemernjak 74:66223d437a25 62 j = len < width ? len : width;
Helmut Tschemernjak 74:66223d437a25 63 for (i = 0; i < j; i++) {
Helmut Tschemernjak 74:66223d437a25 64 rprintf("%2.2x ", *(u + i));
Helmut Tschemernjak 74:66223d437a25 65 if (i == seppos)
Helmut Tschemernjak 75:7330dd86cdea 66 ser->write(' ');
Helmut Tschemernjak 74:66223d437a25 67 }
Helmut Tschemernjak 75:7330dd86cdea 68 ser->write(' ');
Helmut Tschemernjak 74:66223d437a25 69 if (j < width) {
Helmut Tschemernjak 74:66223d437a25 70 i = width - j;
Helmut Tschemernjak 74:66223d437a25 71 if (i > seppos + 1)
Helmut Tschemernjak 75:7330dd86cdea 72 ser->write(' ');
Helmut Tschemernjak 74:66223d437a25 73 while (i--) {
Helmut Tschemernjak 75:7330dd86cdea 74 ser->print(" ");
Helmut Tschemernjak 74:66223d437a25 75 }
Helmut Tschemernjak 74:66223d437a25 76 }
Helmut Tschemernjak 74:66223d437a25 77 for (i = 0; i < j; i++) {
Helmut Tschemernjak 74:66223d437a25 78 int c = *(u + i);
Helmut Tschemernjak 74:66223d437a25 79 if (c >= ' ' && c <= '~')
Helmut Tschemernjak 75:7330dd86cdea 80 ser->write(c);
Helmut Tschemernjak 74:66223d437a25 81 else
Helmut Tschemernjak 75:7330dd86cdea 82 ser->write('.');
Helmut Tschemernjak 74:66223d437a25 83 if (i == seppos)
Helmut Tschemernjak 75:7330dd86cdea 84 ser->write(' ');
Helmut Tschemernjak 74:66223d437a25 85 }
Helmut Tschemernjak 74:66223d437a25 86 len -= width;
Helmut Tschemernjak 74:66223d437a25 87 u += width;
Helmut Tschemernjak 75:7330dd86cdea 88 ser->print("\r\n");
Helmut Tschemernjak 74:66223d437a25 89 }
Helmut Tschemernjak 75:7330dd86cdea 90 ser->print("--\r\n");
Helmut Tschemernjak 74:66223d437a25 91
Helmut Tschemernjak 74:66223d437a25 92 }
Helmut Tschemernjak 74:66223d437a25 93 #endif