foxBMS
1.0.2
The foxBMS Battery Management System API Documentation
general.h
Go to the documentation of this file.
1
/**
2
*
3
* @copyright © 2010 - 2021, 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 general.h
44
* @author foxBMS Team
45
* @date 2019-09-24 (date of creation)
46
* @updated 2021-03-24 (date of last update)
47
* @ingroup GENERAL_CONF
48
* @prefix NONE
49
*
50
* @brief TODO
51
*
52
*/
53
54
#ifndef FOXBMS__GENERAL_H_
55
#define FOXBMS__GENERAL_H_
56
57
/*========== Includes =======================================================*/
58
#include "HL_sys_common.h"
59
60
#include "
fassert.h
"
61
#include "
fstd_types.h
"
62
63
#include <stdbool.h>
64
#include <stdint.h>
65
66
/*========== Macros and Definitions =========================================*/
67
68
/**
69
* @brief largest pin number that exists in TMS570LC4357
70
* @details Checked in the datasheet spnu563a: The largest pin number that is
71
* used is 31.
72
*/
73
#define LARGEST_PIN_NUMBER (31u)
74
75
/**
76
* @brief sets a bit to 1u
77
* @param[in,out] register register on which to set the bit
78
* @param[in] bit number of the bit that should be set to 1u
79
*/
80
#define SETBIT(register, bit) ((register) |= (uint32)((uint32)1U << (bit)))
81
/**
82
* @brief clears a bit to 0u
83
* @param[in,out] register register on which to clear the bit
84
* @param[in] bit number of the bit that should be cleared to 0u
85
*/
86
#define CLEARBIT(register, bit) ((register) &= ~(uint32)((uint32)1U << (bit)))
87
88
/**
89
* @brief Allows functions to generate warnings in GCC for unused returns.
90
*
91
* This attribute allows to mark that a function return value must be used.
92
* The compiler will generate a warning when the return value of a function
93
* with this marker is not used in subsequent code.
94
*/
95
#define must_check_return __attribute__((warn_unused_result))
96
97
/** This attribute tells the compiler that the function should always be inlined */
98
#define always_inline __attribute__((always_inline))
99
100
/** allow implementations to be weak for unit tests */
101
#ifdef UNITY_UNIT_TEST
102
#define UNIT_TEST_WEAK_IMPL __attribute__((weak))
103
#else
104
#define UNIT_TEST_WEAK_IMPL
105
#endif
106
107
/* assert that the basic datatypes in fstd_types.h are intact */
108
static_assert
(
false
== 0,
"false seems to have been modified."
);
109
static_assert
(
true
!=
false
,
"true seems to have been modified."
);
110
static_assert
(
true
== 1,
"true seems to have been modified."
);
111
112
static_assert
(
STD_OK
== 0,
"STD_OK seems to have been modified."
);
113
static_assert
(
STD_OK
!=
STD_NOT_OK
,
"STD_OK or STD_NOT_OK seem to have been modified."
);
114
static_assert
(
STD_NOT_OK
== 1,
"STD_NOT_OK seems to have been modified."
);
115
116
/*========== Extern Constant and Variable Declarations ======================*/
117
118
/*========== Extern Function Prototypes =====================================*/
119
120
/*========== Externalized Static Functions Prototypes (Unit Test) ===========*/
121
122
#endif
/* FOXBMS__GENERAL_H_ */
fstd_types.h
Definition of foxBMS standard types.
fassert.h
Assert macro implementation.
STD_OK
@ STD_OK
Definition:
fstd_types.h:72
STD_NOT_OK
@ STD_NOT_OK
Definition:
fstd_types.h:73
static_assert
#define static_assert(cond, msg)
static assertion macro
Definition:
fassert.h:252
src
app
main
include
general.h
Generated by
1.8.20