continue networking code
This commit is contained in:
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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}"
|
||||||
|
@ -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()),
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user