DIISWAG / Mbed 2 deprecated CAN_Database

Dependencies:   mbed mbed-rtos

Committer:
Taliarte
Date:
Sat Jun 03 15:14:35 2017 +0000
Revision:
8:2edddda41050
Parent:
7:5ad5ce91831f
Child:
9:5a790f59217e
push;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dedounet 0:bcbc14441ee8 1 #include "mbed.h"
Taliarte 1:6f8bf5bdc70f 2 #include "rtos.h"
Taliarte 5:e7fa92a21eff 3 #include <vector>
Taliarte 1:6f8bf5bdc70f 4 #define SIG_RX_CAN 0x01
Taliarte 1:6f8bf5bdc70f 5
Taliarte 5:e7fa92a21eff 6 using namespace std;
Taliarte 1:6f8bf5bdc70f 7
Taliarte 1:6f8bf5bdc70f 8 DigitalOut led1(LED1);
Taliarte 1:6f8bf5bdc70f 9 DigitalOut led2(LED2);
dedounet 0:bcbc14441ee8 10
Taliarte 1:6f8bf5bdc70f 11 Thread threadA;
Taliarte 1:6f8bf5bdc70f 12 Thread threadB;
dedounet 3:35151308f847 13 Thread threadC;
Taliarte 1:6f8bf5bdc70f 14
dedounet 6:2c713a0187dd 15 char * BDD[8];
Taliarte 1:6f8bf5bdc70f 16
Taliarte 1:6f8bf5bdc70f 17 CAN CanPort(p30, p29);
Taliarte 1:6f8bf5bdc70f 18 CANMessage MessageRx;
Taliarte 1:6f8bf5bdc70f 19 CANMessage MessageTx;
Taliarte 1:6f8bf5bdc70f 20
Taliarte 2:654aafc318bf 21 CANMessage MessageBuzzer;
Taliarte 2:654aafc318bf 22
dedounet 7:5ad5ce91831f 23 bool send_Buzz=false; // Envoyer tramme au buzzer
Taliarte 2:654aafc318bf 24
Taliarte 1:6f8bf5bdc70f 25 unsigned int Id;
dedounet 0:bcbc14441ee8 26
Taliarte 5:e7fa92a21eff 27 bool rechercheID(char * ID) // recherche d'un ID dans la base de données
Taliarte 5:e7fa92a21eff 28 {
Taliarte 5:e7fa92a21eff 29 bool retour = false;
Taliarte 5:e7fa92a21eff 30 for( int i= 0; i< sizeof(BDD); i++)
Taliarte 5:e7fa92a21eff 31 {
Taliarte 5:e7fa92a21eff 32 if (BDD[i]==ID) retour= true ;
Taliarte 5:e7fa92a21eff 33 }
Taliarte 5:e7fa92a21eff 34 return retour;
Taliarte 5:e7fa92a21eff 35 }
Taliarte 5:e7fa92a21eff 36
Taliarte 1:6f8bf5bdc70f 37 void canReader(void)
Taliarte 1:6f8bf5bdc70f 38 {
Taliarte 1:6f8bf5bdc70f 39
Taliarte 1:6f8bf5bdc70f 40
Taliarte 1:6f8bf5bdc70f 41 if (CanPort.read(MessageRx))
Taliarte 1:6f8bf5bdc70f 42 {
Taliarte 1:6f8bf5bdc70f 43 led1 = !led1;
dedounet 3:35151308f847 44 switch(MessageRx.id){
dedounet 3:35151308f847 45 case 0x111 :
dedounet 3:35151308f847 46 threadA.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 47 break;
dedounet 3:35151308f847 48
dedounet 3:35151308f847 49 case 0x222 :
dedounet 3:35151308f847 50 threadC.signal_set(SIG_RX_CAN);
dedounet 3:35151308f847 51 break;
dedounet 3:35151308f847 52
dedounet 3:35151308f847 53
dedounet 3:35151308f847 54 default:
dedounet 3:35151308f847 55 printf("Id error = %X\n\r",MessageRx.id) ;
dedounet 3:35151308f847 56 }
dedounet 3:35151308f847 57
Taliarte 1:6f8bf5bdc70f 58 }
Taliarte 1:6f8bf5bdc70f 59
Taliarte 1:6f8bf5bdc70f 60 }
Taliarte 1:6f8bf5bdc70f 61
dedounet 3:35151308f847 62 void traitRFID()
Taliarte 1:6f8bf5bdc70f 63 {
dedounet 3:35151308f847 64 int i=0;
dedounet 7:5ad5ce91831f 65 char* ID;
Taliarte 1:6f8bf5bdc70f 66 while(true)
Taliarte 1:6f8bf5bdc70f 67 {
Taliarte 1:6f8bf5bdc70f 68 Thread::signal_wait(SIG_RX_CAN);
Taliarte 1:6f8bf5bdc70f 69 led2 = !led2;
dedounet 3:35151308f847 70 for(i=0; i<8;i++){
dedounet 3:35151308f847 71 printf("Numero de carte = %X\n\r",MessageRx.data[i]);
Taliarte 8:2edddda41050 72 ID[i]= MessageRx.data[i];
dedounet 7:5ad5ce91831f 73 }
dedounet 7:5ad5ce91831f 74 send_Buzz=rechercheID( ID);
dedounet 7:5ad5ce91831f 75 //si buzz ok, on trait Buzz par un signal
Taliarte 1:6f8bf5bdc70f 76
dedounet 0:bcbc14441ee8 77 }
dedounet 0:bcbc14441ee8 78 }
dedounet 3:35151308f847 79
dedounet 3:35151308f847 80 void thA()
dedounet 3:35151308f847 81 {
dedounet 3:35151308f847 82 int i=0;
dedounet 3:35151308f847 83 while(true)
dedounet 3:35151308f847 84 {
dedounet 3:35151308f847 85 Thread::signal_wait(SIG_RX_CAN);
dedounet 3:35151308f847 86 led2 = !led2;
dedounet 3:35151308f847 87 if(MessageRx.data[0]==0x01){
dedounet 3:35151308f847 88 printf("RX ID = %X \t\n\r",MessageRx.id);
dedounet 3:35151308f847 89 for (i=0;i<8;i++){
dedounet 3:35151308f847 90 printf(" DATA = %X \n\r",MessageRx.data[i]);
dedounet 3:35151308f847 91 }
dedounet 3:35151308f847 92 }
dedounet 3:35151308f847 93 }
dedounet 3:35151308f847 94 }
Taliarte 1:6f8bf5bdc70f 95
dedounet 7:5ad5ce91831f 96 void traitBuzz()
Taliarte 1:6f8bf5bdc70f 97 {
Taliarte 2:654aafc318bf 98 while(true)
Taliarte 1:6f8bf5bdc70f 99 {
Taliarte 1:6f8bf5bdc70f 100 led1 = !led1;
Taliarte 1:6f8bf5bdc70f 101 printf("TIC3s\n\r");
Taliarte 8:2edddda41050 102
Taliarte 8:2edddda41050 103 Id = 0x222;
Taliarte 8:2edddda41050 104 MessageBuzzer.len=1;
Taliarte 8:2edddda41050 105
Taliarte 2:654aafc318bf 106 MessageBuzzer.id=Id;
Taliarte 8:2edddda41050 107 if( send_Buzz=true)
Taliarte 8:2edddda41050 108 {
Taliarte 8:2edddda41050 109 MessageBuzzer.data[0] = 0x01;
Taliarte 8:2edddda41050 110 CanPort.write(MessageBuzzer);
Taliarte 8:2edddda41050 111 send_Buzz=false;
Taliarte 8:2edddda41050 112 }
Taliarte 8:2edddda41050 113
Taliarte 8:2edddda41050 114
Taliarte 2:654aafc318bf 115 /*if (Id < 0x3FF) Id++;
Taliarte 2:654aafc318bf 116 else Id = 0x000;*/
Taliarte 8:2edddda41050 117
Taliarte 1:6f8bf5bdc70f 118 }
Taliarte 1:6f8bf5bdc70f 119 }
Taliarte 1:6f8bf5bdc70f 120
Taliarte 1:6f8bf5bdc70f 121 int main()
Taliarte 1:6f8bf5bdc70f 122 {
Taliarte 2:654aafc318bf 123
Taliarte 1:6f8bf5bdc70f 124 CanPort.frequency(20000);
Taliarte 1:6f8bf5bdc70f 125
Taliarte 8:2edddda41050 126
Taliarte 2:654aafc318bf 127 //MessageTx.data[1] = 0xAA;
Taliarte 1:6f8bf5bdc70f 128
Taliarte 1:6f8bf5bdc70f 129 MessageTx.format = CANStandard;
Taliarte 1:6f8bf5bdc70f 130 //MessageTx.format = CANExtended;
Taliarte 1:6f8bf5bdc70f 131
Taliarte 1:6f8bf5bdc70f 132 MessageTx.type = CANData;
Taliarte 1:6f8bf5bdc70f 133 //MessageTx.type = CANRemote;
Taliarte 1:6f8bf5bdc70f 134
Taliarte 1:6f8bf5bdc70f 135 CanPort.attach(canReader,CAN::RxIrq);
Taliarte 1:6f8bf5bdc70f 136
Taliarte 1:6f8bf5bdc70f 137 threadA.start(thA);
dedounet 7:5ad5ce91831f 138 threadB.start(traitBuzz);
dedounet 3:35151308f847 139 threadC.start(traitRFID);
Taliarte 1:6f8bf5bdc70f 140
Taliarte 1:6f8bf5bdc70f 141 led1 = 0;
dedounet 3:35151308f847 142 led2 =0 ;
Taliarte 1:6f8bf5bdc70f 143 printf("Start OK\n\r");
dedounet 4:4051a72a22f7 144
Taliarte 1:6f8bf5bdc70f 145
dedounet 4:4051a72a22f7 146
Taliarte 1:6f8bf5bdc70f 147 while (true)
Taliarte 1:6f8bf5bdc70f 148 {
Taliarte 1:6f8bf5bdc70f 149
Taliarte 1:6f8bf5bdc70f 150 }
Taliarte 1:6f8bf5bdc70f 151 }