DIISWAG / Mbed 2 deprecated CAN_Database

Dependencies:   mbed mbed-rtos

main.cpp

Committer:
dedounet
Date:
2017-05-23
Revision:
3:35151308f847
Parent:
1:6f8bf5bdc70f
Child:
4:4051a72a22f7

File content as of revision 3:35151308f847:

#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;

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");
    MessageTx.id=Id;
    CanPort.write(MessageTx);
    
    if (Id < 0x3FF) Id++;
    else Id = 0x000;
    
    wait(3);   
    }
}



int main() 
{
    CanPort.frequency(20000);
    
    Id = 0x1A5;
    MessageTx.len=2;
    MessageTx.data[0] = 0x55;
    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");
    LocalFileSystem local("local"); 
     FILE *fp = fopen("/local/out.txt", "w");  // Open "out.txt" on the local file system for writing
    fprintf(fp, "Hello World!");
    fclose(fp);
    
    while (true) 
        {
    
        }
}