Gabor Feher
/
BMWE90-InstrumentCluster
Making a BMW E90 instrument cluster alive for demonstration purposes
Diff: main.cpp
- Revision:
- 0:830e074c92d5
- Child:
- 1:a582aeb10c32
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Mar 07 23:39:16 2017 +0000 @@ -0,0 +1,129 @@ +#include "mbed.h" +#include "T15Msg.h" + +Ticker ticker; + +DigitalOut led1(PA_5); +CAN can1(PB_8, PB_9); // rd, td Transmitter +T15Msg t15; + +/* + 0x130 (CAS) T15 signal, 100 ms + 0x1B4 (Kombi) OUT? Speed status, 100 ms +*/ + +void sendT15() { + if (t15.sendMessage(&can1)) { + printf("T15 sent \n"); + } + + led1 = !led1; +/* + char data_130 [] = { 0x45, 0x42, 0x8F, 0xE2, 0xFE }; + char data_130 [] = { 0x45, 0x40, 0x21, 0x8F, 0x00 }; +*/ +} + +void sendLight(char mode) { + + /* + // Light + CAN ID-----DATA + ===== ----==== + 21A-------00 20 F7 OFF + 21A-------04 22 F7 Parking light / angel eyes + 21A-------05 22 F7 Light on + */ + + char *data; + char data_21A_0 [] = { 0x00, 0x20, 0xF7 }; + char data_21A_1 [] = { 0x04, 0x22, 0xF7 }; + char data_21A_2 [] = { 0x05, 0x22, 0xF7 }; + + switch (mode) { + case 1: + data = data_21A_1; + break; + case 2: + data = data_21A_2; + break; + default: + data = data_21A_0; + break; + } + if (can1.write(CANMessage(0x21A, data, 3))) { + printf("Light sent \n"); + } +} + + //Ignition status + /* + 0[7]: engine runinng + 1[7]: ignition || engine running + 2[7]: ignition || engine running + 2[654312]: 111111 + 3: 0x50 + 4-7: 0xff + */ + + /* + // Ignition + char data_26E [] = { 0x40, 0x40, 0x4F, 0x50, 0xFF, 0xFF, 0xFF, 0xFF }; + if(can1.write(CANMessage(0x26E, data_26E, 8))) { + printf("Ignition sent \n"); + } + */ + + /* + // RPM + char data_0A5 [] = { 0xCD, 0xD5, 0xEC, 0xC7, 0x7E, 0x34, 0x0C, 0xF1 }; + if(can1.write(CANMessage(0x0A5, data_0A5, 8))) { + printf("RPM sent \n"); + } + */ + + /* + // Speed + char data_1A6 [] = { 0x13, 0x4D, 0x46, 0x4D, 0x33, 0x4D, 0xD0, 0xFF }; + if(can1.write(CANMessage(0x1A6, data_1A6, 8))) { + printf("Speed sent \n"); + } + */ + + /* + // Door + char data_2FC [] = { 0x81, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF }; + if(can1.write(CANMessage(0x2FC, data_2FC, 7))) { + printf("Door sent \n"); + } + */ + + /* + // HB + char data_34F [] = { 0xFE, 0xFF }; + //data_34F[0] = counter; + if(can1.write(CANMessage(0x34F, data_34F, 2))) { + printf("HB sent \n"); + } + */ + + /* + //char data_349 [] = { 0x76, 0x0F, 0xBE, 0x1A, 0x00 }; + char data_349 [] = { 0x00, 0x00, 0xBE, 0x1A, 0x00 }; + //data_349[0] = timer14_v; + //data_349[1] = timer14_v; + // data_349[0] = counter; + if(can1.write(CANMessage(0x349, data_349, 5))) { + printf("Fuel sent \n"); + } + */ + +//**********The main program********************* +int main() { + + can1.frequency(100000); + ticker.attach(&sendT15, 0.1); //Send every 100 msec + + wait_us(1000); + +}