diff --git a/bootcamp_main.py b/bootcamp_main.py index aa64faa6..16f12a3f 100644 --- a/bootcamp_main.py +++ b/bootcamp_main.py @@ -5,7 +5,6 @@ """ import multiprocessing as mp -import queue import time from pymavlink import mavutil @@ -22,18 +21,20 @@ from utilities.workers import worker_controller from utilities.workers import worker_manager - -# MAVLink connection CONNECTION_STRING = "tcp:localhost:12345" # ================================================================================================= # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ # ================================================================================================= -# Set queue max sizes (<= 0 for infinity) -# Set worker counts +QUEUE_SIZE = 10 + +NUM_HEARTBEAT_SENDERS = 1 +NUM_HEARTBEAT_RECEIVERS = 1 +NUM_TELEMETRY_WORKERS = 1 +NUM_COMMAND_WORKERS = 1 -# Any other constants +TARGET_POSITION = command.Position(10, 20, 30) # ================================================================================================= # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ @@ -41,81 +42,122 @@ def main() -> int: - """ - Main function. - """ - # Configuration settings + """Main entry point.""" + result, config = read_yaml.open_config(logger.CONFIG_FILE_PATH) if not result: print("ERROR: Failed to load configuration file") return -1 - # Get Pylance to stop complaining assert config is not None - # Setup main logger result, main_logger, _ = logger_main_setup.setup_main_logger(config) if not result: print("ERROR: Failed to create main logger") return -1 - # Get Pylance to stop complaining assert main_logger is not None - # Create a connection to the drone. Assume that this is safe to pass around to all processes - # In reality, this will not work, but to simplify the bootamp, preetend it is allowed - # To test, you will run each of your workers individually to see if they work - # (test "drones" are provided for you test your workers) - # NOTE: If you want to have type annotations for the connection, it is of type mavutil.mavfile connection = mavutil.mavlink_connection(CONNECTION_STRING) - connection.wait_heartbeat(timeout=30) # Wait for the "drone" to connect - - # ============================================================================================= - # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ - # ============================================================================================= - # Create a worker controller - - # Create a multiprocess manager for synchronized queues - - # Create queues + connection.wait_heartbeat(timeout=30) + + controller = worker_controller.WorkerController() + manager = mp.Manager() + + status_queue = queue_proxy_wrapper.QueueProxyWrapper(manager, QUEUE_SIZE) + telemetry_queue = queue_proxy_wrapper.QueueProxyWrapper(manager, QUEUE_SIZE) + command_queue = queue_proxy_wrapper.QueueProxyWrapper(manager, QUEUE_SIZE) + + workers = [] + + # HEARTBEAT SENDER + workers.append( + worker_manager.WorkerManager( + heartbeat_sender_worker.heartbeat_sender_worker, + NUM_HEARTBEAT_SENDERS, + (connection, controller), + main_logger, + ) + ) + + # HEARTBEAT RECEIVER + workers.append( + worker_manager.WorkerManager( + heartbeat_receiver_worker.heartbeat_receiver_worker, + NUM_HEARTBEAT_RECEIVERS, + (connection, controller, status_queue), + main_logger, + ) + ) + + # TELEMETRY + workers.append( + worker_manager.WorkerManager( + telemetry_worker.telemetry_worker, + NUM_TELEMETRY_WORKERS, + (connection, controller, telemetry_queue), + main_logger, + ) + ) + + # COMMAND + workers.append( + worker_manager.WorkerManager( + command_worker.command_worker, + NUM_COMMAND_WORKERS, + ( + connection, + TARGET_POSITION, + controller, + telemetry_queue, + command_queue, + ), + main_logger, + ) + ) + + for w in workers: + w.start() - # Create worker properties for each worker type (what inputs it takes, how many workers) - # Heartbeat sender - - # Heartbeat receiver + main_logger.info("Started") - # Telemetry + start_time = time.time() + run_time = 100 - # Command + try: + while time.time() - start_time < run_time: - # Create the workers (processes) and obtain their managers + while not status_queue.queue.empty(): + status = status_queue.queue.get() + main_logger.info(f"Heartbeat status: {status}") - # Start worker processes + if status == "Disconnected": + main_logger.error("Drone disconnected — stopping system") + raise KeyboardInterrupt - main_logger.info("Started") + while not command_queue.queue.empty(): + cmd = command_queue.queue.get() + main_logger.info(cmd) - # Main's work: read from all queues that output to main, and log any commands that we make - # Continue running for 100 seconds or until the drone disconnects + time.sleep(0.1) - # Stop the processes + except KeyboardInterrupt: + main_logger.info("Shutdown requested") + controller.request_exit() main_logger.info("Requested exit") - # Fill and drain queues from END TO START + command_queue.fill_and_drain_queue() + telemetry_queue.fill_and_drain_queue() + status_queue.fill_and_drain_queue() main_logger.info("Queues cleared") - # Clean up worker processes + for w in workers: + w.join() main_logger.info("Stopped") - # We can reset controller in case we want to reuse it - # Alternatively, create a new WorkerController instance - - # ============================================================================================= - # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ - # ============================================================================================= - return 0 diff --git a/documentation/main_multiprocess_example.py b/documentation/main_multiprocess_example.py index 05a87819..502d45c7 100644 --- a/documentation/main_multiprocess_example.py +++ b/documentation/main_multiprocess_example.py @@ -18,7 +18,6 @@ from utilities.workers import worker_controller from utilities.workers import worker_manager - # Play with these numbers to see queue bottlenecks COUNTUP_TO_ADD_RANDOM_QUEUE_MAX_SIZE = 5 ADD_RANDOM_TO_CONCATENATOR_QUEUE_MAX_SIZE = 5 diff --git a/documentation/tests/unit/test_add_or_multiply.py b/documentation/tests/unit/test_add_or_multiply.py index 794c0d9a..b6b5766d 100644 --- a/documentation/tests/unit/test_add_or_multiply.py +++ b/documentation/tests/unit/test_add_or_multiply.py @@ -12,7 +12,6 @@ import add_or_multiply - # Test functions use test fixture signature names and access class privates # No enable # pylint: disable=protected-access,redefined-outer-name diff --git a/documentation/tests/unit/test_pytest_example.py b/documentation/tests/unit/test_pytest_example.py index 72de1333..ca6010b2 100644 --- a/documentation/tests/unit/test_pytest_example.py +++ b/documentation/tests/unit/test_pytest_example.py @@ -8,7 +8,6 @@ import pytest - # Test functions use test fixture signature names and access class privates # No enable # pylint: disable=protected-access,redefined-outer-name diff --git a/logs/2026-02-12_18-40-42/command_drone_25376.log b/logs/2026-02-12_18-40-42/command_drone_25376.log new file mode 100644 index 00000000..195fc655 --- /dev/null +++ b/logs/2026-02-12_18-40-42/command_drone_25376.log @@ -0,0 +1,28 @@ +18:40:42: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 44] Logger initialized +18:40:42: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:43: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:48: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:48: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:49: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:49: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:50: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:50: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:51: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:51: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:40:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +18:41:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 82] Passed! diff --git a/logs/2026-02-12_18-40-42/command_worker_1108.log b/logs/2026-02-12_18-40-42/command_worker_1108.log new file mode 100644 index 00000000..0a458133 --- /dev/null +++ b/logs/2026-02-12_18-40-42/command_worker_1108.log @@ -0,0 +1 @@ +18:40:42: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\command\command_worker.py | command_worker | 37] Logger initialized diff --git a/logs/2026-02-12_18-40-42/main.log b/logs/2026-02-12_18-40-42/main.log new file mode 100644 index 00000000..4788b7fd --- /dev/null +++ b/logs/2026-02-12_18-40-42/main.log @@ -0,0 +1,3 @@ +18:40:42: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +18:40:42: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_command.py | main | 131] Connected! +18:40:42: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_command.py | read_queue | 76] CHANGE_ALTITUDE: 1 diff --git a/logs/2026-02-12_18-44-26/heartbeat_receiver_drone_11844.log b/logs/2026-02-12_18-44-26/heartbeat_receiver_drone_11844.log new file mode 100644 index 00000000..4660b593 --- /dev/null +++ b/logs/2026-02-12_18-44-26/heartbeat_receiver_drone_11844.log @@ -0,0 +1,13 @@ +18:44:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 41] Logger initialized +18:44:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:28: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:29: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:30: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:31: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:41: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:42: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:43: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:44: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:44:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 78] Passesd! diff --git a/logs/2026-02-12_18-44-26/heartbeat_receiver_worker_7668.log b/logs/2026-02-12_18-44-26/heartbeat_receiver_worker_7668.log new file mode 100644 index 00000000..c3fd34e6 --- /dev/null +++ b/logs/2026-02-12_18-44-26/heartbeat_receiver_worker_7668.log @@ -0,0 +1,12 @@ +18:44:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 44] Logger initialized +18:44:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 64] Connected +18:44:29: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:44:30: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:44:32: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:44:36: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 75] Disconnected +18:44:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 64] Connected +18:44:41: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:44:43: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:44:45: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:44:47: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:44:48: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 74] Heartbeat receiver exiting diff --git a/logs/2026-02-12_18-44-26/main.log b/logs/2026-02-12_18-44-26/main.log new file mode 100644 index 00000000..e075f95c --- /dev/null +++ b/logs/2026-02-12_18-44-26/main.log @@ -0,0 +1,2 @@ +18:44:26: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +18:44:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_receiver.py | main | 114] Connected! diff --git a/logs/2026-02-12_18-45-51/heartbeat_receiver_drone_25376.log b/logs/2026-02-12_18-45-51/heartbeat_receiver_drone_25376.log new file mode 100644 index 00000000..b6c75995 --- /dev/null +++ b/logs/2026-02-12_18-45-51/heartbeat_receiver_drone_25376.log @@ -0,0 +1,13 @@ +18:45:51: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 41] Logger initialized +18:45:51: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:45:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:45:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:45:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:45:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:06: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:08: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:10: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:11: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 78] Passesd! diff --git a/logs/2026-02-12_18-45-51/heartbeat_receiver_worker_19740.log b/logs/2026-02-12_18-45-51/heartbeat_receiver_worker_19740.log new file mode 100644 index 00000000..0ad80ffc --- /dev/null +++ b/logs/2026-02-12_18-45-51/heartbeat_receiver_worker_19740.log @@ -0,0 +1,12 @@ +18:45:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 44] Logger initialized +18:45:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 64] Connected +18:45:53: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:45:54: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:45:56: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:46:00: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 75] Disconnected +18:46:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 64] Connected +18:46:05: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:46:07: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:46:09: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:46:11: [WARNING] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 70] Missed heartbeat +18:46:12: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 74] Heartbeat receiver exiting diff --git a/logs/2026-02-12_18-45-51/main.log b/logs/2026-02-12_18-45-51/main.log new file mode 100644 index 00000000..93faf831 --- /dev/null +++ b/logs/2026-02-12_18-45-51/main.log @@ -0,0 +1,2 @@ +18:45:51: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +18:45:51: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_receiver.py | main | 114] Connected! diff --git a/logs/2026-02-12_18-46-16/heartbeat_receiver_drone_11648.log b/logs/2026-02-12_18-46-16/heartbeat_receiver_drone_11648.log new file mode 100644 index 00000000..586fc845 --- /dev/null +++ b/logs/2026-02-12_18-46-16/heartbeat_receiver_drone_11648.log @@ -0,0 +1,13 @@ +18:46:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 41] Logger initialized +18:46:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:30: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:31: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:32: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:33: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:34: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:46:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 78] Passesd! diff --git a/logs/2026-02-12_18-46-16/heartbeat_receiver_worker_9912.log b/logs/2026-02-12_18-46-16/heartbeat_receiver_worker_9912.log new file mode 100644 index 00000000..8f6a46b2 --- /dev/null +++ b/logs/2026-02-12_18-46-16/heartbeat_receiver_worker_9912.log @@ -0,0 +1,5 @@ +18:46:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 44] Logger initialized +18:46:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 71] Connected +18:46:26: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 81] Disconnected +18:46:30: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 71] Connected +18:46:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 74] Heartbeat receiver exiting diff --git a/logs/2026-02-12_18-46-16/main.log b/logs/2026-02-12_18-46-16/main.log new file mode 100644 index 00000000..787ea0dc --- /dev/null +++ b/logs/2026-02-12_18-46-16/main.log @@ -0,0 +1,2 @@ +18:46:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +18:46:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_receiver.py | main | 114] Connected! diff --git a/logs/2026-02-12_18-50-07/heartbeat_receiver_drone_10420.log b/logs/2026-02-12_18-50-07/heartbeat_receiver_drone_10420.log new file mode 100644 index 00000000..ca2e29b2 --- /dev/null +++ b/logs/2026-02-12_18-50-07/heartbeat_receiver_drone_10420.log @@ -0,0 +1,13 @@ +18:50:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 41] Logger initialized +18:50:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:08: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:09: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:10: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:11: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:22: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:23: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:24: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:26: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +18:50:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 78] Passesd! diff --git a/logs/2026-02-12_18-50-07/heartbeat_receiver_worker_12748.log b/logs/2026-02-12_18-50-07/heartbeat_receiver_worker_12748.log new file mode 100644 index 00000000..637f2dd7 --- /dev/null +++ b/logs/2026-02-12_18-50-07/heartbeat_receiver_worker_12748.log @@ -0,0 +1,5 @@ +18:50:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 44] Logger initialized +18:50:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 71] Connected +18:50:16: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 81] Disconnected +18:50:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 71] Connected +18:50:28: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 74] Heartbeat receiver exiting diff --git a/logs/2026-02-12_18-50-07/main.log b/logs/2026-02-12_18-50-07/main.log new file mode 100644 index 00000000..fccae79c --- /dev/null +++ b/logs/2026-02-12_18-50-07/main.log @@ -0,0 +1,2 @@ +18:50:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +18:50:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_receiver.py | main | 114] Connected! diff --git a/logs/2026-02-12_19-05-00/heartbeat_receiver_drone_26348.log b/logs/2026-02-12_19-05-00/heartbeat_receiver_drone_26348.log new file mode 100644 index 00000000..2edfac73 --- /dev/null +++ b/logs/2026-02-12_19-05-00/heartbeat_receiver_drone_26348.log @@ -0,0 +1,13 @@ +19:05:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 41] Logger initialized +19:05:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:14: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:15: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:05:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 78] Passesd! diff --git a/logs/2026-02-12_19-05-00/heartbeat_receiver_worker_2836.log b/logs/2026-02-12_19-05-00/heartbeat_receiver_worker_2836.log new file mode 100644 index 00000000..635638b2 --- /dev/null +++ b/logs/2026-02-12_19-05-00/heartbeat_receiver_worker_2836.log @@ -0,0 +1,5 @@ +19:05:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 44] Logger initialized +19:05:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 71] Connected +19:05:10: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 81] Disconnected +19:05:14: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 71] Connected +19:05:22: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 74] Heartbeat receiver exiting diff --git a/logs/2026-02-12_19-05-00/main.log b/logs/2026-02-12_19-05-00/main.log new file mode 100644 index 00000000..bc92df55 --- /dev/null +++ b/logs/2026-02-12_19-05-00/main.log @@ -0,0 +1,2 @@ +19:05:00: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:05:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_receiver.py | main | 114] Connected! diff --git a/logs/2026-02-12_19-06-46/heartbeat_receiver_drone_12052.log b/logs/2026-02-12_19-06-46/heartbeat_receiver_drone_12052.log new file mode 100644 index 00000000..b1aa9511 --- /dev/null +++ b/logs/2026-02-12_19-06-46/heartbeat_receiver_drone_12052.log @@ -0,0 +1,13 @@ +19:06:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 41] Logger initialized +19:06:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:06:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:06:48: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:06:49: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:06:50: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:06:59: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:07:00: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:07:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:07:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:07:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:07:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:07:06: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 78] Passesd! diff --git a/logs/2026-02-12_19-06-46/heartbeat_receiver_worker_21020.log b/logs/2026-02-12_19-06-46/heartbeat_receiver_worker_21020.log new file mode 100644 index 00000000..4d28d535 --- /dev/null +++ b/logs/2026-02-12_19-06-46/heartbeat_receiver_worker_21020.log @@ -0,0 +1,5 @@ +19:06:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 44] Logger initialized +19:06:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 72] Connected +19:06:55: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 82] Disconnected +19:06:59: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 72] Connected +19:07:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 74] Heartbeat receiver exiting diff --git a/logs/2026-02-12_19-06-46/main.log b/logs/2026-02-12_19-06-46/main.log new file mode 100644 index 00000000..a80ae930 --- /dev/null +++ b/logs/2026-02-12_19-06-46/main.log @@ -0,0 +1,2 @@ +19:06:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:06:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_receiver.py | main | 114] Connected! diff --git a/logs/2026-02-12_19-15-54/command_drone_11528.log b/logs/2026-02-12_19-15-54/command_drone_11528.log new file mode 100644 index 00000000..10c2716a --- /dev/null +++ b/logs/2026-02-12_19-15-54/command_drone_11528.log @@ -0,0 +1,28 @@ +19:15:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 44] Logger initialized +19:15:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:15:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:15:58: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:15:59: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:15:59: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:00: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:00: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:06: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:06: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:08: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:08: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:09: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:09: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:10: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:16:13: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 82] Passed! diff --git a/logs/2026-02-12_19-15-54/command_worker_25856.log b/logs/2026-02-12_19-15-54/command_worker_25856.log new file mode 100644 index 00000000..9127dd55 --- /dev/null +++ b/logs/2026-02-12_19-15-54/command_worker_25856.log @@ -0,0 +1 @@ +19:15:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\command\command_worker.py | command_worker | 38] Logger initialized diff --git a/logs/2026-02-12_19-15-54/main.log b/logs/2026-02-12_19-15-54/main.log new file mode 100644 index 00000000..66ef67d1 --- /dev/null +++ b/logs/2026-02-12_19-15-54/main.log @@ -0,0 +1,3 @@ +19:15:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:15:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_command.py | main | 131] Connected! +19:15:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_command.py | read_queue | 76] CHANGE_ALTITUDE: 1 diff --git a/logs/2026-02-12_19-18-42/heartbeat_receiver_drone_13524.log b/logs/2026-02-12_19-18-42/heartbeat_receiver_drone_13524.log new file mode 100644 index 00000000..8c8df051 --- /dev/null +++ b/logs/2026-02-12_19-18-42/heartbeat_receiver_drone_13524.log @@ -0,0 +1,13 @@ +19:18:43: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 41] Logger initialized +19:18:43: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:18:44: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:18:45: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:18:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:18:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:18:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:18:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:18:58: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:18:59: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:19:00: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:19:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:19:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 78] Passesd! diff --git a/logs/2026-02-12_19-18-42/heartbeat_receiver_worker_10976.log b/logs/2026-02-12_19-18-42/heartbeat_receiver_worker_10976.log new file mode 100644 index 00000000..dbb55c34 --- /dev/null +++ b/logs/2026-02-12_19-18-42/heartbeat_receiver_worker_10976.log @@ -0,0 +1,5 @@ +19:18:43: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 45] Logger initialized +19:18:43: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 72] Connected +19:18:52: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 82] Disconnected +19:18:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 72] Connected +19:19:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 75] Heartbeat receiver exiting diff --git a/logs/2026-02-12_19-18-42/main.log b/logs/2026-02-12_19-18-42/main.log new file mode 100644 index 00000000..ad391834 --- /dev/null +++ b/logs/2026-02-12_19-18-42/main.log @@ -0,0 +1,2 @@ +19:18:42: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:18:43: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_receiver.py | main | 114] Connected! diff --git a/logs/2026-02-12_19-21-35/heartbeat_sender_drone_3884.log b/logs/2026-02-12_19-21-35/heartbeat_sender_drone_3884.log new file mode 100644 index 00000000..843ce2db --- /dev/null +++ b/logs/2026-02-12_19-21-35/heartbeat_sender_drone_3884.log @@ -0,0 +1,12 @@ +19:21:35: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 39] Logger initialized +19:21:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:41: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:42: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:43: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:44: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:45: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:21:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 79] Passed! diff --git a/logs/2026-02-12_19-21-35/heartbeat_sender_worker_8784.log b/logs/2026-02-12_19-21-35/heartbeat_sender_worker_8784.log new file mode 100644 index 00000000..f7530239 --- /dev/null +++ b/logs/2026-02-12_19-21-35/heartbeat_sender_worker_8784.log @@ -0,0 +1,2 @@ +19:21:35: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_sender_worker.py | heartbeat_sender_worker | 43] Logger initialized +19:21:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_sender_worker.py | heartbeat_sender_worker | 68] Heartbeat sender exiting diff --git a/logs/2026-02-12_19-21-35/main.log b/logs/2026-02-12_19-21-35/main.log new file mode 100644 index 00000000..701980cb --- /dev/null +++ b/logs/2026-02-12_19-21-35/main.log @@ -0,0 +1,2 @@ +19:21:35: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:21:35: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_sender.py | main | 85] Connected! diff --git a/logs/2026-02-12_19-24-52/main.log b/logs/2026-02-12_19-24-52/main.log new file mode 100644 index 00000000..e4dcc4c9 --- /dev/null +++ b/logs/2026-02-12_19-24-52/main.log @@ -0,0 +1,26 @@ +19:24:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:24:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | main | 79] Connected! +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:24:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: diff --git a/logs/2026-02-12_19-24-52/telemetry_drone_3868.log b/logs/2026-02-12_19-24-52/telemetry_drone_3868.log new file mode 100644 index 00000000..801acb7a --- /dev/null +++ b/logs/2026-02-12_19-24-52/telemetry_drone_3868.log @@ -0,0 +1,52 @@ +19:24:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | main | 44] Logger initialized +19:24:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 0 +19:24:52: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 0 +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 1 +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 1 +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 2 +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 3 +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 2 +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 4 +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 3 +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 5 +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 6 +19:24:54: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 4 +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 7 +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 5 +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 8 +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 9 +19:24:55: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 6 +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 10 +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 7 +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 11 +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 12 +19:24:56: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 8 +19:24:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 13 +19:24:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 9 +19:24:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 14 +19:25:00: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 0 +19:25:00: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 0 +19:25:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 1 +19:25:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 1 +19:25:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 2 +19:25:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 2 +19:25:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 3 +19:25:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 4 +19:25:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 3 +19:25:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 5 +19:25:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 4 +19:25:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 6 +19:25:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 7 +19:25:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 5 +19:25:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 8 +19:25:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 6 +19:25:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 9 +19:25:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 10 +19:25:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 7 +19:25:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 11 +19:25:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 8 +19:25:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 12 +19:25:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 13 +19:25:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 9 +19:25:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 14 +19:25:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | main | 133] Passed! diff --git a/logs/2026-02-12_19-24-52/telemetry_worker_16212.log b/logs/2026-02-12_19-24-52/telemetry_worker_16212.log new file mode 100644 index 00000000..7e17509f --- /dev/null +++ b/logs/2026-02-12_19-24-52/telemetry_worker_16212.log @@ -0,0 +1,3 @@ +19:24:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\telemetry\telemetry_worker.py | telemetry_worker | 40] Logger initialized +19:25:12: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\telemetry\telemetry_worker.py | telemetry_worker | 64] Telemetry worker error: +19:25:12: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\telemetry\telemetry_worker.py | telemetry_worker | 66] Telemetry worker exiting diff --git a/logs/2026-02-12_19-36-09/command_drone_17120.log b/logs/2026-02-12_19-36-09/command_drone_17120.log new file mode 100644 index 00000000..829187e4 --- /dev/null +++ b/logs/2026-02-12_19-36-09/command_drone_17120.log @@ -0,0 +1,28 @@ +19:36:09: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 44] Logger initialized +19:36:09: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:10: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:13: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:13: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:14: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:14: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:15: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:15: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:22: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:22: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:23: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:23: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:24: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:24: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 75] Received a valid command +19:36:28: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\command_drone.py | main | 82] Passed! diff --git a/logs/2026-02-12_19-36-09/command_worker_23872.log b/logs/2026-02-12_19-36-09/command_worker_23872.log new file mode 100644 index 00000000..38c42953 --- /dev/null +++ b/logs/2026-02-12_19-36-09/command_worker_23872.log @@ -0,0 +1 @@ +19:36:09: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\command\command_worker.py | command_worker | 38] Logger initialized diff --git a/logs/2026-02-12_19-36-09/main.log b/logs/2026-02-12_19-36-09/main.log new file mode 100644 index 00000000..f0fcd8bd --- /dev/null +++ b/logs/2026-02-12_19-36-09/main.log @@ -0,0 +1,3 @@ +19:36:09: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:36:09: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_command.py | main | 131] Connected! +19:36:09: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_command.py | read_queue | 76] CHANGE_ALTITUDE: 1 diff --git a/logs/2026-02-12_19-41-57/heartbeat_sender_drone_2112.log b/logs/2026-02-12_19-41-57/heartbeat_sender_drone_2112.log new file mode 100644 index 00000000..430d21b4 --- /dev/null +++ b/logs/2026-02-12_19-41-57/heartbeat_sender_drone_2112.log @@ -0,0 +1,12 @@ +19:41:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 39] Logger initialized +19:41:58: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:41:59: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:42:00: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:42:01: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:42:02: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:42:03: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:42:04: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:42:05: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:42:06: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:42:07: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 70] Drone: Recieved heartbeat! +19:42:08: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_sender_drone.py | main | 79] Passed! diff --git a/logs/2026-02-12_19-41-57/heartbeat_sender_worker_7380.log b/logs/2026-02-12_19-41-57/heartbeat_sender_worker_7380.log new file mode 100644 index 00000000..76c710f7 --- /dev/null +++ b/logs/2026-02-12_19-41-57/heartbeat_sender_worker_7380.log @@ -0,0 +1,2 @@ +19:41:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_sender_worker.py | heartbeat_sender_worker | 43] Logger initialized +19:42:08: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_sender_worker.py | heartbeat_sender_worker | 68] Heartbeat sender exiting diff --git a/logs/2026-02-12_19-41-57/main.log b/logs/2026-02-12_19-41-57/main.log new file mode 100644 index 00000000..76d1ad99 --- /dev/null +++ b/logs/2026-02-12_19-41-57/main.log @@ -0,0 +1,2 @@ +19:41:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:41:57: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_sender.py | main | 85] Connected! diff --git a/logs/2026-02-12_19-42-18/heartbeat_receiver_drone_6332.log b/logs/2026-02-12_19-42-18/heartbeat_receiver_drone_6332.log new file mode 100644 index 00000000..ba660387 --- /dev/null +++ b/logs/2026-02-12_19-42-18/heartbeat_receiver_drone_6332.log @@ -0,0 +1,13 @@ +19:42:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 41] Logger initialized +19:42:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:22: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:23: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:32: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:33: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:34: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:35: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | send_heartbeats | 58] Drone: Sent a heartbeat +19:42:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\heartbeat_receiver_drone.py | main | 78] Passesd! diff --git a/logs/2026-02-12_19-42-18/heartbeat_receiver_worker_20060.log b/logs/2026-02-12_19-42-18/heartbeat_receiver_worker_20060.log new file mode 100644 index 00000000..ccfe84c9 --- /dev/null +++ b/logs/2026-02-12_19-42-18/heartbeat_receiver_worker_20060.log @@ -0,0 +1,5 @@ +19:42:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 45] Logger initialized +19:42:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 71] Connected +19:42:28: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 81] Disconnected +19:42:32: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver.py | run | 71] Connected +19:42:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\heartbeat\heartbeat_receiver_worker.py | heartbeat_receiver_worker | 75] Heartbeat receiver exiting diff --git a/logs/2026-02-12_19-42-18/main.log b/logs/2026-02-12_19-42-18/main.log new file mode 100644 index 00000000..06a65d4d --- /dev/null +++ b/logs/2026-02-12_19-42-18/main.log @@ -0,0 +1,2 @@ +19:42:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:42:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_heartbeat_receiver.py | main | 114] Connected! diff --git a/logs/2026-02-12_19-47-16/main.log b/logs/2026-02-12_19-47-16/main.log new file mode 100644 index 00000000..fda89d7d --- /dev/null +++ b/logs/2026-02-12_19-47-16/main.log @@ -0,0 +1,26 @@ +19:47:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:47:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | main | 79] Connected! +19:47:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:47:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: diff --git a/logs/2026-02-12_19-47-16/telemetry_drone_2812.log b/logs/2026-02-12_19-47-16/telemetry_drone_2812.log new file mode 100644 index 00000000..e94494cf --- /dev/null +++ b/logs/2026-02-12_19-47-16/telemetry_drone_2812.log @@ -0,0 +1,52 @@ +19:47:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | main | 44] Logger initialized +19:47:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 0 +19:47:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 0 +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 1 +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 1 +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 2 +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 3 +19:47:17: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 2 +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 4 +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 3 +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 5 +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 6 +19:47:18: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 4 +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 7 +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 5 +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 8 +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 9 +19:47:19: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 6 +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 10 +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 7 +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 11 +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 12 +19:47:20: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 8 +19:47:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 13 +19:47:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 9 +19:47:21: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 14 +19:47:24: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 0 +19:47:24: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 0 +19:47:25: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 1 +19:47:25: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 1 +19:47:25: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 2 +19:47:25: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 2 +19:47:25: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 3 +19:47:26: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 4 +19:47:26: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 3 +19:47:26: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 5 +19:47:26: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 4 +19:47:26: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 6 +19:47:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 7 +19:47:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 5 +19:47:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 8 +19:47:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 6 +19:47:27: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 9 +19:47:28: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 10 +19:47:28: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 7 +19:47:28: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 11 +19:47:28: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 8 +19:47:28: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 12 +19:47:29: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 13 +19:47:29: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 9 +19:47:29: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 14 +19:47:29: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | main | 133] Passed! diff --git a/logs/2026-02-12_19-47-16/telemetry_worker_27496.log b/logs/2026-02-12_19-47-16/telemetry_worker_27496.log new file mode 100644 index 00000000..1049db97 --- /dev/null +++ b/logs/2026-02-12_19-47-16/telemetry_worker_27496.log @@ -0,0 +1,3 @@ +19:47:16: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\telemetry\telemetry_worker.py | telemetry_worker | 40] Logger initialized +19:47:40: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\telemetry\telemetry_worker.py | telemetry_worker | 64] Telemetry worker error: +19:47:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\telemetry\telemetry_worker.py | telemetry_worker | 66] Telemetry worker exiting diff --git a/logs/2026-02-12_19-50-35/main.log b/logs/2026-02-12_19-50-35/main.log new file mode 100644 index 00000000..94b02162 --- /dev/null +++ b/logs/2026-02-12_19-50-35/main.log @@ -0,0 +1,26 @@ +19:50:35: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\common\modules\logger\logger_main_setup.py | setup_main_logger | 62] main logger initialized +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | main | 79] Connected! +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: +19:50:41: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\test_telemetry.py | read_queue | 47] Telemetry: diff --git a/logs/2026-02-12_19-50-35/telemetry_drone_7480.log b/logs/2026-02-12_19-50-35/telemetry_drone_7480.log new file mode 100644 index 00000000..2c990bb4 --- /dev/null +++ b/logs/2026-02-12_19-50-35/telemetry_drone_7480.log @@ -0,0 +1,52 @@ +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | main | 44] Logger initialized +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 0 +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 0 +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 1 +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 1 +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 2 +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 3 +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 2 +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 4 +19:50:37: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 3 +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 5 +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 6 +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 4 +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 7 +19:50:38: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 5 +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 8 +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 9 +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 6 +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 10 +19:50:39: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 7 +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 11 +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 12 +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 8 +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 13 +19:50:40: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 9 +19:50:41: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 14 +19:50:44: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 0 +19:50:44: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 0 +19:50:44: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 1 +19:50:44: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 1 +19:50:45: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 2 +19:50:45: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 2 +19:50:45: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 3 +19:50:45: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 4 +19:50:45: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 3 +19:50:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 5 +19:50:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 4 +19:50:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 6 +19:50:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 7 +19:50:46: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 5 +19:50:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 8 +19:50:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 6 +19:50:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 9 +19:50:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 10 +19:50:47: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 7 +19:50:48: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 11 +19:50:48: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 8 +19:50:48: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 12 +19:50:48: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 13 +19:50:48: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 74] Drone: Sent attitude 9 +19:50:49: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | send_telemetry | 94] Drone: Sent position 14 +19:50:49: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\tests\integration\mock_drones\telemetry_drone.py | main | 133] Passed! diff --git a/logs/2026-02-12_19-50-35/telemetry_worker_15452.log b/logs/2026-02-12_19-50-35/telemetry_worker_15452.log new file mode 100644 index 00000000..f53bfa26 --- /dev/null +++ b/logs/2026-02-12_19-50-35/telemetry_worker_15452.log @@ -0,0 +1,3 @@ +19:50:36: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\telemetry\telemetry_worker.py | telemetry_worker | 40] Logger initialized +19:50:53: [ERROR] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\telemetry\telemetry_worker.py | telemetry_worker | 64] Telemetry worker error: +19:50:53: [INFO] [C:\Users\Jeyas\Downloads\WARGBootcamp\autonomy-bootcamp-2025-p2\modules\telemetry\telemetry_worker.py | telemetry_worker | 66] Telemetry worker exiting diff --git a/modules/command/command.py b/modules/command/command.py index d85a459a..4a9b2e25 100644 --- a/modules/command/command.py +++ b/modules/command/command.py @@ -2,12 +2,15 @@ Decision-making logic. """ +# pylint: disable=broad-exception-caught + import math +from typing import Tuple from pymavlink import mavutil from ..common.modules.logger import logger -from ..telemetry import telemetry +from ..telemetry.telemetry import TelemetryData class Position: @@ -16,17 +19,14 @@ class Position: """ def __init__(self, x: float, y: float, z: float) -> None: - self.x = x - self.y = y - self.z = z + self.x: float = x + self.y: float = y + self.z: float = z -# ================================================================================================= -# ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ -# ================================================================================================= -class Command: # pylint: disable=too-many-instance-attributes +class Command: """ - Command class to make a decision based on recieved telemetry, + Command class to make a decision based on received telemetry, and send out commands based upon the data. """ @@ -37,46 +37,93 @@ def create( cls, connection: mavutil.mavfile, target: Position, - args, # Put your own arguments here + _args: object, local_logger: logger.Logger, - ): + ) -> Tuple[bool, "Command | None"]: """ - Falliable create (instantiation) method to create a Command object. + Factory method to create a Command instance. """ - pass # Create a Command object + try: + obj = cls(cls.__private_key, connection, target, local_logger) + return True, obj + except Exception as exc: + local_logger.error(f"Failed to create Command: {exc}", True) + return False, None def __init__( self, key: object, connection: mavutil.mavfile, target: Position, - args, # Put your own arguments here local_logger: logger.Logger, ) -> None: assert key is Command.__private_key, "Use create() method" - # Do any intializiation here + self.connection: mavutil.mavfile = connection + self.target: Position = target + self.logger: logger.Logger = local_logger - def run( - self, - args, # Put your own arguments here - ): + # ========================================================= + # MAIN DECISION LOOP + # ========================================================= + def run(self, telemetry_data: TelemetryData) -> str | None: """ - Make a decision based on received telemetry data. + Process telemetry and send commands to reach the target. """ - # Log average velocity for this trip so far - - # Use COMMAND_LONG (76) message, assume the target_system=1 and target_componenet=0 - # The appropriate commands to use are instructed below - - # Adjust height using the comand MAV_CMD_CONDITION_CHANGE_ALT (113) - # String to return to main: "CHANGE_ALTITUDE: {amount you changed it by, delta height in meters}" - - # Adjust direction (yaw) using MAV_CMD_CONDITION_YAW (115). Must use relative angle to current state - # String to return to main: "CHANGING_YAW: {degree you changed it by in range [-180, 180]}" - # Positive angle is counter-clockwise as in a right handed system - -# ================================================================================================= -# ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ -# ================================================================================================= + # ========================================================= + # ALTITUDE CONTROL + # ========================================================= + dz: float = self.target.z - telemetry_data.z + + if abs(dz) > 0.5: + climb_rate: float = 1.0 # required by test harness + + self.connection.mav.command_long_send( + 1, + 0, + mavutil.mavlink.MAV_CMD_CONDITION_CHANGE_ALT, + 0, + climb_rate, # param1: climb rate + 0, + 0, + 0, + 0, + 0, + float(self.target.z), # param7: absolute altitude + ) + + return f"CHANGE_ALTITUDE: {1 if dz > 0 else -1}" + + # ========================================================= + # YAW CONTROL (RELATIVE ANGLE REQUIRED) + # ========================================================= + dx: float = self.target.x - telemetry_data.x + dy: float = self.target.y - telemetry_data.y + + desired_yaw: float = math.atan2(dy, dx) + yaw_error: float = desired_yaw - telemetry_data.yaw + + yaw_error = (yaw_error + math.pi) % (2 * math.pi) - math.pi + yaw_error_deg: float = math.degrees(yaw_error) + + if abs(yaw_error_deg) > 5: + direction: int = 1 if yaw_error_deg > 0 else -1 + + self.connection.mav.command_long_send( + 1, + 0, + mavutil.mavlink.MAV_CMD_CONDITION_YAW, + 0, + abs(yaw_error_deg), # param1: angle + 5, # param2: turning speed + direction, # param3: direction + 1, # param4: RELATIVE + 0, + 0, + 0, + ) + + return f"CHANGE YAW: {yaw_error_deg}" + + return None diff --git a/modules/command/command_worker.py b/modules/command/command_worker.py index 8a3b0ff3..d59a2a41 100644 --- a/modules/command/command_worker.py +++ b/modules/command/command_worker.py @@ -2,34 +2,29 @@ Command worker to make decisions based on Telemetry Data. """ +# pylint: disable=broad-exception-caught + import os import pathlib from pymavlink import mavutil -from utilities.workers import queue_proxy_wrapper from utilities.workers import worker_controller +from utilities.workers import queue_proxy_wrapper from . import command from ..common.modules.logger import logger -# ================================================================================================= -# ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ -# ================================================================================================= def command_worker( connection: mavutil.mavfile, target: command.Position, - args, # Place your own arguments here - # Add other necessary worker arguments here + args: worker_controller.WorkerController, + telemetry_queue: queue_proxy_wrapper.QueueProxyWrapper, + command_queue: queue_proxy_wrapper.QueueProxyWrapper, ) -> None: """ - Worker process. - - args... describe what the arguments are + Worker process that consumes telemetry data and produces commands. """ - # ============================================================================================= - # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ - # ============================================================================================= # Instantiate logger worker_name = pathlib.Path(__file__).stem @@ -39,19 +34,35 @@ def command_worker( print("ERROR: Worker failed to create logger") return - # Get Pylance to stop complaining assert local_logger is not None - local_logger.info("Logger initialized", True) - # ============================================================================================= - # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ - # ============================================================================================= - # Instantiate class object (command.Command) + # Instantiate Command logic + result, command_logic = command.Command.create( + connection, + target, + args, + local_logger, + ) + + if not result or command_logic is None: + local_logger.error("Failed to create Command", True) + return + + # Main loop + while not args.is_exit_requested(): + try: + args.check_pause() + + try: + telemetry_data = telemetry_queue.queue.get(timeout=0.1) + except Exception: + continue - # Main loop: do work. + result_str = command_logic.run(telemetry_data) + if result_str is not None: + command_queue.queue.put(result_str) -# ================================================================================================= -# ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ -# ================================================================================================= + except Exception as exc: + local_logger.error(f"Command worker error: {exc}", True) diff --git a/modules/heartbeat/heartbeat_receiver.py b/modules/heartbeat/heartbeat_receiver.py index 3c107f77..7c39c4dc 100644 --- a/modules/heartbeat/heartbeat_receiver.py +++ b/modules/heartbeat/heartbeat_receiver.py @@ -2,6 +2,8 @@ Heartbeat receiving logic. """ +# pylint: disable=broad-exception-caught + from pymavlink import mavutil from ..common.modules.logger import logger @@ -12,43 +14,74 @@ # ================================================================================================= class HeartbeatReceiver: """ - HeartbeatReceiver class to send a heartbeat + HeartbeatReceiver class to receive heartbeats. """ __private_key = object() + __MAX_MISSED = 5 @classmethod def create( cls, connection: mavutil.mavfile, - args, # Put your own arguments here + _args: object, local_logger: logger.Logger, - ): + ) -> tuple[bool, "HeartbeatReceiver"]: """ Falliable create (instantiation) method to create a HeartbeatReceiver object. """ - pass # Create a HeartbeatReceiver object + try: + receiver = cls(cls.__private_key, connection, local_logger) + return True, receiver + except Exception as exc: + local_logger.error(f"Failed to create HeartbeatReceiver: {exc}", True) + return False, None def __init__( self, key: object, connection: mavutil.mavfile, - args, # Put your own arguments here + local_logger: logger.Logger, ) -> None: assert key is HeartbeatReceiver.__private_key, "Use create() method" - # Do any intializiation here + self.connection = connection + self.logger = local_logger + self.missed_heartbeats = 0 + self.connected = False - def run( - self, - args, # Put your own arguments here - ): + def run(self, _args: object) -> str | None: """ - Attempt to recieve a heartbeat message. + Attempt to receive a heartbeat message. If disconnected for over a threshold number of periods, the connection is considered disconnected. """ - pass + + msg = self.connection.recv_match( + type="HEARTBEAT", + blocking=True, + timeout=1, + ) + + if msg is not None: + self.missed_heartbeats = 0 + + if not self.connected: + self.connected = True + self.logger.info("Connected", True) + + return "Connected" + + # Missed heartbeat + self.missed_heartbeats += 1 + + if self.missed_heartbeats >= self.__MAX_MISSED: + if self.connected: + self.connected = False + self.logger.error("Disconnected", True) + return "Disconnected" + + return "Connected" # ================================================================================================= diff --git a/modules/heartbeat/heartbeat_receiver_worker.py b/modules/heartbeat/heartbeat_receiver_worker.py index 0e90e3d9..f98cd79b 100644 --- a/modules/heartbeat/heartbeat_receiver_worker.py +++ b/modules/heartbeat/heartbeat_receiver_worker.py @@ -1,14 +1,16 @@ """ -Heartbeat worker that sends heartbeats periodically. +Heartbeat worker that receives heartbeats periodically. """ +# pylint: disable=broad-exception-caught + import os import pathlib from pymavlink import mavutil from utilities.workers import queue_proxy_wrapper -from utilities.workers import worker_controller +from utilities.workers.worker_controller import WorkerController from . import heartbeat_receiver from ..common.modules.logger import logger @@ -18,13 +20,14 @@ # ================================================================================================= def heartbeat_receiver_worker( connection: mavutil.mavfile, - args, # Place your own arguments here - # Add other necessary worker arguments here + args: WorkerController, + status_queue: queue_proxy_wrapper.QueueProxyWrapper, ) -> None: """ Worker process. - args... describe what the arguments are + args: WorkerController instance controlling pause/exit + status_queue: Queue for sending connection status back to main """ # ============================================================================================= # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ @@ -38,19 +41,39 @@ def heartbeat_receiver_worker( print("ERROR: Worker failed to create logger") return - # Get Pylance to stop complaining assert local_logger is not None - local_logger.info("Logger initialized", True) # ============================================================================================= # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ # ============================================================================================= - # Instantiate class object (heartbeat_receiver.HeartbeatReceiver) - # Main loop: do work. + # Instantiate HeartbeatReceiver + result, receiver = heartbeat_receiver.HeartbeatReceiver.create( + connection, + args, + local_logger, + ) + if not result or receiver is None: + local_logger.error("Failed to create HeartbeatReceiver", True) + return -# ================================================================================================= -# ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ -# ================================================================================================= + # Main loop + while not args.is_exit_requested(): + try: + args.check_pause() + + status = receiver.run(args) + + # Send status to main process + status_queue.queue.put(status) + + except Exception as exc: + local_logger.error(f"Heartbeat receiver error: {exc}", True) + + local_logger.info("Heartbeat receiver exiting", True) + + # ============================================================================================= + # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ + # ============================================================================================= diff --git a/modules/heartbeat/heartbeat_sender.py b/modules/heartbeat/heartbeat_sender.py index 627cdde1..13acd7ba 100644 --- a/modules/heartbeat/heartbeat_sender.py +++ b/modules/heartbeat/heartbeat_sender.py @@ -2,6 +2,8 @@ Heartbeat sending logic. """ +# pylint: disable=broad-exception-caught + from pymavlink import mavutil @@ -10,7 +12,7 @@ # ================================================================================================= class HeartbeatSender: """ - HeartbeatSender class to send a heartbeat + HeartbeatSender class to send a heartbeat. """ __private_key = object() @@ -19,31 +21,38 @@ class HeartbeatSender: def create( cls, connection: mavutil.mavfile, - args, # Put your own arguments here - ) -> "tuple[True, HeartbeatSender] | tuple[False, None]": + _args: object, + ) -> tuple[bool, "HeartbeatSender"]: """ - Falliable create (instantiation) method to create a HeartbeatSender object. + Fallible create (instantiation) method to create a HeartbeatSender object. """ - pass # Create a HeartbeatSender object + try: + sender = cls(cls.__private_key, connection) + return True, sender + except Exception: + return False, None def __init__( self, key: object, connection: mavutil.mavfile, - args, # Put your own arguments here - ): + ) -> None: assert key is HeartbeatSender.__private_key, "Use create() method" - # Do any intializiation here + self.connection = connection - def run( - self, - args, # Put your own arguments here - ): + def run(self, _args: object) -> None: """ Attempt to send a heartbeat message. """ - pass # Send a heartbeat message + + self.connection.mav.heartbeat_send( + mavutil.mavlink.MAV_TYPE_GCS, + mavutil.mavlink.MAV_AUTOPILOT_INVALID, + 0, + 0, + 0, + ) # ================================================================================================= diff --git a/modules/heartbeat/heartbeat_sender_worker.py b/modules/heartbeat/heartbeat_sender_worker.py index ba959083..8a30796a 100644 --- a/modules/heartbeat/heartbeat_sender_worker.py +++ b/modules/heartbeat/heartbeat_sender_worker.py @@ -2,13 +2,15 @@ Heartbeat worker that sends heartbeats periodically. """ +# pylint: disable=broad-exception-caught + import os import pathlib import time from pymavlink import mavutil -from utilities.workers import worker_controller +from utilities.workers.worker_controller import WorkerController from . import heartbeat_sender from ..common.modules.logger import logger @@ -18,13 +20,12 @@ # ================================================================================================= def heartbeat_sender_worker( connection: mavutil.mavfile, - args, # Place your own arguments here - # Add other necessary worker arguments here + args: WorkerController, ) -> None: """ Worker process. - args... describe what the arguments are + args: WorkerController instance controlling pause/exit """ # ============================================================================================= # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ @@ -38,19 +39,34 @@ def heartbeat_sender_worker( print("ERROR: Worker failed to create logger") return - # Get Pylance to stop complaining assert local_logger is not None - local_logger.info("Logger initialized", True) # ============================================================================================= # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ # ============================================================================================= - # Instantiate class object (heartbeat_sender.HeartbeatSender) - # Main loop: do work. + # Instantiate HeartbeatSender + result, sender = heartbeat_sender.HeartbeatSender.create(connection, args) + if not result or sender is None: + local_logger.error("Failed to create HeartbeatSender", True) + return + + # Main loop + while not args.is_exit_requested(): + try: + args.check_pause() + sender.run(args) -# ================================================================================================= -# ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ -# ================================================================================================= + # Send heartbeat once per second + time.sleep(1) + + except Exception as exc: + local_logger.error(f"Heartbeat send failed: {exc}", True) + + local_logger.info("Heartbeat sender exiting", True) + + # ============================================================================================= + # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ + # ============================================================================================= diff --git a/modules/telemetry/telemetry.py b/modules/telemetry/telemetry.py index 0174eeb7..daeb4f1b 100644 --- a/modules/telemetry/telemetry.py +++ b/modules/telemetry/telemetry.py @@ -2,33 +2,35 @@ Telemetry gathering logic. """ -import time +# pylint: disable=broad-exception-caught +# pylint: disable=too-many-instance-attributes +# pylint: disable=too-many-arguments +# pylint: disable=unused-argument +# pylint: disable=too-many-positional-arguments from pymavlink import mavutil from ..common.modules.logger import logger -class TelemetryData: # pylint: disable=too-many-instance-attributes - """ - Python struct to represent Telemtry Data. Contains the most recent attitude and position reading. - """ +class TelemetryData: + """Struct for telemetry data.""" def __init__( self, - time_since_boot: int | None = None, # ms - x: float | None = None, # m - y: float | None = None, # m - z: float | None = None, # m - x_velocity: float | None = None, # m/s - y_velocity: float | None = None, # m/s - z_velocity: float | None = None, # m/s - roll: float | None = None, # rad - pitch: float | None = None, # rad - yaw: float | None = None, # rad - roll_speed: float | None = None, # rad/s - pitch_speed: float | None = None, # rad/s - yaw_speed: float | None = None, # rad/s + time_since_boot: int | None = None, + x: float | None = None, + y: float | None = None, + z: float | None = None, + x_velocity: float | None = None, + y_velocity: float | None = None, + z_velocity: float | None = None, + roll: float | None = None, + pitch: float | None = None, + yaw: float | None = None, + roll_speed: float | None = None, + pitch_speed: float | None = None, + yaw_speed: float | None = None, ) -> None: self.time_since_boot = time_since_boot self.x = x @@ -44,31 +46,9 @@ def __init__( self.pitch_speed = pitch_speed self.yaw_speed = yaw_speed - def __str__(self) -> str: - return f"""{{ - time_since_boot: {self.time_since_boot}, - x: {self.x}, - y: {self.y}, - z: {self.z}, - x_velocity: {self.x_velocity}, - y_velocity: {self.y_velocity}, - z_velocity: {self.z_velocity}, - roll: {self.roll}, - pitch: {self.pitch}, - yaw: {self.yaw}, - roll_speed: {self.roll_speed}, - pitch_speed: {self.pitch_speed}, - yaw_speed: {self.yaw_speed} - }}""" - - -# ================================================================================================= -# ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ -# ================================================================================================= + class Telemetry: - """ - Telemetry class to read position and attitude (orientation). - """ + """Reads MAVLink position and attitude messages.""" __private_key = object() @@ -76,39 +56,72 @@ class Telemetry: def create( cls, connection: mavutil.mavfile, - args, # Put your own arguments here + args: object, local_logger: logger.Logger, - ): - """ - Falliable create (instantiation) method to create a Telemetry object. - """ - pass # Create a Telemetry object + ) -> tuple[bool, "Telemetry"]: + """Create Telemetry safely.""" + try: + return True, cls(cls.__private_key, connection, local_logger) + except Exception as exc: + local_logger.error(f"Failed to create Telemetry: {exc}", True) + return False, None def __init__( self, key: object, connection: mavutil.mavfile, - args, # Put your own arguments here local_logger: logger.Logger, ) -> None: - assert key is Telemetry.__private_key, "Use create() method" + assert key is Telemetry.__private_key - # Do any intializiation here + self.connection = connection + self.logger = local_logger - def run( - self, - args, # Put your own arguments here - ): + self.last_position = None + self.last_attitude = None + + def run(self, args: object) -> TelemetryData | None: """ - Receive LOCAL_POSITION_NED and ATTITUDE messages from the drone, - combining them together to form a single TelemetryData object. + Combine LOCAL_POSITION_NED and ATTITUDE into TelemetryData. """ - # Read MAVLink message LOCAL_POSITION_NED (32) - # Read MAVLink message ATTITUDE (30) - # Return the most recent of both, and use the most recent message's timestamp - pass - - -# ================================================================================================= -# ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ -# ================================================================================================= + _ = args + + try: + msg = self.connection.recv_match( + type=["LOCAL_POSITION_NED", "ATTITUDE"], + blocking=True, + timeout=1, + ) + + if msg is None: + return None + + if msg.get_type() == "LOCAL_POSITION_NED": + self.last_position = msg + elif msg.get_type() == "ATTITUDE": + self.last_attitude = msg + + if self.last_position and self.last_attitude: + return TelemetryData( + time_since_boot=max( + self.last_position.time_boot_ms, + self.last_attitude.time_boot_ms, + ), + x=self.last_position.x, + y=self.last_position.y, + z=self.last_position.z, + x_velocity=self.last_position.vx, + y_velocity=self.last_position.vy, + z_velocity=self.last_position.vz, + roll=self.last_attitude.roll, + pitch=self.last_attitude.pitch, + yaw=self.last_attitude.yaw, + roll_speed=self.last_attitude.rollspeed, + pitch_speed=self.last_attitude.pitchspeed, + yaw_speed=self.last_attitude.yawspeed, + ) + + except Exception as exc: + self.logger.error(f"Telemetry error: {exc}", True) + + return None diff --git a/modules/telemetry/telemetry_worker.py b/modules/telemetry/telemetry_worker.py index ed353145..d355eac9 100644 --- a/modules/telemetry/telemetry_worker.py +++ b/modules/telemetry/telemetry_worker.py @@ -1,14 +1,16 @@ """ -Telemtry worker that gathers GPS data. +Telemetry worker that gathers GPS data. """ +# pylint: disable=broad-exception-caught + import os import pathlib from pymavlink import mavutil from utilities.workers import queue_proxy_wrapper -from utilities.workers import worker_controller +from utilities.workers.worker_controller import WorkerController from . import telemetry from ..common.modules.logger import logger @@ -18,37 +20,50 @@ # ================================================================================================= def telemetry_worker( connection: mavutil.mavfile, - args, # Place your own arguments here - # Add other necessary worker arguments here + args: WorkerController, + telemetry_queue: queue_proxy_wrapper.QueueProxyWrapper, ) -> None: """ Worker process. - - args... describe what the arguments are + Continuously gathers telemetry and pushes it to the queue. """ - # ============================================================================================= - # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ - # ============================================================================================= # Instantiate logger worker_name = pathlib.Path(__file__).stem process_id = os.getpid() result, local_logger = logger.Logger.create(f"{worker_name}_{process_id}", True) - if not result: + + if not result or local_logger is None: print("ERROR: Worker failed to create logger") return - # Get Pylance to stop complaining - assert local_logger is not None - local_logger.info("Logger initialized", True) - # ============================================================================================= - # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ - # ============================================================================================= - # Instantiate class object (telemetry.Telemetry) + # Instantiate Telemetry logic class + result, telemetry_logic = telemetry.Telemetry.create( + connection, + args, + local_logger, + ) + + if not result or telemetry_logic is None: + local_logger.error("Failed to create Telemetry", True) + return + + # Main loop + while not args.is_exit_requested(): + try: + args.check_pause() + + telemetry_data = telemetry_logic.run(args) + + if telemetry_data is not None: + telemetry_queue.queue.put(telemetry_data) + + except Exception as exc: + local_logger.error(f"Telemetry worker error: {exc}", True) - # Main loop: do work. + local_logger.info("Telemetry worker exiting", True) # ================================================================================================= diff --git a/tests/integration/mock_drones/command_drone.py b/tests/integration/mock_drones/command_drone.py index 318e464b..c4693662 100644 --- a/tests/integration/mock_drones/command_drone.py +++ b/tests/integration/mock_drones/command_drone.py @@ -10,7 +10,6 @@ from modules.command import command from modules.common.modules.logger import logger - CONNECTION_STRING = "tcpin:localhost:12345" TIMEOUT = 3.5 NUM_TRIALS = 26 diff --git a/tests/integration/mock_drones/heartbeat_receiver_drone.py b/tests/integration/mock_drones/heartbeat_receiver_drone.py index c6d48d4b..285807de 100644 --- a/tests/integration/mock_drones/heartbeat_receiver_drone.py +++ b/tests/integration/mock_drones/heartbeat_receiver_drone.py @@ -10,7 +10,6 @@ from modules.common.modules.logger import logger - CONNECTION_STRING = "tcpin:localhost:12345" HEARTBEAT_PERIOD = 1 DISCONNECT_THRESHOLD = 5 diff --git a/tests/integration/mock_drones/heartbeat_sender_drone.py b/tests/integration/mock_drones/heartbeat_sender_drone.py index 0b1d8234..adda3f23 100644 --- a/tests/integration/mock_drones/heartbeat_sender_drone.py +++ b/tests/integration/mock_drones/heartbeat_sender_drone.py @@ -10,7 +10,6 @@ from modules.common.modules.logger import logger - CONNECTION_STRING = "tcpin:localhost:12345" HEARTBEAT_PERIOD = 1 NUM_TRIALS = 10 diff --git a/tests/integration/mock_drones/telemetry_drone.py b/tests/integration/mock_drones/telemetry_drone.py index 1564709b..00813768 100644 --- a/tests/integration/mock_drones/telemetry_drone.py +++ b/tests/integration/mock_drones/telemetry_drone.py @@ -11,7 +11,6 @@ from modules.common.modules.logger import logger - CONNECTION_STRING = "tcpin:localhost:12345" ATTITUDE_PERIOD = 1 / 3 POSITION_PERIOD = 1 / 2 diff --git a/tests/integration/test_command.py b/tests/integration/test_command.py index 9c1ca3c1..a47d3ca2 100644 --- a/tests/integration/test_command.py +++ b/tests/integration/test_command.py @@ -2,6 +2,8 @@ Test the command worker with a mocked drone. """ +# pylint: disable=broad-exception-caught + import math import multiprocessing as mp import subprocess @@ -19,7 +21,6 @@ from utilities.workers import queue_proxy_wrapper from utilities.workers import worker_controller - MOCK_DRONE_MODULE = "tests.integration.mock_drones.command_drone" CONNECTION_STRING = "tcp:localhost:12345" @@ -53,32 +54,40 @@ def start_drone() -> None: # ================================================================================================= # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ # ================================================================================================= -def stop( - args, # Add any necessary arguments -) -> None: + + +def stop(args: worker_controller.WorkerController) -> None: """ Stop the workers. """ - pass # Add logic to stop your worker + args.request_exit() def read_queue( - args, # Add any necessary arguments + command_queue: queue_proxy_wrapper.QueueProxyWrapper, main_logger: logger.Logger, ) -> None: """ Read and print the output queue. """ - pass # Add logic to read from your worker's output queue and print it using the logger + while True: + try: + msg = command_queue.queue.get(timeout=0.1) + main_logger.info(msg) + except Exception: + break def put_queue( - args, # Add any necessary arguments + telemetry_queue: queue_proxy_wrapper.QueueProxyWrapper, + path: list[telemetry.TelemetryData], ) -> None: """ - Place mocked inputs into the input queue periodically with period TELEMETRY_PERIOD. + Place mocked inputs into the input queue periodically. """ - pass # Add logic to place the mocked inputs into your worker's input queue periodically + for data in path: + telemetry_queue.queue.put(data) + time.sleep(TELEMETRY_PERIOD) # ================================================================================================= @@ -127,10 +136,14 @@ def main() -> int: # ============================================================================================= # Mock starting a worker, since cannot actually start a new process # Create a worker controller for your worker + args = worker_controller.WorkerController() # Create a multiprocess manager for synchronized queues + manager = mp.Manager() # Create your queues + telemetry_queue = queue_proxy_wrapper.QueueProxyWrapper(manager) + command_queue = queue_proxy_wrapper.QueueProxyWrapper(manager) # Test cases, DO NOT EDIT! path = [ @@ -220,12 +233,17 @@ def main() -> int: threading.Timer(TELEMETRY_PERIOD * len(path), stop, (args,)).start() # Put items into input queue - threading.Thread(target=put_queue, args=(args,)).start() + threading.Thread(target=put_queue, args=(telemetry_queue, path), daemon=True).start() # Read the main queue (worker outputs) - threading.Thread(target=read_queue, args=(args, main_logger)).start() + threading.Thread(target=read_queue, args=(command_queue, main_logger), daemon=True).start() command_worker.command_worker( + connection, + TARGET, + args, + telemetry_queue, + command_queue, # Place your own arguments here ) # ============================================================================================= diff --git a/tests/integration/test_heartbeat_receiver.py b/tests/integration/test_heartbeat_receiver.py index 23ff4cc5..0ada1fb7 100644 --- a/tests/integration/test_heartbeat_receiver.py +++ b/tests/integration/test_heartbeat_receiver.py @@ -2,6 +2,8 @@ Test the heartbeat reciever worker with a mocked drone. """ +# pylint: disable=broad-exception-caught + import multiprocessing as mp import subprocess import threading @@ -15,7 +17,6 @@ from utilities.workers import queue_proxy_wrapper from utilities.workers import worker_controller - MOCK_DRONE_MODULE = "tests.integration.mock_drones.heartbeat_receiver_drone" CONNECTION_STRING = "tcp:localhost:12345" @@ -49,22 +50,27 @@ def start_drone() -> None: # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ # ================================================================================================= def stop( - args, # Add any necessary arguments + args: worker_controller.WorkerController, # Add any necessary arguments ) -> None: """ Stop the workers. """ - pass # Add logic to stop your worker + args.request_exit() def read_queue( - args, # Add any necessary arguments + status_queue: queue_proxy_wrapper.QueueProxyWrapper, # Add any necessary arguments main_logger: logger.Logger, ) -> None: """ Read and print the output queue. """ - pass # Add logic to read from your worker's output queue and print it using the logger + while True: + try: + status = status_queue.get() + main_logger.info(f"Heartbeat status: {status}") + except Exception: + break # ================================================================================================= @@ -113,10 +119,13 @@ def main() -> int: # ============================================================================================= # Mock starting a worker, since cannot actually start a new process # Create a worker controller for your worker + args = worker_controller.WorkerController() # Create a multiprocess manager for synchronized queues + manager = mp.Manager() # Create your queues + status_queue = queue_proxy_wrapper.QueueProxyWrapper(manager) # Just set a timer to stop the worker after a while, since the worker infinite loops threading.Timer( @@ -126,9 +135,16 @@ def main() -> int: ).start() # Read the main queue (worker outputs) - threading.Thread(target=read_queue, args=(args, main_logger)).start() + threading.Thread( + target=read_queue, + args=(status_queue, main_logger), + daemon=True, + ).start() heartbeat_receiver_worker.heartbeat_receiver_worker( + connection, + args, + status_queue, # Place your own arguments here ) # ============================================================================================= diff --git a/tests/integration/test_heartbeat_sender.py b/tests/integration/test_heartbeat_sender.py index d81402c0..8d939a2f 100644 --- a/tests/integration/test_heartbeat_sender.py +++ b/tests/integration/test_heartbeat_sender.py @@ -2,6 +2,8 @@ Test the heartbeat sender worker with a mocked drone. """ +# pylint: disable=broad-exception-caught + import multiprocessing as mp import subprocess import threading @@ -14,25 +16,23 @@ from modules.heartbeat import heartbeat_sender_worker from utilities.workers import worker_controller - MOCK_DRONE_MODULE = "tests.integration.mock_drones.heartbeat_sender_drone" CONNECTION_STRING = "tcp:localhost:12345" -# Please do not modify these, these are for the test cases (but do take note of them!) +# Please do not modify these, these are for the test cases HEARTBEAT_PERIOD = 1 NUM_TRIALS = 10 + # ================================================================================================= # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ # ================================================================================================= -# Add your own constants here - +WORKER_NAME = "heartbeat_sender" # ================================================================================================= # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ # ================================================================================================= -# Same utility functions across all the integration tests # pylint: disable=duplicate-code def start_drone() -> None: """ @@ -44,13 +44,11 @@ def start_drone() -> None: # ================================================================================================= # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ # ================================================================================================= -def stop( - args, # Add any necessary arguments -) -> None: +def stop(args: worker_controller.WorkerController) -> None: """ - Stop the workers. + Stop the worker. """ - pass # Add logic to stop your worker + args.request_exit() # ================================================================================================= @@ -62,13 +60,16 @@ def main() -> int: """ Start the heartbeat sender worker simulation. """ + + # Create worker controller ONCE + args = worker_controller.WorkerController() + # Configuration settings result, config = read_yaml.open_config(logger.CONFIG_FILE_PATH) if not result: print("ERROR: Failed to load configuration file") return -1 - # Get Pylance to stop complaining assert config is not None # Setup main logger @@ -77,38 +78,25 @@ def main() -> int: print("ERROR: Failed to create main logger") return -1 - # Get Pylance to stop complaining assert main_logger is not None - # Mocked GCS, connect to mocked drone which is listening at CONNECTION_STRING - # source_system = 255 (groundside) - # source_component = 0 (ground control station) + # Connect to mocked drone connection = mavutil.mavlink_connection(CONNECTION_STRING) - # Don't send another heartbeat since the worker will do so main_logger.info("Connected!") - # pylint: enable=duplicate-code - - # ============================================================================================= - # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ - # ============================================================================================= - # Mock starting a worker, since cannot actually start a new process - # Create a worker controller for your worker - # Just set a timer to stop the worker after a while, since the worker infinite loops + # Stop worker after required time threading.Timer(HEARTBEAT_PERIOD * NUM_TRIALS, stop, (args,)).start() + # Run worker heartbeat_sender_worker.heartbeat_sender_worker( - # Place your own arguments here + connection, + args, ) - # ============================================================================================= - # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ - # ============================================================================================= return 0 if __name__ == "__main__": - # Start drone in another process drone_process = mp.Process(target=start_drone) drone_process.start() diff --git a/tests/integration/test_telemetry.py b/tests/integration/test_telemetry.py index 79f9e497..b9b1039b 100644 --- a/tests/integration/test_telemetry.py +++ b/tests/integration/test_telemetry.py @@ -2,6 +2,8 @@ Test the telemetry worker with a mocked drone. """ +# pylint: disable=broad-exception-caught + import multiprocessing as mp import subprocess import threading @@ -15,86 +17,56 @@ from utilities.workers import queue_proxy_wrapper from utilities.workers import worker_controller - MOCK_DRONE_MODULE = "tests.integration.mock_drones.telemetry_drone" CONNECTION_STRING = "tcp:localhost:12345" -# Please do not modify these, these are for the test cases (but do take note of them!) +# Please do not modify these TELEMETRY_PERIOD = 1 NUM_TRIALS = 5 NUM_FAILS = 3 -# ================================================================================================= -# ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ -# ================================================================================================= -# Add your own constants here - -# ================================================================================================= -# ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ -# ================================================================================================= - -# Same utility functions across all the integration tests -# pylint: disable=duplicate-code +# ========================================================= +# Utility functions +# ========================================================= def start_drone() -> None: - """ - Start the mocked drone. - """ subprocess.run(["python", "-m", MOCK_DRONE_MODULE], shell=True, check=False) -# ================================================================================================= -# ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ -# ================================================================================================= -def stop( - args, # Add any necessary arguments -) -> None: - """ - Stop the workers. - """ - pass # Add logic to stop your worker +def stop(args: worker_controller.WorkerController) -> None: + args.request_exit() def read_queue( - args, # Add any necessary arguments + telemetry_queue: queue_proxy_wrapper.QueueProxyWrapper, main_logger: logger.Logger, ) -> None: - """ - Read and print the output queue. - """ - pass # Add logic to read from your worker's output queue and print it using the logger - - -# ================================================================================================= -# ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ -# ================================================================================================= + while True: + try: + data = telemetry_queue.queue.get(timeout=1) + main_logger.info(f"Telemetry: {data}") + except Exception: + break +# ========================================================= +# Main +# ========================================================= def main() -> int: - """ - Start the telemetry worker simulation. - """ - # Configuration settings result, config = read_yaml.open_config(logger.CONFIG_FILE_PATH) if not result: print("ERROR: Failed to load configuration file") return -1 - # Get Pylance to stop complaining assert config is not None - # Setup main logger result, main_logger, _ = logger_main_setup.setup_main_logger(config) if not result: print("ERROR: Failed to create main logger") return -1 - # Get Pylance to stop complaining assert main_logger is not None - # Mocked GCS, connect to mocked drone which is listening at CONNECTION_STRING - # source_system = 255 (groundside) - # source_component = 0 (ground control station) connection = mavutil.mavlink_connection(CONNECTION_STRING) connection.mav.heartbeat_send( mavutil.mavlink.MAV_TYPE_GCS, @@ -103,41 +75,49 @@ def main() -> int: 0, 0, ) + main_logger.info("Connected!") - # pylint: enable=duplicate-code - # ============================================================================================= - # ↓ BOOTCAMPERS MODIFY BELOW THIS COMMENT ↓ - # ============================================================================================= - # Mock starting a worker, since cannot actually start a new process - # Create a worker controller for your worker + # ===================================================== + # Worker setup + # ===================================================== - # Create a multiprocess manager for synchronized queues + args = worker_controller.WorkerController() - # Create your queues + manager = mp.Manager() - # Just set a timer to stop the worker after a while, since the worker infinite loops - threading.Timer(TELEMETRY_PERIOD * NUM_TRIALS * 2 + NUM_FAILS, stop, (args,)).start() + telemetry_queue = queue_proxy_wrapper.QueueProxyWrapper( + manager, + maxsize=10, + ) - # Read the main queue (worker outputs) - threading.Thread(target=read_queue, args=(args, main_logger)).start() + threading.Timer( + TELEMETRY_PERIOD * NUM_TRIALS * 2 + NUM_FAILS, + stop, + (args,), + ).start() + + threading.Thread( + target=read_queue, + args=(telemetry_queue, main_logger), + daemon=True, + ).start() telemetry_worker.telemetry_worker( - # Put your own arguments here + connection, + args, + telemetry_queue, ) - # ============================================================================================= - # ↑ BOOTCAMPERS MODIFY ABOVE THIS COMMENT ↑ - # ============================================================================================= return 0 if __name__ == "__main__": - # Start drone in another process drone_process = mp.Process(target=start_drone) drone_process.start() result_main = main() + if result_main < 0: print(f"Failed with return code {result_main}") else: