ACwing FC firmware
STM32WB55: attitude IEKF, altitude Kalman filter, flight core, protocol v2
Loading...
Searching...
No Matches
batt_task.c File Reference

BattTask (see batt_task.h). More...

#include "batt_task.h"
#include "fc_core.h"
#include "params.h"
#include "proto_v2.h"
#include "spsc.h"
#include "log_feed.h"
#include <string.h>
#include "cmsis_os2.h"
Include dependency graph for batt_task.c:

Go to the source code of this file.

Data Structures

struct  scales_t
 

Functions

 SPSC_DEFINE (s_scq, scales_t, 4u)
 
void batt_task_init (const batt_task_cfg_t *cfg)
 
int batt_task_post_scales (float sv, float si)
 AppTask -> BattTask: new calibration scales; 0 = queued.
 
void batt_task_last_flight (batt_flight_t *out)
 last flight (any task, seqlock)
 
void batt_task_step (uint32_t now)
 
static void BattTask (void *arg)
 
void batt_task_start (const batt_task_cfg_t *cfg)
 

Variables

static batt_task_cfg_t s_cfg
 
static uint32_t s_last
 
static uint8_t s_have_last
 
static uint8_t s_sig_level = 0xFFu
 
static uint8_t s_sig_present = 0xFFu
 
static uint8_t s_was_armed
 
static uint8_t s_log_div
 
static float s_used_at_arm
 
static volatile uint32_t s_fl_seq
 
static batt_flight_t s_fl
 

Detailed Description

BattTask (see batt_task.h).

Definition in file batt_task.c.

Function Documentation

◆ SPSC_DEFINE()

SPSC_DEFINE ( s_scq  ,
scales_t  ,
4u   
)

◆ batt_task_init()

void batt_task_init ( const batt_task_cfg_t *  cfg)

Definition at line 27 of file batt_task.c.

References batt_task_cfg_t::batt, batt_init(), s_cfg, s_fl, s_fl_seq, s_have_last, s_sig_level, s_sig_present, s_used_at_arm, s_was_armed, and spsc_reset().

Referenced by batt_task_start().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ batt_task_post_scales()

int batt_task_post_scales ( float  sv,
float  si 
)

AppTask -> BattTask: new calibration scales; 0 = queued.

Definition at line 40 of file batt_task.c.

References s, and spsc_push().

Referenced by cal_apply().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ batt_task_last_flight()

void batt_task_last_flight ( batt_flight_t *  out)

last flight (any task, seqlock)

Definition at line 46 of file batt_task.c.

References s_fl, s_fl_seq, and SPSC_BARRIER.

Referenced by battery_flight().

Here is the caller graph for this function:

◆ batt_task_step()

void batt_task_step ( uint32_t  now)

Definition at line 58 of file batt_task.c.

References batt_task_cfg_t::adc_read, fc_state_t::armed, b, batt_get_cfg(), batt_set_scales(), batt_state(), batt_step(), BATT_TASK_PERIOD_MS, batt_flight_t::count, fc_batt_heartbeat(), fc_batt_signal(), fc_snapshot(), L, logf_power(), P_BATT_CAPACITY, P_BATT_CELLS, P_BATT_CRIT, P_BATT_EMERG, P_BATT_WARN, PARAM, fc_batt_sig_t::present, s_cfg, s_fl, s_fl_seq, s_have_last, s_last, s_log_div, s_sig_level, s_sig_present, s_used_at_arm, s_was_armed, scales_t::scale_i, batt_flight_t::scale_i, batt_cfg_t::scale_i, scales_t::scale_v, SPSC_BARRIER, spsc_pop(), and batt_flight_t::used_mah.

Referenced by BattTask().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ BattTask()

static void BattTask ( void *  arg)
static

Definition at line 113 of file batt_task.c.

References BATT_TASK_PERIOD_MS, batt_task_step(), and next().

Referenced by batt_task_start().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ batt_task_start()

void batt_task_start ( const batt_task_cfg_t *  cfg)

Definition at line 124 of file batt_task.c.

References batt_task_init(), and BattTask().

Referenced by app_start().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ s_cfg

batt_task_cfg_t s_cfg
static

Definition at line 16 of file batt_task.c.

Referenced by batt_task_init(), and batt_task_step().

◆ s_last

uint32_t s_last
static

Definition at line 17 of file batt_task.c.

Referenced by batt_task_step().

◆ s_have_last

uint8_t s_have_last
static

Definition at line 18 of file batt_task.c.

Referenced by batt_task_init(), and batt_task_step().

◆ s_sig_level

uint8_t s_sig_level = 0xFFu
static

Definition at line 19 of file batt_task.c.

Referenced by batt_task_init(), and batt_task_step().

◆ s_sig_present

uint8_t s_sig_present = 0xFFu
static

Definition at line 19 of file batt_task.c.

Referenced by batt_task_init(), and batt_task_step().

◆ s_was_armed

uint8_t s_was_armed
static

Definition at line 20 of file batt_task.c.

Referenced by batt_task_init(), and batt_task_step().

◆ s_log_div

uint8_t s_log_div
static

Definition at line 21 of file batt_task.c.

Referenced by batt_task_step().

◆ s_used_at_arm

float s_used_at_arm
static

Definition at line 22 of file batt_task.c.

Referenced by batt_task_init(), and batt_task_step().

◆ s_fl_seq

volatile uint32_t s_fl_seq
static

Definition at line 24 of file batt_task.c.

Referenced by batt_task_init(), batt_task_last_flight(), and batt_task_step().

◆ s_fl

batt_flight_t s_fl
static

Definition at line 25 of file batt_task.c.

Referenced by batt_task_init(), batt_task_last_flight(), and batt_task_step().