foxBMS - Unit Tests  1.4.0
The foxBMS Unit Tests API Documentation
can_cbs_rx_command.c File Reference

CAN driver Rx callback implementation. More...

#include "bms_cfg.h"
#include "bal.h"
#include "can_cbs.h"
#include "can_helper.h"
#include "diag.h"
#include "os.h"
#include "sys_mon.h"
Include dependency graph for can_cbs_rx_command.c:

Go to the source code of this file.

Macros

#define CAN_CAN_REQUEST_UPDATE_TIME_ms   (3000u)
 CAN state request update time. More...
 

Functions

static void CAN_ClearAllPersistentFlags (uint64_t signalData)
 clears the persistent flags More...
 
static void CAN_HandleModeRequest (uint64_t signalData, const CAN_SHIM_s *const kpkCanShim)
 handles the mode request More...
 
static void CAN_HandleBalancingRequest (uint64_t signalData)
 handles the balancing request More...
 
static void CAN_SetBalancingThreshold (uint64_t signalData)
 sets the balancing threshold More...
 
uint32_t CAN_RxRequest (uint32_t id, uint8_t dlc, CAN_ENDIANNESS_e endianness, const uint8_t *const kpkCanData, const CAN_SHIM_s *const kpkCanShim)
 can rx callback function for state requests More...
 

Detailed Description

CAN driver Rx callback implementation.

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
2021-07-28 (date of creation)
Updated
2022-07-28 (date of last update)
Version
v1.4.0
Prefix
CAN

CAN Rx callback for command message

Definition in file can_cbs_rx_command.c.

Macro Definition Documentation

◆ CAN_CAN_REQUEST_UPDATE_TIME_ms

#define CAN_CAN_REQUEST_UPDATE_TIME_ms   (3000u)

CAN state request update time.

When a new CAN state request is received, it leads to an update of DATA_BLOCK_STATEREQUEST_s::stateRequestViaCan if one of the following conditions is met:

  • The new request is different than the old request.
  • The old request is older than the timespan set in this define.

Definition at line 75 of file can_cbs_rx_command.c.

Function Documentation

◆ CAN_ClearAllPersistentFlags()

static void CAN_ClearAllPersistentFlags ( uint64_t  signalData)
static

clears the persistent flags

This function clears all persistent flags (if signalData demands it) which are:

  • deep-discharge flag
  • sys mon violation flags
    Parameters
    [in]signalDataif it is 1u, flags are cleared

Definition at line 112 of file can_cbs_rx_command.c.

Here is the call graph for this function:

◆ CAN_HandleBalancingRequest()

static void CAN_HandleBalancingRequest ( uint64_t  signalData)
static

handles the balancing request

Parameters
[in]signalDataextracted signal data

Definition at line 163 of file can_cbs_rx_command.c.

Here is the call graph for this function:

◆ CAN_HandleModeRequest()

static void CAN_HandleModeRequest ( uint64_t  signalData,
const CAN_SHIM_s *const  kpkCanShim 
)
static

handles the mode request

Parameters
[in]signalDataextracted signal data
[in,out]kpkCanShimcan shim with database entries

0x00: Disconnect strings from HV bus 0x01: Connect strings to HV bus to start discharge 0x02: Connect strings to HV bus to start charging

Definition at line 124 of file can_cbs_rx_command.c.

Here is the call graph for this function:

◆ CAN_RxRequest()

uint32_t CAN_RxRequest ( uint32_t  id,
uint8_t  dlc,
CAN_ENDIANNESS_e  endianness,
const uint8_t *const  kpkCanData,
const CAN_SHIM_s *const  kpkCanShim 
)

can rx callback function for state requests

Parameters
[in]idCAN ID
[in]dlcCAN Data Length Code
[in]endiannessbig or little endian
[in]kpkCanDatapayload of can frame
[in]kpkCanShimshim to the database entries

Definition at line 185 of file can_cbs_rx_command.c.

Here is the call graph for this function:

◆ CAN_SetBalancingThreshold()

static void CAN_SetBalancingThreshold ( uint64_t  signalData)
static

sets the balancing threshold

Parameters
[in]signalDataextracted signal data

Definition at line 175 of file can_cbs_rx_command.c.

Here is the call graph for this function: