SatNOGS-COMMS
4.1.0
A COMMS subsystem for CubeSats
Toggle main menu visibility
Loading...
Searching...
No Matches
power.hpp
Go to the documentation of this file.
1
/*
2
* SatNOGS-COMMS control library
3
*
4
* Copyright (C) 2023, Libre Space Foundation <http://libre.space>
5
*
6
* This program is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*
19
* SPDX-License-Identifier: GNU General Public License v3.0 or later
20
*/
21
22
#pragma once
23
24
#include <
satnogs-comms-lib/bsp/adc.hpp
>
25
#include <
satnogs-comms-lib/bsp/gpio.hpp
>
26
#include <
satnogs-comms-lib/bsp/i2c.hpp
>
27
#include <
satnogs-comms-lib/bsp/sensor.hpp
>
28
#include <
satnogs-comms-lib/emc1702.hpp
>
29
#include <
satnogs-comms-lib/exception.hpp
>
30
#include <satnogs-comms-lib/version.hpp>
31
32
namespace
satnogs::comms::lib
33
{
42
class
power
43
{
44
public
:
49
enum class
subsys
: uint8_t
50
{
51
CAN1
= 0,
52
CAN2
= 1,
53
RF_5V
= 2,
54
FPGA_5V
= 3,
55
CAN1_LPWR
= 4,
56
CAN2_LPWR
= 5,
57
UHF
= 6,
58
SBAND
= 7
59
};
60
65
enum class
sensor
: uint8_t
66
{
67
EFUSES
= 0,
68
EMC1702
= 1,
69
AVERAGE
= 2
70
};
71
76
enum class
channel
: uint8_t
77
{
78
FPGA
= 1,
79
RF_5V
= 2,
80
DIG_3V3
= 3,
81
VIN
= 4,
82
V_BAT
= 5
83
};
84
89
enum class
pgood_tp
: uint8_t
90
{
91
RAIL_5V
= 0,
92
RAIL_FPGA
= 1,
93
RAIL_UHF
= 2,
94
RAIL_SBAND
= 3
95
};
96
103
class
r_lim
104
{
105
public
:
106
r_lim
() =
delete
;
107
118
r_lim
(uint16_t
dig_3v3
, uint16_t
rf_5v
, uint16_t
fpga_5v
)
119
:
dig_3v3
(
dig_3v3
),
rf_5v
(
rf_5v
),
fpga_5v
(
fpga_5v
)
120
{
121
}
122
123
/*
124
* Only the power class should have access on the protected members of this
125
* class
126
*/
127
friend
power
;
128
129
protected
:
130
uint16_t
dig_3v3
;
131
uint16_t
rf_5v
;
132
uint16_t
fpga_5v
;
133
};
134
142
class
io_conf
143
{
144
public
:
145
bsp::i2c
&
mon_i2c
;
146
bsp::gpio
&
rf_5v_en
;
147
bsp::gpio
&
fpga_5v_en
;
148
bsp::gpio
&
can1_en
;
149
bsp::gpio
&
can1_low_pwr
;
150
bsp::gpio
&
can2_en
;
151
bsp::gpio
&
can2_low_pwr
;
152
bsp::gpio
&
rf_5v_pgood
;
153
bsp::gpio
&
fpga_5v_pgood
;
154
bsp::gpio
&
uhf_en
;
155
bsp::gpio
&
uhf_pgood
;
156
bsp::gpio
&
sband_en
;
157
bsp::gpio
&
sband_pgood
;
158
bsp::adc
&
imon_3v3_d
;
159
bsp::adc
&
imon_5v_rf
;
160
bsp::adc
&
imon_fpga
;
161
bsp::sensor
&
v_mon
;
162
r_lim
rlim
;
163
uint16_t
efuse_adc_current_gain
;
164
};
165
166
void
167
enable
(
subsys
sys,
bool
en =
true
);
168
169
bool
170
enabled
(
subsys
sys)
const
;
171
172
bool
173
pgood
(
pgood_tp
tp)
const
;
174
175
float
176
voltage
(
channel
sys)
const
;
177
178
float
179
current
(
channel
sys)
const
;
180
181
float
182
get_power
(
sensor
src)
const
;
183
184
power
(
const
io_conf
&
io
);
185
186
private
:
187
bsp::gpio
&m_rf_5v_en;
188
bsp::gpio
&m_fpga_5v_en;
189
bsp::gpio
&m_can1_en;
190
bsp::gpio
&m_can1_low_pwr;
191
bsp::gpio
&m_can2_en;
192
bsp::gpio
&m_can2_low_pwr;
193
bsp::gpio
&m_pgood_5v;
194
bsp::gpio
&m_pgood_fpga;
195
emc1702
m_monitor;
196
bsp::gpio
&m_uhf_en;
197
bsp::gpio
&m_uhf_pgood;
198
bsp::gpio
&m_sband_en;
199
bsp::gpio
&m_sband_pgood;
200
bsp::adc
&m_imon_5v_rf;
201
bsp::adc
&m_imon_3v3;
202
bsp::adc
&m_imon_fpga;
203
bsp::sensor
&m_v_mon;
204
r_lim
m_r_lim;
205
uint16_t m_efuse_adc_current_gain;
206
};
207
208
209
}
// namespace satnogs::comms::lib
adc.hpp
satnogs::comms::io
Definition
io.hpp:47
satnogs::comms::lib::bsp::adc
ADC device abstraction.
Definition
adc.hpp:39
satnogs::comms::lib::bsp::gpio
GPIO device abstraction.
Definition
gpio.hpp:38
satnogs::comms::lib::bsp::i2c
I2C device abstraction.
Definition
i2c.hpp:40
satnogs::comms::lib::bsp::sensor
Sensor device abstraction.
Definition
sensor.hpp:41
satnogs::comms::lib::emc1702
Interface for the EMC1702 High-Side Current-Sense and Dual Temperature Monitor.
Definition
emc1702.hpp:64
satnogs::comms::lib::power::io_conf
Represents the I/O configuration for the power management system.
Definition
power.hpp:143
satnogs::comms::lib::power::io_conf::rf_5v_en
bsp::gpio & rf_5v_en
Definition
power.hpp:146
satnogs::comms::lib::power::io_conf::rlim
r_lim rlim
Definition
power.hpp:162
satnogs::comms::lib::power::io_conf::sband_en
bsp::gpio & sband_en
Definition
power.hpp:156
satnogs::comms::lib::power::io_conf::efuse_adc_current_gain
uint16_t efuse_adc_current_gain
Definition
power.hpp:163
satnogs::comms::lib::power::io_conf::v_mon
bsp::sensor & v_mon
Definition
power.hpp:161
satnogs::comms::lib::power::io_conf::can1_en
bsp::gpio & can1_en
Definition
power.hpp:148
satnogs::comms::lib::power::io_conf::uhf_en
bsp::gpio & uhf_en
Definition
power.hpp:154
satnogs::comms::lib::power::io_conf::rf_5v_pgood
bsp::gpio & rf_5v_pgood
Definition
power.hpp:152
satnogs::comms::lib::power::io_conf::fpga_5v_en
bsp::gpio & fpga_5v_en
Definition
power.hpp:147
satnogs::comms::lib::power::io_conf::fpga_5v_pgood
bsp::gpio & fpga_5v_pgood
Definition
power.hpp:153
satnogs::comms::lib::power::io_conf::sband_pgood
bsp::gpio & sband_pgood
Definition
power.hpp:157
satnogs::comms::lib::power::io_conf::imon_5v_rf
bsp::adc & imon_5v_rf
Definition
power.hpp:159
satnogs::comms::lib::power::io_conf::can2_low_pwr
bsp::gpio & can2_low_pwr
Definition
power.hpp:151
satnogs::comms::lib::power::io_conf::uhf_pgood
bsp::gpio & uhf_pgood
Definition
power.hpp:155
satnogs::comms::lib::power::io_conf::can2_en
bsp::gpio & can2_en
Definition
power.hpp:150
satnogs::comms::lib::power::io_conf::can1_low_pwr
bsp::gpio & can1_low_pwr
Definition
power.hpp:149
satnogs::comms::lib::power::io_conf::mon_i2c
bsp::i2c & mon_i2c
Definition
power.hpp:145
satnogs::comms::lib::power::io_conf::imon_3v3_d
bsp::adc & imon_3v3_d
Definition
power.hpp:158
satnogs::comms::lib::power::io_conf::imon_fpga
bsp::adc & imon_fpga
Definition
power.hpp:160
satnogs::comms::lib::power::r_lim
Current limit resistor configuration.
Definition
power.hpp:104
satnogs::comms::lib::power::r_lim::power
friend power
Definition
power.hpp:127
satnogs::comms::lib::power::r_lim::rf_5v
uint16_t rf_5v
Definition
power.hpp:131
satnogs::comms::lib::power::r_lim::dig_3v3
uint16_t dig_3v3
Definition
power.hpp:130
satnogs::comms::lib::power::r_lim::fpga_5v
uint16_t fpga_5v
Definition
power.hpp:132
satnogs::comms::lib::power::r_lim::r_lim
r_lim()=delete
satnogs::comms::lib::power::r_lim::r_lim
r_lim(uint16_t dig_3v3, uint16_t rf_5v, uint16_t fpga_5v)
Construct a new r lim object.
Definition
power.hpp:118
satnogs::comms::lib::power::voltage
float voltage(channel sys) const
Retrieves the voltage of a specified channel.
Definition
power.cpp:146
satnogs::comms::lib::power::current
float current(channel sys) const
Retrieves the current of a specified channel.
Definition
power.cpp:174
satnogs::comms::lib::power::power
power(const io_conf &io)
Definition
power.cpp:233
satnogs::comms::lib::power::pgood
bool pgood(pgood_tp tp) const
Gets the power good indication from various power supplies.
Definition
power.cpp:117
satnogs::comms::lib::power::sensor
sensor
Identifies power measurement sources.
Definition
power.hpp:66
satnogs::comms::lib::power::sensor::AVERAGE
@ AVERAGE
Average power from all available sources.
Definition
power.hpp:69
satnogs::comms::lib::power::sensor::EFUSES
@ EFUSES
Power measured by eFuses.
Definition
power.hpp:67
satnogs::comms::lib::power::sensor::EMC1702
@ EMC1702
Power measured by the EMC1702 sensor.
Definition
power.hpp:68
satnogs::comms::lib::power::pgood_tp
pgood_tp
Power good indicator.
Definition
power.hpp:90
satnogs::comms::lib::power::pgood_tp::RAIL_SBAND
@ RAIL_SBAND
S-Band rail.
Definition
power.hpp:94
satnogs::comms::lib::power::pgood_tp::RAIL_5V
@ RAIL_5V
5V rail
Definition
power.hpp:91
satnogs::comms::lib::power::pgood_tp::RAIL_FPGA
@ RAIL_FPGA
FPGA rail.
Definition
power.hpp:92
satnogs::comms::lib::power::pgood_tp::RAIL_UHF
@ RAIL_UHF
UHF rail.
Definition
power.hpp:93
satnogs::comms::lib::power::get_power
float get_power(sensor src) const
Calculates the power consumption for a specified sensor source.
Definition
power.cpp:209
satnogs::comms::lib::power::subsys
subsys
Identifies subsystems managed by the power class.
Definition
power.hpp:50
satnogs::comms::lib::power::subsys::CAN2_LPWR
@ CAN2_LPWR
Low-power mode for CAN Bus 2.
Definition
power.hpp:56
satnogs::comms::lib::power::subsys::CAN1_LPWR
@ CAN1_LPWR
Low-power mode for CAN Bus 1.
Definition
power.hpp:55
satnogs::comms::lib::power::subsys::RF_5V
@ RF_5V
RF 5V supply.
Definition
power.hpp:53
satnogs::comms::lib::power::subsys::CAN2
@ CAN2
CAN Bus 2.
Definition
power.hpp:52
satnogs::comms::lib::power::subsys::CAN1
@ CAN1
CAN Bus 1.
Definition
power.hpp:51
satnogs::comms::lib::power::subsys::SBAND
@ SBAND
S-Band subsystem.
Definition
power.hpp:58
satnogs::comms::lib::power::subsys::UHF
@ UHF
UHF subsystem.
Definition
power.hpp:57
satnogs::comms::lib::power::subsys::FPGA_5V
@ FPGA_5V
FPGA 5V supply.
Definition
power.hpp:54
satnogs::comms::lib::power::channel
channel
Identifies voltage and current measurement channels.
Definition
power.hpp:77
satnogs::comms::lib::power::channel::V_BAT
@ V_BAT
Battery voltage channel.
Definition
power.hpp:82
satnogs::comms::lib::power::channel::FPGA
@ FPGA
FPGA voltage/current channel.
Definition
power.hpp:78
satnogs::comms::lib::power::channel::DIG_3V3
@ DIG_3V3
Digital 3.3V voltage/current channel.
Definition
power.hpp:80
satnogs::comms::lib::power::channel::VIN
@ VIN
Input voltage channel.
Definition
power.hpp:81
satnogs::comms::lib::power::enable
void enable(subsys sys, bool en=true)
Enable/disable the power of subsystems.
Definition
power.cpp:35
satnogs::comms::lib::power::enabled
bool enabled(subsys sys) const
Checks the if the subsystem is enabled.
Definition
power.cpp:86
emc1702.hpp
exception.hpp
gpio.hpp
i2c.hpp
satnogs::comms::lib
Definition
ad8318.hpp:30
sensor.hpp
libsatnogs-comms
include
satnogs-comms-lib
power.hpp
Generated by
1.17.0