DIISWAG / Mbed 2 deprecated CAN_Database

Dependencies:   mbed mbed-rtos

Committer:
dedounet
Date:
Sat Jun 03 15:23:32 2017 +0000
Revision:
10:538b825e8ffc
Parent:
9:5a790f59217e
Final_r?vis?

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