foxBMS  1.6.0
The foxBMS Battery Management System API Documentation
diag_cfg.c File Reference

Diagnostic module configuration. More...

#include "general.h"
#include "diag_cfg.h"
#include "database.h"
#include "diag_cbs.h"
#include <stdint.h>
Include dependency graph for diag_cfg.c:

Go to the source code of this file.

Macros

#define DIAG_ID_MAX_FOR_INIT   (85u)
 

Functions

 FAS_STATIC_ASSERT (DIAG_ID_MAX_FOR_INIT==(uint16_t) DIAG_ID_MAX, "Both values need to be identical.")
 
void DIAG_UpdateFlags (void)
 update function for diagnosis flags More...
 

Variables

static DATA_BLOCK_ERROR_STATE_s diag_tableErrorFlags = {.header.uniqueId = DATA_BLOCK_ID_ERROR_STATE}
 
static DATA_BLOCK_MOL_FLAG_s diag_tableMolFlags = {.header.uniqueId = DATA_BLOCK_ID_MOL_FLAG}
 
static DATA_BLOCK_RSL_FLAG_s diag_tableRslFlags = {.header.uniqueId = DATA_BLOCK_ID_RSL_FLAG}
 
static DATA_BLOCK_MSL_FLAG_s diag_tableMslFlags = {.header.uniqueId = DATA_BLOCK_ID_MSL_FLAG}
 
const DIAG_DATABASE_SHIM_s diag_kDatabaseShim
 
DIAG_ID_CFG_s diag_diagnosisIdConfiguration []
 
DIAG_DEV_s diag_device
 

Detailed Description

Diagnostic module configuration.

SPDX-License-Identifier: BSD-3-Clause

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

We kindly request you to use one or more of the following phrases to refer to foxBMS in your hardware, software, documentation or advertising materials:

  • ″This product uses parts of foxBMS®″
  • ″This product includes parts of foxBMS®″
  • ″This product is derived from foxBMS®″
Author
foxBMS Team
Date
2019-11-28 (date of creation)
Updated
2023-10-12 (date of last update)
Version
v1.6.0
Prefix
DIAG

The configuration of the different diagnosis events defined in diag_cfg.h is set in the array diag_diagnosisIdConfiguration[], e.g., initialization errors or runtime errors.

Every entry of the diag_diagnosisIdConfiguration[] array consists of

  • name of the diagnosis event (defined in diag_cfg.h)
  • type of diagnosis event
  • diagnosis sensitivity (after how many occurrences event is counted as error)
  • enabling of the recording for diagnosis event
  • enabling of the diagnosis event
  • callback function for diagnosis event if wished, otherwise DIAG_dummy_callback

The system monitoring configuration defined in diag_cfg.h is set in the array sysm_ch_cfg[]. The system monitoring is at the moment only used for supervising the cyclic/periodic tasks.

Every entry of the sysm_ch_cfg[] consists of

  • enum of monitored object
  • type of monitored object (at the moment only DIAG_SYSMON_CYCLICTASK is supported)
  • maximum delay in [ms] in which the object needs to call the SYSM_Notify function defined in diag.c
  • enabling of the recording for system monitoring
  • enabling of the system monitoring for the monitored object
  • callback function if system monitoring notices an error if wished, otherwise SYSM_DummyCallback

Definition in file diag_cfg.c.

Macro Definition Documentation

◆ DIAG_ID_MAX_FOR_INIT

#define DIAG_ID_MAX_FOR_INIT   (85u)

value of DIAG_ID_MAX (as a define for the pre-processor)

Definition at line 96 of file diag_cfg.c.

Function Documentation

◆ DIAG_UpdateFlags()

void DIAG_UpdateFlags ( void  )

update function for diagnosis flags

TODO

Definition at line 250 of file diag_cfg.c.

◆ FAS_STATIC_ASSERT()

FAS_STATIC_ASSERT ( DIAG_ID_MAX_FOR_INIT  = =(uint16_t) DIAG_ID_MAX,
"Both values need to be identical."   
)

Variable Documentation

◆ diag_device

DIAG_DEV_s diag_device
Initial value:
= {
.nrOfConfiguredDiagnosisEntries = sizeof(diag_diagnosisIdConfiguration) / sizeof(DIAG_ID_CFG_s),
.pConfigurationOfDiagnosisEntries = &diag_diagnosisIdConfiguration[0],
.numberOfFatalErrors = 0u,
.pFatalErrorLinkTable = {GEN_REPEAT_U(NULL_PTR, GEN_STRIP(DIAG_ID_MAX_FOR_INIT))},
}
#define DIAG_ID_MAX_FOR_INIT
Definition: diag_cfg.c:96
DIAG_ID_CFG_s diag_diagnosisIdConfiguration[]
Definition: diag_cfg.c:124
#define NULL_PTR
Null pointer.
Definition: fstd_types.h:77
#define GEN_REPEAT_U(x, n)
Macro that helps to generate a series of literals (for array initializers).
Definition: general.h:250
#define GEN_STRIP(x)
Definition: general.h:261

diag device configuration struct

Definition at line 240 of file diag_cfg.c.

◆ diag_diagnosisIdConfiguration

DIAG_ID_CFG_s diag_diagnosisIdConfiguration[]

variable tracking the state of the diag channels

Definition at line 124 of file diag_cfg.c.

◆ diag_kDatabaseShim

const DIAG_DATABASE_SHIM_s diag_kDatabaseShim
Initial value:
= {
.pTableError = &diag_tableErrorFlags,
.pTableMol = &diag_tableMolFlags,
.pTableRsl = &diag_tableRslFlags,
.pTableMsl = &diag_tableMslFlags,
}
static DATA_BLOCK_ERROR_STATE_s diag_tableErrorFlags
Definition: diag_cfg.c:102
static DATA_BLOCK_MSL_FLAG_s diag_tableMslFlags
Definition: diag_cfg.c:111
static DATA_BLOCK_RSL_FLAG_s diag_tableRslFlags
Definition: diag_cfg.c:108
static DATA_BLOCK_MOL_FLAG_s diag_tableMolFlags
Definition: diag_cfg.c:105

variable for storing and passing on the local database table handles

Definition at line 113 of file diag_cfg.c.

◆ diag_tableErrorFlags

DATA_BLOCK_ERROR_STATE_s diag_tableErrorFlags = {.header.uniqueId = DATA_BLOCK_ID_ERROR_STATE}
static

local copy of the DATA_BLOCK_ERROR_STATE_s table

Definition at line 102 of file diag_cfg.c.

◆ diag_tableMolFlags

DATA_BLOCK_MOL_FLAG_s diag_tableMolFlags = {.header.uniqueId = DATA_BLOCK_ID_MOL_FLAG}
static

local copy of the DATA_BLOCK_MOL_FLAG_s table

Definition at line 105 of file diag_cfg.c.

◆ diag_tableMslFlags

DATA_BLOCK_MSL_FLAG_s diag_tableMslFlags = {.header.uniqueId = DATA_BLOCK_ID_MSL_FLAG}
static

local copy of the DATA_BLOCK_MSL_FLAG_s table

Definition at line 111 of file diag_cfg.c.

◆ diag_tableRslFlags

DATA_BLOCK_RSL_FLAG_s diag_tableRslFlags = {.header.uniqueId = DATA_BLOCK_ID_RSL_FLAG}
static

local copy of the DATA_BLOCK_RSL_FLAG_s table

Definition at line 108 of file diag_cfg.c.