foxBMS  1.1.1
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 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 main.c
44  * @author foxBMS Team
45  * @date 2019-08-27 (date of creation)
46  * @updated 2021-07-23 (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) =======*/
Headers for the driver for the ADC module.
void CAN_Initialize(void)
Enables the CAN transceiver.. This function sets th pins to enable the CAN transceiver....
Definition: can.c:207
Header for the driver for the CAN module.
STD_RETURN_TYPE_e CHK_ValidateChecksum(void)
Definition: checksum.c:69
checksum module header
void CONT_Initialize(void)
initializes the contactor module
Definition: contactor.c:291
Headers for the driver for the contactors.
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:226
STD_RETURN_TYPE_e DIAG_Initialize(DIAG_DEV_s *diag_dev_pointer)
DIAG_Init initializes all needed structures/buffers.
Definition: diag.c:111
Diagnosis driver header.
@ DIAG_HANDLER_RETURN_OK
Definition: diag.h:64
DIAG_DEV_s diag_device
Definition: diag_cfg.c:212
@ DIAG_SYSTEM
Definition: diag_cfg.h:247
@ DIAG_EVENT_NOT_OK
Definition: diag_cfg.h:235
@ DIAG_ID_FLASHCHECKSUM
Definition: diag_cfg.h:157
void DMA_Initialize(void)
Enables the DMA module.
Definition: dma.c:73
Headers for the driver for the DMA module.
@ STD_OK
Definition: fstd_types.h:72
int main(void)
main function of foxBMS
Definition: main.c:85
Main function header.
void MINFO_SetResetSource(resetSource_t resetSource)
Set reason for last reset.
Definition: masterinfo.c:78
General foxBMS-master system information.
STD_RETURN_TYPE_e MEAS_Initialize(void)
Definition: meas.c:115
Headers for the driver for the measurements needed by the BMS (e.g., I,V,T).
void OS_StartScheduler(void)
Starts the operating system scheduler.
Definition: os.c:100
uint32_t os_schedulerStartTime
Scheduler "zero" time for task phase control.
Definition: os.c:76
void OS_InitializeOperatingSystem(void)
Initialization the RTOS interface.
Definition: os.c:104
uint32_t OS_GetTickCount(void)
Returns OS based system tick value.
Definition: os.c:182
volatile OS_BOOT_STATE_e os_boot
Definition: os.c:72
Implementation of the tasks used by the system, headers.
@ OS_INIT_PRE_OS
Definition: os.h:94
void SPS_Initialize(void)
Initialize IOs for the SPS driver.
Definition: sps.c:583
Headers for the driver for the smart power switches.