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
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.