SatNOGS-COMMS
4.1.0
A COMMS subsystem for CubeSats
Toggle main menu visibility
Loading...
Searching...
No Matches
rf_frontend.hpp
Go to the documentation of this file.
1
/*
2
* SatNOGS-COMMS control library
3
*
4
* Copyright (C) 2022-2024, 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 <at86rf215.h>
25
#include <etl/string.h>
26
#include <
satnogs-comms-lib/ad8318.hpp
>
27
#include <
satnogs-comms-lib/bsp/adc.hpp
>
28
#include <
satnogs-comms-lib/bsp/dac.hpp
>
29
#include <
satnogs-comms-lib/bsp/gpio.hpp
>
30
#include <
satnogs-comms-lib/exception.hpp
>
31
#include <
satnogs-comms-lib/f2972.hpp
>
32
#include <
satnogs-comms-lib/power.hpp
>
33
#include <utility>
34
35
namespace
satnogs::comms::lib
36
{
37
42
class
rf_frontend
43
{
44
public
:
49
class
params
50
{
51
public
:
52
const
std::pair<uint32_t, uint32_t>
rx_range
;
53
const
std::pair<uint32_t, uint32_t>
tx_range
;
54
const
std::pair<float, float>
55
agc0_range
;
57
const
std::pair<float, float>
58
gain0_range
;
59
const
std::pair<float, float>
60
agc0_calib
;
64
const
std::pair<float, float>
65
gain0_calib
;
69
};
70
71
class
io_conf
72
{
73
public
:
74
bsp::gpio
&
en_agc
;
75
bsp::dac
&
agc_vset
;
76
bsp::gpio
&
flt_sel
;
77
};
78
82
enum class
dir
: uint8_t
83
{
84
RX
,
85
TX
,
86
INVALID
87
};
88
92
enum class
gain_mode
: uint8_t
93
{
94
AUTO
,
95
MANUAL
96
};
97
98
enum class
filter
: uint8_t
99
{
100
WIDE
,
101
NARROW
102
};
103
111
class
rx_gain_params
112
{
113
public
:
114
gain_mode
gain0_mode
;
115
union
116
{
117
float
tgt
;
118
float
gain
;
119
}
gain0
;
120
gain_mode
gain1_mode
;
121
union
122
{
123
at86rf215_agc_conf
agc
;
127
float
gain
;
128
}
gain1
;
129
};
130
131
rf_frontend
(
const
params &init_params, io_conf &&
io
,
power
&pwr);
132
137
virtual
void
138
enable
(
bool
set =
true
) = 0;
139
140
virtual
bool
141
enabled
()
const
= 0;
142
143
virtual
void
144
set_filter
(
filter
f);
145
146
virtual
filter
147
get_filter
()
const
;
148
149
virtual
void
150
set_direction
(
dir
d, uint64_t lo_freq = 0) = 0;
151
152
dir
153
direction
()
const
;
154
155
void
156
set_rx_gain
(
const
rx_gain_params
&gain);
157
158
bool
159
frequency_valid
(
dir
d, uint32_t freq)
const
;
160
161
protected
:
162
const
params
m_params
;
163
bsp::gpio
&
m_filt_sel
;
164
bsp::dac
&
m_dac
;
165
power
&
m_pwr
;
166
ad8318
m_agc
;
167
dir
m_dir
;
168
};
169
170
}
// namespace satnogs::comms::lib
ad8318.hpp
adc.hpp
satnogs::comms::io
Definition
io.hpp:47
satnogs::comms::lib::ad8318
Definition
ad8318.hpp:33
satnogs::comms::lib::bsp::dac
DAC device abstraction.
Definition
dac.hpp:40
satnogs::comms::lib::bsp::gpio
GPIO device abstraction.
Definition
gpio.hpp:38
satnogs::comms::lib::power
Manages power supplies and monitors subsystem status.
Definition
power.hpp:43
satnogs::comms::lib::rf_frontend::io_conf
Definition
rf_frontend.hpp:72
satnogs::comms::lib::rf_frontend::io_conf::en_agc
bsp::gpio & en_agc
Definition
rf_frontend.hpp:74
satnogs::comms::lib::rf_frontend::io_conf::flt_sel
bsp::gpio & flt_sel
Definition
rf_frontend.hpp:76
satnogs::comms::lib::rf_frontend::io_conf::agc_vset
bsp::dac & agc_vset
Definition
rf_frontend.hpp:75
satnogs::comms::lib::rf_frontend::params
RF frontend initialization settings.
Definition
rf_frontend.hpp:50
satnogs::comms::lib::rf_frontend::params::gain0_calib
const std::pair< float, float > gain0_calib
Definition
rf_frontend.hpp:65
satnogs::comms::lib::rf_frontend::params::gain0_range
const std::pair< float, float > gain0_range
The gainl range of the first gain stage.
Definition
rf_frontend.hpp:58
satnogs::comms::lib::rf_frontend::params::agc0_calib
const std::pair< float, float > agc0_calib
Definition
rf_frontend.hpp:60
satnogs::comms::lib::rf_frontend::params::rx_range
const std::pair< uint32_t, uint32_t > rx_range
RX tuning range.
Definition
rf_frontend.hpp:52
satnogs::comms::lib::rf_frontend::params::agc0_range
const std::pair< float, float > agc0_range
Definition
rf_frontend.hpp:55
satnogs::comms::lib::rf_frontend::params::tx_range
const std::pair< uint32_t, uint32_t > tx_range
TX tuning range.
Definition
rf_frontend.hpp:53
satnogs::comms::lib::rf_frontend::rx_gain_params
RX gain settings for the two different gain stages. Gain0 stage corresponds to the first stage (close...
Definition
rf_frontend.hpp:112
satnogs::comms::lib::rf_frontend::rx_gain_params::gain0_mode
gain_mode gain0_mode
Definition
rf_frontend.hpp:114
satnogs::comms::lib::rf_frontend::rx_gain_params::gain0
union satnogs::comms::lib::rf_frontend::rx_gain_params::@057170116231345201073375110000256144366370046377 gain0
satnogs::comms::lib::rf_frontend::rx_gain_params::tgt
float tgt
Target signal level for the AGC [-60, -35].
Definition
rf_frontend.hpp:117
satnogs::comms::lib::rf_frontend::rx_gain_params::agc
at86rf215_agc_conf agc
Definition
rf_frontend.hpp:123
satnogs::comms::lib::rf_frontend::rx_gain_params::gain1
union satnogs::comms::lib::rf_frontend::rx_gain_params::@215011014006014333052114215072331261330071377362 gain1
satnogs::comms::lib::rf_frontend::rx_gain_params::gain1_mode
gain_mode gain1_mode
Definition
rf_frontend.hpp:120
satnogs::comms::lib::rf_frontend::rx_gain_params::gain
float gain
Fixed gain value in dB [-6, 29.5].
Definition
rf_frontend.hpp:118
satnogs::comms::lib::rf_frontend::enable
virtual void enable(bool set=true)=0
satnogs::comms::lib::rf_frontend::m_agc
ad8318 m_agc
Definition
rf_frontend.hpp:166
satnogs::comms::lib::rf_frontend::direction
dir direction() const
Definition
rf_frontend.cpp:78
satnogs::comms::lib::rf_frontend::m_dac
bsp::dac & m_dac
Definition
rf_frontend.hpp:164
satnogs::comms::lib::rf_frontend::filter
filter
Definition
rf_frontend.hpp:99
satnogs::comms::lib::rf_frontend::filter::NARROW
@ NARROW
Definition
rf_frontend.hpp:101
satnogs::comms::lib::rf_frontend::filter::WIDE
@ WIDE
Definition
rf_frontend.hpp:100
satnogs::comms::lib::rf_frontend::set_rx_gain
void set_rx_gain(const rx_gain_params &gain)
Sets the RX gain parameters.
Definition
rf_frontend.cpp:90
satnogs::comms::lib::rf_frontend::m_dir
dir m_dir
Definition
rf_frontend.hpp:167
satnogs::comms::lib::rf_frontend::m_pwr
power & m_pwr
Definition
rf_frontend.hpp:165
satnogs::comms::lib::rf_frontend::enabled
virtual bool enabled() const =0
satnogs::comms::lib::rf_frontend::set_filter
virtual void set_filter(filter f)
Definition
rf_frontend.cpp:45
satnogs::comms::lib::rf_frontend::gain_mode
gain_mode
Definition
rf_frontend.hpp:93
satnogs::comms::lib::rf_frontend::gain_mode::MANUAL
@ MANUAL
Definition
rf_frontend.hpp:95
satnogs::comms::lib::rf_frontend::gain_mode::AUTO
@ AUTO
Definition
rf_frontend.hpp:94
satnogs::comms::lib::rf_frontend::get_filter
virtual filter get_filter() const
Definition
rf_frontend.cpp:64
satnogs::comms::lib::rf_frontend::frequency_valid
bool frequency_valid(dir d, uint32_t freq) const
Checks if a frequency is within the permissible range.
Definition
rf_frontend.cpp:123
satnogs::comms::lib::rf_frontend::rf_frontend
rf_frontend(const params &init_params, io_conf &&io, power &pwr)
Definition
rf_frontend.cpp:28
satnogs::comms::lib::rf_frontend::m_params
const params m_params
Definition
rf_frontend.hpp:162
satnogs::comms::lib::rf_frontend::m_filt_sel
bsp::gpio & m_filt_sel
Definition
rf_frontend.hpp:163
satnogs::comms::lib::rf_frontend::set_direction
virtual void set_direction(dir d, uint64_t lo_freq=0)=0
satnogs::comms::lib::rf_frontend::dir
dir
Definition
rf_frontend.hpp:83
satnogs::comms::lib::rf_frontend::dir::TX
@ TX
Definition
rf_frontend.hpp:85
satnogs::comms::lib::rf_frontend::dir::INVALID
@ INVALID
Definition
rf_frontend.hpp:86
satnogs::comms::lib::rf_frontend::dir::RX
@ RX
Definition
rf_frontend.hpp:84
dac.hpp
exception.hpp
f2972.hpp
gpio.hpp
satnogs::comms::lib
Definition
ad8318.hpp:30
power.hpp
libsatnogs-comms
include
satnogs-comms-lib
rf_frontend.hpp
Generated by
1.17.0