RADIO MANAGER - WIP added radio api endpoints

This commit is contained in:
DJ2LS 2024-01-12 16:29:22 +01:00
parent 543cbbdff8
commit baae3a5bb4
7 changed files with 58 additions and 48 deletions

View file

@ -8,7 +8,7 @@ import "../../node_modules/gridstack/dist/gridstack.min.css";
import { GridStack } from "gridstack";
import { useStateStore } from "../store/stateStore.js";
const state = useStateStore(pinia);
import { setModemFrequency } from "../js/api";
import { setRadioParameters } from "../js/api";
import { saveLocalSettingsToConfig, settingsStore } from "../store/settingsStore";
import active_heard_stations from "./grid/grid_active_heard_stations.vue";
@ -233,12 +233,20 @@ new gridWidget(
function updateFrequencyAndApply(frequency) {
state.new_frequency = frequency;
setModemFrequency(state.new_frequency);
set_radio_parameters();
}
function set_hamlib_frequency_manually() {
setModemFrequency(state.new_frequency);
function set_radio_parameters(){
setRadioParameters(state.new_frequency, state.mode, state.rf_level);
}
function savePreset()
{
settingsStore.local.grid_preset=settingsStore.local.grid_layout;
@ -246,7 +254,7 @@ function savePreset()
}
function loadPreset()
{
clearAllItems();
settingsStore.local.grid_layout=settingsStore.local.grid_preset;
restoreGridLayoutFromConfig();
@ -392,7 +400,7 @@ function addNewWidget2(componentToAdd :gridWidget,saveToConfig :boolean) {
if (saveToConfig)
saveGridLayout();
});
}
function remove(widget) {
@ -677,7 +685,7 @@ function quickfill() {
aria-label="Close"
></button>
</div>
<div class="offcanvas-body">
@ -707,7 +715,6 @@ function quickfill() {
<button
class="btn btn-sm btn-outline-success"
type="button"
@click="set_hamlib_frequency_manually"
v-bind:class="{
disabled: state.hamlib_status === 'disconnected',
}"

View file

@ -1,18 +1,15 @@
<script setup lang="ts">
import { setActivePinia } from "pinia";
import pinia from "../../store/index";
import { setModemRigMode, setModemRigPowerLvl } from "../../js/api";
import { setRadioParameters} from "../../js/api";
setActivePinia(pinia);
import { useStateStore } from "../../store/stateStore.js";
const state = useStateStore(pinia);
function set_hamlib_mode() {
setModemRigMode(state.mode);
}
function set_radio_parameters(){
setRadioParameters(state.frequency, state.mode, state.rf_level);
function set_hamlib_rf_level() {
setModemRigPowerLvl(state.rf_level);
}
</script>

View file

@ -6,24 +6,19 @@ setActivePinia(pinia);
import { useStateStore } from "../store/stateStore.js";
const state = useStateStore(pinia);
import { setModemRigMode, setModemRigPowerLvl } from "../js/api";
import { setRadioParameters} from "../js/api";
function updateFrequencyAndApply(frequency) {
//state.new_frequency = frequency;
//set_frequency(state.new_frequency);
state.new_frequency = frequency;
set_radio_parameters();
}
function set_hamlib_frequency_manually() {
//set_frequency(state.new_frequency);
function set_radio_parameters(){
setRadioParameters(state.new_frequency, state.mode, state.rf_level);
}
function set_hamlib_mode() {
setModemRigMode(state.mode);
}
function set_hamlib_rf_level() {
setModemRigPowerLvl(state.rf_level);
}
</script>
<template>
@ -102,7 +97,7 @@ function set_hamlib_rf_level() {
<button
class="btn btn-sm btn-outline-success"
type="button"
@click="set_hamlib_frequency_manually"
@click="set_radio_parameters"
v-bind:class="{
disabled: state.hamlib_status === 'disconnected',
}"
@ -215,7 +210,7 @@ function set_hamlib_rf_level() {
<select
class="form-control"
v-model="state.mode"
@click="set_hamlib_mode()"
@click="set_radio_parameters()"
v-bind:class="{
disabled: state.hamlib_status === 'disconnected',
}"
@ -237,7 +232,7 @@ function set_hamlib_rf_level() {
<select
class="form-control"
v-model="state.rf_level"
@click="set_hamlib_rf_level()"
@click="set_radio_parameters()"
v-bind:class="{
disabled: state.hamlib_status === 'disconnected',
}"

View file

@ -117,12 +117,12 @@ export function getModemState() {
return apiGet("/modem/state");
}
export function setModemFrequency(newFrequency) {
console.error("setModemFrequency needs implemented");
}
export function setModemRigMode(mode) {
console.error("setModemRigMode needs implemented");
}
export function setModemRigPowerLvl(power) {
console.error("setModemRigPowerLvl needs implemented");
export function setRadioParameters(frequency, mode, rf_level){
return apiPost("/radio", {
radio_frequency: frequency,
radio_mode: mode,
});
}
export function getRadioStatus() {
return apiGet("/radio");
}

View file

@ -242,15 +242,20 @@ def post_modem_send_raw_stop():
return api_response(request.json)
@app.route('/radio', methods=['GET', 'POST'])
def get_post_radio():
if request.method in ['POST']:
app.radio_manager.set_frequency(request.json['radio_frequency'])
app.radio_manager.set_mode(request.json['radio_mode'])
return api_response(request.json)
elif request.method == 'GET':
return api_response(app.state_manager.get_radio_status())
# @app.route('/modem/arq_connect', methods=['POST'])
# @app.route('/modem/arq_disconnect', methods=['POST'])
# @app.route('/modem/send_raw', methods=['POST'])
# @app.route('/modem/stop_transmission', methods=['POST'])
# @app.route('/modem/listen', methods=['POST']) # not needed if we are restarting modem on changing settings
# @app.route('/modem/record_audio', methods=['POST'])
# @app.route('/modem/responde_to_call', methods=['POST']) # not needed if we are restarting modem on changing settings
# @app.route('/modem/responde_to_cq', methods=['POST']) # not needed if we are restarting modem on changing settings
# @app.route('/modem/audio_levels', methods=['POST']) # tx and rx # not needed if we are restarting modem on changing settings
# @app.route('/modem/mesh_ping', methods=['POST'])
# @app.route('/mesh/routing_table', methods=['GET'])

View file

@ -12,12 +12,11 @@ import radio_manager
class SM:
def __init__(self, app):
self.log = structlog.get_logger("service")
self.app = app
self.modem = False
self.beacon = False
self.explorer = False
self.radio = False
self.app = app
self.app.radio_manager = False
self.config = self.app.config_manager.read()
self.modem_fft = app.modem_fft
self.modem_service = app.modem_service
@ -88,7 +87,7 @@ class SM:
return False
self.log.info("starting modem....")
self.modem = modem.RF(self.config, self.event_manager, self.modem_fft, self.modem_service, self.state_manager, self.radio)
self.modem = modem.RF(self.config, self.event_manager, self.modem_fft, self.modem_service, self.state_manager, self.app.radio_manager)
self.frame_dispatcher = frame_dispatcher.DISPATCHER(self.config,
self.event_manager,
@ -140,8 +139,8 @@ class SM:
del self.explorer
def start_radio_manager(self):
self.radio = radio_manager.RadioManager(self.config, self.state_manager, self.event_manager)
self.app.radio_manager = radio_manager.RadioManager(self.config, self.state_manager, self.event_manager)
def stop_radio_manager(self):
self.radio.stop()
del self.radio
self.app.radio_manager.stop()
del self.app.radio_manager

View file

@ -177,3 +177,10 @@ class StateManager:
else:
self.channel_busy_condition_codec2 = threading.Event()
self.calculate_channel_busy_state()
def get_radio_status(self):
return {
"radio_status": self.radio_status,
"radio_frequency": self.radio_frequency,
"radio_mode": self.radio_mode,
}