some more optimizations
This commit is contained in:
parent
e227fa1d01
commit
a095132d57
@ -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])
|
||||||
|
@ -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)?;
|
||||||
|
13
src/main.rs
13
src/main.rs
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user