forked from igkov/bcomp11
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbcomp.h
213 lines (177 loc) · 8.22 KB
/
bcomp.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
#ifndef __BCOMP_H__
#define __BCOMP_H__
#include <stdint.h>
#include "analog.h"
#include "nmea.h"
#define GUI_FLAG_MENU 0x1000
#define GUI_FLAG_WARNING 0x2000
#if !defined( WIN32 )
extern int melody_warning[];
extern int melody_start[];
extern int melody_wrep[];
extern int melody_wrep2[];
#endif
// Ïîääåðæêà ïðîòîêîëà Virtuino:
#define VIRTUINO_SUPPORT 1
// Ôëàã ñáîðêè äëÿ âñòðàèâàåìîé âåðñèè (äðóãîé òèï ýêðàíà):
#define INSIDE_VERSION 0
// Îïðåäåëåíèÿ äëÿ ýêðàíà èíôîðìàöèè:
#define INFO_DEVICE "NMPS COMP"
#define INFO_VERSION "v2.1a"
#define INFO_AUTHOR "igorkov"
#define INFO_YEAR "2018"
// Ìàêñèìàëüíàÿ äëèíà ñòðîêè íà îòîáðàæåíèå: 10 ñèìâîëîâ!
typedef struct {
uint32_t time; // Âðåìÿ ìàðøðóòà (ñåê).
double dist; // Äèñòàíöèÿ ìàðøðóòà (ì).
double fuel; // Ðàññ÷åò òîïëèâà çà ïîåçäêó (ìë).
} trip_t, *ptrip_t; // 20b
typedef struct {
float fuel;
float dist;
} pars_t, *ppars_t;
typedef struct {
uint32_t time; // Âðåìÿ ðàáîòû.
int t_engine; // Òåìïåðàòóðà äâèãàòåëÿ (°C).
int t_akpp; // Òåìïåðàòóðà êîðîáêè ïåðåäà÷ (°C, ñïåöèôè÷íî äëÿ NMPS/Pajero4).
int t_ext; // Âíåøíÿÿ òåìïåðàòóðà (°C).
int rpm; // Îáîðîòû äâèãàòåëÿ (îá/ì).
int rpms; // Îáîðîòû äâèãàòåëÿ (îá/ì), íà ýêðàí.
int speed; // Ñêîðîñòü àâòîìîáèëÿ â òåêóùèé ìîìåíò (êì/÷).
int p_intake; // Äàâëåíèå âî âïóñêíîì êîëëåêòîðå (êÏà).
int p_fuel; // Äàâëåíèå òîïëèâà â ðåéêå (ÌÏà).
float v_ecu; // Íàïðÿæåíèå áîðòîâîé ñåòè (Âîëüò).
float v_analog; // Íàïðÿæåíèå áîðòîâîé ñåòè (Âîëüò).
struct {
float v_max; // Ìàêñèìàëüíî äîïóñòèìîå íàïðÿæåíèå áîðòîâîé ñåòè (Âîëüò).
float v_min; // Ìèíèìàëüíî äîïóñòèìîå íàïðÿæåíèå áîðòîâîé ñåòè (Âîëüò).
float fuel_cal; // Êàëèáðîâî÷íàÿ êîíñòàíòà ïîòðåáëåíèÿ òîïëèâà.
float speed_cal; // Êàëèáðîâî÷íàÿ êîíñòàíòà ñêîðîñòè.
int t_at; // Ìàêñèìàëüíî äîïóñòèìàÿ òåìïåðàòóðà ÀÊÏÏ (°C).
int t_eng; // Ìàêñèìàëüíî äîïóñòèìàÿ òåìïåðàòóðà äâèãàòåëÿ (°C).
int t_ext; // Ãðàíè÷íàÿ òåìïåðàòóðà ïðåäóïðåæäåíèÿ î ãîëîëåäå (°C).
int w_delay; // Çàäåðæêà ïîâòîðåíèÿ ïðåäóïðåæäåíèÿ (â ìèíóòàõ).
int f_gps; // Ôëàã ïðèñóòñâèÿ GPS-ïðèåìíèêà â ñèñòåìå.
int i_gps; // Íàñòðîéêà ñêîðîñòè GPS-ïðèåìíèêà (áîää).
//int time; // Ñìåùåíèå ÷àñîâîãî ïîÿñà.
int f_fuel; // Ôëàã íàëè÷èÿ ïîäêëþ÷åíèÿ ê ÄÓÒ.
float l_fuel; // Ãðàíè÷íîå çíà÷åíèå òîïëèâà â áàêå ïî ÄÓÒ (ë).
int f_ext; // Ôëàë íàëè÷èÿ äàò÷èêà âíåøíåé òåìïåðàòóðû.
int f_ext_w; // Ôëàã áëîêèðîâêè ïðåäóïðåæäåíèÿ î ãîëîëåäå.
int f_esp; // Ôëàã íàëè÷èÿ ñèñòåìû êóðñîâîé óñòîé÷èâîñòè (ACS, ESP, ESC).
int f_log; // Ôëàã íàäîáíîñòè âûâîäà ëîãà.
int contrast; // Çíà÷åíèå óðîâíÿ êîíòðàñòà/ÿðêîñòè.
} setup;
int page; // Ñòðàíèöà îòîáðàæåíèÿ.
uint8_t at_drive; // Ïåðåäà÷à, 0xFF - íåò êîðîáêè.
uint8_t at_present; // Íàëè÷èå àâòîìàòè÷åñêîé êîðîáêè.
uint8_t connect; // Ôëàã êîííåêòà ê øèíå CAN, âûñòàâëÿåòñÿ ïðèõîäîì ëþáûõ äàííûõ ïî øèíå.
uint8_t service; // Ôëàã âõîäà â ñåðâèñíûé ðåæèì.
int raw_fuel; // Äàííûå ìãíîâåííîãî ðàñõîäà èç ïàêåòà.
float fuel_level; // Óðîâåíü òîïëèâà â áàêå (íàïðÿæåíèå íà äàò÷èêå).
double fuel; // Ñúåäåííîå òîïëèâî çà òåêóùèé ñåàíñ ðàáîòû (ë).
double dist; // Ïðîáåã çà òåêóùèé ñåàíñ ðàáîòû (ì).
uint8_t esc_data[8]; // Îòëàäî÷íûé áóôåð äëÿ âû÷èñëåíèÿ ïîëîæåíèÿ.
int esc_id; // Îòëàäî÷íàÿ ïåðåìåííàÿ äëÿ ID-ïîñûëêè ïîëîæåíèÿ ðóëÿ.
int angle; // Óãîë êîëåñ.
char vin[20]; // VIN-íîìåð
char mil; // Ôëàã íàëè÷èÿ îøèáêè CHECK ENGINE.
char res2[3]; // ...
int e_code; // Ïåðåìåííàÿ ñîæåðæèò êîä îøèáêè CHECK ENGINE.
int odometer; // Ðåàëüíûé îäîìåòð (çíà÷åíèå â ÝÁÓ-ìàøèíû).
// GPS
uint8_t g_correct; // Ôëàã êîððåêòíîñòè ñëåïêà äàííûõ GPS.
uint8_t res3[3]; // ...
uint32_t nmea_cnt; // Ñ÷åò÷èê ïðèíÿòûõ áàéò îò GPS.
uint32_t utime; // Òåêóùåå âðåìÿ ñ GPS-ïðèåìíèêà (ôîðìàò unix).
gpstime_t gtime; // Ñòðóêòóðà ñ ìåòêîé âðåìåíè.
char gps_val_time[12]; // Ñòðîêà ñ òåêóùèì âðåìåíåì.
char gps_val_date[12]; // Ñòðîêà ñ òåêóùåé äàòîé.
char gps_val_lon[12]; // Ñòðîêà ñ òåêóùåé êîîðäèíàòîé.
char gps_val_lat[12]; // Ñòðîêà ñ òåêóùåé êîîðäèíàòîé.
// END
trip_t trip[2]; // Äàííûå ïîåçäîê (2 ïîåçäêè).
pars_t log[20]; // Ïî 30 ñåêóíä ñëåïêè òîïëèâî/äèñòàíöèÿ.
uint32_t moto_time; // Ñ÷åò÷èê ìîòî÷àñîâ (â ñåêóíäàõ).
double moto_dist; // Ñ÷åò÷èê äèñòàíöèè (â ìåòðàõ).
uint32_t moto_time_service; // Ñáðàñûâàåìûé ñ÷åò÷èê ìîòî÷àñîâ (ñåðâèñíûé èíòåðâàë).
double moto_dist_service; // Ñáðàñûâàåìûé ñ÷åò÷èê äèñòàöèè (ñåðâèñíûé èíòåðâàë).
char moto_date_service[13]; // Ñáðàñûâàåìàÿ ìåòêà âðåìåíè ïðîâåäåííîãî ñåðâèñíîãî îáñëóæèâàíèÿ.
char res4[3];
} bcomp_t;
#define CONFIGURATON_VERSION 103
typedef struct {
uint32_t begin_label; // Ìåòêà íà÷àëà ñòðóêòóðû êîíôèãóðàöèè (äëÿ ïîèñêà â ïàìÿòè).
uint32_t version; // Âåðñèÿ òåêóùåé ñòðóêòóðû.
int can_speed; // Ñêîðîñòü CAN-èíòåðôåéñà.
int uart_speed; // Ñêîðîñòü UART-èíòåðôåéñà.
uint8_t ee_size; // Îáúåì ìèêðîñõåìû EEPROM ïàìÿòè.
uint8_t contrast; // Çíà÷åíèå êîíòðàñòà ýêðàíà.
uint8_t start_delay; // Êîë-âî ñåêóíä, ñêîëüêî ïîêàçûâàòü çàñòàâêó.
uint8_t start_sound; // Äåëàòü ëè çâóêîâîå îïîâåùåíèå ïðè ñòàðòå.
int t_engine_warning; // Òåìïåðàòóðà ïðåäóïðåæåíèÿ î ïåðåãðåâå äâèãàòåëÿ.
int t_akpp_warning; // Òåìïåðàòóðà ïðåäóïðåæåíèÿ î ïåðåãðåâå êîðîáêè.
float v_max; // Ìàêñèìàëüíîå íàïðÿæåíèå áîðòîâîé ñåòè.
float v_min; // Ìèíèìàëüíîå íàïðÿæåíèå áîðòîâîé ñåòè.
float fuel_coeff; // Êîýôôèöèåíò ïåðåñ÷åòà äëÿ ïîòðåáëåíèÿ òîïëèâà.
float speed_coeff; // Êîýôôèöèåíò ïåðåñ÷åòà äëÿ ðàññ÷åòà ñêîðîñòè.
uint32_t moto_dist_offset; // Ñòàðòîâîå çíà÷åíèå ñ÷åò÷èêà êèëîìåòðîâ.
uint32_t moto_time_offset; // Ñòàðòîâîå çíà÷åíèå ñ÷åò÷èêà ìîòî÷àñîâ.
uint32_t service_distation; // Ìåæñåðâèñíûé èíòåðâàë (êì).
uint32_t service_motohour; // Ìåæñåðâèñíûé èíòåðâàë (ìîòî÷àñû).
uint8_t oled_type; // Òèï êîíòðîëëåðà OLED-ýêðàíà (0 - OLED SSD1306, 1 - OLED SH1106)
uint8_t elog_flag; // Ôëàã âûâîäà ëîãà â UART-ïîðò.
uint8_t res2; // ...
uint8_t res3; // ...
termist_t termistor; // Íàñòðîéêà òåðìîðåçèñòîðà.
uint32_t end_label; // Çàâåðøàþùàÿ ìåòêà ñòðóêòóðû (äëÿ ïðîâåðêè ðàçìåðà).
} bcomp_config_t;
typedef struct {
uint32_t begin_label;
uint32_t version;
int can_speed;
uint8_t ee_size;
uint8_t contrast;
uint8_t start_delay;
uint8_t start_sound;
int t_engine_warning;
int t_akpp_warning;
float v_max;
float v_min;
float fuel_coeff;
float speed_coeff;
uint32_t moto_dist_offset;
uint32_t moto_time_offset;
uint32_t end_label;
} bcomp_config102_t;
typedef struct {
uint32_t begin_label;
uint32_t version;
int can_speed;
int t_engine_warning;
int t_akpp_warning;
float v_max;
float v_min;
float fuel_coeff;
float speed_coeff;
uint32_t moto_dist_offset;
uint32_t moto_time_offset;
uint32_t end_label;
} bcomp_config101_t;
typedef struct {
uint32_t begin_label;
uint32_t version;
int can_speed;
int t_engine_warning;
int t_akpp_warning;
float v_max;
float v_min;
float fuel_coeff;
float speed_coeff;
uint32_t end_label;
} bcomp_config100_t;
extern bcomp_t bcomp;
extern const bcomp_config_t bconfig;
void bcomp_proc(int pid, uint8_t *data, uint8_t size);
void bcomp_raw(int pid, uint8_t *data, uint8_t size);
#endif