Simulateur CAN 1.0

Dependencies:   mbed

Fork of CAN by Carlos Almeida

main.cpp

Committer:
protongamer
Date:
2018-02-06
Revision:
1:f961845c25eb
Parent:
0:cea062e60f85

File content as of revision 1:f961845c25eb:

#include "mbed.h"
 
Ticker ticker;
DigitalOut led1(LED1);
DigitalOut led2(LED2);

Serial pc(D1, D0);
CAN can1(p9, p10);
CAN can2(p30, p29);

char value = 0;
uint8_t state = 0;

void send(char counter) {
    //pc.printf("send()\n");
    if(can2.write(CANMessage(1338, &counter, 8))) {
        //pc.printf("wloop()\n");
        //counter++;
        pc.printf("Message sent: %d\r\n", counter);
    } 
    led1 = !led1;
}
 
int main() {
    
    //ticker.attach(&send, 1);
    CANMessage msg;
    /*char c;
    uint16_t instruction;
    uint16_t instruction_2;
    uint8_t bytes;
    int8_t state_val;*/
    while(1) {
       //c = pc.getc();
       
       if(can2.read(msg)) {
            printf("Message received: %d\n", msg.data[0]);
            led2 = !led2;
            wait(1.0);
            send(0x2A);
        } 

       printf("awaiting data \r\n");
       wait(0.5);
       }
       
       }
    /*switch(state){
       
       case 0:
       pc.printf("CAN BUS - TERMINAL \r\n");
       pc.printf("Use 1 to set the value to be sent\r\n");
       pc.printf("Use 2 to send the value \r\n");
       state = 1;       
       break;
       
       case 1:
       
       if(c == '1'){
        instruction = 0;
        state_val = 0;
        pc.printf("1 \r\n\n");
        wait(1.0);
        state = 2;
        }
        
        if(c == '2'){
        pc.printf("2 \r\n\n");
        wait(1.0);
        switch(bytes){
            
            case 1:
        send(instruction);
            break;
            
            case 2:
            send(instruction_2);
            send(instruction);
            break;
            }
        state = 0;
        }
        
        
       
       break;
       
       case 2:
       pc.printf("Set the value to be sent(hex value) : 0x");
       state = 3;       
       break;
       
       case 3:
       
       switch(c){
           
           
                
           case '0':
           pc.printf("0");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b0000;
                }
           
           if(state_val == 0){
               instruction = 0b0000;
               state_val++;
               }
            
           break;
           
           case '1':
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b0001;
                }
                
           pc.printf("1");
           if(state_val == 0){
               instruction = 0b0001;
               state_val++;
               }
            
           break;
           
           case '2':
           
            if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b0010;
                }
                
           pc.printf("2");
           if(state_val == 0){
               instruction = 0b0010;
               state_val++;
               }
           
           break;
           
           case '3':
           pc.printf("3");
          
          if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b0011;
                }
          
           if(state_val == 0){
               instruction = 0b0011;
               state_val++;
               }
            
           break;
           
           case '4':
           
            if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b0100;
                }           
           
           pc.printf("4");
           if(state_val == 0){
               instruction = 0b0100;
               state_val++;
               }

           break;
           
           case '5':
           pc.printf("5");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b0101;
                }
           
           if(state_val == 0){
               instruction = 0b0101;
               state_val++;
               }
            
           break;
           
           case '6':
           pc.printf("6");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b0110;
                }
           
           if(state_val == 0){
               instruction = 0b0110;
               state_val++;
               }
            
           break;
           
           case '7':
           pc.printf("7");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b0111;
                }
           
           if(state_val == 0){
               instruction = 0b0111;
               state_val++;
               }
            
           break;
           
           case '8':
           pc.printf("8");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1000;
                }
           
           
           if(state_val == 0){
               instruction = 0b1000;
               state_val++;
               }
            
           break;
           
           case '9':
           pc.printf("9");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1001;
                }
           
           if(state_val == 0){
               instruction = 0b1001;
               state_val++;
               }
            
           break;
           
           case 'a':
           pc.printf("a");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1010;
                }
           
           if(state_val == 0){
               instruction = 0b1010;
               state_val++;
               }
            
           break;
           
           case 'b':
           pc.printf("b");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1011;
                }
           
           if(state_val == 0){
               instruction = 0b1011;
               state_val++;
               }
            
           break;
           
           case 'c':
           pc.printf("c");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1100;
                }
           
           if(state_val == 0){
               instruction = 0b1100;
               state_val++;
               }
            
           break;
           
           case 'd':
           pc.printf("d");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1101;
                }
           
           if(state_val == 0){
               instruction = 0b1101;
               state_val++;
               }
            
           break;
           
           case 'e':
           pc.printf("e");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1110;
                }
           
           if(state_val == 0){
               instruction = 0b1110;
               state_val++;
               }
            
           break;
           
           case 'f':
           pc.printf("f");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1111;
                }
           
           if(state_val == 0){
               instruction = 0b1111;
               state_val++;
               }
            
           break;
           
           case 'A':
           pc.printf("a");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1010;
                }
           
           if(state_val == 0){
               instruction = 0b1010;
               state_val++;
               }
            
           break;
           
           case 'B':
           pc.printf("b");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1011;
                }
           
           if(state_val == 0){
               instruction = 0b1011;
               state_val++;
               }
            
           break;
           
           case 'C':
           pc.printf("c");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1100;
                }
           
           if(state_val == 0){
               instruction = 0b1100;
               state_val++;
               }
            
           break;
           
           case 'D':
           pc.printf("d");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1101;
                }
           
           if(state_val == 0){
               instruction = 0b1101;
               state_val++;
               }
            
           break;
           
           case 'E':
           pc.printf("e");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1110;
                }
           
           if(state_val == 0){
               instruction = 0b1110;
               state_val++;
               }
            
           break;
           
           case 'F':
           pc.printf("f");
           
           if(state_val > 0){
                instruction = instruction << 4;
                instruction |= 0b1111;
                }
           
           if(state_val == 0){
               instruction = 0b1111;
               state_val++;
               }
            
           break;
           
           case '\r':
           pc.printf("\r\n0x%x \r\n", instruction);
           wait(1.0);
           state = 0;
           if(instruction <= 255){
               bytes = 1;
               }
               if(instruction > 255){
               bytes = 2;
               instruction_2 = instruction;
               instruction_2 = instruction_2 >> 8;
               instruction = instruction & 0b0000000011111111;
               }
           break;
           
           
           }
       
       break;
       
       
       
       }   
       
       
       
        
        //wait(0.2);
    }
}*/

 /*printf("loop()\n");
        if(can2.read(msg)) {
            printf("Message received: %d\n", msg.data[0]);
            led2 = !led2;
        } */