Monday, December 12, 2011

Jerry's Projects Need Your Help!

Hey RPI guys and gals!

If you want to help on the BlueMesh project, here is what you will need to know and classes I would like for you to have taken:

Android programming
Data Structures
Algorithms
Operating Systems
Threads
Bluetooth

please contact me at schnej7@rpi.edu with the subject BlueMesh if you are interested in working on this project and we can have a further discussion.

If you are interested in working on Command-Line Like Display, here is what you will need to know and classes I would like for you to have taken:

Data Structures
Threads (know what they are)

What you would be doing:
Implement last entry function (up arrow in terminal)
Fix Bugs
  (program stops running when phone is tilted)
  (buttons are covered up by on screen keyboard)
Add color options
Add more types of input and print functions

This is a good project for a Second Semester Freshman or a Sophomore!  If you would like to work on this project please contact me at schnej7@rpi.edu with the subject: CLD.

Have a good winter break, happy forking!

Friday, November 25, 2011

How to use CLD!

Here is a video with a simple demo and a brief description of how to use CLD.
http://www.youtube.com/watch?v=7epVYRrPnqU&feature=feedu

Please try it out and give me some feedback :)

Monday, November 21, 2011

Command line like display

I created a separate repo for the display activity so you can now use it for all types of projects :)


If you have any trouble with it, file a bug report on github :)

Friday, November 18, 2011

Working by the New Year

This week I fixed a bunch of minor bugs and polished up some code.  I also commented a lot of what I had done in order to encourage more developers to help out :)

The only thing left to do now before we hit my first big milestone is to write a few functions to set up a connection.  I hope to have this done before December 20th.

After this is done, I will publish a new set of goals and tasks to do over the next 6 months which will include handling network errors and failures, and different routing options.

Friday, November 11, 2011

This week at BlueMesh

Since my last post I have fixed a few bugs that I found previously and I have added some more functionality.

Bugs fixed:
  • No longer crashes phone on exit
  • No longer crashes phone 5 hours later when exited
  • Enables Bluetooth if it is not already enabled instead of exiting
  • Attempts to stop all Bluetooth activity before starting or restarting the service which used to cause a crash
Functionality added:
  • Added functions to route incoming data to all other devices
  • Added functions to properly stop the service
  • Added functionality to enable Bluetooth if the hardware is present
I am currently working on the last bit of code to actually set up connections between devices which will (hopefully) be working by the end of the week.

Wednesday, October 19, 2011

IT WORKS! (at least what is testable to this point)

Just a quick update, up to this point I have tested setting up a Bluetooth server socket and having it scan for connections.  In addition, the structure of the code should be about what it will be in the final version, this means that the BlueMesh project is looking promising.

The next step is to have another socket scanning for a server socket and bind to it.  Once this is done, it should be smooth sailing writing code to manage these connections and to route data.

More to come soon!

Monday, October 17, 2011

This week at BlueMesh

This week I have been working on restructuring the code such that it is much more modular.  I am currently finishing writing all of the most basic code needed to setup a mesh network over Bluetooth which will hopefully be done by the end of this week or early next week.  Once that is done, the next step will be to do some extensive testing and write functionality to handle problems with connections.

In order to test my project I need 3 Android 2.0+ devices MINIMUM which seems to be a little bit of a problem.  I currently have my phone (Thunderbolt) and the two RCOS phones (G1), but those need to be upgraded to 2.0 which might take some time.  Unfortunately I still have not found a way to emulate Bluetooth hardware so that I can test my project from my computer so my only means of testing at this point is to use these phones.

-Jerry

Saturday, October 1, 2011

CRC and more

Most recently I have written a CRC class which is meant to take the IDs of all the devices in the network and calculate a CRC over them in order to check that each device knows everybody who is in the network.  This class may also be useful in the future because checksums are important when dealing with multiple devices in order to ensure that no information is lost.

This week I will be looking more into exactly how to connect devices over bluetooth and how to send data over those connections.  I have the general framework that I think I will need mostly set up at this point and the rest should be filling in the bluetooth functionality.  I will also be writing up some more documentation this week so it will be easier for anyone who wishes to help.

Saturday, September 24, 2011

This week at BlueMesh

This week I was able to develop a "terminal like" display for the Android device which will be used to debug Bluetooth library.  It is currently in the repository and will work with the TestService class.

The BlueMeshService class is still in the early stages of development.  Currently I am working on creating the Thread hierarchy that will be used to manage the Bluetooth resources.  One problem that I can see on the horizon is testing.  It seems as though there may be a way to simulate Bluetooth hardware from the emulator, but I am not sure yet.  Other than that it seems like we are on track and it will be smooth sailing for at least a few weeks.

Also, we have acquired a new developer, Tom Zanko, who will be working on a few different UIs which will demonstrate how to use the library.  More frequent updates will be coming in the next few weeks as we get more things working, keep your eyes peeled!

Sunday, September 11, 2011

Why BlueMesh?

What is BlueMesh (going to be)? 
BlueMesh is a library for use with Android Bluetooth enable devices which creates and maintains a Bluetooth mesh network.

Why is this important?
Since smart phones and other smart devices such as tablets became popular, they have slowly been becoming more and more powerful.  Now these devices have the capabilities of many other not so versatile devices such as GPS.  Bluetooth is one of these technologies that we have on our phones, but rarely use for more than transferring files or connecting our hands free headsets.  I think that Bluetooth can be used for much more (and so did the developers because it allows a master device to be connected to 8 slaves at once!).

What are the problems with Bluetooth?
The most obvious problem with Bluetooth is the range.  The range of a Bluetooth connection is generally limited to 10-15 feet.  This makes it hard to use Bluetooth as a general means of data transfer.  Bluetooth is generally referred to as a means of creating a PAN or Personal Area Network and used to transfer data from a phone to a PC or headset.  I however believe that the definition of PAN is more than the devices I have around me.  When I am in my house or in public, generally there are other people with their own devices in my personal area, so why shouldn't I be able to include them in my PAN?  This is the main focus of BlueMesh, having multiple people with multiple devices communicating over "PAN" via Bluetooth.

Why BlueMesh?
It all comes back to the problem regarding the range of Bluetooth devices.  Because there is such a short range, direct connections between multiple devices in a network is impractical.  Also because people like to get up and walk around, a static network would also be impractical.  What is needed is a network with some form of routing so that connectivity can be ensured among all devices in the network, and a means to establish, break, and maintain connections between devices in order to maintain connectivity of the network.

What does BlueMesh have that WiFi or 3G/4G does not?
Even though the data transfer rate is slower via Bluetooth, BlueMesh has a few things that make it a formidable opponent to communications via the internet.  The first is connectivity to the internet; BlueMesh simply requires two or more Bluetooth enabled devices to be close enough together, it does not rely on connectivity to the internet or external servers.  If I wanted to play a game like Words with Friends over BlueMesh, it would be hosted locally on the devices and communications would be direct between the devices as opposed to having to connect each device to the internet and play a game which is reliant on an server.
Another benefit is the social implication of BlueMesh, I believe it will bring more social interaction into the smart device medium which is a big objective these days.  In contrast to adding chat windows or comment boxes to applications, BlueMesh brings all of its users into the same room and gives the ability for developers to be more creative in their use of these devices.  For instance, an internet poker game consists of looking at a graphic of a poker table with pictures of your friends in each seat.  A BlueMesh poker game could consist of everyone sitting around a table holding their devices which display their own hand and chips and a tablet in the center of the table with the face up cards and the pot.

BlueMesh will introduce new ways to develop for smart devices and enable greater social interactions.  Please leave comments and questions, and I will be posting a link the the repository soon. :)

Jerry