Gabor Feher
/
BMWE90-InstrumentCluster
Making a BMW E90 instrument cluster alive for demonstration purposes
SpeedMsg.cpp@3:4a4463380739, 2017-03-11 (annotated)
- 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?
User | Revision | Line number | New 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 | } |