Skip to content
/ C4IAN Public

Command, Control, Communications, Computing & Intelligence through Adhoc Networks

Notifications You must be signed in to change notification settings

mido3ds/C4IAN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

C4IAN

C4IAN Logo

Pronounced "Kaian" Tactical Mobile ad-hoc network. Build a network on the go for tactical teams in war and emergency situations.

Supports video/audio streaming and messaging with unicast, multicast and broadcast cababilities.

📝 Table of Content

Problem Statement

Tactical teams face troubles to achieve scalable and reliable communications in the battlefield or during emergencies due to the lack of a network infrastructure and the high mobility of units. They also need a method to collect real time data and analyze it to have a competitive advantage in the battleground.

Motivation

Mobile ad-hoc networks can be formed on the go, without any infrastructure. They promise more flexibility and reliability than manual radio broadcasting. We are interested in building such complex distributed systems.

System Architecture

System Architecture User Clients zhls modules odrmp modules

Development

Follow the rest of READMEs.

Common Requirements

golang 1.15.8

$ sudo apt update && sudo apt install -y wget && (
    set -e
    cd /tmp
    wget -c https://golang.org/dl/go1.15.8.linux-amd64.tar.gz
    sudo tar xvf go1.15.8.linux-amd64.tar.gz
    sudo chown -R root:root ./go
    sudo mv ./go /usr/local
    mkdir -p $HOME/.config/go/1.15/{bin,pkg,src}
    echo >>"$HOME"/.bashrc
    echo 'export GOPATH="$HOME/.config/go/1.15"' >>"$HOME"/.bashrc
    echo 'export PATH="$PATH:/usr/local/go/bin:$GOPATH/bin"' >>"$HOME"/.bashrc
    echo >>"$HOME"/.bashrc
    . "$HOME"/.bashrc
)

For VSCode support:

  • Install Go Extension.
  • Install all the extension's recommended tools.
  • Add "go.gopath": "~/.config/go/1.15/" to your VSCode settings.json file to enable Go extension tools.
  • Open each golang project in its own VSCode session, e.g. $ code src/router to be able to use linter and gopls.

Mininet-Wifi

$ python --version

If it's 3, you are good to go, otherwise do the following:

$ sudo mv /bin/python /bin/python.old
$ sudo ln /bin/python3 /bin/python

It may break your system, in this case reverse it back: sudo m /bin/python.old /bin/python

Then install mininet-wifi:

$ (
    set -e
    sudo apt update
    sudo apt install -y git
    cd /tmp
    git clone git://github.com/intrig-unicamp/mininet-wifi
    sudo mininet-wifi/util/install.sh -Wln
)

yarn

nodejs

python3

python3-pip

python packages: websocket-client, numpy

sudo python3 -m pip install simple-websocket-server numpy

socat

Issues

  • electron: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory

[Solution] Run:

$ sudo apt install -y libgconf-2-4

Application Layer

Command Center Client

Command centers are responsible for the central administration and operational management of a group of units. High-end computers with strong CPUs, high power consumption capabilities, and large storage and RAM capabilities are expected to be used as command center clients. The command centers are located near the operation field and have a wide wireless range, allowing them to link to a group of troops in the field. They’re assumed to have limited (or no) mobility

Units

cmd units ui

Map

cmd map

Video Streaming

cmd video streaming

Unit Client

Home

unit home

Audios

unit audios

Chatbox

unit chatbox

Emulation Map

log visualizer

Log visualizer

log visualizer

Demo

English Demo Video

Arabic Demo Video

©️ Developers

Name Email
Abdulrahman Khalid Hassan abdulrahman.elshafei98@gmail.com
Ahmad Mahmoud AbdElMen'em ahmed.afifi.cufe@gmail.com
Mahmoud Othman Adas mido3ds@gmail.com
Yosry Mohammad Yosry yosrym93@gmail.com