High Level Requirements
Mobile Crowdsensing Framework over Low-power Wide Area Networks
Functional Requirements
Our functional requirements are based upon the requirements list we
obtained from meeting with our client. This section is separated into
the three main parts of our project: the Android library, the proxy server,
and the proof-of-concept application which implements the library and server.
Android Library
An Android library which abstracts the process of encoding data
and sending it from the phone to the LoRa Node.
- The library will provide functions which allow services and applications on the
phone to submit data that will then be transferred over LoRaWAN.
- The library will provide functions which take this submitted data and encode
it by mapping the messages information to bytes in a LoRaWAN packet.
- The application which submitted the message is identified by the first
byte in the encoded message.
- The service which the message is performing is identified by the second
byte in the encoded message.
- Any arguments passed along with the message are encoded in the remaining bytes.
The above functions will be able to service the basic API calls made by the
OpenCellID application.
As mentioned above, we will be designing our encoded messages to work with
OpenCellIDs APIs and all other applications will be ignored for
the time being. Our encoded message will be able to use a few API hooks from the
aforementioned applications when we are finished.
If a message is too large to be encoded into a single packet, our library
will drop the message.
If the library finds that a message is too large, it will drop the message in
instead will report an error to the node which will then be passed along to the gateway.
Functions which establish a WiFi connection to the LoRa Node and transmit
the encoded messages.
Similar to how the first byte will represent the application that is sending
the message, if the library finds that an unsupported application or an application
that is supported is trying to send a message that is to large, it will drop the message
in instead will report an error to the node which will then be passed along to the gateway.
Proxy Server
A configurable proxy server which abstracts the process of receiving data on the
LoRa Gateway and forwarding it to its intended destination.
- The proxy server will be able to connect to the LoRa Gateway over
WiFi and receive incoming messages.
- A configuration service will be running on the server that provides
an interface that allows developers to connect to the proxy server and configure it.
- The proxy server will generate a handler for an application.
Proof of Concept Application
A proof-of-concept application which extends the OpenCellID app and demonstrates
the use of the library and proxy server developed above.
- This application will take messages sent by the OpenCellID app, intended to be uploaded to the web server
, and, using the library, send these messages to the LoRa Node.
- The proxy server will be configured to handle the messages sent by this application.
- Assuming that the messages arrive at the proxy server, it will forward them to the appropriate
server on the web.
Non-Functional Requirements
Our non-functional requirements are based on our client desire for this project to
serve as a tool for future development of mobile applications using LoRaWAN as a
network. The section also includes the basic requirement of security common to all
networked applications.
The framework will maintain the security of data entrusted to it
- The wifi connection between the Android application and the LoRa
Node will be secured with encryption.
- The wifi connection between the LoRa gateway and the proxy
server will be secured with encryption.
- The proxy server will not allow developers to supply authentication tokens
for messages over an insecure connection.
- The connection between the proxy server and the wider internet
will be secured with encryption.
The framework will be easily usable by future developers
- The codebase will be open source.
- The codebase will use markdown to create a robust reference
document hosted on the Github repository.
- The CANIS lab will be able to implement the framework without outside assistance
The framework will be easily extensible by future developers
- The codebase will be heavily commented and documented to explain design decisions.
- The codebase will avoid an Android-specific implementation wherever possible.
Environment Requirements
When formulating our functional and nonfunctional requirements, we also needed
to take into consideration the CANIS Lab and their technology. Environmental
requirements deal with the domain requirements and their interactions with
the system and the final product will run on. They are as follows:
- The project will be compatible with the CANIS lab LoRa Node
The CANIS lab is working with the LoRa Node and will be the primary users
of our project. With this in mind it is important that our Android library
is compatible with their technology.
- The project will be compatible with CANIS lab LoRa Gateway
Another compatibility requirement we need to keep in mind is having the
CANIS lab LoRa Gateway work with our proxy server. We will endeavor to make
the proxy server work with any LoRa Gateway but must make sure our system works
with the CANIS lab hardware.
- The proof of concept application will extend the OpenCellID application
To demonstrate our working library we will be creating a proof-of-concept application.
Our client requested this test application would use data from OpenCellID.
This will be a great way to demonstrate our working library at the end of the project.