Project Assignment 2
Preliminaries: In this project, we will get to know the Openmoko Neo Freerunner
phone. The DARTS Lab has about 25 of those phones; you can use those phones
in the DARTS Lab or you can also take one with you (one phone per student).
In the latter case you must inform the TA (email is sufficient) of the
serial number of that phone. Also let him know when you return the phone.
Should we run out of phones, please inform the TA immediately.
Using the Wiki tutorials, find out how to
communicate between the desktop (or laptops) via USB, how to compile
an application for the phones (you can use one of the samples provided
in the development environment), and how to load and run your application.
P1: Take your client/server code from the first assignment and port
it to the phones. Use two phones to test and demonstrate that it works
properly. The phones should operate in ad-hoc mode.
P2: Write a chat application for two phones, including a
signalling protocol. The signalling part relies on TCP sockets. That is,
each phone must listen to a TCP socket (at a well-defined port) for incoming
"calls". Another phone can initiate a call by sending a request to this
listening socket. The phones then negotiate the address of a UDP socket.
Once this negotiation is done, communication can occur over the UDP
socket in both directions. When a user wants to terminate a call, the
other phone is again notified via the TCP socket and the UDP socket is torn
down. Once a communication is setup, a user can send messages to the other
phone via the keyboard, these messages are both printed on this and the other
phone (you can use the terminal for input/output or write your own GUI).
Each device should have a nickname (e.g., given by a user when the
application starts or read from a file or the phone's serial number, etc.),
which should be put in front of a message to identify the sender (e.g.,
Tim: How are you today?).
Further instructions: For the signalling protocol, use the TCP port 7777. Each
phone should be set to a network address 192.168.11.x, where x will be
given to you by the TA (either when you get your phone or if you already
have a phone, contact the TA). Also the ESSID should be "openmoko".
Submission
The due date is October 2nd (before class). Late submissions will not
be accepted. You will again arrange with the TA to meet briefly to
demonstrate your code. Also, submit all code and documentation (README)
to your dropbox. Also describe your signalling and communication
protocols for your solutions. Note that you will not only have to code
but also design the system, e.g., decide what needs to be negotiated
between the two peers, etc.