Monday, February 13, 2012

Help us debug!

If you're really excited about BlueMesh, here's how you can help up debug.

What you need:

  • Eclipse + Android SDK + Eclipse Android plugin
  • 2+ Android devices, OS-2.1 or newer
  • At least 1 micro USB cable to connect phone to computer
What you need to do:

If you do not want to compile the code, I will post a compiled .apk and put it on the BlueMesh website (www.bluemeshproject.com) which you can download and run on your devices.  If you do this, then skip directly to step two.

Step 1: Because BlueMesh is a Library, we use CLD (https://github.com/schnej7/Android_CommandlineLikeDisplay) to test BlueMesh.  The current version of the repository has an example program that uses BlueMesh to Launch the service and read and write data to the other devices.  You can download the source for both CLD and BlueMesh.  You will need to set BlueMesh as an Android library and link to it from CLD in order to compile it.

Step 2: Once you have it all compiled, you can run the .apk on your device through Eclipse which will give you a debug log.  Feel free to submit your bug fixes through github or simply send your debug log and a brief description of of the behavior of the program to schnej7@rpi.edu.

I encourage anyone who is interested to help out debugging, we will be able to debug much quicker the more logs we get.  Thank you all in advance for your help!

Thursday, February 9, 2012

Bluemesh Testing

Today me and Jerry managed to compile an instance of a very simple text debugger app (using commandline like display) and the bluemesh library. However, we have run into a few problems. Currently, bluemesh does manage to connect devices both running the application, however, not entirely consistently. Also, data did get sent, although not received correctly. There are also some some socket and thread management issues that cause errors. We hope to have most of these errors remedied by next week.

SO MUCH PROGRESS!

Since our last big update on Sunday the BlueMesh team has gotten a LOT of work done.  Today we finished the complete reworking of the project.  All of the functions that we will need for the most basic uses of BlueMesh are now implemented.  By tomorrow we hope to have everything tested and have a sample app demonstrating how BlueMesh works.  Our implementation is still yet to be tested, but it looks promising.

I will write another blog post as soon as we test our project with the results, wish us luck!

Tuesday, February 7, 2012

Client Thread

The client thread curently has:
** constructor (Handler mHandler, BluetoothAdapter mAdapter,
RouterObject mRouter )
** public void run()

The constructor takes the three arguments and sets the values to private variables.

Run is as follows:
the thread continuously runs until an interrupt is given, and first gets a list of paired devices.
For each paired device, it attempts to create a client socket. If that's successful, it then attempts to connect to a server socket. If that is successful, the connected socket is then passed to the Router Object to be handled.

Sunday, February 5, 2012

This week at BlueMesh

Today I spent a few hours with Trevor Zettersten and Zachary Clapper redesigning and restructuring BlueMesh.  It turns out that I was doing some things wrong... really wrong.

We will spend this week setting up the skeleton for BlueMesh and trying to implement most of the functionality. Compared to the former design of BlueMesh, the current design is much more elegant and simple.

I expect that we should have a significant amount of work done by the end of this week.  We will also be giving  an RCOS talk this Friday explaining more details about our new structure and the BlueMesh API.

Tuesday, January 31, 2012

BlueMesh: API's, and You.

We have now sketched out a general procedure, and planned several API's to be implemented, for BlueMesh developers.

the initial phase in BlueMesh programs will be creating a BlueMesh object. Programmers will be required to choose between two different types of networks: Static and Dynamic. Static Networks lock in everyone into the network upon creation and will throw an error if anyone joins or leaves afterward. An example program that woulhd use this is a poker game. Dynamic networks handle adds and joins on the fly, and could be used for a chat room.

(The following describes the procedures required for using a dynamic network. Static network procedures will be developed later)

Next, a password, along with other options, will need to be set via a config API. Finally, A "Launch Service" API will be called, that will handle the sending and receiving of data. Both sending and receiving will be asynchronous, however data receiving will be slightly more involved. Once data is received, it will be pushed onto a queue for processing. Data will be pulled one at a time, and passed into a "handling" function that the programmer will write. Finally, a disconnect API will need to be called to handle the exiting of the application.

List of API's to be Implemented:
*Constructor (Dynamic and Static Networks will be inherited BlueMesh Classes)
*Config (Will take in password and other various options for network)
*Launch Service (Handles starting threads and managing connections)
*Send Data (Allows the sending of packets)
*Pull Data (Attempts to grab data off of processing queue, will return null if queue is
empty)
*Disconnect (Handles exiting of application, a destructor)

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!