d

Dependencies:   mbed

Fork of AEB by Vincenzo Comito

Committer:
clynamen
Date:
Sun Jul 31 15:01:10 2016 +0000
Revision:
5:d64e042b573d
Parent:
4:f0be0d8a0394
final;

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 va_list argptr;
clynamen 3:4bb49a5dfa47 30 va_start(argptr, format);
clynamen 3:4bb49a5dfa47 31
clynamen 3:4bb49a5dfa47 32 char line[200];
clynamen 3:4bb49a5dfa47 33 uart.gets(line, 200);
clynamen 3:4bb49a5dfa47 34 line[199] = '\0';
clynamen 3:4bb49a5dfa47 35
clynamen 3:4bb49a5dfa47 36 int read=0;
clynamen 3:4bb49a5dfa47 37
clynamen 3:4bb49a5dfa47 38 int start = 0;
clynamen 3:4bb49a5dfa47 39 for (int i = 0; i < 10; i++) {
clynamen 3:4bb49a5dfa47 40 if(strncmp("AAAAA", &line[i], 5) == 0) {
clynamen 3:4bb49a5dfa47 41 start = i+5;
clynamen 3:4bb49a5dfa47 42 }
clynamen 3:4bb49a5dfa47 43 }
clynamen 3:4bb49a5dfa47 44 char *clean = &line[start];
clynamen 3:4bb49a5dfa47 45
clynamen 3:4bb49a5dfa47 46 int end = strlen(clean)-6;
clynamen 3:4bb49a5dfa47 47 clean[end] = 0;
clynamen 3:4bb49a5dfa47 48
clynamen 3:4bb49a5dfa47 49 if(start < 1) {
clynamen 3:4bb49a5dfa47 50 read = 0;
clynamen 3:4bb49a5dfa47 51 } else {
clynamen 3:4bb49a5dfa47 52 read = vsscanf(clean, format, argptr);
clynamen 3:4bb49a5dfa47 53 }
clynamen 3:4bb49a5dfa47 54
clynamen 3:4bb49a5dfa47 55 va_end(argptr);
clynamen 3:4bb49a5dfa47 56 return read;
clynamen 3:4bb49a5dfa47 57 }