foxBMS  1.0.0
The foxBMS Battery Management System API Documentation
main.c
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 main.c
44  * @author foxBMS Team
45  * @date 2019-08-27 (date of creation)
46  * @updated 2019-11-27 (date of last update)
47  * @ingroup GENERAL
48  * @prefix TODO
49  *
50  * @brief Main function
51  *
52  * @details TODO
53  */
54 
55 /*========== Includes =======================================================*/
56 #include "main.h"
57 
58 #include "HL_can.h"
59 #include "HL_gio.h"
60 #include "HL_spi.h"
61 #include "HL_sys_core.h"
62 
63 #include "adc.h"
64 #include "can.h"
65 #include "checksum.h"
66 #include "contactor.h"
67 #include "diag.h"
68 #include "dma.h"
69 #include "masterinfo.h"
70 #include "meas.h"
71 #include "os.h"
72 #include "sps.h"
73 
74 /*========== Macros and Definitions =========================================*/
75 
76 /*========== Static Constant and Variable Definitions =======================*/
77 
78 /*========== Extern Constant and Variable Definitions =======================*/
79 
80 /*========== Static Function Prototypes =====================================*/
81 
82 /*========== Static Function Implementations ================================*/
83 
84 /*========== Extern Function Implementations ================================*/
85 int main(void) {
86  MINFO_SetResetSource(getResetSource()); /* Get reset source and clear respective flags */
87  _enable_IRQ_interrupt_();
88  gioInit();
89  canInit();
90  spiInit();
97 
99  if (OS_INIT_PRE_OS != os_boot) {
100  while (1) {
101  /* Could not create Queues, Mutexes, Events and Tasks
102  do not boot further from this point on*/
103  }
104  }
105 
106  if (STD_OK != CHK_ValidateChecksum()) {
108  while (1) {
109  /* Could not validate checksum do not boot further from this point on */
110  }
111  }
112  }
113 
115 
117  while (1) {
118  }
119 }
120 
121 /*========== Externalized Static Function Implementations (Unit Test) =======*/
os.h
Implementation of the tasks used by the system, headers.
DIAG_HANDLER_RETURN_OK
@ DIAG_HANDLER_RETURN_OK
Definition: diag.h:64
OS_StartScheduler
void OS_StartScheduler(void)
Starts the operating system scheduler.
Definition: os.c:96
diag.h
Diagnosis driver header.
OS_InitializeTasks
void OS_InitializeTasks(void)
Initialization the RTOS interface.
Definition: os.c:100
os_schedulerStartTime
uint32_t os_schedulerStartTime
Scheduler "zero" time for task phase control.
Definition: os.c:72
adc.h
Headers for the driver for the ADC module.
CHK_ValidateChecksum
STD_RETURN_TYPE_e CHK_ValidateChecksum(void)
Definition: checksum.c:69
DIAG_Handler
DIAG_RETURNTYPE_e DIAG_Handler(DIAG_ID_e diag_id, DIAG_EVENT_e event, DIAG_IMPACT_LEVEL_e impact, uint32_t data)
DIAG_Handler provides generic error handling, based on diagnosis group.
Definition: diag.c:199
OS_INIT_PRE_OS
@ OS_INIT_PRE_OS
Definition: os.h:96
OS_GetTickCount
uint32_t OS_GetTickCount(void)
Returns OS based system tick value.
Definition: os.c:182
DIAG_Initialize
STD_RETURN_TYPE_e DIAG_Initialize(DIAG_DEV_s *diag_dev_pointer)
DIAG_Init initializes all needed structures/buffers.
Definition: diag.c:111
STD_OK
@ STD_OK
Definition: fstd_types.h:72
DIAG_SYSTEM
@ DIAG_SYSTEM
Definition: diag_cfg.h:214
CAN_Initialize
void CAN_Initialize(void)
Enables the CAN transceiver.. This function sets th pins to enable the CAN transceiver....
Definition: can.c:188
checksum.h
checksum module header
SPS_Initialize
void SPS_Initialize(void)
Initialize IOs for the SPS driver.
Definition: sps.c:584
contactor.h
Headers for the driver for the contactors.
DIAG_EVENT_NOT_OK
@ DIAG_EVENT_NOT_OK
Definition: diag_cfg.h:202
main
int main(void)
main function of foxBMS
Definition: main.c:85
sps.h
Headers for the driver for the smart power switches.
MINFO_SetResetSource
void MINFO_SetResetSource(resetSource_t resetSource)
Set reason for last reset.
Definition: masterinfo.c:78
meas.h
Headers for the driver for the measurements needed by the BMS (e.g., I,V,T).
main.h
Main function header.
CONT_Initialize
void CONT_Initialize(void)
initializes the contactor module
Definition: contactor.c:291
DIAG_ID_FLASHCHECKSUM
@ DIAG_ID_FLASHCHECKSUM
Definition: diag_cfg.h:125
os_boot
volatile OS_BOOT_STATE_e os_boot
Definition: os.c:68
MEAS_Initialize
STD_RETURN_TYPE_e MEAS_Initialize(void)
Definition: meas.c:115
masterinfo.h
General foxBMS-master system information.
diag_device
DIAG_DEV_s diag_device
Definition: diag_cfg.c:207
can.h
Header for the driver for the CAN module.
DMA_Initialize
void DMA_Initialize(void)
Enables the DMA module.
Definition: dma.c:73
dma.h
Headers for the driver for the DMA module.