0
mirror of https://gitlab.com/hyperglitch/jellyfish.git synced 2026-01-22 02:48:50 +00:00
2025-07-20 02:54:12 +02:00

60 lines
1.3 KiB
C

/*
* SPDX-FileCopyrightText: 2025 Igor Brkic <igor@hyperglitch.com>
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#ifndef JF_MEASURE_H
#define JF_MEASURE_H
#include <stdint.h>
#include <stdbool.h>
#include "jf_calibration.h"
#define JF_MEASURE_BUFFER_SIZE 120
typedef enum {
JF_MEAS_CURR_1 = 0x01,
JF_MEAS_CURR_2 = 0x02,
JF_MEAS_VOUT = 0x04,
JF_MEAS_AIN = 0x08,
JF_MEAS_DIG = 0x10,
JF_MEAS_RANGE = 0x20,
} jf_measure_channel_t;
typedef enum {
JF_RANGE_3A = 0x00,
JF_RANGE_300MA = 0x01,
JF_RANGE_30MA = 0x02,
JF_RANGE_3MA = 0x03,
JF_RANGE_300UA = 0x04,
JF_RANGE_30UA = 0x05,
JF_RANGE_AUTO = 0x06,
JF_RANGE_OFF = 0x07,
} jf_measure_range_t;
typedef struct {
float Isense2;
float Isense1;
float Vsense;
float ain;
uint8_t dig[5];
uint8_t range;
} jf_measure_data_t;
void jf_measure_fetch_data();
jf_measure_data_t jf_measure_get_current_values();
uint16_t jf_measure_get_recent_data(jf_measure_data_t *data, uint16_t size, bool from_isr);
void jf_measure_init();
const jf_calibration_t * jf_measure_get_calibration();
jf_measure_range_t jf_measure_get_range();
void jf_measure_set_range(jf_measure_range_t range, bool from_isr);
int32_t jf_measure_avg_frames_parsed();
int32_t jf_measure_avg_buffer_full();
#endif //JF_MEASURE_H