ShAir is not a wireless communication channel in itself. It is a software platform on which mobile applications for infrastructure-free content sharing can be easily built using existing short-range radio including Bluetooth and Wi-Fi.
Once installed on a device, the ShAir platform automatically uses available wireless communication channels to connect to nearby devices, manages content shared by the device owner and by other nearby devices, and caches data so that it can be further shared with unseen devices later. The platform is designed to be equipped with everything needed for information sharing between mobile devices in the absence of infrastructure networks.
The software stack is divided into three parts:
Applications involving sharing content with nearby users can be easily built by calling the simple APIs such as 'putContent()' exposed by the middleware. The middleware takes care of the rest of sharing operations. Several example applications have been built on top of the middleware. The middleware is implemented in Java and does not depend on device hardware that it runs on. Low-level device-specific network drivers have been developed for the Android platform, including Wi-Fi and Bluetooth. Cloud server-based sharing through the internet and communication with Wi-Fi SD cards are also supported as options.
Below is the list of what the ShAir platform provides.
The uniqueness of the platform comes from the following features.
As opposed to letting users actively choose to connect with nearby devices to perform tasks at hand in a short period of time, the platform is geared to opportunistic background sharing that keeps going on indefinitely even while users are not interacting with their devices or even while they are not aware. This complements not only infrastructure-based services but also active ad-hoc sharing, providing new opportunities for serendipitous sharing of resources through crowds instead of clouds.
The middleware is designed for delay-tolerant communication, meaning that it can handle situations where connections between mobile devices are not necessarily available at the same time. At some point in time, a device may be far away from other devices and there is no way to communicate with them, but by caching data in the device's storage, it can still share content later when it has a chance to get close to others.
Adding new features to the middleware can be done separately from the rest of the code as plugins, allowing for quick development with minimal impact on applications that build on the middleware.