DIISWAG / Mbed 2 deprecated CAN_Database

Dependencies:   mbed mbed-rtos

main.cpp

Committer:
dedounet
Date:
2017-05-23
Revision:
4:4051a72a22f7
Parent:
3:35151308f847
Parent:
2:654aafc318bf
Child:
6:2c713a0187dd

File content as of revision 4:4051a72a22f7:

#include "mbed.h"
#include "rtos.h"

#define SIG_RX_CAN  0x01


DigitalOut led1(LED1);
DigitalOut led2(LED2);

Thread threadA;
Thread threadB;
Thread threadC;
 
 
CAN CanPort(p30, p29);
CANMessage  MessageRx; 
CANMessage  MessageTx;

CANMessage MessageBuzzer;

bool Send_Buzz=false; // Envoyer tramme au buzzer

unsigned int    Id;
 
void canReader(void)
{
    
      
    if (CanPort.read(MessageRx))
    {
            led1 = !led1;
            switch(MessageRx.id){
                case 0x111 : 
                        threadA.signal_set(SIG_RX_CAN);
                    break;
                    
                case 0x221 :
                        threadC.signal_set(SIG_RX_CAN);
                    break;
                    
                case 0x222 :
                        threadC.signal_set(SIG_RX_CAN);
                    break;
                    
                case 0x333 :
                
                    break;
                default: 
                        printf("Id error = %X\n\r",MessageRx.id)  ;
                }
            
    }
    
} 
 
 void traitRFID() 
{
    int i=0;
    
    while(true)
    {
        Thread::signal_wait(SIG_RX_CAN);    
        led2 = !led2;
        for(i=0; i<8;i++){
        printf("Numero de carte = %X\n\r",MessageRx.data[i]);
        }        
        
    }
}

void thA() 
{
    int i=0;
    while(true)
    {
        Thread::signal_wait(SIG_RX_CAN);    
        led2 = !led2;
        if(MessageRx.data[0]==0x01){
            printf("RX ID = %X \t\n\r",MessageRx.id);
            for (i=0;i<8;i++){
                 printf(" DATA = %X \n\r",MessageRx.data[i]);
            }
        }
    }
}
 
void thB() 
{
    while(true) 
    {
    led1 = !led1;   
    printf("TIC3s\n\r");
    MessageBuzzer.id=Id;
    CanPort.write(MessageBuzzer);
    /*if (Id < 0x3FF) Id++;
    else Id = 0x000;*/
    
    wait(3);   
    }
}

int main() 
{
    
    
    CanPort.frequency(20000);
    
    Id = 0x222;
    MessageBuzzer.len=1;
    MessageBuzzer.data[0] = 0x01;
    //MessageTx.data[1] = 0xAA;
    
    MessageTx.format = CANStandard;
    //MessageTx.format = CANExtended;
    
    MessageTx.type = CANData;
    //MessageTx.type = CANRemote;
    
    CanPort.attach(canReader,CAN::RxIrq);
        
    threadA.start(thA);
    threadB.start(thB);
    threadC.start(traitRFID);
    
    led1 = 0;
    led2 =0 ;
    printf("Start OK\n\r");

    

    while (true) 
        {
    
        }
}