foxBMS - Unit Tests  1.4.1
The foxBMS Unit Tests API Documentation
can_cbs_rx_state-request.c File Reference

CAN driver Rx callback implementation. More...

#include "bms_cfg.h"
#include "bal.h"
#include "can_cbs_rx.h"
#include "can_cfg_rx-message-definitions.h"
#include "can_helper.h"
#include "diag.h"
#include "os.h"
#include "sys_mon.h"
Include dependency graph for can_cbs_rx_state-request.c:

Go to the source code of this file.

Macros

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

Functions

static void CANRX_ClearAllPersistentFlags (uint64_t signalData)
 clears the persistent flags More...
 
static void CANRX_HandleModeRequest (uint64_t signalData, const CAN_SHIM_s *const kpkCanShim)
 handles the mode request More...
 
static void CANRX_HandleBalancingRequest (uint64_t signalData)
 handles the balancing request More...
 
static void CANRX_SetBalancingThreshold (uint64_t signalData)
 sets the balancing threshold More...
 
uint32_t CANRX_BmsStateRequest (CAN_MESSAGE_PROPERTIES_s message, 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-10-27 (date of last update)
Version
v1.4.1
Prefix
CANRX

CAN Rx callback for command message

Definition in file can_cbs_rx_state-request.c.

Macro Definition Documentation

◆ CANRX_CAN_REQUEST_UPDATE_TIME_ms

#define CANRX_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 76 of file can_cbs_rx_state-request.c.

Function Documentation

◆ CANRX_BmsStateRequest()

uint32_t CANRX_BmsStateRequest ( CAN_MESSAGE_PROPERTIES_s  message,
const uint8_t *const  kpkCanData,
const CAN_SHIM_s *const  kpkCanShim 
)

can rx callback function for state requests

Parameters
[in]messagecontains the message ID, DLC and endianness
[in]kpkCanDatapayload of can frame
[in]kpkCanShimshim to the database entries

Definition at line 186 of file can_cbs_rx_state-request.c.

Here is the call graph for this function:

◆ CANRX_ClearAllPersistentFlags()

static void CANRX_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 113 of file can_cbs_rx_state-request.c.

Here is the call graph for this function:

◆ CANRX_HandleBalancingRequest()

static void CANRX_HandleBalancingRequest ( uint64_t  signalData)
static

handles the balancing request

Parameters
[in]signalDataextracted signal data

Definition at line 164 of file can_cbs_rx_state-request.c.

Here is the call graph for this function:

◆ CANRX_HandleModeRequest()

static void CANRX_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 125 of file can_cbs_rx_state-request.c.

Here is the call graph for this function:

◆ CANRX_SetBalancingThreshold()

static void CANRX_SetBalancingThreshold ( uint64_t  signalData)
static

sets the balancing threshold

Parameters
[in]signalDataextracted signal data

Definition at line 176 of file can_cbs_rx_state-request.c.

Here is the call graph for this function: