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.