"Ball and Chain" Design Document

Winter Quarter 1996

Document Author:

Richard Sottilaro

Project Sponsors:

GregoryAbowd
Chris Atkeson

"Ball and Chain" Team:

Frankie R. Hill (Manager)
Dameon C. Kindall (Architect)
Sean Xie (Programmer)
Richard A. Sottilaro (Technical Wr iter)

CyberNag Overall Architecture Team:

Chris Farris
Zareer Siganporia


Table of Contents


Project Description of Target System

CyberNag is a relatively new project whose goal is to serve as a message organizing system. CyberNag aims to be somewhat user specific. The types of messages CyberNag will be organizing will potentially be of all forms: e-mail, voice mail, fax, snail mail, newsgroups, and WWW pages. From these inputs, CyberNag will output the messages into one (or more) of several different types to the user: WWW pages, a pager, a telephone, or a text message. The form of output CyberNag will give will depend on the user's preference. The system will also feature a prioritization system wherein the user can receive very important or urgent messages immediately.

A high-level description of the CyberNag architecture consists of six parts: an input device driver, a message recognition system, a prioritization system, a user interface, a catalog system, a system that processes the output, and an output device driver. Certain groups will be working on the different parts of this overall design. It will be important for these groups to communicate on a regular basis in order to uphold the conceptual integrity of the system. By preserving the conceptual integrity of the "big" picture, the groups can assure that the different facets of the project will fit together in a coherent manner.

The CyberNag system is intended for use by anyone in the corporate or academic area that needs to be accessable at any time through various modes of communication. This type of system will become desirable to the general populus as access to the internet, communication by e-mail, and a proliferation of home computers ensues.

The "Ball and Chain"'s position within this project is to perform the last 2 parts of the architecture. That is, it will be handling the system that processes the output and the output device driver. We will be receiving the converted, prioritized input (e-mail, voice mail, fax, etc.) figuring out how to strip down the data according to it's type, and sending the synopsized message as an alphanumeric page page to the client. We will also be implementing secure messages, in which case we will be sending the client a page saying that they have a secure message only. In addition, we will be integrating capabilities that will allow the client to hook their pager to their laptop or desktop computer and have a program that will notify them (through their computer) if they get an incoming page.

High-level architecture

Architecture Picture

Figure 1: Architecture drawing (WWW)

Design specification

Since this is a multi-user system, all modules must be written to allow for concurrent execution. If you write to a file, you must lock that file. All modules must check to see if a file is locked before reading and writing.

Data Types:

ADF Type

Main Pager Record:
typedef struct {
char *To_Name;
char *From_Name;
int Priority;
int Security;
char *Subject;
char *Phone_Number;
} MDR_Type;

Static Behavior:

The Input Module will receive the ADF or Abstract Data File. This will then be initialized. It will also initialize the phone numbers file pointer.
The Process Module will receive the input from the Input Module in the form of the ADF Type. It will the transfer the corresponding fields from the ADF Type to the main pager record. The main pager record will consist of :

This will then be transferred to the output module.

The Output module will receive the main pager record. From this pager record it will take the information in as standard input and output the message to the pager.

Dynamic Behavior:

The pager output device driver of the CyberNag system is designed to provide a seamless interaction between the output file and an alpha- numeric pager. The pager output device driver is modeled as a program which automatically executes when provided with an Abstract Data File, in OrjMessage and a prompt from the Message Router. The interface between the CyberNag module and the storage cylinder is explicitly stated in the CyberNag Overall Architecture Design Doc.
When the Input Module receives an abstract data format, it will initialize and send the data to the Process Module. The Process Module will collect the appropriate data fields from the ADF Type and send those to the Ouput Module. The Ouput Module will call the correct pager number and send the appropriate message to the pager company. It will confirm the message received and then disconnect.
Input Module
Called by:
CyberNag / operating system of the platform
Parameters in:
Standard input, consisting of an ADF Type
Description:
This is the module which will contain any initialization functions and error checking functions for the ADF Type.
Functional Units:
Main function
Called by:
CyberNag / Operating System of the platform
Parameters in:
Standard input, consisting of an ADF Type
Purpose:
The main function will call the appropriate specialized functions to read and error check the input.
Calls:
The main function will call the initailize phone number file pointer function and the error checking function for the ADF Type.
Parameters Out:
The correct ADF Type and a pointer to the file of available pager phone numbers.

Initialize Numbers
Called by:
Main function
Parameters in:
Path name to the file which contains the operation phone numbers to the alpha-numeric pagers.
Purpose:
This function will initialize the file pointer to the file which contains the alpha-numeric telephone numbers. If the file is non-existing a fatal error will occur and stop all execution of the Pager Device Driver.
Calls:
Nothing, this is the lowest level function for this task.
Parameters Out:
Returns the initialized file pointer to the telephone number file.

Error_Checker
Called by:
Main function
Parameters in:
An ADF Type containing the pre-initialized data.
Purpose:
This function will check each appropriate field and will determine if that field is valid. This will not determine if the value of the field is valid in the way of a person not existing on the phone number list. This will determine that a person_to exist. That a MIME type exist, and that the original Transcript exist.
Calls:
Nothing, this is the lowest level of the task.
Parameters Out:
Function returns 0 if the ADF Type does not contain errors and 1 if the ADF Type contains errors.

Output Module
Called by:
Pager Process Module
Parameters in:
Standard input, comsisting of a MPR type dumped to a text file.
Description:
This is the module which will initialize and dial the output device which in this case is a modem. It will transmit the message and error check all aspects of the transfer.
Functional Units:
Fbeep
Called by:
Process Module/Operating System of the platform
Parameters in:
A MPR type dumped to a text file.
Purpose:
This is an actual compiled and tested program. The purpose is stated above in the description of the output module. Since this part of the system has already been engineered, the interface will only will be included in this design document.
Calls:
This program calls nothing further.
Parameters Out:
Will send a standard signal to the operating system that the unit has completed successfully. In the case of an error, a stderror will be sent with the cause of the error.

Process Module
Called by:
Pager Input Module
Parameters in:
Standard input, consisting of an ADF Type and a file pointer to the phone number list.
Description:
This is the module which will process the ADF Type and transfer the information to the MPR Type. It will also search and transfer the phone number information into the MPR Type.
Functional Units:
Main Function
Called by:
Input Module/Operating System of the Platform
Parameters in:
Standard input, consisting of an ADF Type and a file pointer to the phone number list.
Purpose:
The main function will call the appropriate modules to transfer or determine all of the ADF Type or phone number list to the MPR Type.
Calls:
Transfer_Fields, Initialize_MPR, Transfer_Phone_Number, Create_Output_File
Parameters Out:
A text file to be used with the fbeep program.

Initialize_MPR
Called by:
Main function
Parameters in:
The MPR Type uninitialized
Purpose:
To set all of the fields of the MPR to the default value. This will insure no errors to be made by any following modules.
Calls:
Nothing, this is the lowest level of the task.
Parameters Out:
A pointer to the text file containing the MPR contents to be used by the output module.

Transfer_Fields
Called by:
Main function
Parameters in:
The ADF Type and the initialized MPR Type.
Purpose:
To call the appropriate functions to transfer the ADF Type fields to the MPR Type fields. This will not include the phone number.
Calls:
Transfer_User_Name (ADFType ,MPRType)
Transfer_From (ADFType, MPRType)
Transfer_Priority (ADFType, MPRType)
Transfer_Security (ADFType, MPRType)
Transfer_Synopsis (ADFType, MPRType)
Parameters Out:
Returns the MPR Type with the appropriate fields transfered from the ADF Type.

Transfer_User_Name
Called by:
Transfer_Fields function
Parameters in:
An ADF record type and a MPR record type.
Purpose:
To transfer the user name from the ADF Type to the MPR Type.
Calls:
Nothing, this is the lowest level of the task.
Parameters Out:
Returns the MPR Type with the user name field.

Transfer_From
Called by:
Transfer_Fields function
Parameters in:
An ADF Type and the MPR Type.
Purpose:
To transfer the message from to the MPR Type.
Calls:
Nothing, this is the lowest level for the task.
Parameters Out:
The MDR Type with the From field.

Transfer_Priority
Called by:
Transfer_Fields function
Parameters in:
To transfer the priority from the ADF Type to the MPR Type.
Calls:
Nothing, this is the lowest level of the task.
Parameters Out:
Returns the MPR Type with the priority field.

Transfer_Security
Called by:
Transfer_Fields function.
Parameters in:
An ADF Type and a MPR Type.
Purpose:
To transfer the security to the MPR Type.
Calls:
Nothing, this is the lowest level of the task.
Parameters Out:
Returns the MPR Type with the priority field.

Transfer_Synopsis
Called by:
Transfer_Fields function
Parameters in:
An ADF Type and a MPR Type.
Purpose:
To transfer the synopsis to the MPR Type.
Calls:
Nothing, this is the lowest level of the task.
Parameters Out:
Returns the MPR Type with the user name field.

Transfer_Phone_Number
Called by:
Main function
Parameters in:
The pointer to the file of phone numbers and the MPR Type.
Purpose:
To access the file of phone numbers and search for the correct phone number to transfer. This function will search through the list of phone numbers by name.
Calls:
Nothing, this is the lowest level of the task.
Parameters Out:
Returns the MPR Type with the phone number field.

Secure_MPR
Called by:
Main function
Parameters in:
A MPR Type.
Purpose:
To secure the various fields for transport to the user. This function will blank out the Message From field and the Subject field with a "secured message" indicator.
Calls:
Nothing, this is the lowest level of the task.
Parameters Out:
Returns the MPR Type with the correct From and Subject fields.

Create_Output_File
Called by:
Main function
Parameters in:
The MPR Type.
Purpose:
Will create a text file out of the MPR Type. This file will correspond to the fbeep standard input.
Calls:
Nothing, this is the lowest level of the task.
Parameters Out:
Function returns a pointer to the newly created text file.

User Interface

Our group does not have a user interface per se. The only portion of CyberNag that the User will see from our portion will be from the pager, as we are handling output. For a view of the overall user interface, refer to the
Overall Architecture group's design document. Image of Pager


Link to the "Ball and Chain" Project Notebook
Last Modified 2/08/96 -- Richard Sottilaro (gt5557a@prism.gatech.edu)