Merge pull request 'some more optimizations' (#25) from some-more-optimizations into main

Reviewed-on: #25
This commit is contained in:
Robin Müller 2024-04-29 16:47:24 +02:00
commit c9e5b9ffdb
3 changed files with 28 additions and 15 deletions

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import socket import socket
import json
import abc import abc
import time import time
import select import select
@ -15,7 +16,7 @@ EXP_ID = 278
EXP_APID = 1024 + EXP_ID EXP_APID = 1024 + EXP_ID
EXP_PACKET_ID_TM = PacketId(PacketType.TM, True, EXP_APID) EXP_PACKET_ID_TM = PacketId(PacketType.TM, True, EXP_APID)
EXP_PACKET_ID_TC = PacketId(PacketType.TC, True, EXP_APID) EXP_PACKET_ID_TC = PacketId(PacketType.TC, True, EXP_APID)
OPSSAT_SERVER_PORT = 4096 OPSSAT_DEFAULT_SERVER_PORT = 4096
TMTC_SERVER_PORT = 4097 TMTC_SERVER_PORT = 4097
LOG_LEVEL = logging.INFO LOG_LEVEL = logging.INFO
@ -36,7 +37,17 @@ def main():
) )
print("Starting OPS-SAT ground TMTC server") print("Starting OPS-SAT ground TMTC server")
KILL_SIGNAL.clear() KILL_SIGNAL.clear()
ops_sat_thread = OpsSatServer()
ops_sat_server_port = OPSSAT_DEFAULT_SERVER_PORT
with open("tmtc_conf.json") as cfg_file:
# Load JSON data
data = json.loads(cfg_file.read())
# Access the value of the tcpip_tcp_server_port key
maybe_ops_sat_server_port = data.get("tcpip_tcp_server_port")
if maybe_ops_sat_server_port is not None:
ops_sat_server_port = maybe_ops_sat_server_port
_LOGGER.info(f"creating OPS-SAT server on port {ops_sat_server_port}")
ops_sat_thread = OpsSatServer(ops_sat_server_port)
ops_sat_thread.start() ops_sat_thread.start()
tmtc_thread = TmtcServer() tmtc_thread = TmtcServer()
tmtc_thread.start() tmtc_thread.start()
@ -142,8 +153,9 @@ class BaseServer(Thread):
class OpsSatServer(BaseServer): class OpsSatServer(BaseServer):
def __init__(self): def __init__(self, port: int):
super().__init__("[OPS-SAT]", OPSSAT_SERVER_PORT) self.port = port
super().__init__("[OPS-SAT]", port)
def handle_read_bytestream(self, analysis_deque: deque): def handle_read_bytestream(self, analysis_deque: deque):
parsed_packets = parse_space_packets(analysis_deque, [EXP_PACKET_ID_TM]) parsed_packets = parse_space_packets(analysis_deque, [EXP_PACKET_ID_TM])

View File

@ -145,6 +145,16 @@ impl TcpSppClientStd {
} }
pub fn operation(&mut self) -> Result<ClientResult, ClientError> { pub fn operation(&mut self) -> Result<ClientResult, ClientError> {
let result = self.operation_inner();
if let Ok(client_result) = &result {
if *client_result != ClientResult::Ok {
std::thread::sleep(self.read_and_idle_delay);
}
}
result
}
fn operation_inner(&mut self) -> Result<ClientResult, ClientError> {
if let Some(client) = &mut self.stream { if let Some(client) = &mut self.stream {
// Write TM first before blocking on the read call. // Write TM first before blocking on the read call.
self.common.write_to_server(client)?; self.common.write_to_server(client)?;

View File

@ -24,10 +24,7 @@ use satrs::{
pus::event_man::EventRequestWithToken, pus::event_man::EventRequestWithToken,
}; };
use crate::{ use crate::{controller::ControllerPathCollection, tmtc::tm_sink::TmFunnelDynamic};
controller::ControllerPathCollection, interface::tcp_spp_client::ClientResult,
tmtc::tm_sink::TmFunnelDynamic,
};
use crate::{controller::ExperimentController, pus::test::create_test_service}; use crate::{controller::ExperimentController, pus::test::create_test_service};
use crate::{ use crate::{
events::EventHandler, events::EventHandler,
@ -284,13 +281,7 @@ fn main() {
info!("Running TCP SPP client"); info!("Running TCP SPP client");
loop { loop {
match tcp_spp_client.operation() { match tcp_spp_client.operation() {
Ok(result) => { Ok(_result) => (),
// If the client connection was processed regularly, the read timeout takes
// care of the sleep time.
if result != ClientResult::Ok {
std::thread::sleep(STOP_CHECK_FREQUENCY);
}
}
Err(e) => { Err(e) => {
log::error!("TCP SPP client error: {}", e); log::error!("TCP SPP client error: {}", e);
} }