continue networking code

This commit is contained in:
2024-04-18 18:38:50 +02:00
parent b362e05280
commit c510df3154
4 changed files with 16 additions and 12 deletions

View File

@ -1,5 +1,6 @@
from typing import Any, Optional from typing import Any, Optional
import socket import socket
import logging
from threading import Thread, Event, Lock from threading import Thread, Event, Lock
from collections import deque from collections import deque
@ -7,6 +8,9 @@ from tmtccmd.com import ComInterface
from tmtccmd.tmtc import TelemetryListT from tmtccmd.tmtc import TelemetryListT
_LOGGER = logging.getLogger(__name__)
class TcpServer(ComInterface): class TcpServer(ComInterface):
def __init__(self, port: int): def __init__(self, port: int):
self.port = port self.port = port
@ -56,7 +60,7 @@ class TcpServer(ComInterface):
while True and not self._kill_signal.is_set(): while True and not self._kill_signal.is_set():
self._server_socket.listen() self._server_socket.listen()
(conn_socket, conn_addr) = self._server_socket.accept() (conn_socket, conn_addr) = self._server_socket.accept()
print("TCP client {} connected", conn_addr) _LOGGER.info("TCP client {} connected", conn_addr)
while True: while True:
bytes_recvd = conn_socket.recv(4096) bytes_recvd = conn_socket.recv(4096)
if len(bytes_recvd) > 0: if len(bytes_recvd) > 0:

View File

@ -17,17 +17,16 @@ def main():
while True: while True:
server_socket.listen() server_socket.listen()
(conn_socket, conn_addr) = server_socket.accept() (conn_socket, conn_addr) = server_socket.accept()
print("TCP client {} connected", conn_addr) print(f"TCP client {conn_addr} connected")
while True: while True:
bytes_recvd = conn_socket.recv(4096) bytes_recvd = conn_socket.recv(4096)
if len(bytes_recvd) > 0: if len(bytes_recvd) > 0:
print(f"Received bytes from TCP client: {bytes_recvd.decode()}") print(f"Received bytes from TCP client: {bytes_recvd}")
elif len(bytes_recvd) == 0: elif len(bytes_recvd) == 0:
break break
else: else:
print("error receiving data from TCP client") print("error receiving data from TCP client")
if SEND_PING_ONCE: if SEND_PING_ONCE:
print("sending back ping")
ping_tc = PusTelecommand(service=17, subservice=1, seq_count=0, apid=APID) ping_tc = PusTelecommand(service=17, subservice=1, seq_count=0, apid=APID)
conn_socket.sendall(ping_tc.pack()) conn_socket.sendall(ping_tc.pack())
SEND_PING_ONCE = False SEND_PING_ONCE = False

View File

@ -4,7 +4,6 @@ on a remote machine, e.g. a Raspberry Pi"""
import argparse import argparse
import os import os
import sys import sys
import platform
import time import time
from typing import Final from typing import Final
@ -16,10 +15,10 @@ BUILDER = "cross"
# remote configurations by tweaking / hardcoding these parameter, which generally are constant # remote configurations by tweaking / hardcoding these parameter, which generally are constant
# for a given board # for a given board
DEFAULT_USER_NAME: Final = "root" DEFAULT_USER_NAME: Final = "root"
DEFAULT_ADDRESS: Final = "192.254.108.30" DEFAULT_ADDRESS: Final = "small_flatsat"
DEFAULT_TOOLCHAIN: Final = "armv7-unknown-linux-gnueabihf" DEFAULT_TOOLCHAIN: Final = "armv7-unknown-linux-gnueabihf"
DEFAULT_APP_NAME: Final = "ops-sat-rs" DEFAULT_APP_NAME: Final = "ops-sat-rs"
DEFAULT_TARGET_FOLDER: Final = "/tmp" DEFAULT_TARGET_FOLDER: Final = "/home/exp278/"
DEFAULT_DEBUG_PORT: Final = "1234" DEFAULT_DEBUG_PORT: Final = "1234"
DEFAULT_GDB_APP = "gdb-multiarch" DEFAULT_GDB_APP = "gdb-multiarch"
@ -140,10 +139,11 @@ def bld_deploy_run(args):
sshpass_args = f"-f {args.sshfile}" sshpass_args = f"-f {args.sshfile}"
elif args.sshenv: elif args.sshenv:
sshpass_args = "-e" sshpass_args = "-e"
ssh_target_ident = f"{args.user}@{args.address}" # ssh_target_ident = f"{args.user}@{args.address}"
ssh_target_ident = "small_flatsat"
sshpass_cmd = "" sshpass_cmd = ""
if platform.system() != "Windows": # if platform.system() != "Windows":
sshpass_cmd = f"sshpass {sshpass_args}" # sshpass_cmd = f"sshpass {sshpass_args}"
dest_path = f"{args.dest}/{args.app}" dest_path = f"{args.dest}/{args.app}"
if not args.source: if not args.source:
source_path = f"{os.getcwd()}/target/{args.tc}/{build_folder}/{args.app}" source_path = f"{os.getcwd()}/target/{args.tc}/{build_folder}/{args.app}"

View File

@ -89,14 +89,15 @@ impl TcpSppClient {
} }
pub fn handle_client_operation(&mut self, client: &mut TcpStream) -> Result<(), ClientError> { pub fn handle_client_operation(&mut self, client: &mut TcpStream) -> Result<(), ClientError> {
self.read_from_server(client)?;
self.write_to_server(client)?; self.write_to_server(client)?;
client.shutdown(std::net::Shutdown::Write)?;
self.read_from_server(client)?;
Ok(()) Ok(())
} }
pub fn read_from_server(&mut self, client: &mut TcpStream) -> Result<(), ClientError> { pub fn read_from_server(&mut self, client: &mut TcpStream) -> Result<(), ClientError> {
match client.read(&mut self.read_buf) { match client.read(&mut self.read_buf) {
Ok(0) => return Err(io::Error::from(io::ErrorKind::BrokenPipe).into()), Ok(0) => (),
Ok(read_bytes) => self.handle_read_bytstream(read_bytes)?, Ok(read_bytes) => self.handle_read_bytstream(read_bytes)?,
Err(e) => return Err(e.into()), Err(e) => return Err(e.into()),
} }