Skip to content

File syn_power.h

FileList > src > syntropic > system > syn_power.h

Go to the source code of this file

Power / voltage monitor. More...

  • #include "../common/syn_defs.h"
  • #include "../drivers/syn_adc.h"
  • #include "../dsp/syn_signal.h"
  • #include "../system/syn_errlog.h"
  • #include "../util/syn_hysteresis.h"
  • #include <stdbool.h>

Classes

Type Name
struct SYN_Power
Power monitor instance — ADC + hysteresis + brownout state.
struct SYN_Power_Config
Power monitor configuration.

Public Types

Type Name
typedef void(* SYN_PowerCallback
Power event callback.

Public Functions

Type Name
void syn_power_init (SYN_Power * pwr, const SYN_Power_Config * cfg)
Initialize power monitor.
void syn_power_set_errlog (SYN_Power * pwr, SYN_ErrLog * errlog)
Attach error log for brownout events.
void syn_power_set_stats (SYN_Power * pwr, SYN_Signal * stats)
Attach signal stats window.
void syn_power_update (SYN_Power * pwr)
Update — read ADC and check thresholds.

Public Static Functions

Type Name
bool syn_power_is_brownout (const SYN_Power * pwr)
Check if currently in brownout state.
int32_t syn_power_voltage_mv (const SYN_Power * pwr)
Get last voltage reading in millivolts.

Macros

Type Name
define SYN_POWER_ERR_BROWNOUT 0x0400
Brownout voltage detected (errlog code).

Detailed Description

Wraps ADC + hysteresis to provide voltage monitoring with brownout detection and recovery callbacks. Optionally pushes readings to a SYN_Signal window for noise statistics.

Usage:

static SYN_Power pwr;
static SYN_ADC   vbat_adc;

SYN_Power_Config cfg = {
    .adc           = &vbat_adc,
    .brownout_mv   = 3000,   // 3.0V
    .restore_mv    = 3200,   // 3.2V (hysteresis)
    .on_brownout   = my_brownout_handler,
    .on_restore    = my_restore_handler,
};
syn_power_init(&pwr, &cfg);

// In your main loop:
syn_power_update(&pwr);
int32_t mv = syn_power_voltage_mv(&pwr);

Public Types Documentation

typedef SYN_PowerCallback

Power event callback.

typedef void(* SYN_PowerCallback) (struct SYN_Power *pwr, void *ctx);

Parameters:

  • pwr Power monitor that fired.
  • ctx User context.

Public Functions Documentation

function syn_power_init

Initialize power monitor.

void syn_power_init (
    SYN_Power * pwr,
    const SYN_Power_Config * cfg
) 

Parameters:

  • pwr Power monitor instance.
  • cfg Configuration.

function syn_power_set_errlog

Attach error log for brownout events.

void syn_power_set_errlog (
    SYN_Power * pwr,
    SYN_ErrLog * errlog
) 

Parameters:

  • pwr Power monitor.
  • errlog Error log instance.

function syn_power_set_stats

Attach signal stats window.

void syn_power_set_stats (
    SYN_Power * pwr,
    SYN_Signal * stats
) 

Parameters:

  • pwr Power monitor.
  • stats Initialized SYN_Signal, or NULL to detach.

function syn_power_update

Update — read ADC and check thresholds.

void syn_power_update (
    SYN_Power * pwr
) 

Call from your main loop or scheduler task.

Parameters:

  • pwr Power monitor.

Public Static Functions Documentation

function syn_power_is_brownout

Check if currently in brownout state.

static inline bool syn_power_is_brownout (
    const SYN_Power * pwr
) 

Parameters:

  • pwr Power monitor.

Returns:

true if in brownout.


function syn_power_voltage_mv

Get last voltage reading in millivolts.

static inline int32_t syn_power_voltage_mv (
    const SYN_Power * pwr
) 

Parameters:

  • pwr Power monitor.

Returns:

Voltage in mV.


Macro Definition Documentation

define SYN_POWER_ERR_BROWNOUT

Brownout voltage detected (errlog code).

#define SYN_POWER_ERR_BROWNOUT `0x0400`



The documentation for this class was generated from the following file src/syntropic/system/syn_power.h