Kart+xxxxx // Radar_RTOS

Dependencies:   Radar_RTOS mbed

Fork of Radar_RTOS by Contest IOT GSE5

Committer:
Alex_Hochart
Date:
Fri Jan 15 08:44:59 2016 +0000
Revision:
3:422918db0559
Parent:
2:97cbf2a5ec78
Kart+xxxx

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Alex_Hochart 2:97cbf2a5ec78 1 #include "UART_Radar.h"
Alex_Hochart 2:97cbf2a5ec78 2 #include "mbed.h"
Alex_Hochart 2:97cbf2a5ec78 3 #include <string.h>
Alex_Hochart 2:97cbf2a5ec78 4 Serial carte(PA_9, PA_10); //emission --- tx, rx
Alex_Hochart 3:422918db0559 5
Alex_Hochart 2:97cbf2a5ec78 6
Alex_Hochart 2:97cbf2a5ec78 7 void USART1_puts(char *text){
Alex_Hochart 2:97cbf2a5ec78 8 while(*text != '\0'){
Alex_Hochart 2:97cbf2a5ec78 9
Alex_Hochart 2:97cbf2a5ec78 10 if(carte.writeable()){
Alex_Hochart 2:97cbf2a5ec78 11 carte.putc(*text);
Alex_Hochart 2:97cbf2a5ec78 12 text++;
Alex_Hochart 2:97cbf2a5ec78 13 }
Alex_Hochart 2:97cbf2a5ec78 14
Alex_Hochart 2:97cbf2a5ec78 15 }
Alex_Hochart 2:97cbf2a5ec78 16 }
Alex_Hochart 2:97cbf2a5ec78 17
Alex_Hochart 2:97cbf2a5ec78 18
Alex_Hochart 2:97cbf2a5ec78 19 void format(char *msg, char *msg_formated){
Alex_Hochart 2:97cbf2a5ec78 20 int somme=5;
Alex_Hochart 2:97cbf2a5ec78 21 int i=0;
Alex_Hochart 2:97cbf2a5ec78 22 msg_formated[0]=2;
Alex_Hochart 3:422918db0559 23 //pc.printf("\n\r");
Alex_Hochart 2:97cbf2a5ec78 24 while(msg[i]!=0){
Alex_Hochart 2:97cbf2a5ec78 25 somme= somme + msg[i];
Alex_Hochart 2:97cbf2a5ec78 26 msg_formated[i+1]=msg[i];
Alex_Hochart 2:97cbf2a5ec78 27 i++;
Alex_Hochart 2:97cbf2a5ec78 28 }
Alex_Hochart 2:97cbf2a5ec78 29 if(somme>255){
Alex_Hochart 2:97cbf2a5ec78 30 somme++;
Alex_Hochart 2:97cbf2a5ec78 31 }
Alex_Hochart 2:97cbf2a5ec78 32 somme=somme%256;
Alex_Hochart 2:97cbf2a5ec78 33 msg_formated[i+1]=~somme;
Alex_Hochart 2:97cbf2a5ec78 34 msg_formated[i+2]=3;
Alex_Hochart 2:97cbf2a5ec78 35 msg_formated[i+3]=0;
Alex_Hochart 2:97cbf2a5ec78 36
Alex_Hochart 2:97cbf2a5ec78 37 //A supprimer
Alex_Hochart 3:422918db0559 38 /*i=0;
Alex_Hochart 2:97cbf2a5ec78 39 while(msg_formated[i]!=0){
Alex_Hochart 2:97cbf2a5ec78 40 printf("[%d] ", msg_formated[i]);
Alex_Hochart 2:97cbf2a5ec78 41 i++;
Alex_Hochart 3:422918db0559 42 }*/
Alex_Hochart 2:97cbf2a5ec78 43 }
Alex_Hochart 2:97cbf2a5ec78 44
Alex_Hochart 2:97cbf2a5ec78 45
Alex_Hochart 2:97cbf2a5ec78 46 void send(char *data){
Alex_Hochart 2:97cbf2a5ec78 47 char trame[52]="";
Alex_Hochart 2:97cbf2a5ec78 48 format(data, trame);
Alex_Hochart 2:97cbf2a5ec78 49 USART1_puts(trame);
Alex_Hochart 2:97cbf2a5ec78 50 }
Alex_Hochart 2:97cbf2a5ec78 51
Alex_Hochart 2:97cbf2a5ec78 52 int receive(char *frame){
Alex_Hochart 2:97cbf2a5ec78 53 int I;
Alex_Hochart 2:97cbf2a5ec78 54 unsigned int sommeBuffer;
Alex_Hochart 2:97cbf2a5ec78 55 char r;
Alex_Hochart 2:97cbf2a5ec78 56 Timer timeout;
Alex_Hochart 2:97cbf2a5ec78 57 timeout.start();
Alex_Hochart 2:97cbf2a5ec78 58 while(1){
Alex_Hochart 3:422918db0559 59 if(timeout.read_ms() > 100) return 2;
Alex_Hochart 2:97cbf2a5ec78 60 if(carte.readable()){
Alex_Hochart 2:97cbf2a5ec78 61 r = carte.getc();
Alex_Hochart 2:97cbf2a5ec78 62
Alex_Hochart 2:97cbf2a5ec78 63 switch(r){
Alex_Hochart 2:97cbf2a5ec78 64 case 2: //Start
Alex_Hochart 2:97cbf2a5ec78 65 I=0;
Alex_Hochart 2:97cbf2a5ec78 66 sommeBuffer=2;
Alex_Hochart 2:97cbf2a5ec78 67 break;
Alex_Hochart 2:97cbf2a5ec78 68
Alex_Hochart 2:97cbf2a5ec78 69 case 3: //Stop
Alex_Hochart 2:97cbf2a5ec78 70 frame[I]=0;
Alex_Hochart 2:97cbf2a5ec78 71 sommeBuffer+=3;
Alex_Hochart 2:97cbf2a5ec78 72
Alex_Hochart 2:97cbf2a5ec78 73 if(sommeBuffer>255){
Alex_Hochart 2:97cbf2a5ec78 74 sommeBuffer++;
Alex_Hochart 2:97cbf2a5ec78 75 }
Alex_Hochart 2:97cbf2a5ec78 76 sommeBuffer=~sommeBuffer;
Alex_Hochart 2:97cbf2a5ec78 77 sommeBuffer=sommeBuffer%256;
Alex_Hochart 2:97cbf2a5ec78 78
Alex_Hochart 2:97cbf2a5ec78 79 if(sommeBuffer==0){ //Les sommes concordent, les données sont valides
Alex_Hochart 2:97cbf2a5ec78 80 frame[I-1]=0;
Alex_Hochart 2:97cbf2a5ec78 81 return 0;
Alex_Hochart 2:97cbf2a5ec78 82 }else{ //Message invalidé par la somme
Alex_Hochart 2:97cbf2a5ec78 83 return 1;
Alex_Hochart 2:97cbf2a5ec78 84 }
Alex_Hochart 2:97cbf2a5ec78 85
Alex_Hochart 2:97cbf2a5ec78 86 default :
Alex_Hochart 2:97cbf2a5ec78 87 frame[I]=r;
Alex_Hochart 2:97cbf2a5ec78 88 sommeBuffer+=r;
Alex_Hochart 2:97cbf2a5ec78 89 I++;
Alex_Hochart 2:97cbf2a5ec78 90 break;
Alex_Hochart 2:97cbf2a5ec78 91 }
Alex_Hochart 2:97cbf2a5ec78 92 }
Alex_Hochart 2:97cbf2a5ec78 93 }
Alex_Hochart 2:97cbf2a5ec78 94 }
Alex_Hochart 2:97cbf2a5ec78 95
Alex_Hochart 2:97cbf2a5ec78 96 int controle(char *frame){
Alex_Hochart 3:422918db0559 97 if (*frame == 6) return 0;
Alex_Hochart 2:97cbf2a5ec78 98 else return 1;
Alex_Hochart 2:97cbf2a5ec78 99 }