Making a BMW E90 instrument cluster alive for demonstration purposes

Dependencies:   mbed

Committer:
gume
Date:
Sat Mar 11 10:03:52 2017 +0000
Revision:
3:4a4463380739
Initial Speed module (not yet working); Fuel data

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gume 3:4a4463380739 1 #include "SpeedMsg.h"
gume 3:4a4463380739 2
gume 3:4a4463380739 3 SpeedMsg::SpeedMsg () {
gume 3:4a4463380739 4
gume 3:4a4463380739 5 counter1 = counter2 = 0;
gume 3:4a4463380739 6 //c2inc = { 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2 };
gume 3:4a4463380739 7 char x = 0;
gume 3:4a4463380739 8 for (int i = 0; i < 16; i++) {
gume 3:4a4463380739 9 c2inc[i] = 1 + x;
gume 3:4a4463380739 10 if (i != 5 && i != 14) x = 1 - x;
gume 3:4a4463380739 11 }
gume 3:4a4463380739 12 c2incp = 0;
gume 3:4a4463380739 13
gume 3:4a4463380739 14 spb[0] = 0; spb[1] = 0;
gume 3:4a4463380739 15 spb[2] = 0; spb[3] = 0;
gume 3:4a4463380739 16 spb[4] = 0; spb[5] = 0;
gume 3:4a4463380739 17 }
gume 3:4a4463380739 18
gume 3:4a4463380739 19 void SpeedMsg::setSpeed(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5) {
gume 3:4a4463380739 20
gume 3:4a4463380739 21 spb[0] = b0; spb[1] = b1;
gume 3:4a4463380739 22 spb[2] = b2; spb[3] = b3;
gume 3:4a4463380739 23 spb[4] = b4; spb[5] = b5;
gume 3:4a4463380739 24 }
gume 3:4a4463380739 25
gume 3:4a4463380739 26 bool SpeedMsg::sendMessage(CAN *can) {
gume 3:4a4463380739 27
gume 3:4a4463380739 28 uint8_t data[8];
gume 3:4a4463380739 29
gume 3:4a4463380739 30 data[0] = spb[0]; data[1] = spb[1];
gume 3:4a4463380739 31 data[2] = spb[2]; data[3] = spb[3];
gume 3:4a4463380739 32 data[4] = spb[4]; data[5] = spb[5];
gume 3:4a4463380739 33
gume 3:4a4463380739 34 data[6] = counter1;
gume 3:4a4463380739 35 data[7] = 0xF0 + counter2;
gume 3:4a4463380739 36
gume 3:4a4463380739 37 bool ok = can->write(CANMessage(0x1A6, (char*) data, 8));
gume 3:4a4463380739 38
gume 3:4a4463380739 39 counter1 = counter1 + 0x90;
gume 3:4a4463380739 40 counter2 = (counter2 + c2inc[c2incp++]) & 0x0f;
gume 3:4a4463380739 41 if (c2incp > 15) c2incp = 0;
gume 3:4a4463380739 42
gume 3:4a4463380739 43 return ok;
gume 3:4a4463380739 44 }