foxBMS
1.0.0
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
4
* angewandten Forschung e.V. All rights reserved.
5
*
6
* BSD 3-Clause License
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions are met:
9
* 1. Redistributions of source code must retain the above copyright notice,
10
* this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
* 3. Neither the name of the copyright holder nor the names of its
15
* contributors may be used to endorse or promote products derived from
16
* this software without specific prior written permission.
17
*
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
22
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
* POSSIBILITY OF SUCH DAMAGE.
29
*
30
* We kindly request you to use one or more of the following phrases to refer
31
* to foxBMS in your hardware, software, documentation or advertising
32
* materials:
33
*
34
* ″This product uses parts of foxBMS®″
35
*
36
* ″This product includes parts of foxBMS®″
37
*
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