Discipline: Software and Hardware Integration
Professor: Antonio Augusto Fröhlich
Team: Fernanda Silveira, Sérgio Castelani, Tiago D'Agostini 
           Cleyton Pires, Eduardo Billo, Thiago Robert

    Presentation


    What is WaveLan?

    WaveLan is a networking technology that allow the connection of computers without any wires or cable, mostly using infrared technology (radio is included in the infrared spectrum). This technology is called LAN because the range of cover is small (within an office, a building,a store, a small campus).

    Difference from Ethernet

    The most obvious difference with Ethernet cards is that there are more parameters to configure. In order to communicate, all nodes of the network must have those parameters configured the same. Some examples of these parameters are : frequency or hopping pattern, network id, domain, encryption key (for security)...
    Under more comercial Operating Systems enviroment (to not cite names), the installation program usually opens a nice window and asks the user to enter these parameters, or sets them to a default value. Some drivers set those parameters in a permanent storage in the device (EEprom). When this happens, the Linux driver is able to use them from this EEprom. Unfortuanetelly, the current tendency is to scrap the EEprom and to use the registry of the comercial Operating System to save those parameters instead. Of course, the Linux driver can't retrieve the parameters in those conditions.
    To correct this issue the Wireless Extensions has been designed to simplify the process of setting those parameters by providing an unified interface across drivers, but not all drivers support (yet) the Wireless Extensions... In fact the setup of the operation parameters is different for each product so that a lot of specific device research is needed to develop a driver to it.

    Problems about WaveLan

    Probably the main problem with Wireless LANs is that the medium of communication is shared among all devices. In a traditional cabled technology you can physically know who is connected to who. In the waveLan anybody and anything can use the radio band.
    The Wireless LAN has a limited range, so you may reach only device within that range. This is why cells, where everybody is in range, are defined. If you want those cells to communicate or a node to move across cells, you should install an access point in each of those and configure those with the same network identifier (and add an Ethernet segment between the access points).
    The waveLan can be operated independently of a connection with a ethernet network. That is the case when you just want to quickly set up a network between a group of nodes and don't want to build a complete infrastructure. This case is called ad-hoc networking, and most Wireless LANs offer it.
    The sharing of the medium also create problems of security, so that the only solution is to use encryption as a default option. The open medium also results in a lot of interference, so that error correction is fundamental for the operation. Other kinds of networks, specially high speed, dedicated technologies can even ignore the chance of a mistransmitted package since the medium is very reliable.

     The process of the driver development

     At the development of the waveLan driver here presented, we intended to build separate pieces of software. The linux dependent portion of the driver and the direct access to the waveLan card would be kept in separated code. The development of the card specific code was made upon the original card driver. The linux dependent code was written without any card commanding capability so that it would operate only when of the integration of the two codes. The configuration of PCMCIA was included in the Linux dependent code, so that the hardware accessing code could be used in other operating systems drivers.
    A specific interface was defined between the two portions of the code after a lot of deliberations among the developers of the two groups. The interface was primarily directed to supply the needs of the linux, but should also be capable of be used in other Operating System drivers (in the case of the hardware dependent code).
    After the successful construction of the two separate software artifacts, an integration stage started, culminating in lots of integration problems and a partial success at the end.