📄 spi_task.c
字号:
/*****************************************************************************/
/* */
/* Name spi_task.c */
/* */
/* Function this file contains the main SPI function: spi_core. */
/* It contains the body of the SPI task. */
/* It will initialize the SPI and then wait for messages */
/* or functions calls. */
/* */
/* Version 0.1 */
/* Author Candice Bazanegue */
/* */
/* Date Modification */
/* ------------------------------------ */
/* 20/08/2000 Create */
/* 01/09/2003 Modfication */
/* Author Pascal Puel */
/* */
/* (C) Copyright 2000 by Texas Instruments Incorporated, All Rights Reserved */
/*****************************************************************************/
#ifndef _WINDOWS
#include "iq.h" // for IQ_Unmask()
#include "power.h" // for Switch_ON()
#endif
#include "rv_defined_swe.h" // for RVM_PWR_SWE
#include "rvm_use_id_list.h"
#include "spi_env.h"
#include "spi_process.h"
#include "spi_task.h"
#ifdef RVM_PWR_SWE
#include "pwr_liion_cha.h"
#include "pwr_disch.h"
#include "pwr_process.h"
#include "pwr_env.h"
#endif
/*******************************************************************************
** Function spi_core
**
** Description Core of the spi task, which initiliazes the spi SWE and
** waits for messages.
**
*******************************************************************************/
T_RV_RET spi_core(void)
{
BOOLEAN error_occured = FALSE;
T_RV_HDR * msg_ptr;
rvf_send_trace("SPI_task: Initialization", 24, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, SPI_USE_ID);
SPI_GBL_INFO_PTR->SpiTaskReady = TRUE;
#ifndef _WINDOWS
/* Unmask External Interrupt once the SPI task is started */
InitpwrStatus();
IQ_Unmask(IQ_EXT);
Switch_ON();
mmi_pwr_register();
#endif
/* loop to process messages */
while (error_occured == FALSE)
{
/* Wait for the necessary events (infinite wait for a msg in the mailbox 0). */
UINT16 received_event = rvf_wait (0xffff, 0);
/* If an event related to mailbox 0 is received, then */
if (received_event & RVF_TASK_MBOX_0_EVT_MASK)
{
/* Read the message in the driver mailbox and delegate action..*/
msg_ptr = (T_RV_HDR *) rvf_read_mbox(SPI_MAILBOX);
#ifdef RVM_PWR_SWE
if(spi_process(msg_ptr))
{
pwr_process(msg_ptr);
}
#else
spi_process(msg_ptr);
#endif
}
#ifdef RVM_PWR_SWE
/* Timers */
if (received_event & SPI_TIMER0_WAIT_EVENT)
{
pwr_bat_test_timer_process();
}
if (received_event & SPI_TIMER1_WAIT_EVENT)
/* timer used to detect the end of the CI charge */
{
pwr_CI_charge_timer_process();
}
if (received_event & SPI_TIMER2_WAIT_EVENT)
/* timer used to detect the end of the CV charge */
{
pwr_CV_charge_timer_process();
}
if (received_event & SPI_TIMER3_WAIT_EVENT)
/* timer used to check the battery discharge level */
{
pwr_discharge_timer_process();
}
#endif
} // end of while
return RV_OK;
}
/**********************************************************************************
* Function : spi_adc_on
*
* Description : Put the variable is_adc_on of the T_SPI_GBL_INFO structure to TRUE.
* This variable is used for the battery management.
* This function is called by the CST entity.
*
* Parameters : None
*
* Return : None
*
**********************************************************************************/
void spi_adc_on (void)
{
SPI_GBL_INFO_PTR->is_adc_on = TRUE;
rvf_send_trace("SPI: ADC are on",15,
NULL_PARAM,
RV_TRACE_LEVEL_DEBUG_LOW,
SPI_USE_ID);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -