Skip to content

Bdem1rel/Scuba-Chat-Application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scuba Chat Integration Project

A fully distributed, multi-hop ad-hoc chat application built on top of an emulated wireless sound communication layer that simulates underwater communication between nodes.

Overview

Scuba Chat enables text messaging between nodes without any central server. All routing, addressing, and medium access control is handled by the nodes themselves. The physical layer emulates sound-based wireless communication, reflecting the constraints of real underwater environments (low data rates, limited range, high error rates).

Features

  • Broadcast messaging — reliable text broadcasting to all reachable nodes, with correct ordering guaranteed
  • Whisper (private) messages — send a message directly to a specific node
  • Arbitrary message length — long messages are automatically fragmented, transmitted, and reassembled
  • Multi-hop forwarding — messages are routed through intermediate nodes when the destination is out of direct range
  • Dynamic addressing — nodes are uniquely identified and the network adapts when nodes join or leave
  • Reachable node discovery — each node maintains an up-to-date list of reachable nodes, including those multiple hops away
  • Medium access control — collision avoidance to handle hidden/exposed node problems
  • Packet loss resilience — the system handles at least 25% packet loss without exceeding 10-minute delivery times

Architecture

The application runs on top of a provided physical layer framework that connects to an emulation server over the internet. Each node communicates via a single shared sound channel using two frame types:

  • DATA — 32-byte frames for regular messages
  • DATA SHORT — 2-byte frames for control signals

The network stack (addressing, MAC, routing, fragmentation, reliability) is implemented entirely by the application.

Usage

Command Description
/broadcast <message> Broadcast a message to all reachable nodes
/whisper <node> <message> Send a private message to a specific node
/reachable Display all reachable nodes for a specific node
/help Display help information
/quit Disconnect the node

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors