app4

Dependencies:   mbed-rtos mbed CRC16

Fork of S5info_APP2 by Éric Bisson

uart.h

Committer:
ericbisson
Date:
2017-03-06
Revision:
8:5b87b1f9d91f
Child:
9:01be68364986

File content as of revision 8:5b87b1f9d91f:

#include <vector>
#include "mbed.h"
using std::vector;

#define RETURN_EMPTYVECTOR(x) return vector<x>();
const char PREAMBULE =  0b01010101;
const char START =      0b01111110;
const char END =        0b01111110;
const char FLAGS =      0x00;
const char MAX_LENGTH = 80;

vector<char> uart_read(Serial& COM, Serial& pc)
{
    vector<char> result;

    while (COM.readable())
    {
        result.push_back(COM.getc());
        wait_ms(8); // 9600 bits/secondes, donc ~1ms par bit
    }
    if (result.size() > 7)
    {
        if (result[0] != PREAMBULE || 
            result[1] != START ||
            result[2] != result.size() - 7 ||
            result.back() != END)
        {
            RETURN_EMPTYVECTOR(char);
        }
        
        result.push_back('\0'); // end of string pour pouvoir l'afficher
        
        return vector<char>(&result[4], &result[result.size()-4]);
    }
    RETURN_EMPTYVECTOR(char);
}