Paul Sainrat / Mbed 2 deprecated App4_Projet

Dependencies:   mbed-rtos mbed

Committer:
Sainratp
Date:
Mon Oct 23 15:54:33 2017 +0000
Revision:
1:5c0ca9bdf810
Parent:
0:703249a56b9d
Child:
4:e0ca69606fdf
ptit changement;

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 1:5c0ca9bdf810 10
Sainratp 1:5c0ca9bdf810 11 void receiveChar()
Sainratp 1:5c0ca9bdf810 12 {
Sainratp 1:5c0ca9bdf810 13 char res;
Sainratp 1:5c0ca9bdf810 14 while(1) {
Sainratp 1:5c0ca9bdf810 15 res=0x00;
Sainratp 1:5c0ca9bdf810 16 for(int i =0; i<8; i++) {
Sainratp 1:5c0ca9bdf810 17 osEvent evt = queueBitReception.get();
Sainratp 1:5c0ca9bdf810 18 if(evt.status == osEventMessage) {
Sainratp 1:5c0ca9bdf810 19 res = res | (((char)evt.value.p)<<i);
Sainratp 1:5c0ca9bdf810 20 }
Sainratp 1:5c0ca9bdf810 21 }
Sainratp 1:5c0ca9bdf810 22 queueCharReception.put((char*)res);
Sainratp 1:5c0ca9bdf810 23 }
Sainratp 1:5c0ca9bdf810 24
Sainratp 1:5c0ca9bdf810 25 }
Sainratp 1:5c0ca9bdf810 26
Sainratp 1:5c0ca9bdf810 27 void receiveBit()
Sainratp 1:5c0ca9bdf810 28 {
Sainratp 1:5c0ca9bdf810 29 Timer timer;
Sainratp 1:5c0ca9bdf810 30 int oldTime;
Sainratp 1:5c0ca9bdf810 31 bool bitType=false;
Sainratp 1:5c0ca9bdf810 32 Thread::signal_wait(0x02);
Sainratp 1:5c0ca9bdf810 33 oldTime = timer.read_ms();
Sainratp 1:5c0ca9bdf810 34 //TODO SYNCHRONISATION
Sainratp 1:5c0ca9bdf810 35 while(1) {
Sainratp 1:5c0ca9bdf810 36 Thread::signal_wait(0x01);
Sainratp 1:5c0ca9bdf810 37 if(timer.read_ms()-oldTime<T) {
Sainratp 1:5c0ca9bdf810 38 Thread::signal_wait(0x01);
Sainratp 1:5c0ca9bdf810 39 } else {
Sainratp 1:5c0ca9bdf810 40 bitType=!bitType;
Sainratp 1:5c0ca9bdf810 41 }
Sainratp 1:5c0ca9bdf810 42
Sainratp 1:5c0ca9bdf810 43 timer.reset();
Sainratp 1:5c0ca9bdf810 44 oldTime=timer.read_ms();
Sainratp 1:5c0ca9bdf810 45
Sainratp 1:5c0ca9bdf810 46
Sainratp 1:5c0ca9bdf810 47 if(bitType) {
Sainratp 1:5c0ca9bdf810 48 queueBitReception.put((void*)0x01);
Sainratp 1:5c0ca9bdf810 49 } else {
Sainratp 1:5c0ca9bdf810 50 queueBitReception.put((void*)0x00);
Sainratp 1:5c0ca9bdf810 51 }
Sainratp 1:5c0ca9bdf810 52 }
Sainratp 1:5c0ca9bdf810 53 }
Sainratp 1:5c0ca9bdf810 54
Sainratp 0:703249a56b9d 55
Sainratp 0:703249a56b9d 56 char calcCRC16(char* trame)
Sainratp 0:703249a56b9d 57 {
Sainratp 0:703249a56b9d 58 char length = trame[2];
Sainratp 0:703249a56b9d 59 int CRC16 = 0xFFFF;
Sainratp 0:703249a56b9d 60 for(char i =0x00; i<length; i++) {
Sainratp 0:703249a56b9d 61 CRC16 = CRC16 ^ trame[3+i];
Sainratp 0:703249a56b9d 62 for(int j = 0 ; j<8 ; j++) {
Sainratp 0:703249a56b9d 63 if((CRC16 & 0x1)==0x01) {
Sainratp 0:703249a56b9d 64 CRC16 = CRC16/2 ^ 0xA001;
Sainratp 0:703249a56b9d 65 } else {
Sainratp 0:703249a56b9d 66 CRC16 = CRC16/2;
Sainratp 0:703249a56b9d 67 }
Sainratp 0:703249a56b9d 68 }
Sainratp 0:703249a56b9d 69 }
Sainratp 1:5c0ca9bdf810 70 return CRC16 & 0x00FF ;
Sainratp 0:703249a56b9d 71 }
Sainratp 0:703249a56b9d 72
Sainratp 0:703249a56b9d 73
Sainratp 1:5c0ca9bdf810 74 void recieveData()
Sainratp 1:5c0ca9bdf810 75 {
Sainratp 1:5c0ca9bdf810 76 osEvent evt;
Sainratp 1:5c0ca9bdf810 77 char reception;
Sainratp 1:5c0ca9bdf810 78 while(1) {
Sainratp 1:5c0ca9bdf810 79 evt = queueCharReception.get();
Sainratp 1:5c0ca9bdf810 80 if(evt.status == osEventMessage) {
Sainratp 1:5c0ca9bdf810 81 reception = (char)evt.value.p;
Sainratp 1:5c0ca9bdf810 82 if(reception == START) {
Sainratp 1:5c0ca9bdf810 83 do {
Sainratp 1:5c0ca9bdf810 84 evt = queueCharReception.get();
Sainratp 1:5c0ca9bdf810 85 if(evt.status == osEventMessage) {
Sainratp 1:5c0ca9bdf810 86 reception = (char)evt.value.p;
Sainratp 1:5c0ca9bdf810 87 pc.putc(reception);
Sainratp 1:5c0ca9bdf810 88 //TODO remplacer le putc par la fabrication d'un trame propre + calcul du crc16 avec cette derniere
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 }