rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
can_dash_nissan.cpp
Go to the documentation of this file.
1#include "pch.h"
2
3#if EFI_CAN_SUPPORT
4#include "can.h"
5#include "can_msg_tx.h"
6
7//https://www.drive2.ru/b/500679938089681452/
8#define NISSAN_STEERING_WHEEL 0x002
9
10#define NISSAN_ENGINE_2 0x231_561
11
12#define NISSAN_ENGINE_7_233_563 0x233
13
14#define NISSAN_ENGINE_1_RPM_1F9_505 0x1F9
15
16// Nissan z33 350Z and else
17// 0x23d = 573
18#define NISSAN_ENGINE_3_23D_573 0x23D
19#define NISSAN_ENGINE_4_23E_574 0x23E
20
21#define NISSAN_TCU_1 0x251
22#define NISSAN_TCU_2 0x253
23
24// 640
25#define NISSAN_VEHICLE_SPEED_280 0x280
26// wheel speed see "102 CAN Communication decoded"
27// 19500 value would be 100 kph
28// 644
29#define NISSAN_WHEEL_SPEED1 0x284
30// 645
31#define NISSAN_WHEEL_SPEED2 0x285
32
33// 670
34#define NISSAN_UNKNOWN_4 0x29E
35
36#define NISSAN_ABS 0x2A0
37
38// 833 doors
39#define NISSAN_BCM 0x341
40
41// https://www.drive2.com/l/530057789272229668/
42// 852
43#define NISSAN_VEHICLE_SPEED 0x354
44
45#define NISSAN_ENGINE_5_CLT_551_1361 0x551
46// 1408
47#define NISSAN_RPM_AGAIN 0x580
48#define NISSAN_ODOMETER 0x5C5
49// 1549
50#define NISSAN_BCM_2 0x60D
51
52
54 static int rollingId = 0;
55
56 if (cycle.isInterval(CI::_50ms)) {
57 {
58 CanTxMessage msg(CanCategory::NBC, NISSAN_ENGINE_1_RPM_1F9_505, 8);
60 }
61
62 {
63 CanTxMessage msg(CanCategory::OBD, NISSAN_ENGINE_5_CLT_551_1361, 8);
64
66 msg[0] = clt + 45;
67 }
68
69
70 {
71 CanTxMessage msg(CanCategory::NBC, NISSAN_ENGINE_3_23D_573, 8);
72
73 rollingId = (rollingId + 1) % 4;
74 const uint8_t magicByte[4] = {0x03, 0x23, 0x42, 0x63};
75
76 msg[0] = magicByte[rollingId];
77 msg[1] = (int)(Sensor::getOrZero(SensorType::AcceleratorPedal) * 255 / 100);
78
79 // thank you "102 CAN Communication decoded"
80#define CAN_23D_RPM_MULT 3.15
81 int rpm315 = (int)(Sensor::getOrZero(SensorType::Rpm) / CAN_23D_RPM_MULT);
82 msg.setShortValue(rpm315, /*offset*/ 3);
83
84 msg[7] = 0x70; // todo: CLT decoding?
85 }
86 }
87}
88
89#endif
void canDashboardNissanVQ(CanCycle cycle)
Definition can.h:83
bool isInterval(CanInterval interval)
Definition can.h:90
void setShortValueMsb(uint16_t value, size_t offset)
void setShortValue(uint16_t value, size_t offset)
Write a 16-bit short value to the buffer. Note: this writes in Intel little endian byte order.
static float getOrZero(SensorType type)
Definition sensor.h:83
static CCM_OPTIONAL FunctionalSensor clt(SensorType::Clt, MS2NT(10))