Paul Sainrat / Mbed 2 deprecated App4_Projet

Dependencies:   mbed-rtos mbed

Committer:
Sainratp
Date:
Mon Oct 23 20:39:18 2017 +0000
Revision:
4:e0ca69606fdf
Parent:
1:5c0ca9bdf810
Child:
5:19a7a0f972cb
bientot;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sainratp 1:5c0ca9bdf810 1 #include "rtos.h"
Sainratp 0:703249a56b9d 2 #include "mbed.h"
Sainratp 0:703249a56b9d 3 #include "DO.h"
Sainratp 0:703249a56b9d 4 #include "config.h"
Sainratp 0:703249a56b9d 5
Sainratp 1:5c0ca9bdf810 6 Queue <void,16> queueBitReception;
Sainratp 1:5c0ca9bdf810 7 Queue <char,16> queueCharReception;
Sainratp 1:5c0ca9bdf810 8 extern Serial pc;
Sainratp 1:5c0ca9bdf810 9
Sainratp 4:e0ca69606fdf 10 Timer timer;
Sainratp 1:5c0ca9bdf810 11
Sainratp 1:5c0ca9bdf810 12 void receiveChar()
Sainratp 1:5c0ca9bdf810 13 {
Sainratp 1:5c0ca9bdf810 14 char res;
Sainratp 1:5c0ca9bdf810 15 while(1) {
Sainratp 1:5c0ca9bdf810 16 res=0x00;
Sainratp 1:5c0ca9bdf810 17 for(int i =0; i<8; i++) {
Sainratp 1:5c0ca9bdf810 18 osEvent evt = queueBitReception.get();
Sainratp 1:5c0ca9bdf810 19 if(evt.status == osEventMessage) {
Sainratp 1:5c0ca9bdf810 20 res = res | (((char)evt.value.p)<<i);
Sainratp 1:5c0ca9bdf810 21 }
Sainratp 1:5c0ca9bdf810 22 }
Sainratp 4:e0ca69606fdf 23
Sainratp 1:5c0ca9bdf810 24 queueCharReception.put((char*)res);
Sainratp 1:5c0ca9bdf810 25 }
Sainratp 1:5c0ca9bdf810 26
Sainratp 1:5c0ca9bdf810 27 }
Sainratp 1:5c0ca9bdf810 28
Sainratp 1:5c0ca9bdf810 29 void receiveBit()
Sainratp 1:5c0ca9bdf810 30 {
Sainratp 4:e0ca69606fdf 31 timer.start();
Sainratp 1:5c0ca9bdf810 32 int oldTime;
Sainratp 4:e0ca69606fdf 33 bool bitType=true;
Sainratp 1:5c0ca9bdf810 34 oldTime = timer.read_ms();
Sainratp 4:e0ca69606fdf 35 printf("\n %d \n ",oldTime);
Sainratp 1:5c0ca9bdf810 36 while(1) {
Sainratp 1:5c0ca9bdf810 37 Thread::signal_wait(0x01);
Sainratp 4:e0ca69606fdf 38 //printf("\n %d",timer.read_ms()-oldTime);
Sainratp 4:e0ca69606fdf 39 if(timer.read_ms()-oldTime<(T-(T*0.15))*1000){
Sainratp 4:e0ca69606fdf 40 Thread::signal_wait(0x01);
Sainratp 4:e0ca69606fdf 41 }
Sainratp 4:e0ca69606fdf 42 else {
Sainratp 1:5c0ca9bdf810 43 bitType=!bitType;
Sainratp 1:5c0ca9bdf810 44 }
Sainratp 1:5c0ca9bdf810 45 if(bitType) {
Sainratp 1:5c0ca9bdf810 46 queueBitReception.put((void*)0x01);
Sainratp 4:e0ca69606fdf 47 pc.putc(0x31);
Sainratp 1:5c0ca9bdf810 48 } else {
Sainratp 1:5c0ca9bdf810 49 queueBitReception.put((void*)0x00);
Sainratp 4:e0ca69606fdf 50 pc.putc(0x30);
Sainratp 1:5c0ca9bdf810 51 }
Sainratp 4:e0ca69606fdf 52 oldTime=timer.read_ms();
Sainratp 1:5c0ca9bdf810 53 }
Sainratp 1:5c0ca9bdf810 54 }
Sainratp 1:5c0ca9bdf810 55
Sainratp 0:703249a56b9d 56
Sainratp 0:703249a56b9d 57 char calcCRC16(char* trame)
Sainratp 0:703249a56b9d 58 {
Sainratp 0:703249a56b9d 59 char length = trame[2];
Sainratp 0:703249a56b9d 60 int CRC16 = 0xFFFF;
Sainratp 0:703249a56b9d 61 for(char i =0x00; i<length; i++) {
Sainratp 0:703249a56b9d 62 CRC16 = CRC16 ^ trame[3+i];
Sainratp 0:703249a56b9d 63 for(int j = 0 ; j<8 ; j++) {
Sainratp 0:703249a56b9d 64 if((CRC16 & 0x1)==0x01) {
Sainratp 0:703249a56b9d 65 CRC16 = CRC16/2 ^ 0xA001;
Sainratp 0:703249a56b9d 66 } else {
Sainratp 0:703249a56b9d 67 CRC16 = CRC16/2;
Sainratp 0:703249a56b9d 68 }
Sainratp 0:703249a56b9d 69 }
Sainratp 0:703249a56b9d 70 }
Sainratp 1:5c0ca9bdf810 71 return CRC16 & 0x00FF ;
Sainratp 0:703249a56b9d 72 }
Sainratp 0:703249a56b9d 73
Sainratp 0:703249a56b9d 74
Sainratp 1:5c0ca9bdf810 75 void recieveData()
Sainratp 1:5c0ca9bdf810 76 {
Sainratp 1:5c0ca9bdf810 77 osEvent evt;
Sainratp 1:5c0ca9bdf810 78 char reception;
Sainratp 1:5c0ca9bdf810 79 while(1) {
Sainratp 1:5c0ca9bdf810 80 evt = queueCharReception.get();
Sainratp 1:5c0ca9bdf810 81 if(evt.status == osEventMessage) {
Sainratp 1:5c0ca9bdf810 82 reception = (char)evt.value.p;
Sainratp 1:5c0ca9bdf810 83 if(reception == START) {
Sainratp 1:5c0ca9bdf810 84 do {
Sainratp 1:5c0ca9bdf810 85 evt = queueCharReception.get();
Sainratp 1:5c0ca9bdf810 86 if(evt.status == osEventMessage) {
Sainratp 1:5c0ca9bdf810 87 reception = (char)evt.value.p;
Sainratp 1:5c0ca9bdf810 88 pc.putc(reception);
Sainratp 1:5c0ca9bdf810 89 }
Sainratp 1:5c0ca9bdf810 90 }while(reception!=STOP);
Sainratp 1:5c0ca9bdf810 91 }
Sainratp 1:5c0ca9bdf810 92 }
Sainratp 1:5c0ca9bdf810 93 }
Sainratp 0:703249a56b9d 94 }