foxBMS
1.4.1
The foxBMS Battery Management System API Documentation
can_cfg_tx-message-definitions.h
Go to the documentation of this file.
1
/**
2
*
3
* @copyright © 2010 - 2022, Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V.
4
* All rights reserved.
5
*
6
* SPDX-License-Identifier: BSD-3-Clause
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions are met:
10
*
11
* 1. Redistributions of source code must retain the above copyright notice, this
12
* list of conditions and the following disclaimer.
13
*
14
* 2. Redistributions in binary form must reproduce the above copyright notice,
15
* this list of conditions and the following disclaimer in the documentation
16
* and/or other materials provided with the distribution.
17
*
18
* 3. Neither the name of the copyright holder nor the names of its
19
* contributors may be used to endorse or promote products derived from
20
* this software without specific prior written permission.
21
*
22
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
*
33
* We kindly request you to use one or more of the following phrases to refer to
34
* foxBMS in your hardware, software, documentation or advertising materials:
35
*
36
* - ″This product uses parts of foxBMS®″
37
* - ″This product includes parts of foxBMS®″
38
* - ″This product is derived from foxBMS®″
39
*
40
*/
41
42
/**
43
* @file can_cfg_tx-message-definitions.h
44
* @author foxBMS Team
45
* @date 2022-07-01 (date of creation)
46
* @updated 2022-10-27 (date of last update)
47
* @version v1.4.1
48
* @ingroup DRIVERS
49
* @prefix CANTX
50
*
51
* @brief Header for the driver for the CAN module
52
*
53
*/
54
55
#ifndef FOXBMS__CAN_CFG_TX_MESSAGE_DEFINITIONS_H_
56
#define FOXBMS__CAN_CFG_TX_MESSAGE_DEFINITIONS_H_
57
58
/*========== Includes =======================================================*/
59
#include "
can_cfg.h
"
60
61
/*========== Macros and Definitions =========================================*/
62
#define CANTX_NOT_PERIODIC (0u)
63
64
/* Message IDs */
65
66
/** CAN message ID for boot message */
67
#define CANTX_BOOT_ID (0x199u)
/* check_ids silence: CANTX_BOOT_ID */
68
/** Periodicity of boot messages in ms */
69
#define CANTX_BOOT_PERIOD_ms (CANTX_NOT_PERIODIC)
/* dummy */
70
#define CANTX_BOOT_PHASE_ms (0u)
/* dummy */
71
#define CANTX_BOOT_MESSAGE (-1)
/* dummy */
72
73
/** CAN message ID for die ID message */
74
#define CANTX_DIE_ID_ID (0x227u)
/* mark as dummy but it is not src/app/driver/config/can_cfg_tx_boot-message.c */
75
/** Periodicity of die ID messages in ms */
76
#define CANTX_DIE_ID_PERIOD_ms (CANTX_NOT_PERIODIC)
/* dummy */
77
#define CANTX_DIE_ID_PHASE_ms (0u)
/* dummy */
78
#define CANTX_DIE_ID_MESSAGE (-1)
/* dummy */
79
80
/** CAN message ID to send state */
81
#define CANTX_BMS_STATE_ID (0x220u)
82
/** Periodicity of CAN state messages in ms */
83
#define CANTX_BMS_STATE_PERIOD_ms (100u)
84
/** Phase of CAN state messages in ms */
85
#define CANTX_BMS_STATE_PHASE_ms (0u)
86
87
/** CAN message ID to send detail state */
88
#define CANTX_BMS_STATE_DETAILS_ID (0x226u)
89
/** Periodicity of CAN detail state messages in ms */
90
#define CANTX_BMS_STATE_DETAILS_PERIOD_ms (1000u)
91
/** Phase of CAN detail state messages in ms */
92
#define CANTX_BMS_STATE_DETAILS_PHASE_ms (100u)
93
94
/** CAN message ID to send voltages */
95
#define CANTX_CELL_VOLTAGES_ID (0x240u)
96
/** Periodicity of CAN voltage messages in ms */
97
#define CANTX_CELL_VOLTAGES_PERIOD_ms (100u)
98
/** Phase of CAN voltage messages in ms */
99
#define CANTX_CELL_VOLTAGES_PHASE_ms (10u)
100
101
/** CAN message ID to send temperatures */
102
#define CANTX_CELL_TEMPERATURES_ID (0x250u)
103
/** Periodicity of CAN temperature messages in ms */
104
#define CANTX_CELL_TEMPERATURES_PERIOD_ms (200u)
105
/** Phase of CAN temperature messages in ms */
106
#define CANTX_CELL_TEMPERATURES_PHASE_ms (20u)
107
108
/** CAN message ID to send limit values */
109
#define CANTX_LIMIT_VALUES_ID (0x224u)
110
/** Periodicity of CAN limit messages in ms */
111
#define CANTX_LIMIT_VALUES_PERIOD_ms (100u)
112
/** Phase of CAN limit messages in ms */
113
#define CANTX_LIMIT_VALUES_PHASE_ms (30u)
114
115
/** CAN message ID to send minimum and maximum values */
116
#define CANTX_MINIMUM_MAXIMUM_VALUES_ID (0x223u)
117
/** Periodicity of CAN minimum and maximum value messages in ms */
118
#define CANTX_MINIMUM_MAXIMUM_VALUES_PERIOD_ms (100u)
119
/** Phase of CAN minimum and maximum value messages in ms */
120
#define CANTX_MINIMUM_MAXIMUM_VALUES_PHASE_ms (40u)
121
122
/** CAN message ID to send pack state estimation values */
123
#define CANTX_PACK_STATE_ESTIMATION_ID (0x225u)
124
/** Periodicity of CAN pack state estimation messages in ms */
125
#define CANTX_PACK_STATE_ESTIMATION_PERIOD_ms (1000u)
126
/** Phase of CAN pack state estimation messages in ms */
127
#define CANTX_PACK_STATE_ESTIMATION_PHASE_ms (50u)
128
129
/** CAN message ID to send pack values */
130
#define CANTX_PACK_VALUES_ID (0x222u)
131
/** Periodicity of CAN pack values messages in ms */
132
#define CANTX_PACK_VALUES_PERIOD_ms (100u)
133
/** Phase of CAN pack values messages in ms */
134
#define CANTX_PACK_VALUES_PHASE_ms (60u)
135
136
/** TX messages - string related */
137
138
/** CAN message ID to send string state */
139
#define CANTX_STRING_STATE_ID (0x221u)
140
/** Periodicity of CAN string state messages in ms */
141
#define CANTX_STRING_STATE_PERIOD_ms (100u)
142
/** Phase of CAN string state messages in ms */
143
#define CANTX_STRING_STATE_PHASE_ms (70u)
144
145
/** CAN message ID to send string values */
146
#define CANTX_STRING_VALUES_P0_ID (0x280u)
147
/** Periodicity of CAN string state messages in ms */
148
#define CANTX_STRING_VALUES_P0_PERIOD_ms (100u)
149
/** Phase of CAN string state messages in ms */
150
#define CANTX_STRING_VALUES_P0_PHASE_ms (80u)
151
152
/** CAN message ID to send string minimum and maximum values */
153
#define CANTX_STRING_MIN_MAX_VALUES_ID (0x281u)
154
/** Periodicity of CAN string state messages in ms */
155
#define CANTX_STRING_MIN_MAX_VALUES_PERIOD_ms (100u)
156
/** Phase of CAN string state messages in ms */
157
#define CANTX_STRING_MIN_MAX_VALUES_PHASE_ms (90u)
158
159
/** CAN message ID to send string minimum and maximum values */
160
#define CANTX_STRING_STATE_ESTIMATION_ID (0x282u)
161
/** Periodicity of CAN string state messages in ms */
162
#define CANTX_STRING_STATE_ESTIMATION_PERIOD_ms (1000u)
163
/** Phase of CAN string state messages in ms */
164
#define CANTX_STRING_STATE_ESTIMATION_PHASE_ms (0u)
165
166
/** CAN message ID to send string values 2 */
167
#define CANTX_STRING_VALUES_P1_ID (0x283u)
168
/** Periodicity of CAN string state messages in ms */
169
#define CANTX_STRING_VALUES_P1_PERIOD_ms (100u)
170
/** Phase of CAN string state messages in ms */
171
#define CANTX_STRING_VALUES_P1_PHASE_ms (10u)
172
173
/* composed Tx messages */
174
175
/* AXIVION Disable Style Generic-NoUnsafeMacro: These macros MUST only be used
176
to populate the 'can_txMessages' array. The type of this array expects data
177
exactly as it is provided here and therefore these macros are good (for this
178
and only for this purpose!).*/
179
#define CANTX_BMS_STATE_MESSAGE \
180
{ \
181
.dlc = CAN_DEFAULT_DLC, \
182
.id = CANTX_BMS_STATE_ID, \
183
.endianness = CAN_BIG_ENDIAN, \
184
}, \
185
{ \
186
.period = CANTX_BMS_STATE_PERIOD_ms, .phase = CANTX_BMS_STATE_PHASE_ms \
187
}
188
189
#define CANTX_BMS_STATE_DETAILS_MESSAGE \
190
{ \
191
.id = CANTX_BMS_STATE_DETAILS_ID, \
192
.dlc = CAN_DEFAULT_DLC, \
193
.endianness = CAN_BIG_ENDIAN, \
194
}, \
195
{ \
196
.period = CANTX_BMS_STATE_DETAILS_PERIOD_ms, .phase = CANTX_BMS_STATE_DETAILS_PHASE_ms \
197
}
198
199
#define CANTX_CELL_VOLTAGES_MESSAGE \
200
{ \
201
.id = CANTX_CELL_VOLTAGES_ID, \
202
.dlc = CAN_DEFAULT_DLC, \
203
.endianness = CAN_BIG_ENDIAN, \
204
}, \
205
{ \
206
.period = CANTX_CELL_VOLTAGES_PERIOD_ms, .phase = CANTX_CELL_VOLTAGES_PHASE_ms \
207
}
208
209
#define CANTX_MINIMUM_MAXIMUM_VALUES_MESSAGE \
210
{ \
211
.id = CANTX_MINIMUM_MAXIMUM_VALUES_ID, \
212
.dlc = CAN_DEFAULT_DLC, \
213
.endianness = CAN_BIG_ENDIAN, \
214
}, \
215
{ \
216
.period = CANTX_MINIMUM_MAXIMUM_VALUES_PERIOD_ms, .phase = CANTX_MINIMUM_MAXIMUM_VALUES_PHASE_ms \
217
}
218
219
#define CANTX_LIMIT_VALUES_MESSAGE \
220
{ \
221
.id = CANTX_LIMIT_VALUES_ID, \
222
.dlc = CAN_DEFAULT_DLC, \
223
.endianness = CAN_BIG_ENDIAN, \
224
}, \
225
{ \
226
.period = CANTX_LIMIT_VALUES_PERIOD_ms, .phase = CANTX_LIMIT_VALUES_PHASE_ms \
227
}
228
229
#define CANTX_CELL_TEMPERATURES_MESSAGE \
230
{ \
231
.id = CANTX_CELL_TEMPERATURES_ID, \
232
.dlc = CAN_DEFAULT_DLC, \
233
.endianness = CAN_BIG_ENDIAN, \
234
}, \
235
{ \
236
.period = CANTX_CELL_TEMPERATURES_PERIOD_ms, .phase = CANTX_CELL_TEMPERATURES_PHASE_ms \
237
}
238
239
#define CANTX_PACK_STATE_ESTIMATION_MESSAGE \
240
{ \
241
.id = CANTX_PACK_STATE_ESTIMATION_ID, \
242
.dlc = CAN_DEFAULT_DLC, \
243
.endianness = CAN_BIG_ENDIAN, \
244
}, \
245
{ \
246
.period = CANTX_PACK_STATE_ESTIMATION_PERIOD_ms, .phase = CANTX_PACK_STATE_ESTIMATION_PHASE_ms \
247
}
248
249
#define CANTX_PACK_VALUES_MESSAGE \
250
{ \
251
.id = CANTX_PACK_VALUES_ID, \
252
.dlc = CAN_DEFAULT_DLC, \
253
.endianness = CAN_BIG_ENDIAN, \
254
}, \
255
{ \
256
.period = CANTX_PACK_VALUES_PERIOD_ms, .phase = CANTX_PACK_VALUES_PHASE_ms \
257
}
258
259
#define CANTX_STRING_STATE_MESSAGE \
260
{ \
261
.id = CANTX_STRING_STATE_ID, \
262
.dlc = CAN_DEFAULT_DLC, \
263
.endianness = CAN_BIG_ENDIAN, \
264
}, \
265
{ \
266
.period = CANTX_STRING_STATE_PERIOD_ms, .phase = CANTX_STRING_STATE_PHASE_ms \
267
}
268
269
#define CANTX_STRING_VALUES_P0_MESSAGE \
270
{ \
271
.id = CANTX_STRING_VALUES_P0_ID, \
272
.dlc = CAN_DEFAULT_DLC, \
273
.endianness = CAN_BIG_ENDIAN, \
274
}, \
275
{ \
276
.period = CANTX_STRING_VALUES_P0_PERIOD_ms, .phase = CANTX_STRING_VALUES_P0_PHASE_ms \
277
}
278
279
#define CANTX_STRING_VALUES_P1_MESSAGE \
280
{ \
281
.id = CANTX_STRING_VALUES_P1_ID, \
282
.dlc = CAN_DEFAULT_DLC, \
283
.endianness = CAN_BIG_ENDIAN, \
284
}, \
285
{ \
286
.period = CANTX_STRING_VALUES_P1_PERIOD_ms, .phase = CANTX_STRING_VALUES_P1_PHASE_ms \
287
}
288
289
#define CANTX_STRING_MIN_MAX_VALUES_MESSAGE \
290
{ \
291
.id = CANTX_STRING_MIN_MAX_VALUES_ID, \
292
.dlc = CAN_DEFAULT_DLC, \
293
.endianness = CAN_BIG_ENDIAN, \
294
}, \
295
{ \
296
.period = CANTX_STRING_MIN_MAX_VALUES_PERIOD_ms, .phase = CANTX_STRING_MIN_MAX_VALUES_PHASE_ms \
297
}
298
299
#define CANTX_STRING_STATE_ESTIMATION_MESSAGE \
300
{ \
301
.id = CANTX_STRING_STATE_ESTIMATION_ID, \
302
.dlc = CAN_DEFAULT_DLC, \
303
.endianness = CAN_BIG_ENDIAN, \
304
}, \
305
{ \
306
.period = CANTX_STRING_STATE_ESTIMATION_PERIOD_ms, .phase = CANTX_STRING_STATE_ESTIMATION_PHASE_ms \
307
}
308
/* AXIVION Enable Style Generic-NoUnsafeMacro */
309
310
/*========== Extern Constant and Variable Declarations ======================*/
311
312
/*========== Extern Function Prototypes =====================================*/
313
314
/*========== Externalized Static Functions Prototypes (Unit Test) ===========*/
315
316
#endif
/* FOXBMS__CAN_CFG_TX_MESSAGE_DEFINITIONS_H_ */
can_cfg.h
Headers for the configuration for the CAN module.
src
app
driver
config
can_cfg_tx-message-definitions.h
Generated by
1.9.1