DIISWAG / Mbed 2 deprecated CAN_Database

Dependencies:   mbed mbed-rtos

main.cpp

Committer:
Taliarte
Date:
2017-05-17
Revision:
1:6f8bf5bdc70f
Parent:
0:bcbc14441ee8
Child:
2:654aafc318bf
Child:
3:35151308f847

File content as of revision 1:6f8bf5bdc70f:

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

#define SIG_RX_CAN  0x01


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

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

unsigned int    Id;

 
void canReader(void)
{
    
      
    if (CanPort.read(MessageRx))
    {
            led1 = !led1;
            threadA.signal_set(SIG_RX_CAN);
    }
    
} 
 

void thA() 
{
    while(true)
    {
        Thread::signal_wait(SIG_RX_CAN);    
        led2 = !led2;
        printf("RX FRAME ID = %X\n\r",MessageRx.id);
        
    }
}
 
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);
    
    led1 = 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) 
        {
    
        }
}