d

Dependencies:   mbed

Fork of AEB by Vincenzo Comito

Committer:
clynamen
Date:
Sat Jul 30 13:58:52 2016 +0000
Revision:
3:4bb49a5dfa47
Child:
4:f0be0d8a0394
m;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
clynamen 3:4bb49a5dfa47 1 #include "BBSerial.h"
clynamen 3:4bb49a5dfa47 2
clynamen 3:4bb49a5dfa47 3 #include "stdio.h"
clynamen 3:4bb49a5dfa47 4
clynamen 3:4bb49a5dfa47 5 BBSerial::BBSerial() :
clynamen 3:4bb49a5dfa47 6 uart(PTC17, PTC16) // tx, rx of uart3
clynamen 3:4bb49a5dfa47 7 {
clynamen 3:4bb49a5dfa47 8 uart.baud(9600);
clynamen 3:4bb49a5dfa47 9 uart.format(8, SerialBase::Odd, 2);
clynamen 3:4bb49a5dfa47 10 }
clynamen 3:4bb49a5dfa47 11
clynamen 3:4bb49a5dfa47 12
clynamen 3:4bb49a5dfa47 13 void BBSerial::printf(const char* format, ...) {
clynamen 3:4bb49a5dfa47 14 va_list argptr;
clynamen 3:4bb49a5dfa47 15 va_start(argptr, format);
clynamen 3:4bb49a5dfa47 16
clynamen 3:4bb49a5dfa47 17 char newFormat[200];
clynamen 3:4bb49a5dfa47 18
clynamen 3:4bb49a5dfa47 19 // Add garbage and header in order to resolve first byte error
clynamen 3:4bb49a5dfa47 20 sprintf(newFormat, "GARBAGEAAAAA%sZZZZZ\n", format);
clynamen 3:4bb49a5dfa47 21 char buf[200];
clynamen 3:4bb49a5dfa47 22 vsprintf(buf, newFormat, argptr);
clynamen 3:4bb49a5dfa47 23 uart.printf("%s", buf);
clynamen 3:4bb49a5dfa47 24
clynamen 3:4bb49a5dfa47 25 va_end(argptr);
clynamen 3:4bb49a5dfa47 26 }
clynamen 3:4bb49a5dfa47 27
clynamen 3:4bb49a5dfa47 28 int BBSerial::scanf(const char* format, ...) {
clynamen 3:4bb49a5dfa47 29 if(!uart.readable()) {
clynamen 3:4bb49a5dfa47 30 return 0;
clynamen 3:4bb49a5dfa47 31 }
clynamen 3:4bb49a5dfa47 32 va_list argptr;
clynamen 3:4bb49a5dfa47 33 va_start(argptr, format);
clynamen 3:4bb49a5dfa47 34
clynamen 3:4bb49a5dfa47 35 char line[200];
clynamen 3:4bb49a5dfa47 36 uart.gets(line, 200);
clynamen 3:4bb49a5dfa47 37 line[199] = '\0';
clynamen 3:4bb49a5dfa47 38
clynamen 3:4bb49a5dfa47 39 int read=0;
clynamen 3:4bb49a5dfa47 40
clynamen 3:4bb49a5dfa47 41 int start = 0;
clynamen 3:4bb49a5dfa47 42 for (int i = 0; i < 10; i++) {
clynamen 3:4bb49a5dfa47 43 if(strncmp("AAAAA", &line[i], 5) == 0) {
clynamen 3:4bb49a5dfa47 44 start = i+5;
clynamen 3:4bb49a5dfa47 45 }
clynamen 3:4bb49a5dfa47 46 }
clynamen 3:4bb49a5dfa47 47 char *clean = &line[start];
clynamen 3:4bb49a5dfa47 48
clynamen 3:4bb49a5dfa47 49 int end = strlen(clean)-6;
clynamen 3:4bb49a5dfa47 50 clean[end] = 0;
clynamen 3:4bb49a5dfa47 51
clynamen 3:4bb49a5dfa47 52 if(start < 1) {
clynamen 3:4bb49a5dfa47 53 read = 0;
clynamen 3:4bb49a5dfa47 54 } else {
clynamen 3:4bb49a5dfa47 55 read = vsscanf(clean, format, argptr);
clynamen 3:4bb49a5dfa47 56 }
clynamen 3:4bb49a5dfa47 57
clynamen 3:4bb49a5dfa47 58 va_end(argptr);
clynamen 3:4bb49a5dfa47 59 return read;
clynamen 3:4bb49a5dfa47 60 }