Skip to content

Commit

Permalink
First release commit
Browse files Browse the repository at this point in the history
  • Loading branch information
srenevic14 committed Apr 13, 2021
1 parent 5f40975 commit f58a739
Show file tree
Hide file tree
Showing 160 changed files with 14,832 additions and 1 deletion.
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Contributing Guidelines
Binary file added Logo_Pointer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
73 changes: 72 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,72 @@
# datahop-d2d-android
# DataHop Device-to-Device Android Library

This library implements a Device-to-Device (D2D) connectivity solution for Android devices used by the DataHop Network platform.
[DataHop](https://datahop.network) is a new platform aimed at exploring the potential of
a user-operated, smartphone-centric content distribution model
for user applications in contrast with the traditional client-server
model, that is used by the majority of mobile data transfers today.
In particular, we assume source nodes that are updated directly from the content provider (e.g., BBC, CNN), whenever
updates are available; destination nodes are then directly updated by source nodes in a D2D manner. We leverage on sophisticated information-aware and application-centric connectivity techniques to distribute content between mobile devices in densely-populated urban environments or rural areas where Internet connectivity is poor.

### Information-Centric and Application-Aware Connectivity

This library uses the WiFi Direct specification to exchange application content updates. WiFi Direct provides all the features required to provide smart connectivity between users and transfer content without infrastructure participation.
However current Android WiFi Direct Android implementation still has one drawback: it requires user
participation to accept every connection.
In order toavoid any user participation allowing DataHop to run in the background,
seamlessly to users, this library uses a hybrid mode according to which source devices create a WiFi Direct network using the previously described WiFi
Direct Autonomous Mode and destination devices connect to it as a
normal WiFi connection (legacy connection).

### BLE Content Advertisement
This library exploits the so-well known and stable [bluetooth low energy
(BLE)](https://developer.android.com/guide/topics/connectivity/bluetooth-le) beacons technology in order to exchange information related
to the device’s applications prior to the WiFi Direct connection, as
stated in the figure. This information may include the list of content
available, but also other metadata such as latest update of the content,
e.g., BBC-Sports-1100am or application name, transport protocol, port
number, etc. This way, users can share necessary application information before forming groups. The whole communication process does
not require user interaction and can be performed totally transparent
to the user. Also, the BLE beacon technology is a standard compatible
with not only any Android device but also with iOS devices and any
other wireless device compliant to the standard.

<p align="center"><img alt="connectivity" title="Source and Destination nodes connection and Content Advertisement
through BLE" src="./connectivity.png" width=40%></p>

## Objectives

* [x] User devices must connect between them without infrastructure participation and without interrupting connectivity to the main infrastructure (e.g., WiFi access points or the
cell network).
* [x] User devices must discover services/applications
and content (available in nearby devices) before actually connecting to those devices. This will save both time and energy from the
process.
* [x] Connectivity should be transparent (and run as
a background process) to the user (i.e., it should not require the
users’ manual intervention.
* [x] Connectivity must take into account power consumption and must implement mechanisms to avoid battery depletion.

# Installation

# Usage

# Demo file-sharing application

# Others

# How to make contributions
Please read and follow the steps in [CONTRIBUTING.md](/CONTRIBUTING.md)

# License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

# Acknowledgment

This software is part of the NGI Pointer project "Incentivised Content Dissemination at the Network Edge" that has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 871528

<p align="center"><img alt="ngi logo" src="./Logo_Pointer.png" width=40%> <img alt="eu logo" src="./eu.png" width=25%></p>

32 changes: 32 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

repositories {
google()
jcenter()

}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.2'
classpath 'com.google.gms:google-services:4.0.2'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
google()
jcenter()
maven {
url 'https://maven.google.com/'
}

}
}

task clean(type: Delete) {
delete rootProject.buildDir
}
9 changes: 9 additions & 0 deletions compile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

./gradlew installDebug
for var in "$@"
do
# adb -s $var shell am start -n io.fluentic.ubicdn/.ui.splash.SplashActivity
# adb -s $var shell am startservice -n io.fluentic.ubicdn/.data.UbiCDNService --ez "source" 0 --ez "wd" 0 --ez "bt" 1
adb -s $var shell am start -n network.datahop.localsharing/.ui.splash.SplashActivity
done
Binary file added connectivity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions demo-filesharing/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
Loading

0 comments on commit f58a739

Please sign in to comment.