Date: Oct. 26, 1998

Name of group: G1

Team members: Roman Lobkovsky, Craig Mills, Chong Carl

Task: Fax gateway

 

Accomplishments to date:

 

Over the past month we have been trying to compile sources for much of the core functions of our fax gateway. We now have code to perform the translation from fax packets to tiff files as well as several other key parts of the project. We have reordered our scheduling and worked from the inside of the project out. This way we can change the interfaces we use to employ other teamsÆ functions. This was a necessity because none of the interfaces have been finalized. Now that many of the interfaces are close to completion we can work on the interaction with other teams, such as querying the directory service and accepting and sending audio packets.

 

Problems:

 

We have run into several problems. The largest and at this point rather formidable one is a technical problem. We were initially concerned about how our machine could negotiate the connection to a fax machine over IP. The IP portion is not a problem, but the tone generation and the entire fax handshaking is. In order to do this, we need to have access to the faxing standards. The problem is that connection negotiations are all implemented in hardware in fax modems and fax machines. This code would never be released by any company, and reverse-engineering is of course out of the question.

Another problem that we have had is working on our portion of the project without having the interfaces in place. Without the interfaces we were forced to start working on the interior of the code instead of a top down approach. While this isnÆt more difficult, it does cause some problems. We have not had much trouble coordinating within our team, except for finding common meeting times.

 

What you have learned:

 

We have learned many things, both technical and social. Over the past several weeks we have learned a great deal about faxes, faxing, and the present status of faxing software and services. In the last month we have learned how important it is to have a complete specification for a piece of code before starting to write. We have also learned to appreciate the importance of having APIs to use as a basis for building the rest of the software.

In addition, we have learned that it takes a significant amount of time and energy to organize a group of people.

 

 

 

What would you do differently next time:

 

The one problem that we have encountered that we would not like to repeat is a possible miscalculation of the feasibility of the application we propose to do. If we can not implement a fax protocol (hand shaking and tone recognition) in software, then our project may be infeasible.

Another solution may be to have the data gateway do the fax negotiation, if that is supported on the board. I could see it being the case that the interface to the pbx could do a fax negotiation, then we could just be fed the resulting fax packets. If this is not the case then we will have to implement the entire fax machine in software.

 

Interface that your team will provide to other teams or use:

 

We donÆt provide any functionality for other teams. We will however call several teamsÆ code. We need to use directory services and read audio packets from the gateway.

 

What you need from the course staff:

 

We need to write code that will emulate a fax machine in every manner. To do this we need to have the standards that are used to create a fax interface. We must perform all of the fax hand-shaking in software.

 

References:

 

We have searched the Internet a great deal using DejaNews and various WWW search engines. It would be impossible to list everything we have looked at, but a very useful resource has been HylaFax, a freeware fax package for UNIX machines. It is distributed on ftp.sgi.com with its source code.