continue networking code
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
from typing import Any, Optional
|
||||
import socket
|
||||
import logging
|
||||
from threading import Thread, Event, Lock
|
||||
from collections import deque
|
||||
|
||||
@ -7,6 +8,9 @@ from tmtccmd.com import ComInterface
|
||||
from tmtccmd.tmtc import TelemetryListT
|
||||
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TcpServer(ComInterface):
|
||||
def __init__(self, port: int):
|
||||
self.port = port
|
||||
@ -56,7 +60,7 @@ class TcpServer(ComInterface):
|
||||
while True and not self._kill_signal.is_set():
|
||||
self._server_socket.listen()
|
||||
(conn_socket, conn_addr) = self._server_socket.accept()
|
||||
print("TCP client {} connected", conn_addr)
|
||||
_LOGGER.info("TCP client {} connected", conn_addr)
|
||||
while True:
|
||||
bytes_recvd = conn_socket.recv(4096)
|
||||
if len(bytes_recvd) > 0:
|
||||
|
@ -17,17 +17,16 @@ def main():
|
||||
while True:
|
||||
server_socket.listen()
|
||||
(conn_socket, conn_addr) = server_socket.accept()
|
||||
print("TCP client {} connected", conn_addr)
|
||||
print(f"TCP client {conn_addr} connected")
|
||||
while True:
|
||||
bytes_recvd = conn_socket.recv(4096)
|
||||
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:
|
||||
break
|
||||
else:
|
||||
print("error receiving data from TCP client")
|
||||
if SEND_PING_ONCE:
|
||||
print("sending back ping")
|
||||
ping_tc = PusTelecommand(service=17, subservice=1, seq_count=0, apid=APID)
|
||||
conn_socket.sendall(ping_tc.pack())
|
||||
SEND_PING_ONCE = False
|
||||
|
@ -4,7 +4,6 @@ on a remote machine, e.g. a Raspberry Pi"""
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
import platform
|
||||
import time
|
||||
from typing import Final
|
||||
|
||||
@ -16,10 +15,10 @@ BUILDER = "cross"
|
||||
# remote configurations by tweaking / hardcoding these parameter, which generally are constant
|
||||
# for a given board
|
||||
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_APP_NAME: Final = "ops-sat-rs"
|
||||
DEFAULT_TARGET_FOLDER: Final = "/tmp"
|
||||
DEFAULT_TARGET_FOLDER: Final = "/home/exp278/"
|
||||
DEFAULT_DEBUG_PORT: Final = "1234"
|
||||
DEFAULT_GDB_APP = "gdb-multiarch"
|
||||
|
||||
@ -140,10 +139,11 @@ def bld_deploy_run(args):
|
||||
sshpass_args = f"-f {args.sshfile}"
|
||||
elif args.sshenv:
|
||||
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 = ""
|
||||
if platform.system() != "Windows":
|
||||
sshpass_cmd = f"sshpass {sshpass_args}"
|
||||
# if platform.system() != "Windows":
|
||||
# sshpass_cmd = f"sshpass {sshpass_args}"
|
||||
dest_path = f"{args.dest}/{args.app}"
|
||||
if not args.source:
|
||||
source_path = f"{os.getcwd()}/target/{args.tc}/{build_folder}/{args.app}"
|
||||
|
@ -89,14 +89,15 @@ impl TcpSppClient {
|
||||
}
|
||||
|
||||
pub fn handle_client_operation(&mut self, client: &mut TcpStream) -> Result<(), ClientError> {
|
||||
self.read_from_server(client)?;
|
||||
self.write_to_server(client)?;
|
||||
client.shutdown(std::net::Shutdown::Write)?;
|
||||
self.read_from_server(client)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn read_from_server(&mut self, client: &mut TcpStream) -> Result<(), ClientError> {
|
||||
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)?,
|
||||
Err(e) => return Err(e.into()),
|
||||
}
|
||||
|
Reference in New Issue
Block a user