原文地址: multi-hop ad-hoc的語音聊天系統
實現一款基於multi-hop ad-hoc的語音聊天系統。node
Design and implement a fully distributed multi-hop ad-hoc chat application using wireless sound communication between at least 4 devices.ios
The final integration project of the module Network Systems is performed in groups of 4 students. With this group of 4 students, you design and implement software that runs on each of your four laptops, and provides the networking and application functionality for a chat application. The chat application should be distributed and ad-hoc, i.e., it should not rely on a server to manage connections and routing data packets between clients. The underlying physical layer that you have to use is one based on wireless sound communications. In some situations, e.g., under water, propagation of (electromagnetic) radio waves is extremely poor. In some of these situations, wireless communications using sound may be possible, be it at rather low data rates. Your chat application should use wireless communications using sound, utilising a physical layer provided by us (hence the name mermaid chat).app
Next to the design and implementation of the chat application, you should write a report describing the design of your system and its testing.less
Please consider the following issues while designing your solution:dom
You have to design and implement the system above using a sound-based physical layer that we provide. There are two variants of this physical layer. The first one will use your laptop's loudspeaker and microphone to wirelessly send and receive information using sound. Because sitting in a classroom with many groups using sound transmissions can be quite annoying and because the sound transfer is quite sensitive to disturbances, we will also provide an emulated environment to develop and test in. This latter variant is using a server we provide, and which you communicate to using the standard networking facilities of your laptop.ide
Your program will have to connect to either the audio software or emulation server. This will be handled for you by a small framework you can download from Canvas (in either Java or C++). Both frameworks provide you with a queue in which received messages will appear and a queue for data frames you want to transmit. There are 2 messages you can send and 6 you can receive. These messages are specified below.ui
DATA: With this message you can send a frame of 16 bytes of data. The framework will handle sending this to the audio interface or emulation server, you just have to provide the bytes. If the number of bytes provided is less than the frame length (16 bytes), the frame will be padded with random bytes. If the number of bytes provided is more than the frame length, the excess bytes will be discarded.
DATA_SHORT: With this message you can send a short frame of 2 bytes of data. If the number of bytes provided is less than 2 bytes, the frame will be padded with random bytes. If the number of bytes provided is more than 2 bytes, the excess bytes will be discarded.this
BUSY: You will receive this when the channel becomes busy.
FREE: You will receive this when the channel becomes free.
DATA: You received a data frame, this message will contain data as bytes (specifics depending on your programming language). note: a data frame will be received by all nodes within the transmission range and listening to the channel of a transmitter, only if no other node within the interference range does a transmission on the same channel overlapping in time.
DATA_SHORT: You received a short data frame, this message will contain data as bytes (specifics depending on your programming language). SENDING: A frame has started being transmitted. You can send multiple frames during transmission, which will be queued. You will receive this message when each of them starts transmitting.
DONE_SENDING: You will receive this when all queued frames have been transmitted.lua
We have node A and node B, they are in range of each other. A starts sending a frame (DATA), it will receive SENDING and BUSY. When the data has been transmitted it will receive DONE SENDING and FREE. During the same time node B will have seen BUSY around the same time node A received this. B will receive DATA and FREE once A's transmission is complete.spa
Each group needs to deliver the following for the integration project of the module Network Systems:
Before being able to submit your planning and reserve a time-slot for the demo, you will have to register as a group. Please do so on Canvas (People -] Groups), choosing a free group number, and each student registering for that group number.
Before you start with implementation, each group needs to make a planning document. The planning should include (i) a global overview of the system to be designed, (ii) tasks to be performed, (iii) responsibilities of each group member for each task, and (iv) timeline. This document has to be submitted on Canvas, and will be checked and discussed with you by the TA's. After your planning has been signed off by a TA, you can reserve a time-slot for the final demo with them.
During the final demo, you demonstrate the features of your chat application. It is expected that you will be able to at least demo the following features of the application:
Additional features such as security, group chat, an advanced graphical user interface are appreciated, and will give additional points.
Please note that in order to avoid unnecessary waiting times for all students, we have a very strict organisation of the final demo's. Each group gets assigned a 15-minute time-slot for their demo. Make sure you have your system to demo up and running in the demo room, at the beginning of your time-slot. If for any reason, your demo during the reserved time-slot fails, there will be an opportunity for a resit / retry on a later date. Time-slots for the demo are assigned, after your group has its planning signed off, on a first-come first serve basis. So, if you have your planning signed off early, you have more choice of time-slots.
In order to get early feedback, each group also has to give an initial demo to one of the TA's, a few days before the final demo.
The source code of your project has to be submitted using Canvas.
The final report should be submitted via Canvas. Please hand in your report as PDF and name it according to the following convention: NS-PROJECT-REPORT-GROUP##.pdf (For example: NS-PROJECT-REPORT-GROUP20.pdf) Do not forget to mention names and student numbers of the team members and the group number in the document itself.
A template of the final report can be found on Canvas under NS final project. It has the following sections:
The final report should NOT exceed 4 A4 pages. Extra pages will NOT be evaluated.
The result of your integration project will be evaluated based on the demo, the final report, and where necessary, the submitted source code. Please note that each of these 3 components needs to be present in order to give a grade. In particular, a working demo with the mandatory components mentioned above is essential for getting a grade. Both the demo and the final report will count for 50% of the grade of the integration project.
For the demo, the following elements will be evaluated (based on the demo, code, and questions to be asked during the demo):
Basic features(if well-designed and implemented sufficient for a passing grade): - medium access control
Advanced features, e.g., - Security
The final report will be evaluated, taking into account both what it describes (the designed system, tests, etc.), and how it is described:
(本文出自csprojectedu.com,轉載請註明出處)