Language selection

Search

Patent 2335743 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent Application: (11) CA 2335743
(54) English Title: MESSAGE SYSTEM FOR ASYNCHRONOUS TRANSFER MODE
(54) French Title: SYSTEME DE GESTION DE MESSAGES A MODE DE TRANSFERT ASYNCHRONE
Status: Dead
Bibliographic Data
(51) International Patent Classification (IPC):
  • H04Q 11/04 (2006.01)
(72) Inventors :
  • LEE, KENNY YING THEENG (United States of America)
(73) Owners :
  • RICOS INTERNATIONAL, INC. (United States of America)
(71) Applicants :
  • RICOS INTERNATIONAL, INC. (United States of America)
(74) Agent: SMART & BIGGAR
(74) Associate agent:
(45) Issued:
(86) PCT Filing Date: 1999-06-23
(87) Open to Public Inspection: 1999-12-29
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/US1999/014236
(87) International Publication Number: WO1999/066782
(85) National Entry: 2000-12-19

(30) Application Priority Data:
Application No. Country/Territory Date
60/090,441 United States of America 1998-06-24

Abstracts

English Abstract




An asynchronous transfer mode system operates using virtual addresses VPI and
VCI (310). Cells including these addresses are received (305). The data
associated with these cells is stored in a table. The table contents are
advantageously accessed according to a connection number. The proper
connection number is more easily found by using two variables. A first
variable is associated with a number of active connections (316). A second
variable is associated with the last-used index in the table (317).


French Abstract

L'invention porte sur un système à mode de transfert asynchrone qui fonctionne au moyen d'adresses virtuelles VPI (identificateur voie virtuelle) et VCI (identificateur canal virtuel). Des cellules comprenant ces adresses sont recueillies. Les données associées à ces cellules sont stockées dans une table. On accède de manière avantageuse au contenu de la table d'après un numéro de connexion. Le numéro de connexion correct se trouve plus facilement à l'aide de deux variables. Une première variable est associée à un numéro de connexions actives. Une seconde variable est associée à l'indice utilisé en dernier dans la table.

Claims

Note: Claims are shown in the official language in which they were submitted.



CLAIMS

What is claimed is:
1. A method of transferring a plurality of messages,
comprising:
dividing each message into data cells that contain an
address which identifies the corresponding message;
receiving said cells at a receiving node; and at said
receiving node, defining at least a first variable related to
said address.
2. A method as in claim 1, further comprising forming an
array for storing said data cells.
3. A method as in claim 2, wherein said first variable is
related to entries in said array.
4. A method as in claim 2, wherein said first variable is
related to a number of active messages in said array.
5. A method as in any of claims 2, 3 or 4, further
comprising, at the receiving node, receiving a cell and comparing
the address of the cell within said array by searching said array
only between a lowest possible index and a value based on said
variable.
6. A method as in claim 2, further comprising defining a
second variable related to said array.
7. A method as in claim 6, wherein said second variable
is related to a fill state of said array.
8. A method as in claim 6, further comprising comparing
said second variable to said first variable to determine free
-207-




entries in said array.

9. A method as in claims 6 or 7 further comprising
determining if there are free entries in said array by using said
variable, searching said table for said free entries if so, and
using said variable to determine a location for a new message to
be added, if not.

10. A method as in claim 1, wherein said communication is
via Asynchronous Transfer Mode (ATM) protocol.

11. A method as in claim 10, wherein said address of said
cells include a virtual channel identifier (VCI) and virtual path
identifier (VPI).

12. A method as in claim 1, wherein said communication is
via a digital subscriber line (DSL).

13. A network interface card device for communicating
with a plurality of simultaneous communications, comprising:
a register, storing an array including a plurality of
simultaneous data transmissions, at least a plurality of said
data transmissions formed by a plurality of separated cells of
information, whereby each of the cells have a shorter total
length than the data transmission, and each data transmission and
each cell of the data transmission are represented by an address;
said array adapted to store contents of said cells and its
corresponding address, such that each cell's content is added to
an entry in said array which represents the address associated
with said each cell, and said array also storing a first variable
related to contents of at least a plurality of said simultaneous
data transmissions in said array; and a controller, operating
from a stored instruction set, to receive a cell, to use said
first variable to search said array that enables searching less
than all of said array, to add said cell to a desired entry in


-208-


said array if an address of said cell is found in said array and
to add a new address to said array if said address of said cell
is not found in said array.
14. A device as in claim 13, further comprising a second
variable related to said plurality of simultaneous data
transmissions, wherein said controller also uses said second
variable to search said array.
15. A device as in claim 14, wherein said controller
removes an entry corresponding to an ended message from said
array.
16. A device as in claim 15, wherein said first variable
is related to a number of connections, and wherein said
controller is operative to determine whether a blank space exists
in said array by comparing said first variable to said second
variable.
17. A device as in claim 16, wherein said controller
compares said first variable to said second variable, adds a new
entry at the end of the array if said first variable equals said
second variable, and searches from a lowest value to a value of
said second variable if said first and second variables are not
equal.
18. A device as in any of claims 14, 16 or 17, wherein
said first variable represents a number of active connections in
said array that is used, and said second variable represents a
last index in said array.
19. A method of receiving a multi-part message at a
receiver, comprising:
receiving cells of a plurality of multi-part messages at
said receiver, each said cell including an address associated
-209-


therewith;
maintaining, at said receiver, a memory array indicating
said messages, where each entry in said array refers to a
specific address;
also maintaining at said receiver, a first variable
indicating a number of active connections in said array and a
second variable indicating a last-used index in said array; and
determining a free entry in said array to use by comparing
said first and said second variables to one another.
20. A method as in claim 19 further comprising comparing
an address of an incoming cell to all existing addresses in said
array by searching only between a lowest possible index and a
value of said first variable.
21. A method as in claim 20 further comprising detecting
a match in said searching, and then terminating said searching.
22. A method as in claim 20 further comprising detecting
no match in said searching, and defining a new location in said
array.
23. A method as in claim 19 wherein said message is ATM,
and said address includes a virtual path identifier and virtual
channel identifier.
24. A network interface card apparatus, comprising:
a memory;
a controller, adapted to receive messages, wherein at least
a plurality of said messages are formed by a plurality of
separated cells including only part of said messages, said
controller also operative to:
store an array in said memory that includes data contents
of said cells;
define a first variable related to a characteristic of said
-210-



array;
detect a cell having a same address as one of said cells
which is already stored;
store data from said on cell along with said
previously-stored cell for said address;
detect a new address for which no previous data has been
stored; and
find a free position in said array without searching said
entire array by using said first variable.
25. An apparatus as in claim 24 wherein said first
variable having a value related to at least a plurality of said
messages.
26. An apparatus as in claim 25 wherein said variable is
related to a number of active connections.
27. An apparatus as in claim 25 wherein said variable is
related to a last index that is used in the table.
28. An apparatus as in claim 24 wherein said address
includes at least a virtual identifier.
29. A method of operating an asynchronous transfer mode
(ATM) system, comprising:
receiving a plurality of simultaneous messages, each of
said simultaneous messages being formed of a plurality of cells
with addresses, said cells collectively containing data forming
the simultaneous messages;
maintaining an array for storing said data associated with
its respective addresses;
storing a first variable associated with said plurality of
messages;
detecting a new message, which does not have a previous
entry in said table; and
-211-



finding a free entry in said array by searching fewer than
all entries in said array by using said first variable.
30. A method as in claim 29 further comprising storing two
variables associated with said plurality of simultaneous
messages, one of said variables relating to a number of active
messages, another of said variables related to a size of the
table.
31. A method as in claim 30 wherein finding a free entry
comprises comparing said variables to one another.
32. A method as in claim 31 further comprising
incrementing said first and second variables if said variables
are equal.
33. A method as in claim 31 wherein if said variables are
not equal, searching less than all of said array to find a free
entry in said array.
34. A method as in claim 29 further comprising assigning
a connection number to said cells based on said addresses, and
storing said connection number are along with other cells with
the same connection number.
35. A method as in claim 29 further comprising removing
an inactive message from said array.
36. A method as in claim 35 wherein said inactive message
is removed by setting its address to all zeros.
37. A method as in claim 36 further comprising changing
said first variable after removing said inactive message.
38. A method of handling data cells which collectively
-212-



form a message, comprising:
receiving a plurality of cells representing a plurality of
messages;
obtaining an address from each said cell;
storing information from said cells in an array such that
said cells are associated with a particular said message;
defining a pair of variables associated with said array,
said variables representing characteristics of entries in said
array;
using said variables to search said array for an address;
and
adding said information from said cell to said array when
said address is found.
39. A method as in claim 38 wherein said message is in an
asynchronous transfer mode format which includes a virtual path
identifier and virtual channel identifier.
40. A method as in claim 38 wherein adding another
address comprises removing said address prior to adding.
41. A method as in claim 40 wherein one of said variables
represents a last-used index in said array.
42. A method as in claim 40 wherein one of said variables
represents a number of simultaneous connections.
43. A method as in claim 42 further comprising comparing
said variables, and taking a first action if said variables are
equal and taking a second different action if said variables are
not equal.
44. A method as in claim 43 wherein said first action
comprises using a next value in said array.
-213-



45. A method as in claim 44 wherein said first action
further comprises incrementing a value of one of said variables.
46. A method as in claim 45 wherein said second action
comprises searching up to a value of one of said variables for
a free entry in said array.
47. A method as in claim 44 wherein said second action
comprises searching up to a value of one of said variables for
a free entry in said array.
48. A method as in claims 38 or 39 further comprising
changing a value of one of said variables.
49. A method of operating in an asynchronous transfer
mode, comprising:
receiving a plurality of simultaneous messages, each of
said simultaneous messages received as a plurality of separated
cells which include an address;
maintaining an array of information from said cells;
maintaining a first and a second variable associated with
said array; and
comparing said variables to each other to determine the
existence of a free entry in said array, thereby enabling a
search of less than all of said array if a free entry exists
therein.
50. A method as in claim 49 wherein one of said variables
is related to a number of active connections.
51. A method as in claim 49 wherein one of said variables
is related to a last entry in said array.
52. A method as in claim 49 wherein one of said variables
is related to a number of active connections and another said
-214-



variable is related to a last used index in said array.
53. A method as in claim 49 further comprising adding a
new connection by comparing said variables, taking a first action
if said variables are equal and a second action if said variables
are unequal.
54. A method as in claim 53 wherein said first action
comprises incrementing each of said variables.
55. A method as in claim 53 wherein said second action
comprises searching between a minimum value and a value of said
second variable to look for a free entry in said array, said
searching comprising searching less than all entries in said
array.
56. A method as in claim 54 wherein said second action
comprises searching between a minimum value and a value of said
second variable to look for a free entry in said array, said
searching comprising searching less than all entries in said
array.
57. A method of operating in asynchronous transfer mode,
comprising:
maintaining an array in memory having a plurality of
simultaneously-transmitted messages, each message transmitted as
a plurality of separated cells, said array capable of
associating cells that are related to one another;
receiving a cell containing an address therein;
removing the address from said cell;
forming a variable which represents a last value in said
array;
forming a loop from zero to said variable;
at each point in said loop, comparing said to an address in
said array; and
-215-




adding data from said cell to said array in a location
associated with said cells that are related to one another, if
said address matches an address in said array.

58. A method as in claim 57 further comprising adding a
new connection if said removed address does not match any address
in said array.

59. A method as in claim 57 or 58 further comprising
forming a second variable related to a number of active
connections, and wherein said second variable is incremented when
a new connection is added.

60. A method of operating a modem comprising:
maintaining an array for storing messages, including
addresses associated with said messages and a connection number
corresponding to said addresses;
receiving a cell;
obtaining an address from said cell; and
comparing said address to existing addresses stored in said
array to determine if said address is present in said table and
if so obtaining a connection number for said cell.

61. A method as in claim 60, further comprising storing
information associated with said cell at a location in said array
related to said connection number.

62. A method as in either of claims 60 or 61, further
comprising removing said address from said cell prior to storing
said cell.

63. A method as in claim 60, wherein said address includes
a virtual identifier.

-216-




64. A method as in claim 63, wherein said virtual
identifier includes a virtual path identifier and a virtual
channel identifier.

65. A method as in claim 60 or 61, further comprising
searching said array by searching less than all elements in said
array.

66. A method as in claim 62, further comprising
maintaining one variable associated with all entries in said
array.

67. A method as in claim 60, further comprising
maintaining a first variable representing a number of active
connections in said table, and a second variable representing a
last index in said table.

68. A method as in claim 60, wherein a single table is
adapted to store said connection number, said address, and their
corresponding data.

69. A method as in claim 60, wherein said array comprises
two arrays, wherein said first array translates address to
connection number, and said second array stores data for each
connection number from said cells.

70. A method as in claim 60, further comprising forming
at least one variable associated with all of the entries in said
array, and changing said variable each time the entries in said
array change.

71. A method of handling a plurality of simultaneous
messages in an ADSL network interface, comprising:
receiving a cell of information from the ADSL network;
detecting an identifier associated with said cell;

-217-




determining if a memory already includes said detected
identifier;
if said memory includes said detected identifier, storing
information associated with said cell in an entry location in
said array associated with said existing identifier;
if said memory does not include said identifier, adding a
new entry to said array by searching less than an entire extent
of said array to find a free entry, adding a new entry, along
with said identifier from said cell, and storing only said data
in said array; and
defining one variable associated with all messages in said
array, and using said variable for said searching.

72. A method as in claim 71, further comprising defining
two variables associated with all of said messages in said array,
and using both of said variables for searching.

73. A method as in claim 72, wherein one of said
variables is related to a number of active connections and the
other of said variables is related to a structure of said array.

74. A method as in claim 73, wherein said other of said
variables defines a last-used index in said array.

75. A method for supporting a flexible addressing scheme
for an ADSL interface using a VPI/VCI value in a header of a
cell, comprising:
determining a first entry of an array for storage of a
value, said array having a number of entries, said entries being
less than the number of connection values in said range;
storing a predetermined one of said connection values in
said first entry;
receiving said cell;
extracting said VPI/VCI value from said cell;

-218-




comparing said VPI/VCI value to entries in said array in a
sequential manner;
determining a match when said VPl/VCl value is present in
one of said entries; and
passing the contents of said one of said entries and said
cell to a processor for further processing when said match is
determined.

76. The method as in claim 75 wherein determining a
first entry includes:
comparing a null value to entries in said array in a
sequential manner, said null value being outside said range of
connection values;
determining a null match when said null value is present in
one of said entries; and
setting said first entry as said one of said entries.

77. The method as in claim 75 further comprising:
determining an additional entry location in said array for
storage of a connection value; and
storing an additional predetermined one of said connection
values in said additional entry.

78. The method as in claim 77 wherein determining an
additional entry includes:
comparing a specified value to entries in said array in a
sequential manner, said null value being outside said range of
connection values;
determining a match when said specified value is present in
one of said entries; and
setting said additional entry as said one of said entries.

79. The method as in claim 78 further comprising:
recognizing a delete connection value;
comparing said delete connection value to entries in said

-219-




array in a sequential manner;
determining a match when said delete connection value is
present in one of said entries; and
storing said specified value in said one of said entries.

80. The method as in claim 78 further comprising:
recognizing an additional connection value; and
repeating said step of determining said additional entry of
said array.

81. The method as in claims 75, 76, 77, 78, 79 or 80
wherein said number of entries is 32.

82. A method for supporting a flexible addressing scheme
for an ADSL interface using a VPI/VCI value comprising:
setting a num_of_conn variable equal to zero;
setting a last-index variable equal to zero;
determining a first entry of an array for storage of a
value wherein said array having a number of entries that are
less than the number of connection values in said range,
including;
setting said first entry equal to said last-index variable;
incrementing said last-index variable;
incrementing said num_of_conn variable;
storing a predetermined one of said connection values in
said first entry;
receiving said cell;
extracting said VPI/VCI value from said cell;
comparing said VPl/VCl value to entries in said array in a
sequential manner starting with said first entry and ending at
said last-index variable;
determining a match when said VPI/VCI value is present in
one of said entries; and
passing the contents of said one of said entries and said
cell to a processor for further processing when said match is

-220-




determined.

83. The method as in claim 82 further comprising:
determining an additional entry of said array for storage
of a connection, including;
setting said additional entry equal to said last-index
variable, incrementing said last-index, incrementing said
num_of_conn variable;
storing an additional predetermined one of said connection
values in said additional entry.

84. The method as in claim 83 further comprising:
recognizing a delete connection value;
comparing said delete connection value to entries in said
array in a sequential manner starting with said first entry and
ending at said last-index variable;
determining a match when said delete connection value is
present in one of said entries; and
storing a specified value in said one of said entries, said
specified value being outside said range of connection values;
decrementing said num_of_conn variable.

85. The method as in claim 84 further comprising:
recognizing a second additional connection value;
determining a second additional entry of said array for
storage of a connection value, said step of determining a second
additional entry including; setting said second additional entry
equal to said last-index variable, incrementing said last-index
variable, and incrementing said num_of_conn variable;
comparing said specified value to entries in said array in
a sequential manner starting with said first entry and ending at
said last-index variable;
determining a match when said null value is present in one
of said entries;
setting said second additional entry equal to said one of

-221-




said entries when said match is determined, decrementing said
last-index variable when said match is determined; and
storing said second additional connection value in said
second additional entry.

86. The method as in claims 82, 83, 84 or 85 wherein
said number of entries is 32.

87. An system for supporting a flexible addressing
scheme for an ADSL interface using a VPI/VCI value comprising:
first means for determining a first entry in an array for
storage of a value, said array having a number of entries, said
number of entries being less than the number of connection values
within a range;
second means for storing a predetermined one of said
connection values in said first entry;
third means for receiving said cell;
fourth means for extracting said VPI/VCI value from said
cell;
fifth means for comparing said VPI/VCI value to existing
entries in said array in a sequential manner;
sixth means for determining a match when said VPI/VCI value
is present in one of said entries; and
seventh means for passing the contents of said one of said
entries and said cell to a processor for further processing when
said match is determined.

88. The system as in claim 87 wherein said first means
includes:
a comparing means for comparing a specified value to
entries in said array in a sequential manner, said specified
value being outside said range of connection values;
a determining means for determining a match when said
specified value is present in one of said entries; and
a setting means for setting said first entry as said one of

-222-




said entries.

89. The system as in claim 87 including:
an additional determining means for determining an
additional entry of said array for storage of a connection value,
said second means storing an additional predetermined one of said
connection values in said additional entry.

90. The system as in claim 89 wherein said additional
determining means includes:
means for comparing a specified value to entries in said
array in a sequential manner, said specified value being outside
said range of connection values;
means for determining a match when said specified value is
present in one of said entries; and
means for setting said additional entry as said one of said
entries.

91. The system as in claim 89 further including:
means for recognizing a deleted connection value, said
comparing means comparing said deleted connection value to
entries in said array in a sequential manner, said determining
means determining a match when said delete connection value is
present in one of said entries, and said second means storing
said null value in said one of said entries.

92. The system as in claim 91 wherein said recognizing
means recognizing an additional connection value and said
additional determining means determining said additional entry
of said array.

93. The system as in claims 87, 88, 89, 90, 91 or 92
wherein said number of entries is 32.

94. A method for supporting a flexible addressing scheme

-223-




for an ADSL interface using a VPI/VCI value in a header of a
cell, said VPI/VCI value being within a range of connection
values, said method comprising:
setting a num_of_conn variable equal to zero;
setting a last-index variable equal to zero;
determining a first entry in an array for storage of a
value, said array having a number of entries that are less than
the number of connection values in said range, including;
setting said first entry equal to said last-index variable;
incrementing said last-index variable;
incrementing said num_of_conn variable, storing a
predetermined one of said connection values in said first entry;
receiving said cell;
extracting said VPI/VCI value from said cell;
comparing said VPI/VCI value to entries in said array in a
sequential manner starting with said first entry and ending at
said last-index variable;
determining a match when said VPI/VCI value is present in
one of said entries; and
passing the contents of said one of said entries and said
cell to a processor for further processing when said match is
determined.

95. The method as in claim 94 including the steps of:
determining an additional entry in said array for storage
of a connection, including; setting said additional entry equal
to said last-index variable, incrementing said last-index
variable, incrementing said num_of_conn variable;
storing an additional predetermined one of said connection
values in said additional entry.

96. The method as in claim 95 further comprising:
recognizing a delete connection value;
comparing said delete connection value to entries in said
array in a sequential manner starting with said first entry and

-224-




ending at said last-index;
determining a match when said delete connection value is
present in one of said entries;
storing a specified value in said one of said entries, said
specified value being outside said range of connection values;
and
decrementing said num_of_conn variable.

97. The method as in claim 96 further comprising:
recognizing a second additional connection value;
determining a second additional entry in said array for
storage of a connection value, said step of determining a second
additional entry including; setting said second additional entry
equal to said last-index, incrementing said last-index variable;
incrementing said num_of_conn variable;
comparing said specified value to entries in said array in
a sequential manner starting with said first entry and ending at
said last-index variable;
determining a match when said specified value is present in
one of said entries;
setting said second additional entry equal to said one of
said entries when said match is determined;
decrementing said last-index variable when said match is
determined; and
storing said second additional connection value in said
second additional entry.

-225-

Description

Note: Descriptions are shown in the official language in which they were submitted.



CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
MESSAGE SYSTEM FOR ASYNCHRONOUS TRANSFER MODE
Cross Reference Ta Related Applications
This application claims the benefit of U.S. Provisional
Application No. 60/090,441, filed June 24, 1998.
Field
The disclosed system teaches a way of simplifying messages
in asynchronous transfer mode. The present system specifically
teaches specifying connection ranges among various information to
simplify the connection.
Background
Asynchronous transfer mode or ATM is a telecommunications
protocol that allows packet based transfer of information. Dells
of information are sent across an information network defined by
a number of nodes. The information is sent from node-to~nodel
An ATM transport network (i.e., a communication network
which transmits information using ATM cell packets) is known to
include an ATM layer and a physical layer. The ATM layer is based
on the virtual path/virtual channel (VP/VC) concept. The VC
identifies a unidirectional communication capability through
which ATM cells are transported. One or more virtual channels
-1-


CA 02335743 2000-12-19
t
(VCs) can be used in a particular virtual path (VP), which also
identifies another level of the communication capability through
which the ATM cells are transported.
An ATM cell is the smallest information unit. It includes a
header field of 5 bytes or octets, and a payload field of 48 bytes
or octets. The header field includes VP and VC identifiers. These
identifiers are used for routing the information to an intended
destination.
Communication in known ATM networks is initiated during a
connection setup, after which cells belonging to one connection
follow a predetermined path defined by the VPI and VCI on a
particular link. The connection control information transferred
during setup utilizes a unique Signalling VC (SVC) which is
included in the VP. The SVC is identified by the virtual path ID
(VPI) and virtual channel ID (VCI).
Cells destined for many different end points are sent over a
single physical communications circuit. The header of each cell
includes a channel identifier which is used to control the routing
of the cell through the ATM system_ The channel identifier
determines routing of the cell.
In a typical ATM system there are 256 possible VPIs and 65,536
possible VCIs; thus, there are 16,777,216 possible channel
identifiers (VPI/VCIs). One of the many challenges in designing an
ATM network is how to handle this huge number of connections.
AMENDED SHEET


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Specified traffic control protocols are used to determine
the routing of the information. The routing is controlled using
conventional addressing techniques.
Further details of ATM are well known in the art. In
addition, different flavors and sub-types of ATM are known,
including digital subscriber line ("DSL"), assymetric digital
subscriber line("ADSL"), and other flavors of digital subscriber
line ("XDSL").
In all of these communication modes, a message is broken
l0 into multiple portions or cells. A conventional ATM system
breaks the total message to be sent over ATM into 48 byte data
portions. A typical data message might be, for example, 1500
bytes in length. Hence, the 1500 byte message is divided up into
31 of the 48 byte cells.
The ATM message is sent into the ATM environment with 48
byte increments, each addressed by 24 bits of VPI/VCI to instruct
where the package is going.
The recipient node needs to form this data together into the
original size. That original recipient receives a mixed message
within multiple cells, typically having multiple VPIs and VCIs.
One way to handle the mixed message is to place each of the
messages into a buffer as received, and remove the different
cells from the buffer to form one total :message.
-3-


CA 02335743 2000-12-19
i
This system includes certain limitations. For instance, if
the VPI is used as an index to the buffer, the amount of memory for
the addressing scheme can increase, and make it difficult to review
the contents. Searching the array can take large amounts of
processing power and memory. As the number of VPI/VCI connections
increases, the array size can grow exponentially.
A publication entitled "Asynchronous Transfer Mode Receiver"
in IEE Proceedings-E, Vol. 139, No. 5, September 1992 discloses a
memory management method for data cells temporarily stored in a
buffer, wherein each data cell comprising a common message packet
is linked together using a message-identifier (MID) field found in
the cell's header. The first cell of a packet is assigned a
beginning-of-message (BOM) cell type, and subsequent cells of the
same packet are labelled continuation-of-message (COM) cells. The
last cell for the packet is labelled end of message (EOM). The
BOM, COM and EOM cells share the same MID since it is unique to a
specific source, and upon receipt of the EOM, the receiving node's
processor removes the corresponding MIDs from its list of known
MIDs_
The present system teaches a simplified system and method for
managing data cells in an array or buffer, wherein at least one
variable, exclusive of the MID, is defined and used to facilitate
searching the buffer for cells related to a common message.
Summary
The present specification, in recognition of the above,
defines an improved way of handling a message from system which
AMENDED SHEET


CA 02335743 2000-12-19
divides total messages into divided cells. Each of the cells is
associated with an address. In a disclosed mode, that address can
be a virtual address. A table is stored in memory which includes a
list of connection number, address, and data for each of the
connection number. Each of the cells is stripped of its address,
associated with the connection number, and the data associated with
that cell is put into the table. The table stores a plurality of
information pieces about a number of simultaneous connections.
Access to the table is simplified by defining at least one
l0 variable associated with all of the simultaneous messages in the
table_ This variable is a variable that facilitates searching the
table. One possible variable is a variable associated with the
number of connections. Another variable is associated with
the length of the table, e.g., the last-used index. In one
disclosed mode, two variables are used, one of which is related to
the last index, and the other which is related to the number of
connections. If the two variables are equal, then the table is
full, and the next entry in the table can be used for a new
connection. Otherwise, the system can search to a value no higher
than the last-used index, and by so doing, search less than all of
the total number of values in the table.
The hardware and firmware forming a network interface card is
also disclosed.
Brief Description of the Drawings
These and other aspects will be described in detail with
respect to the accompanying drawings, wherein:
s
AMENDED SHEET


CA 02335743 2000-12-19
FIG. 1 shows a general network architecture of an Asynchronous
Transfer Mode (ATM) network.
FIG. 2 shows a VPI/VCI header.
FIG. 3 shows a memory table in accordance with the present
invention.
FIG. 4 shows a detailed architecture of a typical ATM data
cell.
FIG. 5 shows the relationship between a VPI and VCI in an ATM
data cell.
FIG. 6 shows an alternative embodiment of the present
invention using two memory tables.
FIGS. 7 - 9 show flowcharts of software operations.
FIG. 10 shows a block diagram of the network interface card in
accordance with the present invention.
FIG. 11 shows a block diagram showing the clocking of the
present system.
FIG. 12 shows a flowchart of the different power-up modes.
FIG. 13 shows different user selectable operations.
FIG. 14 shows the reset flowchart.
FIG. 15 shows dying gas used during reset.
FIG. 16 shows a power supply layout.
FIG. 17 shows a block diagram of the application specific
integrated circuit (ASIC) which can be used.
FIG. 18 shows a network interface diagram with components.
FIG. 19 shows a flowchart showing some aspects of
installation.
FIG. 20 shows a network interface diagram.
FIG. 21 shows a screen shot of windows autodetection.
FIG. 22 shows a windows NP installation.
FIG. 23 shows a flowchart of different operations of
installation.
FIG. 24 shows a screen shot of application parameters.
FIG. 25 shows a service monitor screen shot.
FIG. 26 shows a service connection screen shot.
AMENDED SHEET


CA 02335743 2000-12-19
FIG. 27 shows a network connection screen shot.
FIG. 28 shows the modified network configuration dialog.
FIG. 29 shows connecting using asynchronous transfer mode over
ATM connection dialog.
FIG. 30 shows the setup of global ATM.
FIG. 31 shows the setup of network performance for global ATM.
FIG. 32 shows the optionally configuration parameters tab for
ATM.
FIG. 33 shows a download flowchart.
FIG. 34 shows a preferred data structure used for the download
flowchart.
FIG. 35 shows a basic block diagram of the ADSL NIC firmware.
FIG. 36 shows a first diagram of mailboxes used to communicate
the PCI bus and the controller.
FIG. 37 shows a second block diagram using only part of the
mailboxes.
FIG. 38 shows a flowchart of operation of the mailboxes.
FIGS. 39 - 52 show ADSL open command flows.
FIG. 53 shows a basic installation process.
FIG. 54 shows the flow diagram for installing new services.
FIG. 55 shows a flow of power-up.
FIG. 56 shows the loading operations occurring on power-up.
FIG. 57 shows a memory map of the hydrogen chip sets.
FIG. 58 shows another flowchart of power-up.
FIG. 59 shows mailbox operations with a hydrogen chip set.
FIG. 60 shows connecting to the hydrogen.
FIG. 61 shows direct memory access to the hydrogen.
Detailed Description
The overall block diagram of the general network architecture
is shown in FIG. 1. The embodiments described herein can operate
as part of an ATM system. An ADSL interface card for communicating
AMENDED SHEET


CA 02335743 2000-12-19
with an ADSL network is described. More generally, however, this
system can operate within any system that carries out data
communication by dividing a total message into separate addressed
packets, or more specifically in an asynchronous transfer mode
system.
A PC 125 is, for example, an Internet service provider that
provides Internet service to a number of users 98, 99, and others
that are not shown. PC 125 includes an ADSL network interface card
or "NIC" 110. NIC 110 connects to the telephone line 112 via a
plain old telephone system (POTS) splitter 114. Other POTS
equipment 117 can include conventional telephone equipment.
A conventional ATM subscriber access multiplexes or "ASAM" 120
connects from telephone line 112 to ATM network 115. The ASAM 120
multiplexes a number of communications via the ATM network 115. In
this system, the NIC 110 becomes a node connecting to the ATM
network 115 which allows routing to other nodes, such as second
node 150. While only one second node 150 is shown, the ATM network
is typically connected to literally thousands of other nodes shown
generally in FIG. 1. Any of the multiple nodes can send or receive
a message. The connection among these nodes are based on their
VCI/VPI identifiers. Node 1 receives a number of cells that will
form ATM messages.
Each cell is of the general form shown in FIG. 2. A 5 byte
("Octet") header 200 includes the virtual path identifier 202,
AMENDED SHEET


CA 02335743 2000-12-19
virtual channel identifier 204, payload type 206, and other
conventional ATM control data.
When the cells arrive at the NIC 110, the 5 bytes of header
information are used to determine how to reconstruct the entire
message among the multiple messages that are sent at once.
A typical way to operate is to put the entire information,
including the 5 byte header information, into a buffer in memory,
e.g., an array. The array could be addressed using the VPI and VCI
as addresses to the array.
The disclosed system uses a special memory table 225 shown in
FIG. 3. Two additional variables are also maintained, related to
all of the entries in the table 225. A first variable is related
to the number of active messages, and defines the total current
number of connections ("num_of corm"). A second variable defines
the last used index in the table ("last_index").
A connection number is defined for each message. The
connection number can be, for example, between 0-31, thereby
allowing 32 simultaneous connections. This connection number can
be expressed as one byte of information.
2o The remainder of the table entry includes the 8 bit VPI and
the 16 bit VCI corresponding to the connection number. The cell
contents from the multiple cells of the message are filled into the
table entry field 230.
The num_of corn variable represents the number of current
active connections within the table. FIG. 3 shows three
connections, and therefore num of cone =3.
AMENDED SHEET


CA 02335743 2000-12-19
The last_index variable represents the last free index in the
table entries, here again 3.
FIG. 4 shows the architecture of a typical data cell usein in
an ATM system, while FIG. 5 shows the relation ship between VPI and
S VCI in an ATM Cell.
An alternative table form is shown in FIG. 6. In this system,
there are two tables. A first table part 250 translates between
the VPI/VCI of an incoming cell 252, and its connection number. A
second table part 260 arranges each of the datal, data2, data3 of
the cells into a table arranged by connection numbers.
This table and variables are kept up-to-date with each new
connection and each dropped connection as described herein. The
ADSL NIC includes an internal controller that operates according to
the flowcharts described herein to process the cells. The detailed
operation is shown with respect to the flowcharts of FIGs. 7 - 9.
A cell arrives at step 305, having the general form shown in
FIG. 2.
At step 310, the cell header 200 is extracted, which provides
the addressing information from its VPI/VCI. At this time, error
checking can be carried out in conventional ways, and the VPI and
VCI values are removed. The VPI and VCI values
are used as addressing information and translated into
connection numbers.
At step 315, a loop is formed from 0 up to the value of
last_index value. Step 316 compares each VPI/VCI in the table
against the current VPI/VCI from the received cell at 316. If
0
AMENDED SHEET


CA 02335743 2000-12-19
there is a match, flow passes to step 320 where the current cell
is added to the cells 230 for the current connection number. If
not, the loop is compared against last_index at 317. If the
loop value is greater than or equal to last_index, the current
VPI/VCI is not in the table. The add connection routine is
called at 321. Otherwise, the loop value is incremented at 318,
and the next value is tested.
Therefore, each VPI/VCI is handled as an connection number
of 0-N, where N is the maximum allowed number of simultaneous
messages. A typical value for N might be 32.
Importantly, the total allowed number of simultaneous
messages does not increase the length of the search. Instead,
the maximum search ends at the last_index value which represents
the last-index that is used. The search length is increased
I5 only by the number of existing active connections instead of the
numbers of allowed connections.
The add connection writes new VPI/VCI values to the table
index. This is carried out according to the routine shown in
FIG. 8.
Step 330 first determines if the number of connections
variable (num cone) is equal to the last-index variable
(last_index). If so, then as in the example of FIG. 2B, the
table is currently full. The system then uses the next
consecutive entry after last_index as shown in step 332. The
table entry corresponding to the last_index is set to the
'l1
AMENDED SHEET


CA 02335743 2000-12-19
current VPI/VCI address at 332, and both the last index and
num corm are incremented.
As described herein, when a connection is terminated, a
value will be removed from the table, leaving a space in the
table. The space is noted by setting the VPI/VCI value to all
0's. In that case, num_conn will not be equal to last_index at
330.
The flowchart passes to step 334 which carries out an error
checking routine to first determine if num_conn is less than
last index. If not, an error is established at step 336.
If the num_conn is less than last_index, however, step 338
illustrates a loop from 0 up to the last_index value, to find a
free table entry. That free table entry is then set to the
current VPI/VCI at 340. Only the Num_conn is incremented at
step 342.
A VPI/VCI connection can also be removed as illustrated in
FIG. 9. Termination of an ATM message is known in the art.
When a message is complete, the message being terminated passes
~( 2
AMENDED SHEET


CA 02335743 2000-12-19
its VPI/VCI address to the routine of FIG. 9. This is received
at step 350. Step 352 loops up to the value of last index to
find a match to the current VPI/VCI value. This is similar to
steps 315, 316, 317 in FIG. 7.
At step 354, the determined table entry is marked as being
free by setting the VPI/VCI to all zeros. The number of
connections is also decremented. However, last index is not
decremented unless the last entry in the table is being removed.
Step 356 shows determining if the current loop value =
last_index. If so, last_index is decremented at 358. In either
case, num_conn is decremented at 360.
Hence, this addressing becomes relatively simplified. The
data from the cells is stored in an improved way. Moreover, the
inherent way in which the information is stored automatically
sorts the information into a more logical order.
The use of the two variables, including one that indicates
the number of connections, and another that indicates the last
information that is free, enables searching fewer than the total
number of connections each time a cell is received. When the
entire used part of the table is full, no searching needs to be
done at all to add a new VPI/VCI. When the table is not full,
the search continues only until the first empty point is
reached. Even though a connection may be removed anywhere in
the table, the search need not always search every entry. In
fact, this
AMENDED SHEET


CA 02335743 2000-12-19
search technique will never search the entire array, since if
the array were full, num_corm would equal last_index.
Another routine, not shown, could periodically "crunch"
the table 225 to remove blanks therein. This could be done on
a timed basis, or when the activity gets below a certain level.
The previous discussion has referred to flowcharts, and it
should be understood that these operations could be carried out
by executing code in processors, in dedicated hardware that is
formed using hardware definition language to effect these
flowcharts, in firmware, or in any other form.
One disclosed embodiment which is described uses an
internal PC printed circuit board as the NIC that implements the
operation using firmware. This system described in the
following uses a special processor on the NIC, along with PCI
translator device formed using ATML's "HYDROGEN" chip set. This
hydrogen firmware includes download software, control
information passing, and POST initiation.
The disclosed embodiment uses an internal PC printed
circuit card in the PCI form factor. A block diagram of the
board is shown in Figure 10. The board includes, inter alia, an
On Board Controller 400 ("OBC") that can include a processor, an
FPGA/ASIC assembly 410, an SAR "Hydrogen" chip set 420, power
supply 430, and PCI bus connector 440. The assembly runs Modem
AMENDED SHEET

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
initialization, Power on Self Test (POST), performance
monitoring, and control interface routines among others.
The Hydrogen 420 includes firmware that runs download
software, control information passing, and POST initiation.
The ADSL NIC-ATM conforms to all physical requirements for a
full size PCI bus card. Throughout this document, all references
to the PCI bus are as defined in the PCI Local Bus Specification,
Revision 2.1.
The ADSL NIC-ATM has the following dimensions:
1o Length 12.283" +/- 0.005"
Height 4.2" +/0 0.05"
Asst'. thickness < 0.795"
PCB thickness 0.062" +/- 0.008"
Comp. height (comp. side) <0.57"
Comp. height (back side) <0.105"
The ADSL NIC-ATM PCB edge connector is configured as a 32
bit, 5 volt PCI bus interface card. An external interface is
through an RJ-19 PCB mount connector using pins 2 and 5. This
connector is accessed through a card edge mounting plate mounted
on the PCB. An optional RJ-45 connector can be provided as a
"stuffing" option, i.e. an option that can be added on to the
basic structure.
-15-


CA 02335743 2000-12-19
At least one red/green bi-color LED 399 is mounted on the
PCB in a location to be visible through the card edge mounting
plate.
Clock distribution on the board requires multiple domains.
S The different clocks and their formation are illustrated in FIG.
11. This includes Clock domains that exist on the Hydrogen IC,
the PCI clock domain and the ARM 40Q clock also have their own
domains.
The Hydrogen chip takes the PCI 33 MHZ clock 502 from the
PCI bus edge connector 440 to the Hydrogen IC 420. The Hydrogen
IC is placed to minimize the distance of this clock routing.
The Hydrogen 420 operates at 32 MHZ internally. This 32 MHZ
clock 505 is derived from a 8 MHZ oscillator 504 connected to an
external 8 MHZ crystal 502. The 8 MHZ crystal is placed to
minimize the oscillator input and output trace lengths. Each
side of the crystal is coupled to ground through 12 pF caps 510,
512. A 1 M ohm shunt resistor 514 across the crystal is also
provided.
The 32 MHZ clock 505 is also output from the Hydrogen IC to
the ASIC. This output is active whenever the 8 MHZ oscillator is
operating.
A 16 MHZ "expansion bus° clock 515 is output from the
Hydrogen IC to the ASIC. The ASIC is positioned to minimize the
trace length of this clock signal. The bus clock is active
whenever the system clock is operating.
'l6
AMENDED SHEET


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The ASIC generates Utopia TXCLK 516 and RXCLK 517 signals
and derived from the Expansion Bus Clock. These clock signals
operate at 16 MHZ and are present whenever the Expansion Bus
Clock is operating. The 16 MHZ operating frequency is within
specified operating parameters of both the SACHEM (25 MHZ) and
Hydrogen (33 MHZ) Utopia interfaces.
The TXCLK is routed from the ASIC through a level shift
buffer 520 to minimize skew between TXCLK and TXD[0:7] when the
Txdata is received at the SACHEM Utopia interface.
l0 The level shift buffer can be part of the ASIC 410.
The OBC clock 526 is generated using an on board 25 MHZ
oscillator 525. The oscillator is positioned near the OBC to
minimize the length of this clock routing. The oscillator
operates whenever power is applied to the board. This clock is
also routed to the ASIC 410 far distribution/level shift to the
SACHEM OBC interface.
The ADSL-C clock 530 is derived using an on board crystal
driver/receiver 535. A 35.328 MHZ/crystal 534 is placed on the
board to minimize the length of these signal traces. The
2o external circuit to provide VXCO control is implemented as
specified by Alcatel.
The Master Clock output from the ADSL-C 450 is routed to the
SACHEM IC 460.
-17-


CA 02335743 2000-12-19
The Master Sachem Clock is received from the ADSL-C.
Routing distance for this signal is also minimized.
The PCLK input is routed from the ASIC at the processor
clock frequency.
The DUART clock is generated using an on board oscillator
and an external 1.8432 MHZ Crystal 540. The crystal is placed to
minimize the oscillator input and output trace lengths. Each
side of the crystal is coupled to ground through a 12 pF cap. A
1 M ohm shunt resistor across the crystal is provided.
Initialization of the modem can be carried out on power up
or on reset.
The power up routine is shown in Figure 6. Normal and
standalone modes of power up are supported. The mode is
controlled by jumper selection of the state of the standalone
pin 411 of the ASIC.
The operation of power up proceeds as shown in the
flowchart of FIG. 12. Step 600 first determines the state of
the jumper 411. If the jumper is off, normal power up is
started at 602. 4~lhen power is applied to the board, the
Hydrogen IC, ASIC, OBC, and modem components are held in a reset
state at 602. PCI bus configuration is performed at 604 by
loading PCI configuration parameters from the serial boot PROM
412.
After PCI bus configuration is complete, the Hydrogen run
time software is downloaded via the PCI bus 440, to the onboard
AMENDED SHEET


CA 02335743 2000-12-19
PCI bus boot ROM 422 at 606. A number of user-defined
configuration options are allowed, and are set via the user
interface. One such option is the Hydrogen self test. Some
of these options are shown in Figure 13. Upon completion of
this download at 600, the Hydrogen IC is released from reset,
and executes a series of self test functions at 608 if
Hydrogen self test is selected at 702. Upon completion of
these tests, the Hydrogen 420 downloads the run time software
image to the OBC DRAM 402, at 610, from the Host. After
completion of this download, the Hydrogen 420 sends a command
to the ASIC 410 to the OBC 400 to release from reset at 612.
The OBC then executes optional self test functions if
selected. The OBC performs modem initialization and setup at
614.
After completion of all self test and setup functions, both
the Hydrogen and OBC are operational.
If the jumper 411 is detected as being on at 600,
standalone power up mode is selected. This mode is used, for
example, for testing and development. In this mode, power is
applied to the board, causing the hydrogen 420 to operate. The
standalone routine executes PCI configuration at 622, followed
by download of code at 624. Optional self test functions and
hydrogen initialization are carried out at 626. After
completion, normal execution is carried out.
The OBC starts in standalone mode by bootstrapping from
flash 404 at 628. Optional self test functions are carried out
~9
AMENDED SHEET


CA 02335743 2000-12-19
at 630, and OBC initialization and modem setup at 632, followed
by normal execution.
Two modes of reset are also supported and controlled by
jumper selection of the state of the standalone jumper 411 of
the ASIC 410. If a failure is detected by the host software
during reset, the host software informs the user of the
suspected failure via the user interface.
The reset flowchart is shown in FIG. 14. If the jumper is
off at 800, normal reset is declared.
l0 A reset can be initiated from the PCI bus by assertion of
the RESET# line detected at 800. The reset from PCI can only be
alone after the assembly has been configured and is operational,
with operating power still available to the assembly. If the
dying gasp interrupt has been enabled for the assembly (at 706),
a dying gasp message is transmitted at 804 before implementing
the reset function. The dying gasp signal is a signal that is
sent from the modem to applications and/or services that are
communicating with the modern. The signal tells these services
that the modem is about to be reset. Then, a power up (starting
step 602) is called executing the power up instructions 602-614.
A "soft" reset can be initiated via a command from the Host
detected at 810. Soft reset first carries out hydrogen
bootstrap
AMENDED SHEET

CA 02335743 2000-12-19
WO 99166782 PCT/US99/14236
at 812. This is optional depending on soft reset definition. An
optional hydrogen self test functions is carried out at 814.
Hydrogen initialization is then done at 816. OBC download is
optional (shown as 708) depending on soft reset definition, and
is carried out at 818. OBC self test functions again optional,
are done at 820. OBC initialization and modem setup are done at
822. Then, the normal OBC and hydrogen operation continues.
If the jumper 411 is on at 800, standalone reset is
declared. A reset can then be initiated from the PCI bus by
assertion of the RESET# line at 829. Note that the use of #
after a signal name indicates an active low signal. This signal
holds the OBC in reset at 830 (by the ASIC) for 16,384 clock
cycles to ensure stable clock and VCC conditions. After this a
complete power up cycle is called at 806. The ASIC then releases
the OBC from reset for normal initialization functions to
proceed.
When a "soft" reset is initiated via a command from the host
at 832, the following sequence is executed by the Hydrogen IC:
~ Hydrogen bootstrap (optional depending on soft reset
2b definition) at 834
~ Hydrogen self test functions (optional) at 836
~ Hydrogen initialization at 838
~ Normal Hydrogen operation
-21-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The OBC then executes the following sequence:
~ Bootstrap from Flash 404 (optional depending on soft reset
definition) at 840
~ self test functions (optional) at 842
~ OBC initialization and modem setup at 844
~ normal execution
When the standalone mode is selected, the PC-NIC provides a
push button reset capability.
"Dying gasp" is implemented whenever commanded by the Host
processor software selected at 706. This function is implemented
as part of a controlled power down/shutdown sequence for the Host
or a Host application occurring under the control of the Host
operating system.
The PCI-NIC can generate a Dying Gasp message 804 responsive
to a hard reset initiated by assertion of the PCI bus RESET# line
while power is still applied to the PC-NIC. An alternative is
shown in Figure 9. This support is provided by allowing the OBC
400, under software control, to enable a SAR-RESET# signal, to
generate an interrupt at 902 rather than an OBC reset signal.
2o The OBC then produces the Dying Gasp at 904. The OBC 400 then
initiates a self reset at 908 by first disabling the RESET
interrupt at 906 and then enabling the RESET signal to the OBC.
-22-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
This implementation of Dying Gasp requires that the time to
generate the dying gasp is less than the time required to start
downloading the OBC code. Since a hard reset will initiate a
complete restart of the computer and the operating system (on the
order of several seconds minimum), the dying gasp message will be
complete long before the download of code can begin.
No Dying Gasp message will be generated by unexpected power
loss to the PC-NIC.
Switched +12 Volts can also be output to provide remote
power for an active caps splitter. This output is current
limited to 50 ma. and is intended for application in European
markets.
Hydrogen IC
The Hydrogen IC is completely described in the CL-PS7900
data book from ATML and Cirrus Logic. Functions implemented in
this IC include:
~ DRAM controller
~ PCI bus interface
~ Expansion Bus
~ Utopial Bus IF
~ ATM AFE
~ Watchdog Timer
~ UART
-23-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
~ GPIO
~ Timer
Hydrogen Memory Map
Memory Region Start Address Length


~ 00000000 200000


Config. Regs 10000000 C


Control/status 10000100 10


List Mgr. regs 10000200 50


Timer 10000400 10


GPIO 10000500 8


UART 10000600 14


Watchdog 10000700 8


PCI 10000800 20


Network config 10000900 18


ASIC Registers 20000000 18


OBC memory 20100000 100000


Modem registers 20200000 10000


* all addresses are in hex notation
PCI bus interface
The NIC uses the PCI bus interface of the Hydrogen chip to
implement the PCI rev. 2.1 interface. The PCI bus pins on the
Hydrogen chip 420 is connected to the PC1 bus connector 440.
Boundary scan on the PCI bus jumpers TDI to TDO.
-24-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The Hydrogen IC 420 requires the two Clock inputs described
above. Clock 502 is for the PCI bus interface, and clock 501 is
for internal processing. The Hydrogen 420 also generates output
clocks for expansion bus operation, system clock, and reference
clock.
The PCI Bus Clock input 502 is provided from the PCI bus. It
operates at 33.33 MHZ (30 nsec period) maximum. This clock is
used for all PCI bus functions and the PCI bus controller.
The ARM system clock input is a 64 MHZ internal system clock
l0 that is derived from the 8 MHZ crystal 506. A clock input ClkIn
and crystal driver output (ClkOut) are provided on the Hydrogen
chip to drive this crystal. The 8 MHZ clock drives an internal
phase locked loop that generates the on board system clock. This
is used to generate all on board clock signals for the Hydrogen
IC.
Clock outputs
The following clocks are provided by the Hydrogen IC.
~ Expansion Bus Clock 515 16 MHZ
~ CLK32 505 32 MHZ system clock
2o Each clock output is filtered appropriately for
electromagnetic coupling considerations.
The Hydrogen IC can include up to 16 Mbits of DRAM.
-25-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
~ 256K X 32 bits
~ 512K X 32 bits
The DRAM multiplexed address and CAS/RAS signals are
provided by the Hydrogen IC. DRAM resides in address space
starting at 10000(h). Each DRAM device is provided with a 0.1 uF
decoupling capacitor, and DRAM chips share a single 10 uF
decoupling capacitor.
Up to 8Kbits of serial EEPROM 422 is interfaced via the IZC
bus of the Hydrogen chip.
A serial PROM 412 is used to store the PCI configuration
parameters and is provided and connected to the GPIO pins.
Utopia Interface
The UTOPIA level 1 interface of the Hydrogen IC is connected
to the ADSL Modem chip 450, the ASIC 410, which includes a level
shifter therein. Connections are as follows:
RXD[0:7] Connected directly to ADSL Modem chip
RXCeIIAv Connected directly to ADSL Modem chip
RXClk Connected to ASIC to provide data xfer clock
RXSOC Connected directly to ADSL Modem chip
TXCellAv Connected directly to ADSL Modem chip
TXClk Connected to ASIC to provide data xfer clock
-26-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
TXD[0:7] Connected to ADSL Modem through level shifter
nRXEN Connected to ADSL Modem through level shifter
NTXEN Connected to ADSL Modem through level shifter
TXSOC Connected to ADSL Modem through level shifter [drav~ring]
Utopia outputs from the Hydrogen IC are TTL outputs. These
signals are level shifted by ASIC 410 and routed to the SACHEM IC
460. No tristate of these signals is used.
Inputs to the Hydrogen IC from the SACHEM IC are equipped
with 10 Kohm pull up resistors to prevent floating on these lines
when the SACHEM outputs are tristated.
Complete I/0 specifications for the Hydrogen IC are included
in the Hydrogen CLPS7900 data book. Some specific I/0
characteristics are:
Parameter Min Max


Input Low Voltage -0.5V 0.8V


Input High Voltage 2.OV VCC


Output Low Voltage 0.4V


Output High Voltage 2.4V VCC


I/O capacitance lOpF


Output signals from the Hydrogen IC 420 are 5 Volt TTL
outputs. Corresponding inputs to the Sachem IC 460 are 3.3 Volt
inputs that are not 5 Volt tolerant. A level shift is performed
-27-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
to interface them. Level shifting is performed using a 74LPT244
non inverting buffer or equivalent with propagation delay of less
than 5.0 nsec worst case.
Data is transmitted on one edge of the clock and latched on
the opposite edge of the clock by the receiver. Skew introduced
between the clock and data is a critical parameter to be
controlled. The Txclk signal is also routed through the level
shifter to minimize skew between the data and clock signals. This
results in worst case skew of 3.2 nsec which is negligible at the
16 MHZ (62.5 nsec period).
An 8 KHz clock supplied by the SACHEM modem 460 is routed to
GP103. This pin is an 5 volt I/0 pin, and has required
protection against over voltage conditions being applied to this
pin by inadvertent programming of the Hydrogen I/0 pin on the
PC-NIC.
An optional, debugging, ATM25 interface 423 is used to
facilitate firmware and software development. The Utopia
interface to the ADSL modem chip is disconnected so that only one
of the UTOPIA or ATM25 interface can be used at a time on the
Hydrogen chip.
One pin of the Hydrogen GPIO is used to drive the bi-color
LED 399. The LED is given to indicate more information about the
modem. Red is used to indicate power on, but no ADSL line sync
-28-


CA 02335743 2000-12-19
having been established, or that line sync has been lost. Green
is used to indicate power on and ADSL line sync established.
The Hydrogen IC DUART I/O pins are connected to a three pin
header 424 to assist in software debug and development for run
time software.
The power supply layout is shown in Figure 16. The Hydrogen
Chip draws its operating power from the PCI bus supplied SVDC
using less than 400 ma of current. Decoupling associated with
this device includes a 10 uF cap, and 8 0.1 uF cap.
+5 Volt Power is isolated from the PCB +5 Volt distribution
using an inductive element 1002. This creates a +5 Volt Node
specific to this IC to which the decoupling is referenced. The
clock oscillator use this same unique +5V node
Boundary Scan pins are connected to test points to allow a
boundary scan test of the Hydrogen IC.
The FIG. 10 block diagram shows an ASIC 410_ The ASIC
provides a control interface between Hydrogen, and the SACHEM
modem chip 460, a control interface between the Hydrogen 420 and
the OBC processor 400, a level shifter for control signals
between Hydrogen 420 and SACHEM 460, a level shifter interface
between OBC 400 and SACHEM 460, a DRAM refresh circuit for OBC
DRAM 402, and an address Decode and control signal generation
for the DUART 470.
AMENDED SHEET

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The ASIC is implemented in 3.3 Volt logic with a combination
of 5 Volt and 3.3 Volt I/O. An FPGA, or logic gates defined
using hardware definition language can alternately be used for
development or final product. These are implemented using a 3.3
Volt device with 5 Volt tolerant I/0.
Hydrogen Interface
The ASIC to Hydrogen interface is implemented to allow 5
Volt TTL compatible signals. The ASIC appears to the Hydrogen IC
as memory mapped I/O registers, two blocks of expansion memory
l0 (OBC memory and Modem registers) on the Hydrogen Expansion bus
and as a set of control/interrupt signals. These signals are
defined as:
~ DQ[3 1:0] Bi-directional address/data bus connected to
Hydrogen IC
~ IOWait Output to Hydrogen IC to insert wait states
~ ALE Input from Hydrogen IC to indicate valid address
present
~ BusClk Input from Hydrogen providing l6Mhz bus clock
~ WRS# Input from Hydrogen indicating write of data to
ASIC
~ RDS# Input from Hydrogen indicating read of data from
ASIC
-30-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
~ RST# Input from Hydrogen indicating Bus reset
~ IRQ# Output to Hydrogen for signaling interrupt events
from 80960 interface or from the SACHEM interface
Register definition
Registers reside in the Hydrogen expansion memory space
starting at base address 20000000(h). The registers and their
offset addresses are:
00 Control/Status
04 IRQ Enable


08 IRQ Source


OC IRQ Status


10 OBC mailbox


Control Status
Bit definitions for this register are:
SBit Name lComments Reaet
#


00 R/W OBC reset Indicates state of OBC reset line. Set
When


set, OBC is reset and SAR has control
of


OBC bus. When clear OBC has control
of


OBC bus.


-31-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
O1 R/W Modem reset Indicates state of Modem reset line.Set


When set Modem is reset. When clear


Modem released from reset.


02 R/W Modem Bus Indicates state of Modem bus control.Set
En


When set the SAR has control of MODEM


I/O bus. When clear OBC has control
of


Modem I/0 bus.


3.1.1.2 IRQ Enable
Bit definitions for this register are:
58it Name Comments Reset
#


00 R/W Modem IRQEN When set enables IRQ generation fromClear
the


Modem chipset. When clear IRQ generation


is disabled. This function is only


operational when the Modem Bus enable


line (Bit 2 of Control register)
is set.


O1 R/W Mbox WIRQEN When set enables IRQ generation whenClear
the


OBC writes to the mailbox register.
When


cleared IRQ generation is disabled.


02 R/W Mbox RIRQEN When set enables IRQ generation whenClear
the


OBC reads from the mailbox register.


When cleared IRQ generation is disabled.


-32-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
IRQ Source
Bits in this register are read only. Only IRQ sources that
have been enabled are indicated in this register. Any bits set in
this register are cleared upon completion of reading this
register. Bit definitions for this register are:
Bit Name Comatents Reset
#


00 R Modem IRQ When set indicates IRQ generation Clear
from


the Modem chipset. This function
is


only operational when the Modem Bus


enable line (Bit 2 of Control


register) is set.


O1 R Mbox WIRQ When set indicates IRQ generation Clear
from


an OBC write to the mailbox register.


02 R Mbox RIRQ When set indicates IRQ generation Clear
from


an OBC read from the mailbox register.


IRQ Status
Bits in this register are read only. These bits reflect the
status of IRQ sources regardless of enabled/disabled status. This
-33-


CA 02335743 2000-12-19
WO 99/66782 PCTNS99/14236
register can be used for polled operation. Bit definitions for
this register are:
Bit Name Commeats Reset
#


00 R Modem STATWhen set indicates IRQ request fromClear


the Modem chipset. This function
is


only operational when the Modem
Bus


enable line (Bit 2 of Control


register) is set.


O1 R MboxWSTAT When set indicates that the OBC Clear
has


executed a write to the mailbox


register.


02 R MboxRSTAT When set indicates that the OBC Clear
has


read the mailbox register.


OBC mailbox
This register is a 16 bit read/write register that transmits
data to/from the OBC. Writes to this register generate an
interrupt to the OBC 400 (when enabled by the OBC). When this
register is read, data sent by the OBC 400 is provided to the SAR
420. Read actions also generate an interrupt to the OBC (when
enabled by the OBC).
-34-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Commands and responses to service requests are handled
through this mailbox.
The resets control access to certain registers. The OBC
reset bit is bit 0 of the control/status register. When set, the
SAR 420 has direct read/write access to the 256K X 32 OBC memory
block for code/data download or upload. This memory block resides
at address 20100000(h) of the Hydrogen expansion bus. When the
Modem reset bit 1 of the control/status register is clear, and
the Modem Bus En bit 2 of the control/status register is set, the
1o SAR has direct read/write access to the modem registers. This
register block resides at address 20900000(h) of the Hydrogen
expansion bus.
The ASIC 410 also provides an interface to the OBC 400 to
allow communication with the Hydrogen IC 420 as well as to
perform level shifting between the OBC bus and the SACHEM 460 bus
interface. In addition, the ASIC provides DRAM support for the
OBC DRAM bank.
An input pin 411 to select either normal or 960/modem
standalone operation is provided. The ASIC interface signals for
the OBC are:
~ AD[31:0] Time multiplexed Address and Bi-directional
Data bus
~ CLK2 32Mhz Clock output to OBC
~ PCLK Bus Clock input from OBC
-35-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236


ALE Address Latch Enable input from OBC


RDY# Output to OBC to insert wait states for


accesses


DEN# Input from OBC indicating data enable


W/R# Input from OBC indicating read or write


BE3,2,1,0# Inputs from OBC for byte addressing


RST# Output to OBC to reset processor


BLAST# Burst last byte indication from OBC


INTO# Output to OBC to indicate ADSL modem or


Hydrogen IC interrupt


HOLD Output to OBC to force AD bus to tristate


HOLDA Input from OBC to acknowledge Hold request


Registers reside in the OBC memory space starting at base
address 01000000(h). The-registers and their offset addresses
are:
00 Control/Status
04 IRQ Enable
08 IRQ Source
OC IRQ Status
10 SAR mailbox
14 Timer prescaler
18 Timer #1 divider
1C Timer #2 divider
-36-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
20 Refresh Counter
Bit definitions for the control status register are:
Bit Name Comments Reset
#


00 R Modem reset Indicates state of Modem reset line.Set


When set Modem is reset. When clear


Modem released from reset.


91 R Modem Bus Indicates state of Modem bus control.Set
En


When set the SAR has control of MODEM


I/0 bus. When clear OBC has control
of


Modem I/O bus.


02-03 R/W WS non burstThese two bits indicate the number 3
of


wait states to be inserted for RAM


accesses in non burst transactions


(These wait states are in addition
to


any that may be inserted prior to
an


access due to refresh)


04-OS R/W WS burst These two bits indicate the number 3
of


wait states to be inserted for RAM


accesses in burst transactions (These


wait states are in addition to any
that


may be inserted prior to an access
due


to refresh)


-37-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Memory speeds supported by each wait state for both burst
and non burst accesses are shown below for a bus clock speed of
25 MHZ.
Wait States Non Burst Access Burst Access (2cnd and
subsequent accesses)


0 80 ns 40 ns


1 120 ns 80 ns


2 160 ns 120 ns


3 20.0 ns 160 ns


-38-


CA 02335743 2000-12-19
WO 99/667$2 PCT/US99/14236
Bit definitions for the IRQ enable register are:
Bit Name Comments Reset
#


00 R/W Modem IRQEN When set enables IRQ generation Clear
from


the chipset. When clear IRQ generation


is disabled. This function is only


operational when the Modem Bus
enable


line (Bit 1 of Control register)
is


clear.


01 R/W Mbox WIRQEN When set enables IRQ generation Clear
when


the SAR writes to the mailbox


register. When cleared IRQ generation


is disabled.


02 R/W MboxRIRQEN When set enables IRQ generation Clear
when


the SAR reads from the mailbox


register. When cleared IRQ generation


is disabled.


03 R/W T1IRQEN When set enables IRQ generation Clear
when


Timer #1 expires. When cleared
IRQ


generation is disabled.


04 R/W T2IRQEN When set enables IRQ generation Clear
when


Timer #2 expires. When cleared
IRQ


generation is disabled.


05 R/W GASPIRQEN When set enables IRQ generation Clear
on


assertion SAR RESET# low. When
set ,


-39-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Bits in the IRQ source register are set to be read only.
Only IRQ sources that have been enabled are indicated in this
register. Any bits set in this register are cleared upon
completion of a register read.
If an interrupt event occurs during read of this register,
the IRQ indication is not registered until the current read
access is completed. The IRQO# output is raised on the completion
of each read access of this register. IRQO# is held high for a
minimum of one clock cycle before another interrupt is generated.
Bit definitions for this register are:
Bit Name Comments Reset
#


00 R Modem IRQ When set indicates IRQ generation Clear
from


the Modem chipset. This function
is


only operational when the Modem Bus


enable line (Bit 1 of Control


register) is clear.


O1 R MboxWIRQ When set indicates IRQ generation Clear
from


the completion of a SAR write to
the


mailbox register.


02 R MboxRIRQ When set indicates IRQ generation Clear
from


the completion of SAR read from the


mailbox register.


-40-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
03 R T1IRQ When set indicates IRQ generation Clear
from


Timer #1 expiration.


04 R T2IRQ When set indicates IRQ generation Clear
from


Timer #2 expiration.


05 R GASPIRQ When set indicates IRQ generation Clear
form


an assertion of the SAR RESET pin
low.


Bits in the IRQ status register are also read only. These
bits reflect the status of IRQ sources regardless of
enabled/disabled status. This register is used for polled
operation. If a change of state occurs during a read of this
register, the change of state is not registered until the current
read access has been completed. Bit definitions for this register
are:
Bit Name Comments Reset
#


00 R Modem STAT When set indicates IRQ request from Clear


the Modem chipset. This function
is


only operational when the Modem Bus


enable line (Bit 1 of Control


register) is clear.


O1 R MboxWSTAT When set indicates that the SAR has Clear


executed a write to the mailbox


register.


-41-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
02 R MboxRSTAT When set indicates that the SAR has Clear


read the mailbox register.


03 R T1IRQ When set indicates Timer #1 Clear


expiration.


04 R T2IRQ When set indicates Timer #2 Clear


expiration.


05 R GASPIRQ When set indicates dying gasp request.Clear


The SAR mailbox register 1110 is a 16 bit read/write
register that acts as a mailbox. When written to, data 1112 is
transmitted to/from the SAR 420. Writes to this register generate
an interrupt 1114 to the SAR 420 (when enabled by SAR). When this
register is read, data sent by the SAR is provided to the OBC.
Read actions also generate an interrupt to the SAR (when enabled
by SAR).
Responses to commands and service requests are handled
through this mailbox.
The timer prescaler register is an 8 bit R/W register that
controls prescaling of the OBC clock. The output of this
prescaler feeds both timer counters that can be used to generate
interrupts. The expiration of the prescale counter causes
generation of a clock to both timer counters. It also restarts
counting down from the programmed value 1132 in this register.
-42-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The timer #1 divider register is a 16 bit R/W register that
controls the division of the prescaler output. When the counter
controlled by this register expires, it generates an interrupt
and restarts counting from the programmed value.
The timer #2 divider register is a 16 bit R/W register that
controls the division of the prescaler output. When the counter
controlled by this register expires, it generates an interrupt
and restarts counting from the programmed value.
The refresh counter register 1160 is a 10 bit R/W register
that controls the refresh rate of the DRAM refresh circuit.
Refresh cycles are performed at a rate determined by 1/PCLK
Count. Its default value is set to 300, which results in a
refresh period of 40 nsec * 300 = 12 uses at a clock rate of 25
MHZ (40 nsec period).
Modem register access is controlled by the Modem reset bit.
r-bit 0 of the control/status register and the Modem Bus En bit 1
of the control/status register. When both are clear, the Modem
Registers reside in the OBC memory space starting at base address
02000000(h).
The ASIC also provides support signals for two blocks of
256K X 32 DRAM 1170. The signals include:
~ MA[9:0] Multiplexed Address bus
~ RAS[1:0] DRAM row address strobe
~ CAS[3:0] DRAM column address strobe
-43-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
~ OE# Output enable
~ WR# Write strobe
Refresh of the DRAM 1170 is controlled by the DRAM refresh
116 in the ASIC, in cycles occurring at a rate controlled by the
refresh rate register in the OBC memory map. It has a default
value of approx. 83 Khz; or a 12 usec period. This provides
refresh at a rate for the entire DRAM bank = 512 cycles 12 usec.
- 6.144 msec.
A refresh cycle has 8 clock cycles organized as follows:
~ All CAS pulled low
~ After one clock, All RAS pulled low
~ After one more clock, All CAS pulled high
~ After three more clocks, All RAS pulled high
~ Two cycles are used for recovery
If a refresh cycle is requested during a memory access, the
refresh cycles are implemented after completion of the memory
access. If an access is requested during a refresh cycle, the RDY
line is used to force wait states to allow refresh completion.
DRAM accesses are supported by generation of RASx and CASx
signals in conjunction with the top and bottom halves of the
address bus. OE# and WR# are generated to perform read or write
access. Programmable wait states (0-3) for non burst and burst
-44-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
accesses are supported to allow use of the most cost effective
DRAM that meets performance requirements. All multiplexing of the
DRAM address bus is performed by the ASIC. Byte accesses and
burst accesses are supported.
The ASIC supports operations in standalone, and normal
operation depending on the signal received at 401.
When the standalone input pin 901 is pulled high, the ASIC
allows the processor 400 to operate in a standalone mode. In this
mode, the IBR is read from addresses 1FFF30 through 1FFF60 of the
Flash memory 404, by decoding the external bus address and
enabling read from the Flash memory.
When the standalone pin is pulled low, the ASIC forces the
processor 400 to operate in normal mode with RESET and RAM load
being performed under control of the Hydrogen IC 420. In this
mode, the IBR is read from the mailbox 1110 by decoding the
external bus address and enabling reads from the 426.
Modem Interface
Connections between the ASIC and the Sachem Modem 460
include:
~ AD[ 15:0] Bi-directional address/data bus.
~ PCLK Bus clock
~ ALE Input to modem address latch enable
~ BE1 Address bit 1
-45-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
~ W/R# Input to modem write/read indicator
~ CS# Input to modem chip select
~ RDY# Output from modem to indicate transfer ready
(i.e. wait state insertion)
~ INT# Output from modem indicating interrupt req.
All signals between the Modem and ASIC are routed to either
the OBC or the SAR based on the state of the Modem Bus Control
bit in the SAR status/control register.
DUART Interface
The DUART 470 is supported by connection of the following
signals:
~ CS# is connected to the ASIC to provide address decode
functions
~ MR is connected to the ASIC to provide reset to the DUART
~ RD# is connected to the ASIC
~ WR# is connected to the ASIC
ASIC Power supply
The ASIC draws its operating power from the 3.3 Volt on-
board supply. 5 Volt I/O is drawn from the PCI-bus-supplied
SVDC.
-46-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
+3.3 Volt Power is isolated from the PCB 3.3 Volt
distribution using an inductive element 1004. This creates a
+3.3 Volt Node specific to this IC to which the decoupling is
referenced.
Boundary Scan pins are connected to test points to allow
boundary scan test of the ASIC.
The OBC controller 400 is implemented by a 80960JA-25
processor. This processor requires a 5 Volt supply, and a 25 MHZ
clock input provided by an external oscillator 525 to provide the
l0 operating frequency for the OBC. The clock input may alternately
be supplied by an ASIC clock output pin.
ALE is connected to the ASIC to provide address latching for
memory and I/0 accesses.
AD31 through AD 1 and DO are connected to the ASIC, and the
DRAM bank. AD7 through AD1 and DO are connected to the DUART.
BEO, BE1, BE2, and BE3 are connected to the ASIC and the
DRAM bank to allow byte access to memory and I/0. BEO is
connected to the DUART.
RESET# is connected to the ASIC. It is driven low by the
ASIC on RESET from the PCI bus. It is driven high or low by the
Hydrogen IC via an I/0 write to the ASIC. When the RESET# line
is driven low by the ASIC, the Hydrogen becomes the bus master
for the controller DRAM block. This allows the Hydrogen IC to
-47-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
check the DRAM block during POST and download code for/from the
DRAM block.
HOLD is connected to the ASIC. It is driven high by the ASIC
to force the OBC AD bus into tristate during reset, and to allow
the Hydrogen IC to access OBC memory during operation.
HOLDA is connected to the ASIC. It provides a hold-
acknowledge signal to inform the ASIC that the ADBUS is in
tristate.
INTO# is connected to the ASIC. INT1# and INT2# are
to connected to the DUART via pullup resistors.
~ INTO# is used to indicate a interrupt request from the ADSL
Modem.
~ INT 1# is used to signal IRQ1 DUART interrupt
~ INT2# is used to signal IRQ2 DUART interrupt
W/R#, DT/R# and DEN# are connected to the ASIC to control
memory and I/0 reads and writes in conjunction with other address
and control signals.
CLKIN is connected to the ASIC for I/0 timing.
BLAST# is connected to the ASIC for Burst access support.
READY# is connected to the ASIC and is driven by an ASIC
provided wait state generator. This signal is used to insert
wait states for memory and I/0 accesses.
Signals connected to the DUART include:
-48-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
~ AO is connected to BEO of the OBC
~ A1 and A2 are connected to A1 and A2 of the OBC
~ CHSL is connected to A3 of the OBC
Signals pulled up through lOKohm resistors:
~ LOCK# (normal operation)
~ INT3-7#
~ NMI#
~ STEST (option to enable on board self test)
Signals pulled down through 10 Kohm, resistors:
~ LOCK# (for use with emulator)
~ STEST (option to disable on board self test)
Signals not connected:
~ Width/HLTD1:0
~ D/C#
~ BSTAT
~ AS#
~ FAIL#
~ ALE#
-49-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
OBC Memory Map
Memory Region Start Address Length


Internal RAM & vectors 0 400


00000900 100000


ASIC Registers 01000000 24


Modem registers 02000000 10000


DUART 03000000 40


FLASH memory FEF00000 100000


IBR (read from Flash or RAM FEFFFF30 30
depending on state of ASIC
stadalone pin)


960 reserved FEFFFF60 AO


960 registered space FF000000 1000000


* all addresses are in hex notation
-50-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
OBC interrupts
The following interrupt sources are supported for the OBC:
XINTO# Interrupt from ASIC used for SACHEM or SAR


generated interrupts


XINT1# Interrupt from DUART for channel 1 Async


port


XINT2# Interrupt from DUART for Channel 2 Async


port


XINT3#-XINT7#,NMI# not used


DRAM
Up to 8 Mbits of DRAM 402 for the OBC are supplied. The
configuration of DRAM supported includes:
l0 ~ 256K X 32 bits
The DRAM multiplexed address, OE#, WR#, CS#. and CAS/RAS
signals are provided by the ASIC.
Each DRAM device is provided decoupling capacitors.
DUART
A 16552 DUART 470 is provided for debug and development. The
DUART resides at base address 03000000(h) on the controller bus.
Register addresses and programming information are included in
-51-

CA 02335743 2000-12-19
WO 99/66782 ~ PCT/US99/14236
the data sheet for the DUART. The following connections are made
to the DUART:
~ AO and A1 are connected to BEO and BE1 of the OBC
~ A2 is connected to A2 of the OBC
~ CHSL is connected to A3 of the OBC
~ CS# is connected to the ASIC
~ D7 through DO are connected to AD7 through AD1 and DO of the
OBC
~ INTR1 and INTR2 are connected to the OBC
~ MR is connected to the ASIC
~ RD# is connected to the ASIC
~ WR# is connected to the ASIC
~ SIN1, SIN2, SOUT1, and SOUT2 are connected to an RS-232
transmitter receiver IC
~ XIN and ROUT are connected to a 18.432 MHZ crystal
XOUT is connected through a l.5Kohm resister
1 Mohm resistor is connected across the crystal
47 pF cap is connected to the junction of the 1.5K and 1M
res. 22pf cap is connected to XIN
Signals pulled up through lOKohm resistors:
~ RI#1,2
DCD# 1,2
~ DSR#1,2
~ CTS#1, 2
-52-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Signals not connected.
~ TXRDX#1,2
~ DTR#1,2
~ RTS#1,2
The DUART is provided with decoupling capacitors as follows.
An RS-232 driver/receiver 475 such as the MAX203 is used to
provide RS-232 compatible levels/thresholds for the two DUART
ports. Connections will be as follows:
~ T1IN, T2IN connected to SOUTl and SOUT2 of the DUART
~ R10UT, R20UT connected to SIN1 and SIN2 of the DUART
~ T10UT, T20UT connected to pin 1 of separate 3 pin headers
for RS-232 connection
~ R1IN, R21N connected to pin 3 of separate 3 pin headers for
RS-232 connection
~ Ground connected to pin 2 of separate 3 pin headers for
RS-232 connection
The RS-232 driver/rec. is provided with decoupling
capacitors as follows:
~ 1 ea 0. 1 u1F cap.
A block of Flash programmable Memory 404 is provided.
OBC Pov~rer supply
-53-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The OBC draws its operating power from the PCI bus-supplied
5VDC. The current drain should be less than 400 ma. Decoupling
associated with this device includes a 10 uF cap and 8 of, 0.1 uF
caps.
+5 Volt Power is isolated from the PCB +5 Volt distribution
using an inductive element{s) to create a +5 Volt Node specific
to this IC to which the decoupling will be referenced.
ADSL Modem
The ADSL Modem is implemented using the ADSL-C AFE 450 and
to the Sachem ADSL modem IC 460. The layout and design of the ADSL
modem duplicates the design used by Alcatel in their product
utilizing the ADSL-C and Sachem chipset.
The ADSL-C connects to the line interface 452 and the Sachem
I.C 460. Connection to the line interface and Sachem is as
defined by Alcatel in their current product. Other connections to
the ADSL-C include:
PDOWN is connected to the Sachem PDOWN output to implement
programmable power down.
Signals pulled down through 10 Kohm resistors:
~ LTNT (stuffing option to pull up for LT emulation)
Signals not connected:
~ GPO, 1, 2
-54-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
ADSL Potaer supply
The ADSL-C draws its operating power from the 3.3 Volt on-
board supply. 3.3 Volt current used is less than 190 ma.
Decoupling associated with this device includes 2 - 0.1 uF cap.
+3.3 Volt Power is isolated from the PCB 3.3 Volt
distribution using an inductive element 1008 to create a +3.3
Volt Node specific to this IC which the decoupling is referenced.
The ADSL-C also uses the 3.3 Volt analog on-board supply.
Connection to the ADSL-C is as defined by Alcatel in their
design using the Sachem and ADSL-C. This is intended to be a
"glueless" interface.
Connection to the OBC will be through the on board ASIC to
perform level shifting between the 5 Volt OBC and 3.3 Volt
Sachem.
~ AD [15:0] connected to ASIC for level shift and distribution
to/from OBC and SAR PCLK Output from ASIC for 1/0 timing
~ ALE connected to ASIC for level shift and distribution
to/from OBC and SAR
~ BE1 connected to ASIC for level shift and distribution
to/from OBC and SAR
~ W/R# connected to ASIC for level shift and distribution
to/from OBC and SAR
~ CSB connected to ASIC for level shift and address decode
~ RESETB connected to ASIC for distribution from OBC and SAR
-55-

CA 02335743 2000-12-19
WO 99/66782 PC'T/US99/14236
~ RDYB connected to ASIC for distribution to OBC and SAR
~ INTB connected to ASIC for distribution to OBC and SAR
Connection to the Hydrogen SAR includes the following:


RXD[0:7] Connected directly to SAR


RXCeIIAv Connected directly to SAR


RXClk Connected to ASIC to provide xfer clock


RXSOC Connected directly to SAR


TXCelIAv Connected directly to SAR


TXClk Connected to ASIC through level shifter to provide


xfer clock (level shifter included to minimize skew between


TXD[0:7] and clock)


TXD[0:7] Connected to SAR through level shifter


nRXEN Connected to SAR through level shifter


NTXEN Connected to SAR through level shifter


TXSOC Connected to SAR through level shifter


Other connections to the Sachem IC include:
PDOWN output is connected to the PDOWN input pin of the
ADSL-C to implement a programmable power down of the AFE in
addition to the RESET power down function implemented by reset of
2o the board.
Signals pulled up through lOKohm resistors:
~ SLT DATA S0,1
-56-

CA 02335743 2000-12-19
WO 99/66782 PCT/E1S99/14236
~ SLT DATA FO , 1
~ GP INO, 1
Signals pulled down through 10 Kohm resistors:
~ U RXADDRO-4
~ U TXADDRO-4
~ TESTE
Signals not connected:
SLR VAL S


SLR VAL F


SLR DATA 50,1


SLR DATA F0,1


SLR REQ S


SLR REQ F


SLAP
CLOCK


SLR FRAME I


SLT FRAME I


SLR FRAME F


SLT FRAME F


The Sachem draws its operating power from the 3.3 Volt on-
board supply. 3.3 Volt current used is less than 370 ma.
-57-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Decoupling associated with this device includes 1 ea 10 uF cap
and 8 ea 0. 1 uF cap.
+3.3 Volt Power is isolated from the PCB 3.3 Volt
distribution using an inductive element(s). This creates a +3.3
Volt Node specific to this IC which the decoupling is referenced.
Boundary Scan pins are connected to test points to allow
boundary scan test of the Sachem IC.
The layout and design of the line interface duplicates the
line interface used by Alcatel in their design using the ADSL-C
l0 and Sachem chipset. The line interface 452 has a differential
driver, a differential receiver, a hybrid coupling circuit, a
line coupling transformer, and a High Pass filter. The line
interface is transformer-coupled to an RJ- 14 connector 454.
The power supply accepts +SVDC +/- 5o input from either the
PCI bus or from an external input connector. 3.3 VDC is derived
from this 5 Volt input. Total 5 Volt current will be less than 2
Amps. External connection is supported, e.g., for development
purposes.
The power supply 430 generates +3.3 VDC +/- to from the 5
2o Volt input using a linear regulator. Connection to the ON/OFF
and FLAG pins when a 5 pin regulator is used are provided to the
Hydrogen IC GPIO.
A 0.51 ohm pass resistor is provided to share power
dissipation with the 3.3 Volt regulator.
-58-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
An output capacitor of 22 uF is provided to ensure 1.25 Amp
operation with output noise of < 200uV. A 0.22uF capacitor is
placed at the input of the regulator.
Analog 3.3 Volts for use by the AFE is derived by an LC
filter between the regulated 3.3 Volts and the analog 3.3 Volts.
The power supply accepts +12VDC +/- 5o input from either the
PCI bus or from an external input connector. +12VDC current is
less than 100 ma. An LC filter is provided for the + 12 VDC used
on the NIC.
The power supply accepts -12VDC +/- 10-°s input from either
the PCI bus or from an external input connector. -12VDC current
is less than 100 ma. An LC filter is provided for the - 12 VDC
used on the NIC.
External connection is supported as a stuffing option for
development purposes only.
As a stuffing option, a DC/DC converter to generate on board
+/- 12 Volts DC in place of the PCI bus provided voltages is
included. The converter is powered by the PCI Bus 5 VDC and will
generate 100 ma output for both + and - 12 VDC.
ASIC Pin Assignments
The ASIC is in a 160 PQFP. It supports both 5 Volt and 3.3
Volt I/0.
Pin Assignments
-59-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Description Type Pin No


+3.3V Power 1,41,61,81,121,141


+5V Power 10,46,94,157


GND Power 20,31,40,51,70,80,99,100,110,120,
127,137,160


SAR DA[31:0] 5VI/0 2:9,11:19,21:30,32,34,36:38


SAR RD# 5VI 39


SAR WR#' 5VI 43


SAR ALE 5VI 44


SAR BUSCLK 5VI 33


SAR IRQ#/BCLK 5VI 35


SAR RESET# 5VI 159


SAR IOWAIT 5V0 45


OBC DA[0:31] 5VI/O 47:50,52:60,62:69,72,74,76:79,82:
86


OBC ALE 5VI 87


OBC BE#[3:0] 5VI 88:91


OBC W/R# 5VI 92


OBC DT/R# 5VI 93


OBC DEN# 5VI 95


OBC RDY# 5V0 96


2o OBC HOLD 5V0 97


OBC HOLDA 5VI 98


OBC RESET# 5V0 101


OBC CLKIN 5VI 42


OBC INT# 5V0 102


OBC BLAST# 5VI 103


OBC DRAMMA[0:8] 5V0 104:109,111:113


-60-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
OBC CASO# 5V0 114


OBC CAS1# 5V0 115


OBC CAS2# 5V0 116


OBC CAS3# 5V0 117


OBC RAS# 5V0 118


OBC WE# 5V0 119


OBC OE# 5V0 122


MODEM DA[15:0] 3VI/0 126,128:135,138:140,142:145


MODEM PCLK 3V0 146


MODEM ALE 3V0 147


MODEM BE1 3V0 148


MODEM CS# 3V0 149


MODEM W/R# 3V0 150


MODEM RDY# 3VI 151


MODEM INT# 3VI 152


MODEM RESET# 3V0 153


UTOPIA TXCLK 3V0 155


UTOPIA RXCLK 3V0 156


DUART CS# 5V0 123


DUART RST 5V0 124


FLASH CS# 5V0 125


TMS 5VI 73


TCLK 5VI 75


TDI 5VI 71


TDO 5V0 136


STNDALONE 5VI 154


RESERVED N/C 158


-61-


CA 02335743 2000-12-19
The ADSL Network Interface Card (NIC) described above
operates using at least one of firmware and/or software for
operation.
The ATM portion of the NIC is based on chips, firmware, and
software developed by ATM Ltd. for their own ATM network
components.
The Network Interface is diagrammed in Figure 18.
The installation routines are made up of four main
components (oemsetup.inf, netvlink.inf, vlink.def, and
to atmncdet.dll). The combination of these four components
operates as shown in Figure 19.
Automatical detection of the existence of which ATML NIC
card is installed at 1300.
The routine installs the proper utility applications,
drivers, in files, and firmware to support. the NIC card chosen
by the user at 1302. It then prompts the user for the
connection type (Local LAN or ADSL) for the NIC card and
configures some initial values for proper operation at 1306.
User configurative valves are set,(for example, those shown in
FIG. 19) at 1308.
Since the installation script format is different for
Windows 95 and NT, two "inf" installation scripts are required.
The atmncdet.dll library is used to provide user dialogs for
62
AMENDED SHEET


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
gathering information that the scripts could not acquire
automatically. This library was written for the MSVC 1.5
development environment.
Vstatus and vcons are performance and status monitoring
applications used for troubleshooting problems with the NIC card
or with the network itself. The main use for vstatus is for
status monitoring of uptime, throughput, and system connections
as needed. For example, the ARP server, LECS server is used as
the Windows environment.
l0 Vcons is a DOS console type application that is used as a
terminal type connection to the NIC card. This application allows
a user to send commands manually to the firmware and see the
response.
Asock32 or the ATM Sock API is a proprietary API developed
by ATML. This interface was designed to conform to Microsoft's
guide to extending the Windows Socket API version 1.1. See
WinSock documentation by Microsoft for further details.
Unfortunately, ATML does not conform to Microsoft's guidelines
completely. This library is coded for the MSVC 2.2 development
environment using an updated Win32 API.
Vsock is the ATM Sock Interface protocol. This is a
proprietary protocol with a .vxd or Virtual Device Driver used by
ATML which Hayes has purchased the rights to redistribute. This
allows any application developed by third parties that use the
-63-


CA 02335743 2000-12-19
ATML atmsock API to operate correctly with the Hayes NIC card.
This module was coded to comply with MSVC 2Ø
The final component to the ATMPC SDK/DDK is the vlink
module. This module is the network VXD that vsock and all other
protocols communicate to pass data into a network. This module
has been developed to work with Windows 95 and NT using NDIS
3Ø The driver's function is limited to only act as a
communication interface between the protocol layer and the
hardware (NIC) layer. ATML designed all of the encapsulation
components for passing other protocols over ATM in the firmware.
This driver supports NDIS 3.0 only and was coded to be compiled
with MSVC 4Ø
Software Requirements
Figure 20 shows the Network Interface Diagram with the
present hardware components described with reference to Figures
10 to 17.
Installation Routines include the oemsetup.inf,
, hnetinst.inf & atmncdet.dll. User Control and Monitoring
Applications include the ServiceMonitor, AdslNicP, and NicCons.
Protocol Device Driver is the hAtmSock. Network Device Drivers
includes hNetLink and hOdiLink. Their corresponding ATML modules
are Installation Routines (oemsetup.inf netvlink.inf, vlink.def
atmncdet.dll), Status Applications (vstatus and vcons), Native
6'~
AMENDED SHEET


CA 02335743 2000-12-19
ATM Protocol (vsock), and Network Device Driver (vlink)
respectively.
In Windows 95/98 and other plug-and-play operating systems,
the OS identifies the NIC at boot-up as new hardware through the
PCI plug-and-play capability at 1300. This brings up the screen
of Figure 15. For Windows NT 3.51/4.0 the user may have to
manually select to install a new network adapter and select
"Have Disk" to identify the NIC as shown in Figure 10. Once the
card is identified, the user is prompted to install drivers for
this new hardware. The present installation routines use
oemsetup.inf (Used for NT) and hnetinst.inf that is required
according to Microsoft's guidelines for hardware and a support
library. ATML's routines including oemsetup.inf, netvlink.inf,
and vlink.def are used.
ATML's setup files are stripped of unnecessary product
support. Together with the support library these routines
perform the following shown in Figure 23:
1. Identify the Hayes ATM/ADSL NIC card at 1700.
2. Decompress and copy the supported applications,
drivers and firmware files to the local system drive
upon user request at 1702.
3. Create all registry entries needed for these
applications to start up correctly at 1704.
AMENDED SHEET


02335743 2000-12-19
4. Detect if networking is installed on the Windows OS
and prompt the user if these components need to be
installed at 1706.
5. Insure that the hAtmSock (Native ATM Protocol) device
driver is setup correctly as a network protocol and
also insure that the Microsoft TCP/IP protocol is
installed at 1708.
A number of additional User Control and Monitoring
Applications are used.
The AdslNicP Network Control Panel Extension Library
provides the NIC global properties from the Network Control
Panel Applet when a user selects properties for the NIC adapter/
Figure 24 shows a screen shot of AdslNicP.exe.
Changing any of these parameters changes the network.
Since these settings are set at startup, they cannot be
dynamically changed after the NIC card is in an operational
state. This requires the PC System to be rebooted for the
changes to take effect. Hence, these changes cause a ~BINDD
action.
As shown in Figure 24, this application provides a simple
graphical interface for users to change global ATM parameters.
This interface enables and disables the ILMI_ If ILMI is
disabled, then the dialog prompts for a proper ATM address.
~b
AMENDED SHEET


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The interface allows setting global signaling for SVC
(Switched Virtual Circuits) connections.
The interface sets the connection mode for permanent
connections (PVC or PVP).
It also provides selection for alternate protocol support
such as IP over ATM or PPP over ATM.
The box also allows LLC-SNAP to be disabled for VC
Multiplexing.
Finally, the system determines when the user has made
to changes to the global settings so a bindery action can be called
for the network components. This action prompts the user to
reboot before changes will take affect.
The routine also provides a means of saving and restoring a
single working configuration in case the user makes a change that
disables the network.
The ServiceMonitor Application has a function to allow the
user of a Hayes ATM/ADSL NIC Modem PCI card to manage the network
interface and obtain performance information about the network
connections. This application must be executed before any
2o network service connections can be established. Software
interface provides the functions and applications.
The interface uses a Simple Connection Status and Problem
Indication. An LED style of status indication similar to the
front panel of an analog modem is used. This is accomplished by
-67-


CA 02335743 2000-12-19
providing a System Tray Icon in Windows 9~ and NT 4.0 system
tray as shown in Figure 25).
The Tray Icon is formed of three artificially simulated
LED's. The left represents transmissions of data. The right
represents data received. These two LED's alternate between
dark red and bright green colors for data movement. Bright red
indicate some sort of error in the data flow. The center LED is
used to indicate line sync with the ADSL Modem. For this LED,
red indicates loss of sync and bright green is the normal
l0 condition. This functionality is provided by 9 separate icons
which are selected based on the states of variables discussed
above.
The System Tray Icon 1910 responds to various mouse
actions. It allows the user to easily acquire global status
information about the network interface. A Right Mouse Click
brings up a System Menu 1920 displaying optional actions to
provide the user with some information about the connection
status of some selected services. As Figure 25 above shows, the
two services installed (BlockBuster 1920 and MindSpring 1921) as
inactive due to the dark red LEDs 1922, 1924 to their left. If
either of them were active, their associated LED turn bright
green. Left Mouse Click on the System Tray Icon brings up the
main dialog 1900. The main dialog has global performance information
68
AMENDED SHEET


CA 02335743 2000-12-19
1905 that can be used to track data flow, connection time, and
number of installed services. The connection time and flow rates
can also be obtained through a ToolTip feature. When the mouse
is positioned on the Tray Icon for approximately one second,
connection time and flow rate are displayed.
The Service Connection Performance and Network
Configuration is shown in Figure 26.
Under normal operating conditions, when the user selects
"Properties" from the main dialog, the Properties dialog is
displayed (as shown in Figure 26) only three main tabs --
Services, ATM Interface, and Options. The two modem tabs are
meant to be used for troubleshooting modem problems. These are
defaulted to not display from the "Options" tab. The default tab
to be displayed is the "Services" tab. This control style is a
Property Sheet with Property Page Dialogs for tabs. All of the
installed service connections are be displayed from a tab
control to allow ease of service selection. The installed
service tab names are user-configurative to allow customization.
This installed service are placed on the Tray Icon system menu
at the users request from the "Options" tab.
The user interface also provides performance data on all
individual connections. To accomplish this, all service
connections have the same performance data displayed upon
6~
AMENDED SHEET


CA 02335743 2000-12-19
selection of the service tab. This minimizes control creation
and provides a consistent user interface to all performance
data.
Performance data is acquired on 0.5-second intervals. The
performance graph is an owner-drawn control created at run time
with a ten-second history. User configurative parameters include
changing the line colors for data representation.
When the user wants to verify connection parameters for any
service, they can select the tab of the service to verify and
then select "Properties". This brings up a static view of the
connection settings for that service as shown in Figure 27.
Figure 27 shows the network Configuration Properties Dialog
(Service Properties). The Service Connection Modification of
Network Configuration allows the user~to manually adjust the
connection parameters. "Modify" (See Figure 27 above) is
selected from the "Service Properties" dialog. This brings up
the "Modify Service" dialog and the previaus dialog "Service
Properties" disappears. If the service being elected to modify
were being actively connected, then a warning dialog appears
notifying the user that any changes to an active service could
cause loss of data. This warning dialog allows the user to
cancel the modify action or continue to bring up the Modify
dialog. While the user is in the modification dialog, changes
can be made to any of the connection parameters including
alteration of the tab name.
AMENDED SHEET


CA 02335743 2000-12-19
Figure 28 shows the User Interface Screen to Modify Network
Configuration Dialog. This interface allows the user to
configure the ATM parameters on a per connection basis as
needed. This interface also has enough intelligence to prevent
incorrect parameters from being configured (ie. Invalid VPI or
VCI values, Policing of Specified Cell Rates to prevent
exceeding Max Upstream bandwidth, etc.).
For any service that is using any IP protocol over ATM, the
"Settings" button is enabled and brings up a configuration
dialog shown in Figure 29 for that protocol if selected.
This configuration dialog provides a great amount of
flexibility to the user. For a PVC connection using Routed IPoA,
the user can elect to use the gateway IP address already
configured in the TCP/IP protocol stack as the destination
machine to connect to the Ethernet LAN. If the connection is a
machine other than the gateway, then the user needs to provide
the IP address of that machine to complete the connection. This
configuration is simplified by the use of SVC's or Bridged IPoA.
This interface satisfies the need for allowing multiple service
configurations.
If a service is Active, then the "Stop" button 2100 in
Figure 27 is enabled to allow the user to disable the service
that coul potentially be using required bandwidth that another
service may need. This allows a user to properly manage
AMENDED SHEET


CA 02335743 2000-12-19
connections without having to install and reinstall them when it
is necessary to temporarily disable the service. This control
disconnects all active connections to that particular service
and does not allow any new connections for a 2-minute interval.
After 2 minutes, then any new applications started can use the
service.
Time delay is used instead of a set/reset type of function
to avoid the user forgetting that the service has been disabled,
and thinking that another problem exists. With an auto reset
functionality the state of the service connection can be
returned to normal without any other user interaction.
Figure 32 shows the Service Installation Wizard Dialogs
Status of Global ATM Connection Performance and Configuration.
The ATM Interface dialog displays global performance data and
configuration setting to the user. This dialog is intended to be
used for providing ISP's with configuratian information in the
event that a service installation fails or is working
improperly. The connection status information is static and
cannot be altered by the user in this application.
Figure 31 shows Global ATM Network Performance and
Configuration. The connection configuration should not be
configured at an application level since a Network Bindery
action is needed to complete and properly reconfigure. This
action is required since this data is initialized for the
ATM/ADSL NIC Adapter only at boot-up of the OS.
AMENDED SHEET


CA 02335743 2000-12-19
The ADSL Modem Performance and Operational Status is shown
by the status monitoring application which displays ADSL modem
performance. The two dialogs shown in Figure 31 accomplish this
task by statistically displaying modem performance. These
dialogs were not designed for the novice user since the intent
of these dialogs is to be used for troubleshooting problems with
the ADSL modem. The dialogs were designed with the assumption
that the user viewing them has some advance degree of knowledge
with ADSL technology. These dialogs are normally turned off for
viewing through the "Options" tab dialog as shown in Figure 32
below.
As with almost all applications, flexibility to meet
different consumer needs and preferences .is usually considered
and configured as optional features or selections. These
components do not impact the ability of this application to
perform the required task of managing the Modem adapter and its
varying flavors of interfaces. They provide the user with some
ability to tailor that interface to meet varying preferences.
This also allows to meet certain needs of the hardware that
require configuration options (ie. POST selection, Restoration
of default settings, etc.).
The Figure 32 dialog includes optional configuration
parameters tab dialog. This dialog also provides a means of
saving or restoring profile settings. This will be a method of
networking for many users. It is expected that the user would
AMENDED SHEET


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
need some method of restoration to a known working configuration.
These optional functions allow saving and restoring of profiles
on a global basis.
The NicCons application's main function is to act as a
troubleshooting tool for problems that could potentially occur
outside the scope of ServiceMonitor's control or status
monitoring. This application allows the user to work from a
command line and send single commands to the NIC and obtain the
NIC's response to those commands
This application carries out the following features:
1. Allows command line communication through a DOS Console
to running processes residing on the NIC.
2. Switches between three main control processes:
a) Hydrogen - This process is the main entry into the
ATMos kernel.
b) SNMP - This process allows a user to send out SNMP
calls to the NIC cards MIR
c) Modem - This process is the interface between the
Hydrogen and the processor which controls the ADSL modem
backbone.
The vsock protocol device driver from ATML is used as a
Protocol Device Driver. This allows supporting any application
developed using ATML's API without supporting the API itself.
The file name will change to hAtmSock.vxd to simplify recovery of
-74-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
the driver if a user installs an ATML product on the same PC
system.
Since ATML implemented the native ATM protocol in firmware,
the protocol socket is actually a simple connection for passing
data off to the driver and then to the firmware. This allows a
user application to communicate to the protocol directly
implemented in the firmware OS where all PDU's (Protocol Data
Units) are actually assembled and disassembled. This model allows
ATML to port the protocol socket easily to any platform and
implement all <Protocol stack's> over ATM directly on the
Hydrogen chip.
The existing driver that ATML provided is simply a plain
communication module for sending and receiving data between the
protocol stacks and the NIC (Firmware on Hydrogen chipset) as
shown in Figure 4 above. It only supports NDIS 3.x under Windows
95 and NT. Our requirements for this driver is the same with
minor enhancement for asynchronous throughput and support of the
processor chip.
This driver operates as follows and as shown in Figure 27:
1 . Initiate POST (Power on Self Test) sequence for both
NIC and Modem in full or reduced mode as set by ServiceMonitor.
The duration of. the POST sequence shall be less than 5 seconds at
2700.
-75-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
2. Ensure the following sequence of events occurs in less
than 1 second:
a) Download Hydrogen image at 2702.
b) Download 1960 image at 2704.
3. Provide communication interface between all supported
protocols and the NIC at 2706.
4. Provide I/O status and error conditions to
ServiceMonitor NIC management application.
The hNetLink NDIS 3.x Network Virtual Device Driver supports
l0 Windows 95 (ver A and OSR2), Windows NT 3.51 (all Service Packs)
and Windows NT 4.0 (all Service Packs). The supported protocol
stacks for this driver are Microsoft TCP/IP, NeBEUI, and ATML's
Native ATM. This driver also supports the Windows 98 OS as well
with Microsoft's Native ATM Protocols.
hOdiLink Netware ODI Virtual Device Driver driver supports
the Novell ODI Network Interface under the following versions,
Novell Netware 3.12, 4.x, and Novell IntranetWare. The protocol
stacks supported are Novell TCP/IP and IPX/SPX.
The API for hAtmSock protocol device driver is used for all
Native ATM communications and for all management applications
(ServiceMonitor, NicCons, etc.). This is a required driver for
this product. The method of communication for applications to
this driver is through obtaining a handle to the driver using
"CreateFile" as shown:
-76-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
For Windows 95:
hDriver = CreateFile ("\\1\.\\vhadslid" GENERIC-READ I
GENERIC-WRITE, FILE SHARE_READ I FILE SA1HARE WRITE NULL, OPEN
EXISTING, FILE FLAG WRITE THROUGH I FILE FLAG OVERLAPPED I
FILE ATTRIBUTE NORMAL, NULL};
For Windows NT:
hDriver = CreateFile ( "\1\\.\\khadslid" GENERIC-READ I
GENERIC-WRITE,FILE_SHARE READ I FILE - SHARE WRITE, NULL,OPEN
EXISTING, FILE FLAG WRITE THROUGH I FILE - FLAG - OVERLAPPED I
FILE ATTRIBUTE NORMAL, NULL);
Once the handle is acquired then al.l communication is done
using the Win32 function "DeviceIoControl". The dwIoControlCode
member is what applications will use to communicate with all
devices from this protocol and below. The following control codes
are created by using the CTL CODE macro defined in WINIOCTL.H
(macro: CTL CODE( DeviceType, Function, Method, Access ) ). For
our applications the DeviceType, Method, and Access will always
be FILE-DEVICE NETWORK, METHOD OUT_DIRECT, and FILE ANY ACCESS
respectively. The code of interest to the applications is the
"Function" member. This member falls within the range of 0x800
to Oxfff. The 0x800 to Oxbff range is used for legacy code from
ATML and the Oxc00 to Oxfff range is used for any new codes
defined by Hayes for this project. To ensure that this range is
_77_


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
maintained, all control codes begin with 0x00 and use the macros
below to get the base address.
#define SM_FCMIN OX800
#define SM_FC ATMADSL Oxc00
Table 1 below defines the codes used by this protocol.
Table 1 Control Codes for Establishing and Commnnicatina wi,~h
~aTM Socket Connections
Functs.on OldATML N~K Coatr Deacriptioa
Macro Macro


of


Code


AtmVsSocket VS_IOCTL_SOCKET SM IOCTLSOCKET 0x001 Open Socket


AtmVs Close VS_IOCTL_CLOSE SM IOCTLCLOSE 0x002 Close Socket


AtmVsConnect VS_IOCTLCONNEC SM-IOCTLCONNECTION 0x003 Connet to


T Socket


AtmVsSend VS-IOCTLSEND SM_IOCTLSEND Ox00a Send Data
- to


Socket


AtmVsQueueRecvBVS-IOCTLQUEUE SM-IOCTLQUEUE.RECVBOXOOc Set Received
-


of RECVBUF OF Buffer


AL~nVsRecv VS _IOCTLRECV SM _IOCTLREVC Ox00e Not Used For


Now


AtmVsDebug VS _IOCTLDEBUG N/A 0x000 Not Used For


Now


_78_


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
AtmVsListen VS_IOCTL~LISTENN/A 0x004 Not
Used
For


Now


AtmVsAccept VS_IOCTLACCEPTN/A 0x005 Not Used
For


Now


AtmVsReject VS_IOCTL_REJECTN/A 0x006 Not UsedFor


Now


IOCTL BIND N/A 0x007 Not UsedFor
VS


(Not -


Now


Im'~lemented
)


AtmVsGetSockNamVS_IOCTLGETSOCN/A 0x008 Not UsedFor


KNAME Now


a


AtmVsGetPeerNamVS-IOCTLGETPEEN/A 0x009 Not UsedFor


Now


RNAME


AtInVsCancelSendVS-IOCTLCANCELN/A Ox00b Not UsedFor


Now


SEND


AtmVsCancelRecvVS_IOCTLCANCELN/A Ox00d Not UsedFor


Now


_RECV


IOCTL GET N/A Ox00f Not UsedFor
VS RE


(Not -


Now


Implemented) CVBUFLEN


IOCTL SET N/A 0x010 Not UsedFor
VS RE


(Not _


Now


IL~lemented) CVBUFLEN


(Not VS IOCTL-FLUSH-N/A 0x011 Not UsedFor


Implemented) RECVDATA Now


(Not VS_IOCTLCIRCULN/A 0x012 Not UsedFor


Implemented) ARBUFFER Now


IOCTL GET N/A 0x013 Not UsedFor
VS CI


(Ei~t _


Now


Implemented) RCBUFF


-79-


CA 02335743 2000-12-19
WO 99/66782 PC'T/US99/14236
AtmVsSelect VS-IOCTLASYNCS N/A 0x014 NotUsedFor


ELECT Now


AtmVsSetQos VS IOCTLSETQOS N/A 0x015 NotUsedFor


Now


AtmVsGetQos VS_IOCTLSETQOS N/A 0x016 NotUsedFor


Now


AtmVsSetLowMarkVS_IOCTL_SETLOW N/A 0x017 NotUsedFor


BUF Now


At~VsSockloctl VS-IOCTLSOCKIO N/A 0x018 NotUsedFor


CTL Now


AtmVsGetVersionVS-IOCTLGETVER N/A 0x019 NotUsedFor


SION Now


AtmVsAddParty VS_IOCTLADDPAR N/A OxOla NotUsedFor


TY Now


AtmVsDropParty VS-IOCTL_DROPPAN/A OxOlb NotUsedFor


RTY Now


Presently, there are no new control codes needed for this
protocol. As shown in Table 1 above, only 6 existing codes are to
be used by the management applications. These codes are used to
establish a connection to the Hydrogen for SNMP calls.
API for hNetLink was created by ATML to be a MiniPort
network driver with minimal functionality for passing data,
-80-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
downloading firmware images and INI files, etc. At present, there
are no control codes to be used by this driver. This driver is
accessed by the Sock Protocol driver through NDIS and has no
direct interaction with this driver.
Communication to the ATM module (Hydrogen Chip) uses the
following control mechanism.
#define NIC CTLCM D(Destination, Source, OpCode, DataSz) I
((Destination « 24) 1 (Source « 16) 1 (OpCode « 8) 1 (DataSz)
#define STRIP CTLCODE 255L
#define CTLCMD DEST(NICCtICmd) ( NicCtICmd » 24
#define CTLCMD_SOURCE(NicCtICmd) ((NicCtlCmd » 16) & STRIP
CTLCODE)
#define CTLCMD_OPCODE(NicCtICmd) ((NicCtICmd » 8) & STRIP -
CTLCODE)
#define CTLCMD_DATASZ(NicCtICmd) (NicCtICmd &
STRIP CTLCODE)
using the format shown in Figure 28.
-81-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
one byte one byte one byte one byte n bytes
destinat source opcode length of data field with


ion address data(n=le opcode-specific format


address nx4)


MSB LSB
This is based on Management & Control Entity Addresses shown
in Table 2.
Entity Address


Host Management 0x01
Application


Host Data Handler 0x02


Host Debug Port A 0x03


Host Debug Port B 0x04


Host Debug Port C 0x05


Host Debug Port D 0x06


Host Service & Test 0x07
Application


OBC Management 0x10
Application


2o OBC Selftest Agent 0x11


OBC Debug Process 1 0x12


OBC Debug Process 2 0x13


-82-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
OBC Debug Process 3 0x14


OBC Debug Process 4 0x15


Hydrogen Debug Process 0x20
1


Hydrogen Debug Process 0x21
2


Hydrogen Debug Process 0x23
3


Hydrogen Debug Process 0x24
4


Hydrogen Management 0x25
Interface


Reserved for SYNC 0x55


Reserved for SYNC ACK OxAA


Reserved for SYNC 0x33


Reserved for SYNC ACK OxCC


Table 3 shows Management Commands
Command Opcode Data Data Field Contents


Field


Zength


NIC INIT CONN TABLE 0x01 (n) Installed Services


(VC's)


NIC REINIT CONN TABLE 0x02 (n) New Connection Table


NIC CREATE CONN ENTRY 0x03 (?) New VC Entry


-83-

CA 02335743 2000-12-19
WO 99/66?82 PCT/US99/14236
NIC REMOVE CONN ENTRY 0x04 4 VC Entry Value


NIC UPDATE CONN ENTRY 0x05 (?) VC Entry Data


NIC REMOVE CONNECTION 0x05 4 VC Connection Value


NIC SUSPEND CONNECTION 0x06 4 VC Connection Value


NIC VC PERF DATA 0x07 4 VC Connection Value


NIC ALL VC PERF DATA 0x08 0 N/A


NIC PROCESS INI SETTIN OxAO 0 N/A
GS


NIC MULTIPLE COMMANDS OxDO 8or> Mult. Commands


to Detailed Component Design
Common code headers and guidelines for code development for
all software components simplify moving across multiple projects
with greater efficiency.
Development Language (Compilers, Linkers, etc.)
All components of this product are preferably compiled with
Microsoft Visual C++ Version 5Ø The only exception is the
Device Drivers that may need MASM as well. Since this card is
targeted for a PCI bus, assumptions are made that the target
systems will be Intel Pentium based. The following compiler
options are used for release builds except where noted:
1 . General
a) Warning level set to "3".
b) Optimizations set to "Minimize Size".
-84-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
c) Preprocessor definitions:
NDEBUG,WIN32, WINDOWS, CPLUSPLUS
2. C++ Language
a) Pointer-tomember representation method set to
"Best-Case Always"
b) Enable exception handling.
3. Code Generation
a) Processor set to "Pentium"..
b) cdecl Calling convention.
c) Run-time Libraries linked statically using
Multithreads.
d) Struct member alignment should be set to 8 Bytes.
4. Do not use precompiled headers.
5. All defined preprocessor definitions should be in Upper
Case and they should begin and end with ' ' characters.
The linker options for release builds should not be set for
incremental linking. If a project has settings other than these
listed, it is noted inside the project Readme.txt file.
Project Source File Names and Required Files
Guidelines include the following:
1. Do not restrict file names to an 8.3 format unless
there is cause to do so.
-85-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
2. Files containing C++ code should have a cpp extension
and files that contain ONLY C code should have a.c
extension.
3. All headers will have a.h extension.
4. Class objects that will be used in multiple source
files should be contained in separate source files. For
these types of objects the filename should be the name
of the Class excluding the "C" header if used (ie.
CmyClass - filenames are MyClass.cpp and MyClass.h).
5. For source files that contain only "C" code, the file
should contain related functions that correspond to a
package of features. The feature should some how be
related to the filename (ie. NicComm.c - Source file
contains functions for sending and receiving data to a
NIC card).
All projects should contain the following folders for source
code organization:
1. Source Files - Files that have extensions
"cpp;c;cxx~rc;def-,r;odl;idl;hpj;bat".
2. Header Files - Files that have extensions
"h;hpp;hxx;hm;inl".
3. Resource Files - Files that have extensions
"ico;cur;bmp;dlg;rc2;rct;bin;cnt:rtf;gifjpgjpegjpe"
4. Help Files - Files that have extensions "cnt;rtf'.
-86-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
5. Documents - Files that have extensions "doc;txt;pdf".
On the main project branch there are three files included
with every project. These files are described as follows:
1. Readme.txt - This file contains a detailed description of
the module developed (this can be taken from this document). It
also contains any exceptions to this specification and why they
are needed.
2. ScodeS.txt - This file contains the standards used for
all source code within that module, if different than these
l0 guidelines. The creators standards must at least meet or exceed
those mentioned in this document.
3. <Pname>.reg - This file contains all registry entries
needed for this module. This file is used by the installation
routines to properly install this module.
Example, reg file for ServiceMonitor:
REGEDIT
;This REG file may be used by your SETUP program.
;lf a SETUP program is not available, the entries below will be
registered in your Initlnstance automatically with a call to
;CWinApp::RegisterSheIIFileTypes and OleObjectFactory::UpdateRegistryAll.
HKEY CLASSES ROOT\ServiceMonitor.Application - ServiceMonitor Application
-87-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
HKEY CLASSES ROOTIServiceMonitor.ApplicationlCLSID={497AOBC5-2561-11D1 -SAFB-
00805FCDE
1138)
HKEY CLASSES ROOTIServiceMonitor.ApplicationlCurVer -
ServiceMonitor.Applica#ion. 1.0
HKEY CLASSES ROOT1CLSID1{497AOBC5-2561-1 1 D1-8AF8-00805FCDE1 B8} =
ServiceMonitor
Application
Guidelines for "C" Source Code Development
This project contains a large amount of 3rd party developed
source code that is exempt from this standard. Also, if your
module contains an ScodeS.txt file that does describe an
alternate code standard, then these standards do not apply. If
any work is to be done to enhance the third party application in
terms of new code then this guideline is followed. If the work
to enhance third party code is simple bug fixing or minor
alteration then attempt to conform to the standard present inside
the existing code.
1. All macros and enum types are in Upper Case unless noted.
Example: #define MY MACRO Oxfff.fffff
typedef enum {
MY-FIRST - VALUE,
MY SECOND VALUE
}MyEnumType;
2. All functions used inside multiple source files (.c) start
with a lower case letter.
-88-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Example : void myExportedFunction (int myData);
3. All user defined data types and structures are configured as
shown below:
Example : typedef struct-myStructData{
........
MyStructData, 'MyStructDataLP;
typedef long MyDataType;
4. All function definitions have a comment header as shown
below (Note: The Argument section is only needed if the
function has arguments):
/I Function name :myExportedFunction
II Description :This function does nothing.
// Return type :void
(/Argument :int myData - This is used for data input.
Guidelines for "C++" Source Code Development
Same as "C" source code in section 4.1.3 with addition of
Class creation as follows:
1. All class declarations begin with "C" (ie. class
CMyClass -.).
2. All data is encapsulated (private) unless otherwise
noted. If the information is not in its encapsulated state, the
reason is in the ReadMe.txt file for your project or within the
source code with comments.
-89-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
3. All member functions begin with a capital letter (ie.
void CmyClass::MyFunction
The Oemsetup Setup Information File is the Installation
Setup script for the ATM/ADSL NIC product.
The Atmncdet Setup Extension Library is used with the setup
script for executing routines that the script could not support.
The AdslNicP Network Control Panel Application is an
extension DLL is the "Properties" screen for the NIC Adapter Card
launched from the Network Control Panel Applet. This DLL
provides the interface for modifying the global ATM and ADSL
parameters. This interface is dialog-based and signals the OS
when a network bindery action takes place. It also allows the
user to save the present settings as the default and restores
default settings upon request.
Main Dialog Class (AdslNicP.h) object is designed to
interface with the user through a dialog based user interface.
It is responsible for displaying to the user the current global
ATM interface settings and allow him/her to make changes easily.
Upon any changes being made and the dialog closing, this object
updates the bindery information for all network components
through the Network Control Panel Applet. If a change is made
that is out of scope with the capability of this NIC then this
object notifies this information to the user and provides
possible alternative parameters.
-90-


CA 02335743 2000-12-19
WO 99!66782 PCT/US99/14236
The AdslNicP.h header contains the class member functions
and data needed to implement the "Properties" dialog referenced
in Figure 5 above. This file requires data referenced in other
header files to implement this class object properly
(ServiceMonitorData.h, resource. h).
The following controls are defined in resource. h:
IDCBM CORPLOGO Hayes Microcomputer Products,
Inc. Company bitmap logo


IDCS FIRM VENDVER Firmware Vender and Version
static label


IDCG ATMCONFIG ATM Configuration group


IDCCKB ILMIENABLED ILMI Enabled Check Box


IDCS ATMADDRESS ATM Address Static Label


IDCE ATMADDRESS ATM Address Edit Control


IDCS LINERATE Purchased Line Rate Static Label


IDCE LINERATE Purchased :Line Rate Edit Control


IDCS LINERATE UNITS Purchased :Line Rate Units Static
Label


IDCCKB DISLLCSNAP Disable LLC-SNAP for IP over ATM
Check Box


IDCG SIGNALING Signaling Group Control


IDCRB UNI31 SIG UNI 3.1 Signaling Radio Button
Control


-91-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
IDCRB UNI40 SIG UNI 4.0 Signaling Radio Button
Control


IDCG CONNMODE Permanent Connection Mode for ATM
card


IDCRB PVCMODE Permanent Virtual Circuit Radio
Button Control


IDCRB PVPMODE Permanent Virtual Path Radio
Button Control


IDCS SUPPORTECPROTS Additional Protocol Support
Static Label


IDCCB SUPPORTEDPROTS Additional. Protocol Support Combo
Box


IDCB OK OK Button Control


IDCB CANCEL Cancel Button Control


IDCB SAVESDEFAULT Save As Default Button Control


IDCB RESTOREDEFAULT Restore Default Button Control


The class header is shown below:
class CAdsINicP: public Cdialog
tDECLARE_DYNAMIC(CAdsINicP);
//Construction public:
CadsINicP(CWnd* pParent= NULL);
II standard constructor
virtual -CAds1 NicPO;
/! Dialog Data
private:
-92-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
SMDGIobaIATMSettings m - GIobaISettings;
boot mb_SettingsModified;
II{{AFX - DATA(CAdsINicP)
enum { IDD = IDD ADSLNICPROP_DIALOG};
II NOTE: the CIassWizard will add data members here
/I}}AFX_DATA
II CIassWizard generated virtual function overrides
//{{AFX VIRTUAL(CAdsINicP)
virtual BOOL OnInitDialogQ;
II} }AFX VIRTUAL
//Implementation
private:
// These functions are used to modify the registry
boot GetRegGIobaIProfileQ;
bool SetRegGIobaIProfileQ;
BOOL SetBindaryActionQ;
protected:
ll Generated message map functions
I/{{AFX_MSG{CAdsINicP)
afx - msg void OnOk ();
afx_msg void OnCancelUpdate();
afx_msg void Onllmienabled ();
afx_msg void OnUpdateAtmAddress();
afx_msg void OnUpdateLinerateQ;
afx - msg void OnDisllcsnap();
afx_msg void OnUni3 I Sig();
-93-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
afx msg void OnUni40SigQ;
afx msg void OnPvcModeQ;
afx_msg void OnPvpModeQ;
afx msg void OnSeIchangeSupportedProtsQ;
//}}AFX MSG
DECLARE MESSAGE MAP()};
Class Constructor - CadsINicPQ
This is used to construct the standard class for making
global setting changes to the ATM/ADSL N:IC card. The
1o m GlobalSettings and mb-SettingsModified member data is
initialized in this function. The m GlobalSettings data are
initialized with GetRegGlobalProfile() and mbSettingsModified is
initialized to false.
Return Type: None.
Function Params: None.
Class Destructor - -CAdslNicP()
Description: Standard destructor. No significant change other
than standard return is needed for this class. However, if
memory is allocated within other class functions and stored
within the class member data then that memory needs to be
destroyed here!
Return Type: None.
Function Params: None.
Function Override - BOOL OnInitDialog()
-94-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Description: Initialization of member data is done here for the
UT controls prior to display of the dialog itself. This data
resides in the m GlobalSettings member that was initialized in
the creation of this class.
Return Type: BOOL. "TRUE" for function success and "FALSE" for
failure.
Function Params: None.
Private Function - bool GetRegGlobalProf:ile()
Description: Used to scan the registry for all of the global
l0 ATM interface parameters to establish valid connections
(Key value -
HKEY LOCAL MACHINE\SOFTWARE\Hayes\ServiceMonitor\Interface).
These parameters are to be stored in m GlobalSettings member.
Return Type: bool. "True" for function success and "false" for
failure.
Function Params: None.
Private Function - bool SetRegGlobalProfile()
Description: Used to update the registry for all of the global
ATM interface parameters changed by the 'user in the UI (Key value
- HKEY LOCAL MACHINE\
SOFTWARE\Hayes\ServiceMonitor\lnterface). When changes have been
made the member variable "mb - SettingsModified" will be set to
true and the changes made by the user will be stored in the
m GlobalSettings member.
-95-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Return Type. bool. "True" for function success and "false" for
failure.
Function Params: None.
Private Function - BOOL SetBindaryAction()
Description: When changes are made to the global settings, this
function is called to initiate a bindery action for the Network
Control Panel Applet. This in turn notifies the user that he/she
should reboot the system before these new settings can take
effect .
Return Type. BOOL. "TRUE" for function success and "FALSE" for
failure.
Function Params: None.
Message Mapped Functions - afx - msg void OnOk() and afx msg void
OnCancel()
These functions are used to know when to call
SetRegGlobalProfile() and SetBindaryAction(). If the user has
made changes to the global settings and he selects OK, then a
bindery action takes place before exiting the Network Control
Panel Applet. If the user selects Cancel, then all changes are
trashed and the applet will exit normally. Both of these
functions call their corresponding CDialog::OnOK() and
CDialog::OnCancel() functions prior to returning. If either
SetRegGlobalProfile() or SetBindaryAction() functions fail, then
the user is notified with a standard dialog warning message box.
-96-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Some attempt is made to ascertain the nature of the failure. If
the OS is NT, the user might not be the Administrator, etc.
All remaining functions are message mapped functions. These
functions are used to make changes to the m - GlobalSettings
member and set the mb SettingsModified member if a change was
made that is different from the existing value. These functions
should rarely fail so there is no need to handle errors within
them. The guidelines for the control interaction is described
above.
l0 The ServiceMonitor NIC Status and Management Application is
the main management and Status application for the NIC Adapter
Card.
The Main Application Class (ServiceMonitor.h)is the main
application class to start the ServiceMonitor Management and
control application. Its purpose is to establish all registered
messages, create the main dialog for ServiceMonitor, and
establish a mechanism for only allowing a single instance of this
application to function.
//CServiceMonitorApp:
//See ServiceMonitor.cpp for the implementation of this class class
CServiceMonitorApp : public
CWinApp
public: CServiceMonitorApp(); CDialog *mp_MainDialog;
Overrides
II CIassWizard generated virtual function overrides
_97_

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
ll{{AFX - VIRTUAL(CServiceMonitorApp)
public:
virtual BOOL Initlnstance();
virtual void WinHelp(DWORD dwData, UINT nCmd HELP, CONTEXT);
II} I AFX_VIRTUAL
Data static const UINT mcui ExitWindowsRM;
private:
boot mb_CIassRegistered;
Implementation public: BOOL AFXAPI IstieIpKey(LPMSG IpMsg),
private: bool FirstlnstanceQ;
protected: afx_msg void OnCfoseServiceMonitorApp(WPARAM wParam, LPARAM
IParam);
II{{AFX - MSG(CServiceMonitorApp)
afx_msg void OnContextHeIpQ;
afx - msg void OnSmHelpQ;
//}}AFX MSG
DECLARE MESSAGE MAP()
Class Constructor - CServiceMonitorQ
Description: Constructs a WinApp application class to manage
the ATM/ADSL NIC Adapter.
This also starts the message pump for this application.
Return Type: None.
Function Params: None.
Class Destructor - -CserviceMonitoro
Description: Shuts down any and all processes started by this
application and frees any resources being used.
-98-

CA 02335743 2000-12-19
WO 99/66782 PC'T/US99/14236
Return Type. None.
Function Params: None.
Function Override - BOOL InitInstance()
Description: Creates the main class for this application to
allow only a single instance of itself.
Also creates the main window class and the main
ServiceMonitor dialog.
Return Type: BOOL.
Function Params: None.
Function Override - void WinHelp(DWORD dwData, UINT nCmd)
Description: Directs all help calls to the proper language help
files. See WinHelp Windows function description for details on
arguments.
Return Type. void.
Function Params: DWORD dwData - Depends on nCmd member.
UINT nCmd - Specifies the type of help requested.
Public Function - BOOL AFXAPI IsHelpKey(hPMSG IpMsg)
Description: Traps <Shift> F I keyboard commands to call
context sensitive help.
Return Type: BOOL AFXAPI.
Function Params: LPMSG IpMsg - Message parameter passed into
PreTranslateMessage functions.
Private Function - bool FirstInstance()
-99-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Description: Check for a previous instance of this application
by searching for a window with our specific pre-registered class
name. If one is found, then activate it and return false.
Return Type: bool.
Function Params: None.
Message Mapped Function - afx msg void
OnCloseServiceMonitorApp(WPARAM wParam,
LPARAM lParam)
Description: Called by a registered massaged "SMWRM -
SERVICEMONITOR EXIT MSG".
This function allows another control application to force
ServiceMonitor to shut down and exit.
Return Type: void.
Function Params: WPARAM wParam - Used to pass information for
the requested shutdown.
LPARAM lParam - Normally set to 0.
Message Mapped Function - afx msg void OnContextHelp()
Description: Traps all context sensitive help calls to
determine when help should be called instead of context help for
dialogs.
Return Type. void.
Function Params: None.
Message Mapped Function - afx msg void OnSmHelp()
Description: Used for external calls to ServiceMonitor help.
-loo-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Return Type: void.
Function Params: None.
Main Dialog Class - CServiceMonitorDlg (ServiceMonitorDlg.h)
The main ServiceMonitor dialog is created with this class.
All threads and application data are initialized in this class to
control and manage the ATM/ADSL NIC Adapter. This class or
members of this class initiate global performance data and
control functions.
// ServiceMonitorDlg.h : header file
Copyright (c)1997 Hayes Microcomputer Products, Inc.
class CServiceMonitorDIgAutoProxy;
II CServiceMonitorDlg dialog
class CServiceMonitorDlg: public CDialog
DECLARE -
DYNAMIC(CServiceMonitorDlg);
friend class CServiceMonitorDIgAutoProxy;
Construction public: CServiceMonitorDlg(CWnd* pParent - NULL); standard
constructor virtual
-CServiceMonitorDlgo;
Data public:
enum
SMD STATUS INIT - 0,
SMD_STATUS IDLE,
SMD STATUS TR,
SMD STATUS ENDTR,
SMD STATUS ERRTR,
SMD STATUS RX,
-101-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
SMD STATUS ENDRX,
SMD STATUS ERRRX,
SMD STATUS MODDISCONNECT,
SMD STATUS ERROR
enum SMWM SHELLNOTIFYICON -(WM APP+100), SMWM GETGLOBALPROTOCOL, SMWM
CHANGEGLOBALPROTOCOL, SMWM SCM DISPLAYDLG, SMWM SCM MONITORPROPS. SMWM
SCM INSTNEWSERV, SMWM SCM CONNDISCONN II Used for internal updates
CServiceMonitorProfile
mp SMSessionProfile; CBitmap mbc - ServConnStatActive; CBitmap mbc
ServConnStatlnactive;
CBitmap mbc ServConnStatError;
l0 Private:
NOTIFYICONDATA m SMD_Notifylconld; II This is the System Tray icon
Information
CString msc SMD - NotifylconStatus;ll Tip string data for STI.
CWinApp *mp_ServiceMonitorApp;
HACCEL mhac Global;
HICON mhi - Main;
double and ConnectionTime;
II Total modem connection time.
double and - TransmittedAmount;
Total modem transmitted quantity.
double and ReceivedAmount;
Total modem received quantity.
boot mb ADSLModemIsConnected;
boot mb SheIIRMDbIClick;
2 5 boot mb IsAcceIHelp;
boot mb_DialogShel I Icon;
Dialog Data
-102-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
II{ {AFX I DATA(CServiceMonitorDlg)
enum IDD - IDD_SERVICEMONITOR_DIALOG
NOTE: the CIassWizard will add data members here //}}AFX_DATA
// CIassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CServiceMonitorDlg) public: virtual
BOOL PreTransIateMessage(MSG* pMsg); protected: virtual void
DoDataExchange(CDataExchange*
pDX);// DDX/DDV support virtual void PostNcDestroyQ; I/}}AFX VIRTUAL
Implementation public: boo] ShowServiceProperties(UINT startPage); void
OnDispIayServiceMonitorDIgQ;
II ADSL Modem Functions void ModemConnDisconnQ; boot ModemConnect{); boot
ModemDisconnectQ;
// System Tray Related Functions
void ModifyTraylcon(UINT SMD - Status, UINT connectTime, UINT
TXAmount, UINT RXAmount);
II Service Related Functions
boot IsATMConnActive(DWORD atmVC);
private:
II This class knows when to create and destoy the shell icon!
void DeleteTraylcon();
void CreateTraylcon();
protected:
CserviceMonitorDIgAutoProxy* m_pAutoProxy;
BOOL CanExit();
II Generated message map functions
II{{AFX - MSG(CServiceMonitorDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM IParam);
afx_msg void OnDestroy();
afx_msg void OnPaintQ;
afx_msg HCURSOR OnQueryDraglcon();
-l03-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
afx msg void OnClose();
virtual void OnOKp;
virtual void OnCanceIQ;
afx msg void OnDisconnectModem();
afx_msg void OnServiceProperties();
afx_msg BOOL OnHelplnfo(HELPINFO* pHelplnfo);
/I}}AFX - MSG
II User Defined Message Functions - These have to be manually updated!
afx_msg LRESULT OnTrayCommNotification(WPARAM wParam,LPARAM
IParam);
afx_msg LRESULT OnTraySheIINotification(WPARAM wParam,LPARAM
IParam);
DECLARE MESSAGE MAP()
};
ServiceMonitor Properties Class - CServiceMonitorPS (ServiceMonitorPS.h)
<Insert Description here!!!!>
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
//
ServiceMonitorPS.h : header file
2 0 II
Copyright (c)1997 Hayes Microcomputer Products, Inc.
//
IllIIIIIIIIIIIllll111IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
I/CserviceMonitorPS
-104-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
class CServiceMonitorPS : public CpropertySheet
DECLARE DYNAMIC(CServiceMonitorPS)
llConstruction
public:
CserviceMonitorPS(UINT nIDCaption, CWnd* pParentWnd NULL, UINT iSelectPage
0);
CserviceMonitorPS(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT
iSelectPae = 0);
virtual -CScrviceMonitorPSO;
II Attributes
public:
// These are the tabs for the property sheet.
CservicesPage m PST/ -Services;
CATMInterfacePage m PST2ATMInterface;
CoptionsPage m PST3 Options;
CmodemParamPage m PSTS ModemParam;
CmodemCountersPage m PST6 ModemCounters;
private:
II Our parent window and some data on it.
Cwnd *mwcp_Parent;
long ml XCoordinate;
long ml YCoordinate;
II Our main App class and any accelerator tables needed.
NACCEL mhac Global;
CwinApp *mp_ServiceMonitorApp;
-105-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
boot mb_IsAcceIHelp;
(/Operations
private:
void InitializePSTabs();
//Overrides
II CIassWizard generated virtual function overrides /I{{AFX
VIRTUAL(CServiceMonitorPS)
public:
virtual BOOL OnInitDialog();
virtual BOOL PreTransIateMessage(MSG* pMsg);
//}}AFX VIRTUAL
/llmplementation
protected:
II Generated message map functions
//{ {AFX I MSG(CServiceMonitorPS)
afx_msg BOOL OnHelplnfo(HELPINFO* pHelplnfo);
//}}AFX - MSG
II User Defined Message Functions - These have to be manually updated!
afx_ msg LRESULT OnGetGIobaIProtocol(WPARAM m wParam,LPARAM m IParam);
afx_msg LRESULT OnChangeGIobaIProtocol(WPARAM m wParam,LPARAM
m IParam);
DECLARE MESSAGE MAP()
Data Profile Class - CServiceMonitorProfile (ServiceMonitorProfile.h)
<Insert Description here!!!>
2 5 /111111111IIIlllllllllllIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
II
//ServiceMonitorProfile.h : header file
-106-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
//
//Copyright (c)1997 Hayes Microcomputer Products, Inc.
/I
IIlIIIIIIIIIIIIIIII11111111llllIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
ReNew(c,p,t): c = New size you want; p = pointer to memory loc.; t = type of
storage you want; #define
ReNew(p,c,t) (t *)SMPReNew( (p), ((c)*sizeof(t)} )
I/ Registry
String values
for Global
settings (Main
& Interface
keys}


#define SMGS MK POST *PosY'


#define SMGS "UseGIobaIProfile"
MK USEGBLPROF


#define SMGS "DispIayADSLStats"
MK DISPADSLSTATS


#define SMGS IK ILMIATMADD "ILMIATMAddress"


#define SMGS IK ILMIENABLED "ILMIEnabled"


#define SMGS IK OAMF4ENABLED "OAMF4"


#define SMGS IK OAMFSENABLED "OAMFS"


#define SMGSIK PROTSSUPPORTED "ProtSupport"


#define SMGS IK SIGNALING "Signaling"


#define SMGS IK USERATMADD "UserATMAddress"


#define SMGS IK PVPMODE "PVPMode"


#define SMGS IK GUARLINERATE "GuarLineRate"


#define SMGSIK LLCSNAPENABLED "LLCSNAPEnable"


II Registry String values for Service Profile data
#define SMPS ISK SERVCOUNT "Count'
#define SMPS VCIVPI "Connection"
#define SMPS CLASS PROT "ConnectionC&I"
-107-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236


#define SMPS REGNAME "RegServiceName"


#define SMPS CLS SCRPEAK "SCRPeak"


#define SMPS CLS SCRMINIMUM "SCRMinimum"


#define SMPS CLS SCRBURSTTOL "SCRBurstTol"


#define SMPS CLS SCRSUSTAINABLE "SCKSustainable"


#define SMPS IPOA SVCPVCCONN "ConnectionType"


#define SMPS IPOA ARPSRVADD "ARPSrvAddress"


#define SMPS IPOA ARPSRVIPADD "ARPSrvIPAddress*


#define SMPS IPOA IPSUBNET "Subnet"


#define SMPS IPOA IPSUBNETMASK "SubnetMask"


#define SMPS IPOA IPREMOTE "Remote"


#define SMPS IPOA IPLOCAL "Local"


#define SMPS IPOA USEDEFGATEWAY "UseDefGateway"


#define SMPS FLANE USEWKLECSADD "UWKLECSAddEnabled"


#define SMPS FLANE LECSADD "LECSAddress"


#define SMPS FLANE LESADD "LESAddress"


II Function Return ERROR codes


#define INVALID SERVLIST NUMBER Oxffffffff


#define INVALID ATMVC NUMBER Oxffffffff


#define INVALID POINTER Oxfffffffe


#define FUNC SUCCESS 0x00000001


#define CLASS UNINITIALIZED Oxffffffff


IJ Update Global Settings Mask Values
#define SMGS MKMSK UDATMINTERFACE 0x0001
#define SMGS MKMSK UDOPTIONS 0x0002
-108-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
#define _ -SMGS MKMSK UDALL (SMGS MKMSK UDATMINTERFACE
SMGS MKMSK UDOPTIONS)
// Max and Min values for various
ATM/ADSL data


#define MAX VCI VALUE 4096


#define MIN VCI VALUE 32


#define MAX VPI VALUE 255


#define MIN VPI VALUE 0


/I ATM Class Stings


#define STR ATMCLASS CBR "CBR"


#define STR_ATMCLASS UBR "UBR"


#define STR ATMCLASS UBRP "UBR+"


#define STR_ATMCLASS VBR "VBR"


// Protocol Strings


#define STR PROT NATM "Native ATM"


#define STR PROT IPOA "IP over ATM"


#define STR PROT FLANE "Forum LANE"


#define STR PROT PPPOA "PPP over ATM"


#define STR PROT IPXOA "IPX over ATM"


#define STR PROT NETBOA "NetBEUI over
ATM"


2 o II Signaling Types and Strings
#define SMGS IK SIGVALUN131 0x00000000
#define SMGS IK SIGVALLN140 0x00000001
#define STR UN131 "UNI 3.1"
-109-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
#define STR UN140 "UNI 4.0"
// Misc. Strings
#define STR_NOATMADDR "(*Not Used with ILMI Enabled*)"
#define STR ENABLED "Enabled"
#define STR DISABLED "Disabled"
#define STR PVPMODE "PVP"
#define STR PVCMODE "PVC"
// Exported Misc. Functions
extern unsigned long convertStringToULong(LPSTR pString);
extern void removeTLWSpace(LPSTR pString),
extern DWORD GetWinOSVersion(UINT *majorVer, UINT *minorVer);
II Exported Inline Functions
extern inline void removeAlIWSpace(LPSTR pString);
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
CServiceMonitorProfile object
class CServiceMonitorProfile : public CObject
f
DECLARE_DYNCREATE(CServiceMonitorProfile)
//Construction
2 0 public:
CserviceMonitorProfileQ;
virtual -CServiceMonitorProfileQ;
//Attributes
public:
-110-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
enum{
SMP_ATMCLS CBR - 0,
SMP_ATMCLS UBRP,
SMP_ATMCLS UBR,
SMP ATMCLS VBR
}SMP_ATMCIassTypes;
enum {
SNMP_STRING = 0, //Standard SNMP style Response
SNMP_INTEGER, //The rest is my custome ones
SNMP_UNI STATUS,
SNMP_GET MACADDRESS,
SNMP_GET UPTIME,
SNMP_GET IPADDRESS,
SNMP_GET ATMADDRESS,
SNMP GET LECSTATUS
}SNMP_NIC_Calls;
protected:
SMDChannelStatusLstLP mp_ChnIStatusList;
2 0 SMDVirtualConnStatLstLP mp_VCStatusList;
SMDServiccDataListLP nip InstServList;
SMDGIobaIATMSettingsLP mp_GbIATMSettings;
LPVOID mvp_NicManager;
private:
char mcs HRegKey[50];
char mcs HISRegKey[20J;
-111-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
char mcs_HGbISetRegKey[IO];
char mcs HGIbATMRegKey[I5];
boo) mb_UseGlobal Profile;
boot mb_IsUserProfileAdmin;
DWORD mdw TotaINoInstServs;
//Operations
public:
ll Global ATM/ADSL Functions that interact with m GbIATMSettingsPtr data
member!
boot IsADSLStatRequested();
boot GetGbIRegProfile(SMDGIobaIATMSettingsLP pGbIProfile -NULL);
boot UpdateGbIRegProfile(SMDGIobaIATMSettingsLP pGbIProfile -NULL, UINT
udMask = SMGS MKMSK UDALL);
UINT GetGbIProtSetting();
UINT GetSignalingTypeQ;
DWORD GetMaxUpStreamBW();
UINT GetAtmAddress(char *bufAtmAddr, int szBuffer);
boot IsILMIEnabled();
boot IsLLC - SNAPEnabIedQ;
bool lsModePVPQ;
2 0 /I VC Functions that interact with m VCStatusListPtr data member!
BOOL IsATMVCActive(DWORD atmVC);
BOOL IsATMVCActive(int lstNo);
Service Functions that interact with m InstServListPtr data member!
DWORD GetAtmVCFromList(int list = 0); II One based List
boot GetServUserName(DWORD atmVC = 0, LPSTR pStrBuffer = NULL, DWORD bufSz=
0);
boot GetServUserName(int IistNo = 1, LPSTR pStrBuffer = NULL, DWORD bufSz =
0);
boot GetServRegName(DWORD atmVC = 0, LPSTR pStrBuffer = NULL, DWORD bufSz =0);
-112-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
bool GetServRegName(int IistNo = 1, LPSTR pStrBuffer = NULL, DWORD bufSz = 0);
DWORD GetInstSrvCountQ;
DWORD GetSrvDataProfile(DWORD atmVC=- 0, SMDServiceDataLP pSrvProfile = NULL);
boot AddNewRegService(SMDServiceDataLP pSrvProfile =NULL);
boot RemoveRegService(LPSTR pUserSrvName = NULL);
boot UpdateRegService(LPSTR pCurSrvName = NULL, SMDServiceDataLP pSrvProfile=
NULL);
boot UpdateRegService(int IstNo = 0, SMDServiceDataLP pSrvProfile = NULL);
boot UpdateRegService(DWORD atmVC = 0. SMDServiceDataLP pSrvProfile= NULL);
void DestroySrvRegList(SMDServiceDataListLP *pSnrRegLst);
// Protocol Related Functions
boot GetNewProtDataStruct(void **dpProtData, UINT protType);
//Misc. Functions
private:
bool InitializeNew(); II Standard true succeds and false fails
// General Functions
// Memory Related functions
void *SMPReNew(void *memHandle, DWORD newSize);
void SMPFreeReNew(void *memHandle);
II Global ATMIADSL functions
2 0 boot lnitGbIRegProfileQ;
II Service related functions
boot InitSrvRegValues(char *serviceKeyName, SMDServiceDataLP pService);
int InitSrvRegList();
-113-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
boot UpdateSrvRegList();
void DestroylntSrvRegListQ;
SMDServiceDataLP GetServDataFromLstNo(int IstNo);
// Service functions for connection performance & status
boot CreateConnLstFromSrvLst();
//Overrides
// CIassWizard generated virtual function overrides
//{{AFX VIRTUAL(CServiceMonitorProfile)
II}}AFX_VIRTUAL
to // Implementation
protected:
}~
Install Services Class - CServicesPage (ServicesPage.h)
<Insert Description here!II!>
/llllllllllllllllllIIIlIlllllllllllllllllllllllllllllllllllllllllllllllll
/I
ServicesPage.h : header file
//
Copyright (c)1997 Hayes Microcomputer Products, Inc.
2 0 //
lllllllllllllllllllllllllllllllllllllll111lllllllllllllllIIIIIIIIIIllllll
-114-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
IllllIllIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
//CservicesPage dialog
class CServicesPage : public CPropertyPage
DECLARE DYNCREATE(CServicesPage)
//Construction
public:
CservicesPage();
virtual -CServicesPage();
//Dialog Data
II {{ AFX DATA(CServicesPage)
enum { IDD = IDD SERVICESPAGE};
//NOTE - CIassWizard will add data members here.
/IDO NOT EDIT what you see in these blocks of generated code!
//}}AFX DATA
private:
II CBitmap m ServConnStatActive;
II CBitmap m ServConnStatlnactive;
// CBitmap m ServConnStatError;
2 0 CimageList m ServConnStatlmage;
CgraphBar m PerfGraph;
TC_ITEM m TabData;
-115-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
boot mb_TabControllnitiafized;
boot mb_SettingsModified;
void *mvp ServList;
void *mvp_ProtList;
void *mvp_ModServList;
II Overrides
I/CIassWizard generate virtual function overrides
II{ {AFX - VIRTUAL(CServicesPage)
public:
virtual BOOL OnSetActiveQ;
virtual BOOL OnAppIyQ;
protected:
virtual void DoDataExchange(CDataExchange* pDX); /IDDX/DDV support
II}}AFX VIRTUAL
Illmplementation
private:
void AddServToModList(int IistNo, DWORD pvServData);
protected:
//Generated message map functions
II{ {AFX_MSG(CServicesPage)
afx_msg BOOL OnHelplnfo(HELPINFO* pHelplnfo);
afx_msg void OnServlnstallnew(};
afx_msg void OnServPropertiesQ;
afx_msg void OnServStopstartQ;
afx_msg void OnServUninstall();
virtual BOOL OnInitDialog();
-116-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
afx_msg void OnSeIChangelnstalledServ(NMHDR* pNMHDR, LRESULT* pResult);
/I}}AFX MSG
DECLARE MESSAGE MAP()
Service Properties Class - CServiceProperties (ServiceProperties.h)
<Insert Description here!!!>
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
//
//ServiceProperties.h : header rile
II
//Copyright (c)1997 Hayes Microcomputer Products, Inc.
//
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
I/CserviceProperties dialog
class CServiceProperties: public Cdialog
{
I! Construction
public:
CserviceProperties(CWnd* pParent = NULL); // standard constructor
2 0 //Dialog Data
I!{{ AFX DATA(CServiceProperties)
enum {IDD = IDD SERVICEPROPERTIES};
//NOTE: the CIassWizard "I add data members here
l/}}AFX DATA
2 5 private:
// Our main App class and any accelerator tables needed.
-117-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
HACCEL mhac Global;
CwinApp *mp_ServiceMonitorApp;
boo! mb - IsAccelHelp;
void *mvp_ServiceData;
char mcs - DIgTitle[256];
UINT mui GbIProtUsed;
//Overrides
/I CIassWizard generated virtual function overrides
II{ {AFX - VIRTUAL(CServiceProperties)
public:
virtual BOOL PreTransIateMessage(MSG* pMsg};
protected:
virtual void DoDataExchange(CDataExchange* pDX); DDX/DDV support
II}}AFX_VI RTUAL
// Implementation
public:
void SetServiceDataPtr(void *pSrvData = NULL);
void SetGbIProtType(UINT gblProtUsed);
protected:
2 0 //Generated message map functions
//{ {AFX_MSG(CServiceProperties)
afx msg void OnModify();
afx - msg BOOL OnHelplnfo(HELPiNFO* pHelplnfo);
virtual BOOL OnInitDialogQ;
afx_msg void OnNoModify();
/I}}AFX_MSG
DECLARE MESSAGE MAP()
-118-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
}~
Modify Service Class - CModifyService (ModifyService.h)
<Insert Description here!!!!>
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
/I
//ModifyService.h : header file
II
//Copyright (c)1997 Hayes Microcomputer Products, Inc.
IIIIIIIIIIIIIIIIIIlIIIIlIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
/l1/IIIIIIIIIIIIIIIIIIIIIlIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
II CModifyService dialog
class CModifyService: public Cdialog
{
//Construction
public:
CmodifyService(CWnd* pParent = NULL); // standard constructor
-CmodifyServiceo;
II Dialog Data
//{{AFX DATA(CModifyService)
enum { IDD = IDD_MODIFY SERVICE);
II NOTE: the ClassWizard will add data members here
//}}AFX DATA
void *mvp_ServiceProtData;
UINT mui GbIProtUsed;
-119-


CA 02335743 2000-12-19
WO 99/66782 PC'T/US99/14236
private:
// Our main App class and any accelerator tables needed.
HACCEL mhac Global;
CwinApp *mp_ServiceMonitorApp;
boot mb_IsAcceIHelp;
boot mb_Dlglnitialized;
void *mvp_ServiceData;
char mcs DIgTitle[256];
boot mb_DataModified;
boot mb_ProtModified;
II Overrides
II CIassWizard generated virtual function overrides
//{{AFX VIRTUAL(CModifyService)
public:
I5 virtual BOOL PreTransIateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX); II DDX/DDV support
//})AFX_VI RTUAL
Implementation
2 0 public:
void SetServiceDataPtr( void *pSrvData = NULL);
void SetGbIProtType(UINT gblProtUsed);
private:
void SetSCRWndsForClass(int atmClass),
2 5 protected:
// Generated message map functions
-120-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
I/{{AFX MSG(CModifyService)
afx_msg BOOL OnHelplnfo(HELPINFO* pHelplnfo);
afx msg void OnCiSettingsQ;
afx_msg void OnModCancel();
afx_msg void OnModOkQ;
virtual BOOL OnInitDialog();
afx_msg void OnSeIchangeServiceAtmclassp;
afx_msg void OnKiIlfocusServiceVci();
afx_msg void OnKiIIfocusServiceVpi();
afx msg void OnUpdateServiceVpiQ;
afx_msg void OnUpdateServiceVciQ;
afx msg void OnUpdateEditControlsQ;
afx_msg void OnSeIchangeServProtocolQ;
afx_msg void OnServconnPvc();
afx_msg void OnServconnSvc();
//}}AFX MSG
DECLARE MESSAGE MAP()
IP over ATM Protocol Settings Class - CATMIIPSettings (ATMIIPSettings.h)
<Insert Description here1111>
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJIIIIIIIIII
II
II ATMIIPSettings.h : header file
//
II Copyright (c)1997 Hayes Microcomputer Products, Inc.
II
-121-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
ll1111111lllllllllllllllIIIlIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
//CATMtIPSettings dialog
class CATMIIPSettings: public Cdialog
{
II Construction
public:
CATMIIPSettings(CWnd* pParent -NULL); // standard constructor
/IDialog Data
/I{{AFX DATA(CATMIIPSettings)
enum { IDD = IDD_ATMI IPSET };
II NOTE: the CIassWizard will add data members here
I/}}AFX DATA
private:
// Our main App class and any accelerator tables needed.
HACCEL mhac Global;
CwinApp, *mp_ServiceMonitorApp;
boot mb_IsAcceIHelp;
boot mb ProtDataModified;
boot mb_Dlglnitialized;
boot mb_ConnIsSvc;
void *mvp_ProtData;
/IOverrides
// CIassWizard generated virtual function overrides
-122-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
I/{{AFX VIRTUAL(CATMIIPSettings)
public:
virtual BOOL PreTransIateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX); DDXIDDV support
//}}AFX VIRTUAL
//Implementation
public:
void SetProtDataPtr(void *pServData);
l0 inline void SetSrvConnType(bool bConnIsSvc = false) {mb_ConnIsSvc
bConnlsSvc;};
protected:
II Generated message map functions
//{{AFX_MSG{CATMIIPSettings)
afx msg BOOL OnHelplnfo(HELPINFO* pHelplnfo);
afx_msg void OnIPOACanceIQ;
afx_msg void OnIPOAOkQ;
virtual BOOL OnInitDiafogQ;
afx_msg void OnPvcIpconQ;
afx_msg void OnSvclpcon();
afx_msg void OnUsedefgateway(};
afx_msg void OnUpdateArpsrvAtmaddQ,
afx_msg void OnUpdateArpsrvlpaddQ;
afx_msg void OnUpdateLipslpadd();
afx_msg void OnUpdateRipslpadd();
//} }AFX_MSG
-123-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
DECLARE MESSAGE_MAP(}
ATM Interface Settings Class - CATMInterfacePage (ATMIntertacePage.h)
<Insert Description here!!!>
/lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
II
//ATMInterfacePage.h : header file
II
//Copyright (c)1997 Hayes Microcomputer Products, Inc.
II
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
//CATMIntertacePage
class CATMIntertacePage : public CpropertyPage
{
DECLARE DYNCREATE(CATMIntertacePage)
//Construction
public:
CATMlntertacePageQ;
virtual -CATMintertacePageQ;
2 0 //Dialog Data
private:
CgraphBar m PertGraph;
//{{ AFX_DATA(CATMIntertacePage)
enum IDD =IDD_ATMINTERFACEPAGE};
2 5 //NOTE - CIassWizard will add data members hem.
-124-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_DATA
//Overrides
II CIassWizard generated virtual function overrides
//{{AFX - VIRTUAL(CATMInterfacePage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); DDXIDDV support
II}}AFX VIRTUAL
I/lmplementation
public:
UINT GetGIobaIProtSetting();
I/ Generated message map functions
protected:
II{{AFX I MSG(CATMInterfacePage)
afx_msg BOOL OnHelplnfo(HELPINFO* pHelplnfo);
virtual BOOL OnInitDialogQ;
I/}}AFX - MSG
DECLARE MESSAGE MAP()
User Options Class - COptionsPage (OptionsPage.h)
<Insert Description here!lll>
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
ll
/IOptionsPage.h : header file
II
/ICopyright (c)1997 Hayes Microcomputer Products, Inc.
-125-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IlllllllllllllllllllllIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
//CoptionsPage dialog
class COptionsPage : public CpropertyPage
{
DECLARE DYNCREATE(COptionsPage)
//Construction
public:
CoptionsPageQ;
l0 virtual -COptionsPage();
//Dialog Data
/I{{AFX DATA(COptionsPage)
enum {IDD =IDD_OPTIONSPAGE};
/!NOTE - CIassWizard will add data members here.
IIDO NOT EDIT what you see in these blocks of generated
code!
//}AFX_DATA
private:
void "mvp GIobaISettings;
boot mb_Dlglnitialized,
boot mb_SettingsModified;
//Overrides
// CIassWizard generate virtual function overrides
II{{AFX VIRTUAL(COptionsPage)
2 5 public:
virtual BOOL OnApply();
-126-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
protected:
virtual void DoDataExchange(CDataExchange* pDX); II DDX/DDV support
I/{{AFX VIRTUAL
II Implementation
protected:
// Generated message map functions
II{{AFX_MSG(COptionsPage)
virtual BOOL OnInitDialog();
afx_msg void OnDispadslmodtab();
to afx_msg void OnPowerOnselftestQ;
II} }AFX_MSG
DECLARE MESSAGE MAP()
ADSL Modem Parameters Class - CModemParamPage (ModemParamPage.h)
<Insert Description here!I!>
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
II
/IModemParamPage.h : header file
//
II Copyright (c)1997 Hayes Microcomputer Products, Inc.
II
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIlIIIIIIIIIIIIIIIlIlllIIlIl
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
//CmodemParamPage dialog
class CModemParamPage: public CpropertyPage
-127-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
{
DECLARE DYNCREATE(CModemParamPage}
(/Construction
public:
S CmodemParamPage(};
virtual -CModemParamPageQ;
II Dialog Data
/I{{AFX_DATA(CModemParamPage)
enum IDD = IDD ADSL._MODEMPARAMPAGE}"
//NOTE - CIassWizard will add data members here.
IIDO NOT EDIT what you see in these blocks of generated code!
//}}AFX_DATA
//Overrides
II CIassWizard generate virtual function overrides
//{{AFX VIRTUAL(CModemParamPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); II DDX/DDV support
//}}AFX VIRTUAL
// Implementation
2 0 protected:
II Generated message map functions
//{{AFX_MSG(CModemParamPage)
virtual BOOL OnInitDialogQ;
//}}AFX_MSG
-128-

CA 02335743 2000-12-19
WO 99/66782 IPCT/US99/14236
DECLARE MESSAGE MAP()
};
ADSL Modem Counters Class - CModemCountersPage (ModemCountersPage.h)
<Insert Description here!!!>
/IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
//
//ModemCountersPage.h : header file
II
//Copyright (c)1997 Hayes Microcomputer Products, Inc.
/IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
I/CmodemCountersPage dialog
class CModemCountersPage : public CpropertyPage
{
DECLARE DYNCREATE(CModemCountersPage)
//Construction
public:
CmodemCountersPage();
virtual -CModeniCountei-sPageQ;
2 0 //Dialog Data
II { {AFX DATA(CModemCountersPage)
enum { IDD = IDD ADSL_MODEMCOUNTERSPAGE };
// NOTE - CIassWizard will add data members hem.
II DO NOT EDIT what you see in these blocks of generated code!
2 5 //}}AFX DATA
IlOverrides
-129-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
II CIassWizard generate virtual function overrides
II{ {AFX VIRTUAL(CModemCountersPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); /IDDX/DDV support
II} }AFX VIRTUAL
II Implementation
protected:
ll Generated message map functions
/I{{AFX MSG(CModemCountersPage)
virtual B700L OnInitDialog();
II} } AFX_MSG
DECLARE MESSAGE MAP()
}~
Performance Graph Class - CGraphBar (GraphBar.h)
This class object is an owner drawn graph control that subclasses
a static window passed in. This control object creates a bitmap
graph and displays a ten second history of performance data for
three ATM parameters (Transmit, Receiveci, and Discarded cells). A
single object instance can maintain data for multiple connections
and display a graph for any single connection upon request.
lllllllllllllll111IIIllIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
ll
//GraphBar.h : header file
Il
II Copyright (c)1997 Hayes Microcomputer Products, Inc.
-130-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
//
lllllIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
#define MAX IN LIST 14
#define MAX VERTICAL 26
#define MAX HORIZONTAL MAX IN LIST
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
/ICgraphBar window
class CGraphBar: public CWnd
// Construction
public:
CgraphBarQ;
//Attributes
public:
private:
unsigned long mui TotaISoFar;
Cwnd *mp_WindowHandle;
int mi List[MAX_IN LIST];
int mi BarYPos[MAX VERTICAL);
int mi BarXPos[MAX_HORIZONTAL];
int mi StartMarker;
RECT m FiIIRect;
Cbitmap mbc Graph;
-131-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99114236
Cbitmap *mbcp_OIdGraph;
CDC *mdccp_Rastering;
IlOperations
public:
boot SetGraphParentWnd(CWnd 'pParentWnd);
boot SetGraphParentWnd(HWND hParentWnd);
boot SetGraphParentWndToDlgltem(UINT nID, CWnd* pParentWnd};
void AddNewValue(int value);
(/Overrides
II CIassWizard generated virtual function overrides
//{{AFX VIRTUAL(CGraphBar)
II} }AFX_VIRTUAL
II Implementation
public:
virtual -CGmphBaro;
private:
void DoBarDrawingQ;
II Generated message map functions
protected:
I/{{AFX I MSG(CGraphBar)
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx msg void OnPaint();
III } AFX_MSG
DECLARE MESSAGE MAP()
-132-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
)~
Common Data for all Class Objects (ServiceMonitorData.h)
<Insert Description here!!!>
/*******************************r*******************
**
**ServiceMonitorData.h: Data header file for retrieving status
** information from the ATMIADSL Modern card. This header is
** designed for a C interface and not C++,
**
**Copyright (c)1997 Hayes Microcomputer Products, Inc.
**
****************************************************
#if!defined(SERVICEMONITORDATA H)
#define SERVlCEMONITORDATA H 11
1 S /*
**Protocols supported by this ATM/ADSL NICIModem card
/*


#define HAYES ATMADSLPROT NATM 0x00001


#define HAYES ATMADSLPROT IPOA 0x00002


#define HAYES ATMADSLPROT FLANE 0x00004


#define HAYES ATMADSLPROT PPPOA 0x00008


#define HAYES ATMADSLPROT IPXOA 0x00016


-133-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
#define HAYES ATMADSLPROT NETBOA 0x00032
r
**Max values for data types.
I*


#define HAYES MAX SERVUSERNAME 16


#define HAYES MAX SERVREGNAME 51


#define HAYES MAX IPADDRESS 16


#define HAYES MAX ATMADDRESS 60


#define HAYES MAX CARRIERLOAD 128


#define HAYES MAX NUMBERSERVS 4096


/*


**Event handle names for processing
10 request


*I


#define READIO THREAD EVENT NAME "SM_READIO EVENT"


#define READ THREAD EVENT NAME "SM_READ EVENT"


#define WRITE THREAD EVENT NAME "SM WRITE EVENT"


#if defined( CPLUSPLUS) 11 defined(C_PLUSPLUS}


extern "C"{


#endif


2 0 /*


**Signaling types supported by this
ATM/ADSL NICIModem card



*I
typedef enum {
DUSUN131 = 0,
DUSUN140
-134-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
}DiaiupSignaling;
typedef enum {
VCSTATUS ACTIVE =0,
VCSTATUS INACTIVE,
VCSTATUS DISABLED
} VirtuaIConnStatus;
typedef struct dualEndUDS{
long upstream
long downstream;
}DualEndUDS;
typedef struct dualEndMR{
long adslModem;
long remoteEnd;
} DualEndMR;
/*
** ATMIADSL Modem Current Operational Line Parameters
*I
typedef struct smdOpParams{


DualEndMR attenuation;


DualEndMR noiseMargin;


DualEndMR outputPower,


DualEndMR reICapOcc;


DualEndMR maxAttBW;


DualEndMR actuaIBitRate;


-135-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
char carrierLoad[HAYES MAX_CARRIERLOAD+2J; I* Carrier Load
String*/
}SMDOpParams, *SMDOpParamsLP;
l*
** ATM/ADSL Modem Defect Counters
*/
typedef struct smdLossOfDefects{
DualEndMR IoCeIIDeliniation; I* Loss Of Cell Deliniation*/
DualEndMR IoSignal; /* Loss Of Signal*/
DualEndMR IoPower; /* Loss Of Power*/
DualEndMR IoFrame; /* loss Of Frame*/
}SMDLossOfDefects, *SMDLossOfDefectsLP;
I*
** ATM/ADSL Modem Channel Performance Counters
*/
typedef struct smdChannelPerf {
long HECViolation;
long FECsCorrected;
long ErroredSeconds;
long CodeViolations;
}SMDChannelPerf, *SMDChanneIPerfLP;
I*
**ATM/ADSL Modem Channel Status Data (This combines all of the above!)
*I
typedef struct smdChannelStatus
-136-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
unsigned int modemChannel;
SMDOpParams opParameters;
SMDLossOfDefects IossOfCounters;
SMDChannelPerf performance;
long pollingOps;
unsigned int opMode; /* 0 for Interleaved and I for Fast
unsigned int opStatus; I* Check enum values above for status
values. */
}SM DChannel Status, *SMDChannelStatusLP;
typedef struct smdChannelStatusLst{
struct -smdChannelStatusLst *previous;
struct smdChannelStatusLst *next;
SMDChannel Status chnlStatus;
}SMDChannelStatusLst, *SMDChannelStatusLstLP;
/*
** ATM Channel Performance Data.
*I
fypedef struct - smdVirtualConnStatus{


DWORD atmChannel;


UINT vpiVaiue;


UINT vciValue;


long cellsTrans;


long ceIIsRec;


long ceIIsDisc;


long aalSMsgs; I* Error detection
Info *I


long aalSFaults;


long elapsedTime; I* Time since last
polled for info*!


-137-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
BOOL oamF4Enabled; /* Op. & Maint. Flow Control (F4) enabled*I
BOOL oamF5 Enabled; /* Op. & Maint. Flow Control (F4) enabled */
BOOL isActive;
}SMDVirtuaIConnStatus, *SMDVirtuaIConnStatusLP;
typedef struct smdVirtuaIConnStatLst{
struct smdVirtualConnStatLst *previous;
struct smdVirtuaIConnStatLst *next;
SMDVirtualConnStatus vcStatus;
}SMDVirtuaIConnStatLst, *SMDVirtuaIConnStatLstLP;
/*
**Service Data list structure for service information.
*I
typedef struct smdServiceData{


DWORD atmChannel;
/* High word (VPI);
Low word (VCI)*/


char userName[HAYES MAX_SERVUSERNAME*2]; /*User
defined tab


name *I


char regName[HAYES MAX_SERVREGNAME+10]; /* Registered
service


*Iname


BOOL svcConnType; /* TRUE for SVC and FALSE for
PVC*/


UINT vpiValue;


UINT vciValue;


UINT atmClass;


UINT protocolUsed; /* ATM, IPOA, FLAKE, etc.*/


void *protocolSet; I* Pointer to protocol data
structure *I


DWORD peakValue;
/* High Word -
Up Stream; Low
Word -


Down Stream*/


DWORD minValue;
-138-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
DWORD sustainValue;
DWORD burstToIValue;
}SMDServiceData, *SMDServiceDataLP;
typedef struct srndServiceDataList {
struct smdServiceDataList *previous;
struct smdServiceDstaList *next;
SMDServiceData servData;
}SMDServiceDataList, *SMDServiceDataListLP;
/*
** Protocol Data Structure for TCPIIP over ATM or (IPOA)
*/
typedef struct - smdIPOASettings{
char ipSubnet[HAYES MAX_IPADDRESS+2];
char ipSubnetMask[HAYES MAX_1PADDRESS+2];
char arpServATMAddr(HAYES MAX ATMADDRESS+10];
char arpServlPAddr[HAYES MAX_IPADDRESS+2J;
char remoteIPAddr[HAYES MAX_IPADDRESS+2];
char IocaIIPAddr(HAYES MAX_IPADDRESS+2];
BOOL useDefGateway;
2 0 }SMDIPOASettings, *SMDIPOASettingsLP;
/*
** Protocol Data Structure for Forum LAN Emulation
*I
typedef struct - smdFLANESettings{
BOOL useLECSAddress; /* TRUE for Using well know LECS Address*/
char IecsATMAddress[HAYES MAX_ATMADDRESS+10];
char IesATMAddress[HAYES MAX ATMADDRESS+10];
-139-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
}SMDFLANESetings, *SMDFLANESettingsLP;
/*
*' Global ATM Information
*/
typedefstruct
smdGlobaIATMSettings{


I* Interface Information */


char atmAddress[HAYES MAX ATMADDRESS+10];


BOOL ilmiEnabled;


UINT signalingType;


UINT protSupport;


BOOL oamF4Enabled;


BOOL oamFSEnabled;


BOOL IIcSnapEnabled;


DWORD GuaranteedLn
Rate;


BOOL PVPMode;


char userAtmAddress[HAYES MAX_ATMADDRESS+10];


I* Options Information
*I


BOOL postEnabled; I* Power On Self Test Enabled
(extended test) 0/


BOOL useGlobal Profile;


2 0 BOOL modemStatus Enabled.


} SMDGIobaIATMSettings,
*SMDGIobaIATMSettingsLP;



#if defined( CPLUSPLUS) 11 defined(C_PLUSPLUS)
}
#endif
2 5 #endif
-140-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Communication Interface for ServiceMonitor (ServiceMonitorComm.h)
Future releases of ServiceMonitor allows other applications to
communicate with it for simple management functions. Such as
browser notifying that new service connections need to be
established from configuration files located on various Telco Web
Sites. This header is used to simply place various registered
messages for internal communication of classes to the main
application dialog.
IllllllllllllllllllllJllllllllllllllllllllllllllllllllllllllll
//
//ServiceMonitorComm.h : Main header file for all applications to interface
with
ServiceMonitor.
II
//Copyright (c) 1997 Hayes Microcomputer Products, Inc.
//
Il11111111111111111111111111111111111111111111111111111111111111111
#ifldefined(SERVICEMONITORCOMM_H)
#define SERVICEMONITORCOMM H 1
//Main Data types for all source code used to interface with Service Monitor
2 0 //This is the registered msg for ServiceMonitor to be able to update the
//system tray icon.
#define SMWRM NOTIFYTRAYICON MSG
"SMWRM SYSTEMNOTIFYICON"
-141-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
#define SMWRM SERVICEMONITOR EXIT MSG
"SMWRM SERVICEMONITOR EXIT"
#define SMWRM SERVICEMONITOR SHOW MSG
"SMWRM SERVICEMONITOR SHOW"
s #endif
The ADSL PC NIC on-board controller also includes a
Management Application resident thereon. The ADSL includes an
interface to interact with the application running on the host
PC. The Management Application controls various scenarios of
l0 operation of the ADSL NIC.
The term "Host" refers to the controlling application or
driver running on the PC in which the ADSL NIC is installed.
For the PC NIC, the term "near-end" is associated with the signal
received locally by the NIC (the ATU-R), and the term "far-end"
15 is associated with the signal received at the central office by
the ATUC.
The Management Application performs a number of tasks:
It accepts commands from the Host, and provides the necessary
responses, as per the Modem Control Interface described below;
2o It controls the Modem Software as required to accomplish the
Host's commands, and queries the Modem Software to obtain
necessary information, as per the Modem software API; and
-142-


CA 02335743 2000-12-19
it monitors performance statistics and provides alarms for fault
events.
Software can be downloaded from the host depending on the
selected mode. A first mode, for e.g. normal operation,
downloads the software. A second, e.g. for standalone, uses
software that is resident in an on board non volatile RAM.
If software is downloaded, the on-board controller is kept
in reset until the software download is\completed. Direct
memory accesses from the PC or Hydrogen chip into the on-board
controller memory space is used to download the software.
The architecture of the ADSL NIC control firmware is shown
in Figure 35. User data is not handled by the on-board
controller. User data passes directly from the Hydrogen chip to
the SACHEM over the UTOPIA interface as shown in the bottom
portion.
Figure 35 also shows how the Management Application
interacts with the Host 2902 through the Modem Control Interface
2904. The Management Application interacts with the ADSL Modem
Software 2906 through the Modem SW API 2908.
The Modem Control Interface is the set of commands,
responses and unsolicited responses that pass between the ADSL
NIC Management Application and the controlling entity on the
Host. The ADSL NIC has this interface between the on-board
controller and the Hydrogen chip. Control information is
typically exchanged between the Host and the Management
Application, with the Hydrogen chip serving as an intermediary.
'I~3
AMENDED SHEET


CA 02335743 2000-12-19
The interface between the on-board controller and the
Hydrogen chip includes two 16-bit mailboxes 3000, 3002, shown in
Figure 36, one for each direction. The mailboxes are
implemented in hardware within ASIC 410 as described above. One
mode provides compatibility with future hardware designs which
may provide only an 8-bit path as shown in Figure 37. In this
case, only the lower half of the data bus is used (bits 7-0).
The upper eight bits are filled with zeros on write operations,
and ignored on read operations.
Each mailbox has associated control bits e.g. 3010,
indicating the fill state of the mailbox, e.g., full or empty.
The mailbox drivers 3012 use these bits to control their
accesses to the mailbox. The rules for accessing the mailbox
are as follows and shown in Figure 38:
- In the outgoing direction, the mailbox driver does not write
to the mailbox unless the mailbox is empty. The mailbox is
empty when the MboxRSTA T bit in the IRQ Status register is set.
- In the incoming direction, the mailbox driver reads the
mailbox when it is full. The mailbox is full when the Mbox WSTA
T bit in the IRQ Status register is set.
- The MboxRSTAT and MboxWSTAT bits is used in either a polled or
an interrupt-driven fashion by each driver independently. As
part of the normal hardware initialization process, the ASIC IRQ
Enable registers on each side must be configured properly to
either enable or disable interrupts as desired.
AMENDED SHEET


CA 02335743 2000-12-19
If the above rules are followed, no data will be lost or
overwritten in the mailbox.
The most likely failure that may occur is when a mailbox
driver becomes unstable and ceases to service the mailbox. In
this case, the other driver may find that it is unable to write
to the mailbox. To handle this situation, a time-out of 1 _ 0.1
seconds is observed on write attempts to the mailbox shown in
Step 3202. The expiration of this time-out represents a fatal
error condition which calls for a reset. The Management
Application responds to this time out by waiting until the
Host-side driver responds or until the on-board controller is
reset.
Since many commands and responses require more than 8 bits
of information to be sent, a protocol is used to allow
multiple-byte messages to be passed between the Management
Application and the Host. A mailbox message has a consecutive
string of bytes with the format shown in Figure 34.
This message includes address fields to identify the
sending entity 2800 and receiving entity 2802. Typically, these
entities will be the Management Application on the NIC and the
Host Application running on the PC. However, other possible
entities include debug ports on the Host debug processes on the
NIC, or processes running on the Hydrogen chip. For messages
that are responses to commands, the destination address is
filled with the address of the entity that originated the
c ommand .
AMENDED SHEET

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The driver on each side of the mailbox routes messages to
the appropriate entity. In the interest of simplicity, addresses
for all entities are fixed at compile time. Exemplary addresses
are given in Table 1.
The SYNC and SYNC ACK opcodes are used prior to the
establishment of the protocol. Opcodes for these commands are
not available to serve as entity addresses. Therefore these four
addresses are reserved. Further details of the synchronization
are described herein.
to Table I. Mailbox Entity Addresses
Entity Address


Host Control Application 0x01


Host Data Handler 0x02


Host Debug Port A 0x03


Host Debug Port B 0x04


Host Debug Port C 0x05


Host Debug Port D 0x06


On Board Controller 0x10
Management Application


On Board Controller 0x11
Management Selftest Agent


On Board Controller 0x12
Management Debug Process 1


On Board Controller 0x13
Management Debug Process 2


On Board Controller 0x14
Management Debug Process 3


On Board Controller 0x15
Management Debug Process 4


Hydrogen Debug Process 1 0x20


-146-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Entity Address


Hydrogen Debug Process 2 0x21


Hydrogen Debug Process 3 0x23


Hydrogen Debug Process 4 0x24


Reserved for SYNC 0x55


Reserved for SYNC ACK OxAA


Reserved for SYNC 0x33


Reserved for SYNC ACK OxCC


The opcode field identifies the command or response being
sent. It also indicates to the recipient how the data field
should be interpreted.
The Length of Data Field value 2810 gives the length (in
bytes) of the message data field. If there is no data field,
this number is zero. In general, the correct length of the data
field could be deduced from the opcode. However, providing a
length field allows a mailbox driver (or an intermediate entity)
to correctly handle a message even if the opcode is not
recognized. This allows new opcodes to be added without
requiring updates to all of the firmware on the NIC. Different
versions of firmware on different CPUs may interwork more easily.
The content of the data field depends on the opcode. For
some opcodes, this field might not exist.. For data fields with
multiple bytes, the field format is given in the command or
response definition.
The Synchronization Procedure is used to protect against
spurious transmissions through the mailbox after power-up. The
-147-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
synchronization procedure is used by the Management Application
and the Host-side mailbox driver on both the Host and the
Hydrogen.
Essentially, the procedure requires transmission and
acknowledgment of special SYNC opcodes three times in a row, to
attain synchronization in each direction. Acknowledgment is
through the SYNC ACK opcode. Note that the SYNC and SYNC ACK are
messages but do not necessarily follow mailbox protocol described
herein. These are formed by a one-byte message having only an
opcode.
Synchronization is assumed to have been attained in the
outgoing direction when three consecutively-sent SYNC opcodes
have resulted in three consecutively-received SYNC ACK opcodes.
The SYNC process is then terminated, and the mailbox driver may
begin using the mailbox protocol described above to transmit
messages.
In the incoming direction, synchronization is assumed when
three consecutive SYNC opcodes have been received. Any bytes
received after this (other than SYNC) are interpreted as messages
complying with the mailbox protocol. Any SYNC opcodes received
after this point are simply acknowledged and then discarded,
without causing a loss of synchronization.
Received SYNC opcodes are always acknowledged with SYNC ACK
opcodes.
-148-


CA 02335743 2000-12-19
WO 99/66782 PCTNS99/14236
The Host-side driver and the Management Application follow
the same sequence. This procedure is typically necessary only
after power-up or after reset.
During synchronization, the time-out period for writing to
the mailbox and for polling for responses is 250 ~ 50 msec.
After synchronization is achieved, the time-out for mailbox write
attempts changes to 1 ~ 0.1 seconds.
There are three different kinds of NIC control messages. A
first command can be issued to the Management Application.
l0 Responses can originate from the Management Application.
Finally, general purpose messages may be sent from any entity to
any other.
Table 2 lists commands that the Host may issue to the
Management Application.
-149-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Table 2. Host Commands
Data Field Data Field
Command Opcode Length Contents


MBOX Sync 0x55 N/A N/A


MBOX Sync Ack OxAA N/A N/A


ADSL Selftest Long 0x01 0 -


ADSL Selftest Short 0x02 0 -


ADSL Open Ox03 0 -


ADSL Close Ox04 0 -


ADSL Report Version 0x05 0 -


ADSL Report Vendor 0x06 0 -


ADSL Report Oper Data 0x07 0 -


ADSL Report Carrier Load Ox08 0 -


ADSL Report Channel Data 0x09 0 -


ADSL Report Performance OxOA 0 -


ADSL Report Performance Raw OxOB 0 -


ADSL Report Fault Data OxOC 0 -


ADSL Send Dying Gasp OxOD 0 -


ADSL Report Performance Data OxOE 0 -


MBOX Sync, MBOX Sync Ack are responses that are sent by the
Host-side mailbox driver after power-up or reset to establish
synchronization with the Management Application mailbox driver.
These responses do not have address fields or data fields.
ADSL Selftest Long, ADSL Selftest Short commands cause the
on-board controller to initiate long or short self tests. The
self test results are sent back to the Host using the
ADSL Selftest Results response.
-150-


CA 02335743 2000-12-19
ADSL_Open and ADSL_Close control the ADSL connection. The
ADSL Open command causes the modem to attempt to connect with
the ATU-C. The ADSL_Close command causes the ADSL modem to send
a Dying Gasp message to the ATU-C, close the connection, and
return to an idle state.
The ADSL_Open can result in a number of different
operations. Figure 39 shows the process flow when the ADSL_Open
succeeds. Figure 40 shows the ADSL_Open failing due to
rejection. Figure 41 shows ADSL Open failing due to timeout.
Figure 42 shows ADSL_Open failing due to initialization failure.
One related scenario is shown in Figure 43, which diagram the
existing ADSL connection being lost.
Figure 44 diagrams the ADSL Close request succeeding.
Figure 45 shows the ADSL Close being rejected.
The ADSL Report... commands are used to request information
from the Management Application.
The ADSL_Send_Dying Gasp command instructs the modem to
send a Dying Gasp message to the ATU-C. The modem remains
connected after sending the message.
Figure 46 illustrates the operation of the host requesting
version or vendor IDs. Figure 47 shows the host requesting the
near or far end operational data, and Figure 48 shows the host
requesting the channel operational data. The host can also
request performance counters, as shown in Figure 49.
Table 3 lists the Management Application responses. Some
responses are sent only as answers to Host commands. Other
~ S~
AMENDED SHEET


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
responses are sent spontaneously as certain events occur. When
the unsolicited responses occur, they are addressed to the host
"owner" application--that is, the application which issued the
most recent successful ADSL Open command. On power-up, the owner
address defaults to 0x01.
Table 3. Management Application Responses
Data
Response Opcode Field Data Field Contents
Length


MBOX-Sync * 0x33 N/A N/A


MBOX Sync Ack OxCC N/A N/A


ADSL Open Rejected 0x21 3 reason and duration


ADSL Open Failed 0x22 1 error code


ADSL Open Failed on Timeou0x23 0 -


ADSL ConnectionlOpened 0x24 0


ADSL Connection Lost* 0x41 0 -


ADSL Connection Closed 0x25 0 -


ADSL Close Rejected 0x26 1 reason


ADSL Selftest Resultes 0x27 1 result code


ADSL Version 0x28 2 near-and far-end
versions


ADSL Vendor 0x29 2 near-and far-end
versions


ADSL Oper Data Ox2A 8 near-end operational
d ata


ADSL Carrier Load Ox2B 128 carrier laed data


ADSL Oper Data Unavail Ox2C 0 -


ADSL Channel Data Ox2D 8 channel bit rates


ADSL_Performance Ox2E 20 per-sec. performance
data


ADSL_Performance_Raw Ox3F 32 performance data
(raw)


-152-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Data
Response Opcode Field Data Field Contents
Length


ADSL Perf Unavail 0x30 0 -


ADSL_Fault_Data 0x31 42 fault counters and
defects


ADSL Fault Data Unavail 0x32 0 -


ADSL Dying Gasp Sent 0x34 0 -


ADSL Dying Gasp Rej 0x35 0 -


ADSL_Performance Delta Ox36 32 delta performance
c ounters


FAULT Declared* 0x42 1 type of fault


FAULT Ended* 0x43 1 type of fault


FAULT Deactivate* 0x44 2 shutdown time (sec)


* indicates an unsolicited response
MBOX Sync and MBOX Sync Ack responses are sent by the
Management Application mailbox driver after power-up or reset to
establish synchronization with the Host-side mailbox driver.
These responses do not have address fields or data fields.
The ADSL Open Rejected response is returned if the modem is
already connected or attempting to connect, or if an
operator-initiated line test is in progress. The data field has
3 bytes. Byte 0 gives the reason for the rejection--0x00
indicates that the line is not down; 0x01 indicates that a test
is in progress. If the reason is that a test is in progress,
bytes 1 and 2 give the time remaining in the test (in seconds),
with the LSB in byte 1 and the MSB in byte 2. Otherwise, the
data field will not have meaningful data.
-153-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The ADSL Open Failed response indicates a failure has
occurred during the initialization process. An error code is
returned in the data field, as shown in Table 4.
Table 4. Error for ADSL Open Failed
Error


Code Mnemonic Explanation


0x05 HIGH Bit rate requested by ATU-C cannot
BITRATE TOO
REQ


_ be supported
_


OxOA NO LOCK-POSSIBLE Unable to lock with ATU-C


OxOF PROTOCOL A failure occurred during the
ERROR


_ initialization process


0x14 MESSAGE A message received from the ATU-C
ERROR


_ was invalid (incorrect CRC or wrong


f ormat )


If the modem is unable to connect with the ATU-C, and yet
does not report a failure, the Management Application stops the
attempt after a time-out period. This scenario could arise, for
example, as a result of the ATU-C not functioning or the
telephone wire being cut. The time-out period is 1 minute after
the ADSL Open request The ADSL Connection Opened indicates that
the ADSL Open request has succeeded and that a connection has
been established with the ATU-C. The ADSL Connection Lost is
sent if the line capacity deteriorates to the point where the
requested bit rates can no longer be supported. This is an
unsolicited response. The ADSL Connection Closed is sent to
indicate that an ADSL Close request has been successful.
An ADSL Close request will be rejected if the modem is
currently down, or if the issuer of the ADSL Close is not the
-154-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
"owner" application which issued the ADSL Open;. The
ADSL Close Rejected response indicates this rejection with a
one-byte data field which gives the reason for the rejection:
0x00 indicates that the modem is not down; 0x01 indicates that
the issuer is not the owner.
The ADSL Selftest Results response gives selftest results.
The data field has one byte, which contains the self test result
code, as given in Table 5.
Table 5. Selftest Result Codes
Result


Code Mnemonic Meaning


0x0000 OK The short selftest detected no
Selftest Short


_ problems


0x0001 Selftest Short Warning The short selftest detected a
non-


fatal problem


0x0002 Error The short selftest detected a
Selftest Short


_ failure


0x0003 Selftest Long OK The long selftest detected no


problems


0x0004- Selftest Long_... Long selftest error codes


Ox??? ?


The ADSL Version response returns the versions of the
near-end and far-end ADSL modems. The data field contains two
2o bytes. The near-end version is given first in time; the far-end
version is given second. The near-end version is always
available. The availability of the far-end version is given in
Table 6.
-155-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/I4236
Table 6. Availability of Far-End Version and Far-End Vendor
Availability of Far-End Version and
Modem State Vendor


Down, after power-up available as OxFF


Initializing a connection available as either OxFF or as actual
value


Connected actual value available


Down, after connection is value from previous connection is
closed or fails available


The ADSL Vendor response reports the vendors of the near-end
and far-end ADSL modems. The data field is two bytes long with
the near-end vendor being reported first; the far-end vendor is
reported second. The vendor number for Alcatel is 0x0022. The
near-end vendor is always available. The availability of the
far-end vendor is given in Table 6.
The ADSL Oper Data response returns the operational data for
the near and far ends of the line. Eight bytes are reported, as
shown in Table 7. The availability of this data is given in
Table 8. Note: For the PC NIC, the relCapacity0ccupationDnstr
value will be limited to a maximum of 100.
-156-


CA 02335743 2000-12-19
WO 99166782 PCT/US99114236
Table 7. Data Field for ADSL Oper Data Near
Byte Mnemonic Meaning


0 relCapacityOccupationDnstrdownstream bit rate as a


(first percentage of the maximum


in attainable (Bmax)


time)


1 noiseMarginDnstr amount of increased noise (dB


loss in SNR) that can be


tolerated while maintaining a


downstream BER of 10-7


2 outputPowerUpstr ATU-R transmit power level (dBm)


3 attenuationDnstr difference in dB between the


power received by the ATU-R and


a reference ATU-C transmit power


level


4 relCapacityOccupationUpstrupstream bit rate as a


percentage of the maximum


attainable (Bmax)


5 noiseMarginUpstr amount of increased noise (dB


loss in SNR) that can be


tolerated while maintaining an


upstream BER of 10-7


6 outputPowerDnstr ATU-C transmit power level (dBm)


7 attenuationUpstr difference in dB between the


power received by ATU-C and a


reference ATU-R transmit power


level


Table 8. Availability of Operational Data and Raw Performance Data
Modem State Availability of Operational Data


Down, after power-up available as OxFF


Initializing a connection not available


Connected valid data available


Down, after connection is data from previous connection is
closed or fails available


The ADSL Carrier Load response returns the bit-per-symbol
loading for each carrier bin across the ADSL frequency band. The
-157-


CA 02335743 2000-12-19
WO 99/bb782 PCT/US99/14236
values for the 256 bins are packed two per byte with a total data
length of 128 bytes. The values are given in order of increasing
frequency. For each byte, the lower- frequency value is in the
upper nibble as shown in Table 10.
Table 10. Data field for ADSL Carrier Load
Nibble Data


byte 0, upper nibble load for carrier 0


byte 0, lower nibble load for carrier 1



byte 127, upper nibble load for carrier 254


byte 127, lower nibble load for carrier 255


ADSL Oper Data Unavail means that operational data is not
available. This happens while the modem is initializing a
connection.
The ADSL Channel Data response returns the 16-bit quantities
indicating bit rates for the fast and interleaved channels for the
near and far ends. Table 11 shows the data field. The
availability of this data is given in Table 8.
-158-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Table 11. Data Field for ADSL Channel Data Response
Byte Mnemonic Bits Meaning


_
0 (first ChanDataIntNear 7-0 near- interleaved c 1
in time) bit rate (kbits/sec)


1 15-8


2 ChanDataFastNear 7-0 near-end fast channel bit rate
(kbits/sec)


3 15-8


4 ChanDataIntFar 7-0 far-end interleaved channel
bit
rate (kbits/sec)


5 15-8


6 ChanDataFastFar 7-0 far-end fast channel bit rate
(kbits/sec)


15-8


The ADSL Performance reports 8-bits representing ADSL modem
performance counters maintained by the Management Application.
These counters are polled from the Modem SW once per second, and
hence can be interpreted as per-second quantities. These counters
are frozen while defects are being experienced on their respective
end. The ADSL Performance response also reports the two 32-bit
Quality of Service parameters maintained by the Management
Application, Near-End Errored Seconds and Far-End Errored Seconds.
2o The data field format for the ADSL-Performance response is
given in Table 12. Note that byte 0 is first in time.
The ADSL Performance counters are always available.
-159-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Table 12. Data Field for ADSL Performance
Byte Mnemonic Description


0 near-end Number of near-end received superframes with
one


fec-ni or more Reed-Solomon corrections in a dat frame


(non-interleaved)


1 near-end Number of near-end received superframes with
one


fec-I or more Reed-Solomon corrections in a data frame


(interleaved)


2 near-end Number of near-end received superframes with
an


crc-ni incorrect CRC in the non-interleaved path


3 near-end Number of near-end received superframes with
an


crc-I incorrect CRC in the interleaved path


4 near-end Number of near-end received superframes with
at


hec-ni least one cell with an errored HEC (non-


interleaved)


5 near-end Number of near-end received superframes with
at


hec-I least one cell with an errored HEC (interleaved)


6 far-end Number of far-end received superframes with
one


fec-ni or more Reed-Solomon corrections in a data frame


(non-interleaved)


7 far-end Number of far-end received superframes with
one


fec-I or more Reed-Solomon corrections in a data frame


(interleaved)


8 far-end Number of far-end received superframes with
an


crc-ni incorrect CRC in the non-interleaved path


9 far-end Number of far-end received superframes with
an


crc-I incorrect CRC in the interleaved path


10 far-end Number of far-end received superframes with
at


hec-ni least one cell with an errored HEC (non-


interleaved)


11 far-end Number of far-end received superframes with
at


hec-I least one cell with an errored HEC (interleaved)


near-end Near-end Errored Seconds: number of seconds


ES: which contain near-end


12 bits 7-0 CRC anomalies (ni or I, or LOS or LOF defects


13 bits 15-8


14 bits 23-16


15 bits 31-24


-160-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Byte Mnemonic Description


far-end Far-end Errored Seconds: number of seconds
ES: which
contain far-end CRC anomalies,(ni or I), or
LOS
or LOF defects


16 bits 7-0


17 bits 15-8


18 bits 23-16


19 bits 31-24


The ADSL Performance Raw response reports the raw 16-bit ADSL
modem performance counter values as polled at the time of the Host
request. Two 32-bit Quality of Service parameters maintained by
the Management Application, Near-End Errored Seconds and Far-End
Errored Seconds are also reported.
to The data field format is given in Table 13. Byte 0 is first
in time. The availability of the raw performance counters is
given in Table 8.
Table 13. Data Field for ADSL_Performance_Raw and
ADSL Performance Delta
Byte Mnemonic Bits Description


0 near-end 7-0 Number of near-end received superframes


fec-ni with one or more Reed-Solomon corrections


in a data frame (non-interleaved)


1 15-8


2 near-end 7-0 Number of near-end received superframes


fec-I with one or more Reed-Solomon corrections


in a data frame (interleaved)


3 15-8


4 near-end 7-0 Number of near-end received superframes


crc-ni with an incorrect CRC in the non-


interleaved path


5 15-a


-161-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
15 Byte Mnemonic Bits Description


6 near-end 7-0 Number of near-end received superframes


crc-I with an incorrect CRC in the interleaved


path


7 15-8


8 near-end 7-0 Number of near-end received superframes


hec-ni with at least one cell with an errored


HEC (non-interleaved)


g 15-8


10 near-end 7-0 Number of near-end received superframes


hec-I with at least one cell with an errored


HEC (interleaved)


11 15-8


12 far-end 7-0 Number of far-end received superframes


fec-ni with one or more Reed-Solomon corrections


in a data frame (non-interleaved)


13 15-8


14 far-end 7-0 Number of far-end received superframes


fec-I with one or more Reed-Solomon corrections


in a data frame (interleaved)


15 15-8


16 far-end 7-0 Number of far-end received superframes


crc-ni with an incorrect CRC in the non-


interleaved path


17 15-8


18 far-end 7-0 Number of far-end received superframes


crc-I with an incorrect CRC in the interleaved


path


19 15-8


20 far-end 7-0 Number of far-end received auperframes


hec-I with at least one cell with an errored


HEC (non-interleaved)


21 15-8


22 far-end 7-0 Number of far-end received superframes


hec-I with at least one cell with an errored


HEC (interleaved)


23 15-8


-162-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
15 Byte Mnemonic Bits Description


24 near-end 7-0 Near-end Errord Seconds: number of


ES seconds which contain near-end CRC


anomalies (ni or I), or LOS or LOF


defects


25 15-8


26 23-16


27 31-24


28 far-end 7-0 Far-end Errored Seconds: number of


ES seconds which contain far-end CRC


anomalies (ni or I), or LOS or LOF


defects


29 15-8


30 23-16


31 31-24


The ADSL Perf Unavail response indicates that performance
data is not available. Raw performance data is not available, for
example, while a connection is being initialized.
The ADSL Fault Data response reports the various fault
counters maintained by the Management Application, as well as the
current state of the defects bitmap. The counters are all 32 bits
in length. Table 14 gives the data field format for this
response. Fault data availability is given in Table 15.
Table 14. Data Field for ADSL Fault Data Response
Byte Fault Counter Bits


0 Near-End Loss of Signal 7-0


1 15-8


2 23-16


3 31-24


-163-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Byte Fault Counter Bits


4 Near-End LossofSignal


15-8


6 23-16


31-24


8 Near-End LossofCell Delineation, ni 7-0


15-8


23-16


11 31-24


12 Near-End LossofCell Delineation,i 7-0


10 13 15 8


14 23-16


31-24


16 Far-End Loss ofCell Delineation, ni


1~ 15-8


15 18 23-16


19 31-24


Far-End Loss ofCell Delineation, I ~-0


21 15-8


22 23-16


20 23 31-24


24 Near-End Loss ~-0
of Frame


15-8


26 23-16


31-24


25 28 Far-End Loss ofFrame ~-0


29 15-8


23-16


31 31-24


32 Near-End Loss ~-0
of Frame


30 33 15-8


-164-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Byte Fault Counter Bits


34 23-16


35 31-24


36 Far-End Loss of Margin 7-0


37 15-8


38 23-16


39 31-24


40 Near-End Defects recent status


41 Far-End Defects recent status


Table 15. Availability of Fault Data
Modem State Fault Data Availability


Down, after power-up available as 0x0000


Initializing a connection not available


Connected valid data available


Down, after connection is data from previous connection
closed of fails available


The ADSL Fault Data Unavail response indicates that the
requested fault data is not available. Fault data is not
available while the modem is initializing a connection. The
ADSL Dying Gasp Sent indicates that a Dying Gasp has been sent as
2o a result of an ADSL Send Dying Gasp command. This response is
not generated as a result of an ADSL Close command. The
ADSL Dying Gasp Rej indicates that the Dying Gasp request has been
rejected. This occurs if the modem is not connected.
The ADSL Performance Delta response is similar to the
ADSL-Performance response. This response reports changes or
"deltas" from the previous host read, rather than per-second
-165-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
quantities. With the exception of the Errored Second counters,
these counters represent totals accumulated since the last read
from the host. As such, there is a possibility that these
counters may overflow or "wrap" if the host does not read them
frequently enough. The counters are 16 bits each--and the maximum
rate of increase of any count is 58 per second. Therefore, in the
worst case, the counters will wrap after about 18 minutes. It is
preferable, therefore, to read them more often than this. [CLAIM]
The Errored Second counters do not reset upon being read.
These counters give totals of errored seconds accumulated since
one second after the beginning of Showtime.
The data field format (which is the same as the
ADSL Performance Raw format) is given in Table 13.
The FAULT Declared response is used to indicate the
occurrence of a fault. It is spontaneously sent to the Host
whenever a fault condition is declared. This one-byte data field
has a code indicating the type of fault that has occurred. Table
16 shows the different kinds of faults.
The System Error fault indicates that a serious error has
occurred which calls for a hard reset and software reload. One
example is the time out of the mailbox, as described above.
-166-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Table 16. Fault Codes for FAULT Declared and FAULT Ended
Fault
Code (FaultMeaning Meaning


0x01 Loss of_Signal_NearNear-End of Signal
- Loss


0x02 Loss of_Signal_Far Far-End Lossof Signal


_ -
i


0x03 Loss ofCD Near Near-End on, non
- - ni Loss of Cell Delineat
- - Interleaved


0x04 Loss ofCD Near Near-End of Cell Delineation,
- - i Lose
- - Interleaved


0x05 Loss ofCD Far ni Far-End Lossof Cell Delineation, non-
- - - - Interleaved


0x06 Loss _of_CD_Far_i Far-End Lossof Cell Delineation, Interleaved


0x07 Loss _of_Frame_NearNear-End
Loss of
Frame


0x08 Loss _of_Frame_Far Far-End Lossof Frame


a reset
f
ll


0x09 System_Error Fatal Systems
or
Error which ca


OxO Loss _of_Margin Near-End
Near Loss of
A Margin


OxOB Loss ofMargin Far Far-End Lossof Margin


FAULT Ended is a response that indicates the termination of a
fault condition. It is spontaneously sent to the Host whenever a
fault condition is terminated. The one-byte data field contains a
code indicating the type of fault that has ended (see Table 16).
[FLOWCHART]
The ADSL_Deactivate response indicates that the ADSL modem
has been shut down. This allows, for example, the operator to
perform line tests.
When this request is received by the on board controller
Management Application, the modem is automatically shut down, and
the host receives an ADSL Deactivate response. The on-board
-167-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
controller Management Application then enforces a lock-out period
for the duration of the test. During this time, any ADSL Open
requests received from the host are rejected using, e.g., the
ADSL Open Rejected.
The two-byte data field gives the duration of the test in
seconds (up to 300). The first data byte has bits 7-0 of the test
duration with the second data byte having bits 15-8.
In addition to the above, general purpose messages may be
sent from any entity to any other. These are listed in Table 17.
Table 17. General Purpose Messages
Command Opcode Data Data Field Contents
Field
Length


GENERIC Character 0x81 1 ASCII character


GENERIC Integer 0x82 1 8 bit number


GENERIC Byte 0x83 1 unspecified


The GENERIC Character message can be used to send ASCII
characters from one entity to another. The data field has the
ASCII character code. The GENERIC Integer may similarly be used
to send integers from one entity to another. The data field has
an 8-bit unsigned integer. The GENERIC Byte message may be used
to carry any 8 bit data value. The meaning of the value is left
up to the sending and receiving entities.
The Management Application and the Modem Software can
interact in ways which do not involve the Host. These are given
in the Interface Specification "SWB-Modem SW Architecture"
-168-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
(Alcatel Document 3EC 15576 AAAA PBZZA). Other Combined Scenarios
describe the interaction between the Host, the Management
Application, and the Modem Software.
The Management Application monitors the modem performance
counters and the defects bitmap to maintain performance data and
to detect fault conditions. Definitions of the modem defects and
performance primitives are found in [TRANSPORT].
Performance data is provided to the host in three forms.
The ADSL Performance response provides performance data in
l0 the form of per-second quantities. These values can be taken as
error-per-second data. As such, these counters will never have
values greater than 58 (the number of superframes per second).
These values are correlated with defects by the on-board
controller Management Application as recommended in [TRS). The
polling period for these counters is one second.
The ADSL Performance Delta response provides performance data
in the form of reset-on-read counters. These counters are
correlated with line defects. In order to prevent averflow, these
counters should be read at least once every 18 minutes. These
counters are updated once per second.
The ADSL Performance Raw response provides the values of the
raw 16-bit free-running counters given by the modem software.
These counters are not correlated with line defects. In addition,
-169-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/I4236
the values reported are accurate only at the time of polling;
therefore, latency issues may make it difficult for the host to
interpret this data correctly. [CLAIM 3 DIFFERENT WAYS]
In addition, all three of the above mentioned responses
provide Errored Second counters that represent the accumulated
total of errored seconds since the beginning of Showtime. They
are 32 bits in length and do not reset when read.
When near-end defects are being experienced, the near-end and
far-end performance counters are frozen. Near-End Errored
Seconds, however, are not frozen. When far-end defects are being
experienced, far-end counters (except Far-End Errored Seconds)
will be frozen. This correlation applies to the ADSL Performance
and ADSL Performance Delta responses only.
The Near-End Errored Seconds parameter is a 32-bit count of
one-second intervals which contain one or more near-end cyclic
redundancy code (CRC) (interleaved or non-interleaved) anomalies,
or one or more near-end LOS or near-end LOF defects. The count
begins 1 second after the modem enters Showtime, enabling any
initial errors from reset or SYNC problems to be ignored.
The Far-End Errored Seconds parameter is a 32-bit count of
one-second intervals which contain one or more far-end CRC
(interleaved or non-interleaved) anomalies, or one or more far-end
LOS or far-end LOF defects. The count begins 1 second after the
modem enters Showtime.
-170-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The Management Application polls the defects bitmap every 0.5
seconds in order to detect the fault conditions listed below.
Each fault type is associated with a 32-bit counter, which
contains the number of faults that have occurred since 1 second
after the beginning of Showtime.
Far-end (ATU-C) defects are ignored while the ATU-R is
experiencing near-end defects.
Near-and Far-End Loss of Signal (LOS)
A Near-End Loss of Signal fault is declared when either:
~ the near-end LOS defect has been observed to be continuously
active for 2.5 ~ 0.5 seconds; or
~ the near-end LOS defect is present and the criteria for a
Near-End Loss of Frame fault have been met.
Analogously, a Far-End Loss of Signal fault is declared when
either:
~ the far-end LOS defect has been observed to be continuously
active for 2.5 ~ 0.5 seconds; or
~ the far-end LOS defect is present and the criteria for a
Far-End Loss of Frame fault has been met.
The Host is notified of these faults through the
FAULT Declared(Loss of Signal Near) and
FAULT Declared(Loss of Signal Far) responses, respectively.
A Near-End Loss of Signal fault condition is terminated when
the near-end LOS defect has been absent for 10 ~ 0.5 seconds. The
-171-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Host shall be notified through the
FAULT Ended(Loss of Signal Near) response.
A Far-End Loss of Signal fault condition is terminated when
the far-end LOS defect has been absent for 10 ~ 0.5 seconds. The
Host is notified through the FAULT Ended(Loss of Signal Far)
response.
Starting 1 second after the beginning of Showtime, the number
of Near-End and Far-End Loss of Signal faults are maintained in
32-bit counters, which can be, for example, values from software
counters. The Host may obtain these counters using the
ADSL Report Fault Data command. The values are reported in the
ADSL Fault Data response.
Near-and Far-End Loss of Cell Delineation (LCD) [DICTATE]
A Near-End Loss of Cell Delineation fault is declared when
either of the near-end LCD defects (interleaved or
non-interleaved) is continuously active for 2.5 ~ 0.5 seconds,
except if one of the following conditions exist:
~ the near-end LOS defect is present;
~ the near-end LOF defect is present;
~ a Near-End Loss of Signal fault is declared; or
~ a Near-End Loss of frame fault is declared.
If any of these conditions holds, a fault is not declared.
A Far-End Loss of Cell Delineation fault is declared when
either of the far-end LCD defects (interleaved or non-interleaved)
-172-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
has been observed to be continuously active for 2.5 ~ 0.5 seconds,
except if one of the following conditions exist:
~ the far-end LOS defect is present;
~ the far-end LOF defect is present;
~ a Far-End Loss of Signal fault is declared; or
~ a Far-End Loss of Frame fault is declared.
If any of these conditions holds, a fault is not declared.
The four types of LCD errors and the corresponding Host
notifications are shown in Table 18.
Table 18. Loss of Cell Delineation Faults
Defect Explanation Response sent to Host


near-end LCD-ni Loss of Cell Delineation, FAULT-Declared


Near-End, Non-Interleaved (Loss of CD Near ni)


near-end LCD-I Loss of Cell Delineation, FAULT Declared


Near-End, Interleaved (Loss of CD Near i)


far-end LCD-ni Loss of Cell Delineation, FAULT-Declared


Far-end, Non-Interleaved (Loss of CD Far ni)


far-end LCD-I Loss of Cell Delineation, FAULT Declared


Far-end, Interleaved (Loss of CD Far i)


A Near-End Loss of Cell Delineation fault condition is
terminated when any of the following conditions becomes true:
~ a Near-End Loss of Frame failure is declared;
~ a Near-End Loss of Signal failure is declared; or
~ the near-end LCD detect is absent for IO ~ 0.5 seconds.
-173-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The Host shall be notified through the
FAULT Ended(Loss of CD Near ni) or the
FAULT Ended(Loss of CD Near i) response, as appropriate.
A Far-End Loss of Cell Delineation fault condition is
terminated when any of the following conditions becomes true:
~ a Far-End Loss of Frame failure is declared;
~ a Far-End Loss of Signal failure is declared; or
~ the far-end LCD defect has been absent for 10 ~ 0.5
seconds.
l0 The Host is -notified through the FAULT Ended(Loss of-
Cd -Far ni) or the FAULT Ended(Loss of CD Far i) response, as
appropriate.
Starting 1 second after the beginning of Showtime, the number
of Near-End Loss of Cell Delineation faults and the number of
Far-End Loss of Cell Delineation faults are maintained in 32-bit
counters. The Host may obtain these counters using the
ADSL -Report Fault Data command, reported in the ADSL_Fault Data
response.
A Near-End Loss of Frame fault is declared when the near-end
LOF defect has been observed to be continuously active for 2.5 ~
0.5 seconds, except when either of the following conditions are
true:
~ the near-end LOS detect is active: or
~ a Near-End Loss of Signal fault has been declared.
-174-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
If either of these conditions is true, no fault is declared.
If a fault is declared, the Host is notified through the
FAULT Declared(Loss of Frame Near) response.
A Far-End Loss of Frame fault is declared when the far-end
LOF defect has been observed to be continuously active for 2.5 ~
0.5 seconds, except when either of the following conditions are
true:
~ the far-end LOS defect is active; or
~ a Far-End Loss of Signal fault has been declared.
If either of these conditions is true, no fault is declared.
If a fault is declared, the Host is notified through the
FAULT Declared(Loss of Frame) response.
A Near-End Loss of Frame fault is terminated if either of the
following conditions becomes true:
~ a Near-End Loss of Signal fault is declared; or
~ the near-end LOF defect is absent for 10 ~ 0.5 seconds.
The Host is notified of the termination of the fault through
the FAULT Ended(Loss of Frame Near) response.
A Far-End Loss of Frame fault is terminated if either of the
following conditions becomes true:
~ a Far-End Loss of Signal fault is declared; or
~ the far-end LOF defect has been absent for 10 ~ 0.5 seconds.
The Host is notified of the termination of the fault through
the FAULT Ended(Loss of Frame Far) response.
-175-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Starting 1 second after the beginning of Showtime, the number
of Near-End Loss of Frame faults and Far-End Loss of Frame faults
are maintained in 32-bit counters. The Host may request these
counters using the ADSL Report Fault Data command. The values are
reported in the ADSL Fault Data response.
A Near-End Loss of Margin fault is declared when the near-end
LOM defect is observed to be continuously active for 2.5 ~ 0.5
seconds. The host shall be notified through the
FAULT Declared(Loss of Margin Near) response.
l0 A Far-End Loss of Margin fault is declared when the far-end
LOM defect has been observed to be continuously active for 2.5 ~
0.5 seconds. The host is notified through the
FAULT Declared(Loss- of Margin Far) response.
The Near-End Loss of Margin fault is conversely terminated
when the near-end LOM defect has been observed to be continuously
absent for 10 ~ 0.5 seconds. The host is notified through the
FAULT Ended(Loss of Margin Near) response.
A Far-End Loss of Margin fault is terminated when the far-end
LOM defect has been observed to be continuously absent for 10 ~
0.5 seconds. The host shall be notified through the
FAULT Ended(Loss of Margin Far) response.
Starting 1 second after the beginning of Showtime, the number
of Near-end and Far-End Loss of Margin faults are maintained in
-176-


02335743 2000-12-19
32-bit counters. The host may request these counters using the
ADSL Report Fault Data command.
The basic installation process is shown in Figure 53.
When ServiceMonitor is first started the user needs to
configure services for the first time. The user is prompted
through a message box that no services have been installed and
asked if he/she wants to install a new service now. If the user
elects to install services later, then that could be done by
going to the "ServiceMonitor Properties" dialog off the main
dialog and selecting "Install New" (See Figure 26) or by
selecting "Install New Service" off the System Tray Icon (See
Figure 25).
The installation wizard dialogs follow the basic philosophy
of guiding the user through the type of installation. The
flow-chart in Figure 54 demonstrates the pattern of questions
for the user to answer for installation of a new service.
The user can choose to remove an installed service via the
"ServiceMonitor Properties" dialog as shown in Figure 25. The
service tab to be removed is selected, and then select
"Uninstall". This prompts the user with a dialog, warning them
of their actions, and asking for confirmation of the removal
action. If the user selects "OK", then the service is removed
and the tabs are updated to reflect this removal.
AMENDED SHEET


02335743 2000-12-19
The normal operation of ServiceMonitor after boot-up and
logon is to start up in the System Tray. Alternately,
ServiceMonitor can start as a minimized application. Figure 25
shows some of the standard interaction with ServiceMonitor as it
is in the System Tray.
ServiceMonitor was designed to be minimally intrusive and
to provide as much feedback to the user as possible, in an easy
manner. The Tray Icon has three artificially-simulated LEDs, of
which the left represents transmission of data while the right
represents data received. These two LEDs alternate between dark
red and bright green colors for data movement. Bright red would
indicate some sort of error in the data flow. The center LED is
used to indicate line sync with the ADSL Modem. For this LED,
red would indicate loss of sync and bright green is the normal
condition.
Should the user decide that manual adjustment of the
connection parameters is needed, then selecting "Modify" brings
up the Modify Service dialog and the previous dialog "Service
Properties" disappears. If the service being elected to modify
is actively connected, then a warning dialog appears, notifying
the user that any changes to an active service could cause loss
of data. This warning dialog allows the user to cancel the
modify action or continue to bring up the Modify dialog. lnlhile
the user
AMENDED SHEET


02335743 2000-12-19
is in the modification dialog, changes can be made to any of
the connection parameters, including alteration of the tab name.
For any service that is using any protocol other than
Native ATM, the ~Settings" button is enabled and brings up a
configuration dialog for that protocol if selected.
For communicating via IP over ATM, the configuration dialog
provides flexibility. A PVC connection using Routed IpoA allows
using the gateway IP address already configured in the TCP/1P
protocol stack as the destination machine to connect to in the
Ethernet LAN. If the connection is a machine other than the
gateway, then the user needs to provide the IP address of that
machine to complete the connection. This configuration is
simplified by the use of SVC's or Bridged IpoA.
The ATM Interface dialog displays global performance data
and configuration setting to the user (See Figure 26). This
dialog was intended to be used for providing ISP's with
configuration information in the event that a service
installation failed or was working improperly. The connection
status information is static and cannot be altered by the user
in this application.
The Tabs that display modem performance are initially set
to as blocked--i.e. not being displayed, since they were
intended for the advanced user to use for troubleshooting
communication problems. The option is checked on the options tab
in order to
AMENDED SHEET


CA 02335743 2000-12-19
display it. This causes the dialog to appear as shown in Figure
21
The data contained on these dialogs is that which is
specified to be supplied by the Copperhead Specification. The
only added feature is the ability to connect and disconnect the
modem manually from this dialog.
5. Help
All dialog windows have both context sensitive help - "?"
in upper right corner - and FI help or "Help" button controls.
Context sensitive help allows the user to left mouse click the
°?" and then click on the control that help is needed for to get
a popup help window. This help is generally very short and
concise. If more detailed help is needed the user can select the
F1 key on the keyboard or the "Help" button if present.
This embodiment also operates using firmware running on a
ARM7TDMI RISC processor, and using the HYDROGEN chipset from
ATML. The Hydrogen firmware, as described herein, also includes
download software, control information passing, and POST
initiation.
The present disclosure uses the ATMos operating system
provided by ATML. This operation system runs the functional
blocks shown in Fig. 55. Figure 56 shows the download process.
The Boot loader module 4900 is actuated whenever power is
applied to the HYDROGEN chipset, or the reset pin is asserted.
The
AMENDED SHEET


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
HYDROGEN chipset has minimum boot loader code embedded in the
internal boot ROM. Part of this embedded code is an ARM block that
has two boot ROM codes.
This embodiment selects ROM2 to boot from serial PROM 912 at
step 5000. A sub-vendor ID is included in the serial PROM that
sets the configuration register. The boot loader waits for a code
download complete bit set by the host into the mailbox register.
This 12 byte code is factory preprogrammed into the serial boot
ROM.
The PC power on selftest ("POST") code then performs
configuration at Step 4902 to allow access into the HYDROGEN chip.
During the PC operating system load, e.g. Win95 or NT, the NIC
driver downloads code at step 5002 to the 8-Kbyte internal SRAM of
the HYDROGEN starting at location 0x00004000. The code is
downloaded through the I/0 window assigned during PCI
configuration.
After the NIC driver finishes the code download, a bit in the
Mailbox register is set by an I/0 write at 4904 to a location
assigned during PCI configuration. The HYDROGEN then begins
execution starting at 0x000040000.
The downloaded codes are divided in a two-step process.
The first downloaded code or HYDROGEN POST code shown at 5004
includes:
~ HYDROGEN power-on self test
-181-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
~ HYDROGEN self-Initialization
~ HYDROGEN DRAM sizing and check
~ ASIC interface check
~ Other interface checks e.g. SACHEM & UTOPIA
The POST result is stored at a location for further
retrieval. The code then resets the download complete bit at the
mailbox register and waits for the bit set again by the host.
The second downloaded code 5006 includes at least the
following components:
~ ATMos Operating System
~ ATM code
~ Additional codes to the i960 processor DRAM allowing
full access into the i960 memory address while the i960
is still in reset. This enables DMA while the processor
is reset.
Since the HYDROGEN is a PCI device, it is configured by the
POST code during the PCI Device Scan. This assigns resources such
as memory, I/0, and interrupt. The POST BIOS dynamically
configures and assigns memory, I/0 and interrupt resources to the
HYDROGEN using Configuration Mechanism One that uses two 32-bit
I/0 ports located at addresses OCFBh (CONFIG - ADDRESS) and
OCFCh(CONFIG - DATA). The OCFBh and OCFCh registers are used to
access into the 64 byte header of the PCI Configuration Registers
in the HYDROGEN.
-182-


02335743 2000-12-19
After the configuration, the memory is configured as shown
in Figure 57.
a. The 64 byte header 5100 at offset 010h has the memory base
address of the 16K memory window used by the NIC window virtual
driver to access into the HYDROGEN memory space.
b. The 64 byte header 5102 at offset 014h has the I/O base
address of the 64 byte window used by the NIC driver to access
the HYDROGEN internal registers.
c. The 64 byte header at offset 050h has the PC interrupt
number(#Oh- #OFh) assigned to this device.
The HYDROGEN chip allows a fixed 16K memory space and 64
byte I/O space access. The values and offsets are defined in
the HYDROGEN Data Book.
The sequences of code download on power upon reset are as
follow. First, the HYDROGEN and 1960 are held in reset at 5200.
Then, the system downloads HYDROGEN POST binary at 5204 and
waits for POST result. At 5206, a timeout error is established
after 1-2 seconds. Step 5210 shows downloading the i960
processor Long or Normal POST binary via the mailbox. Step 5212
monitors for the POST result. The system waits up to X seconds
at 5214 for the POST result to be read back from the i960
mailbox. The POST result is 4 bytes = 32 bits long with the LSB
read first. This 32 bit POST result will allow up to 32
different codes if used as a bitmap, or 2~32 different codes if
used as a number. The POST code is written
'1$3
AMENDED SHEET

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
to an address in the numbers Registry name, at 5216 so that the
Service Monitor can read the POST code later.
The 1960 processor Main binary is downloaded via the mailbox
at 5218. Step 5220 downloads the HYDROGEN Main binary. A DMA code
is downloaded (5006) that allows access into the memory even
though the processor remains in reset. After these downloads are
complete, the HYDROGEN is released from reset at 5222, followed by
releasing i960 from reset at 5224.
Steps 5216 and 5218 require 4 new registry names to be
created by the install script. These include the i960 POST
filenames the i960 POST wait time (X seconds at 5214); the POST
result code; and the i960 Main filename.
The Long or Normal i960 POST is selectable by users [add] and
the registry names are updated accordingly. Currently, the wait
time for the normal POST is 2 seconds and for the Long POST is 2
minutes.
The return code has a one byte unique prefix (OxSA) follows
by a 32 bit mapped hex code as shown from first in time to last in
time on the report.
2p b3 I -b24 b23-b16 bl5-b8 b7-b0
OxSA MSB only Unused Sachem i960
1 byte 1 byte 1 byte 1 byte 1 byte
-184-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
In general, a bit value of 0 denotes test pass and a bit
value of 1 denotes test fail, except for bit 31.
The normal POST return Code is 0x00000000 meaning there is no
errors.
POST return code bit map detail:
b31: always 0 to denote this is a NORMAL POST result
b30-b 12: Not Used (value = '0').
b11: Sachem UTOPIA cell loopback configuration.
b10: Sachem Config registers 0x22 and 0x24 return 0 after reset.
to b09: Sachem general registers read and write test.
b08: Sachem version register return expected value.
b07: 1960 timer0 interrupt test.
b06: Unused
b05: 1960 DRAM l6bit read and write test.
b04: i960 DRAM 8bit read and write test.
b03: i960 DRAM 32bit read and write test.
b02: 1960 DRAM burst read test.
b01: 1960 DRAM burst write test.
b00: 1960 DRAM bit read and write test.
All other bits are unused and should be returned as 0.
Long POST return code: 0x80000000 (No error)
POST return code bitmap detail:
b31: always 1 to denote that this is a LONG POST result
b30: Not used (value = '0').
-185-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
b29: Not used (value = '0').
b28: Not used (value = '0').
b27: Not used (value = '0').
b26: Not used (value = '0').
b25: Not used (value = '0').
b24: Not used (value = '0').
b23: Not used (value = '0').
b22: Not used (value = '0').
b21: Not used (value = '0').
b20: Sachem Interrupt Test Success.
b19: Not used (value = '0').
b18: Not used (value = '0').
b17: Sachem internal RAM test success.
b16: Sachem internal RAM test completion.
b15: Not used (value = '0').
b14: Sachem all registers OxAA read and write test.
b13: Sachem all registers 0x55 read and write test.
b12: Sachem all registers reset value test.
b11: Not used (value = '0').
b10: Sachem single register OxAA read and write test.
b09: Sachem single register 0x55 read and write test.
b08: Sachem single register reset value test.
b07: i960 timer0 interrupt test.
b06: Not used (value = '0').
-186-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
b05: i960 DRAM 16-bit read and write test.
b04: i960 DRAM 8-bit read and write test.
b03: i960 DRAM 32-bit read and write test.
b02: 1960 DRAM burst read test.
b01: i960 DRAM burst write test.
b00: i960 DRAM bit read and write test.
The HYDROGEN and the NIC driver interface through the PCI
bus.
The accesses into the HYDROGEN internal memory
location(AD[b31 -b0]) including internal registers are through an
I/0-mapped window. All data transport is via the HYDROGEN DMA
channel. The 16K memory-mapped window is not used by the HYDROGEN.
The PC-NIC virtual driver initialization routine first
obtains the I/0 base address and interrupt number from port OCFBh
and OCFCh. Another way to retrieve this information is by using
software interrupt 1Ah with function code OBlh in the AH register
and the appropriate sub function code in the AL register. The PCI
BIOS documentation provides a complete description of each
function call.
The physical I/0 base address is then mapped into the window
virtual port address. Once the base address is obtained, the
PC-NIC driver uses the inpd() function to read/write to the
following three 32-bit registers: I/OARMAddress at offset 00,
I/OARMData at offset 04, and I/0 MailBox at offset 08.
-187-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The combination of the I/0 base addresses at offset 00 and 04
allows the PC-NIC driver access into the HYDROGEN space. The
interrupt number allows the PC-NIC driver to chain its interrupt
service routine into the appropriate PC interrupt vector table.
The interrupt routine then services the interrupt generated by the
INTA pin from the HYDROGEN chip.
The I/0 base address at offset 08 is used for interrupt
handling. The HYDROGEN Data book provides more information.
The transmit and receive DMA transport/communication data are
l0 handled through the DMA engine in the HYDROGEN's LIST Manager
hardware.
I/0 Access is handled via the PCIbus,into the HYDROGEN.
For clarity, an example of a 64 byte header at offset 014h =
OBOAOOOOOh is used. This I/0 access is used for all
command/response communication between the PC application to the
PCIbus, and to the HYDROGEN. This may be directed to the ARM,
1960, or SACHEM. The I/0 access is also used initially to
download HYDROGEN codes into the internal RAM(8K) and the external
RAM ( 1M) .
I/0 base address + offset 00 store the full 32 bit of
HYDROGEN address.
The I/0 base address + offset 04 store the data R/W from/to
the HYDROGEN address.
Sample code : mov dx, #OBOAOOOOOh ;load I/O base address w/off00
-1B8-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
out dx, #10000200h ;write LMSR addr to I/O addr
mov dx, #OBOA00004h ;load I/O base address wloff04
in eax, dx ;read the content of LMSR
mov eax, #OOOOAA55h ;or
out dx, eax ;write dword to the LMSR reg
An interrupt from the PC-NIC driver to HYDROGEN is used
primarily for commands/responses to/from communication. There are
four PCI MailBox registers (b5-b2) at the I/O base address with
offset 08h. The PC-NIC driver sends data from the PC to this
mailbox at 5300. These mailboxes can be read from/written to by
the PC-NIC driver to interrupt the HYDROGEN chipset at 5302.
Currently, one of the PCI MailBox interrupts is used by the PC-NIC
driver to generate a PCILO interrupt to the HYDROGEN.
I/0 base address + offset OSh in b5-b2 is used to access the
PCI MailBox register. The MailBox register interrupt is to signals
the HYDROGEN to start executing the downloaded code at 5304.
mov dx,#OBOA00008h
in eax, dx ; read the PCI mailbox register
or eax, #80h ; set maibox 0 bit
out eax, dx ; write to PCI mailbox register
Communication data transport and access into the PCI space
can also be via the HYDROGEN DMA engine as shown in Figure 54. In
addition, The ARM MailBox register at location 0x10000808 is used
to generate/clear interrupts to/from the PCI.
-189-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The data transport DMA operation is handled by the hardware
List Manager in the HYDROGEN chip once set up. This requires
little or no intervention from the ARM processor.
The command/response to/from the PCI is handled by the ARM
processor by setting the appropriate List Manager registers for:
to address, from address, size of data, and the enable DMA bit at
5400.
An interrupt from the HYDROGEN to the PC-NIC driver is
used primary for commands/responses to communication. The
to ArmMailBox register is set at address 010000808h, as seen from the
HYDROGEN. There are four mailboxes at this location that can be
read from or written to the HYDROGEN to interrupt the NIC driver.
The interrupt is generated by INTA pin. Currently, one of the ARM
Mailbox interrupts is used by the HYDROGEN to generate an
interrupt to the NIC driver.
After the DMA operation at 5402, the ARM processor normally
sends an interrupt to the PC at 5404 by setting the appropriate
bit on the ARMMailBox register. In the same manner, when the ARM
processor receives the PCI LO interrupt from the PC, the PCI data
is read into the ARM data by using DMA, then clearing the
interrupt bits in the ARMMailBox. The 'to' and 'from' addresses
(slots) of both the ARM& PCI are set during the driver and
HYDROGEN firmware initialization routine.
-190-


02335743 2000-12-19
Software API
An Application Program Interface (API) between the HYDROGEN
and the PC application allows the HYDROGEN to communicate with
the PC. The ATMSOCK socket services are used to communicate
with the PC-NIC driver. The PC-NIC driver code then passes the
request to the HYDROGEN through the PCI bus, using DMA and the
mailbox interrupt. Most of the communication to/from the
HYDROGEN has been implemented by ATML using ATMSOCK. Any
additional communication (specific to ADSL or other) to/from
HYDROGEN/ASIC/i960 is implemented with new socket services or
modified existing socket services.
The API includes a Modem Control Interface, and a Hydrogen
Control Interface. The Current Implementation uses ATMSOCK
Figure 60 illustrates the command/response flow from the
very top level software to the HYDROGEN.
From the very top level, the PC application opens an
ATMSOCK socket service at 5400. The request is passed into the
HYDROGEN code via the PC-NIC driver at 5402. The HYDROGEN
responds by opening a corresponding ATM socket service
process(AIF SOCKS) at 5404. Here, the PC is the socket client
and the HYDROGEN is the socket server. The socket client then
requests a sub-service to be connected at 5406 using the socket
opened. Current supported subservices include SNMP, used by
Vstatus, and VCONS, used by Vcons.
AMENDED SHEET


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Once the service is established and active, the PC
application makes calls into the HYDROGEN code at 5408. At the
PC-NIC driver level, all the socket-called-data-format are written
into a specific pre-allocated PC memory and followed by a PCI
mailbox interrupt into the HYDROGEN. The HYDROGEN PCILO ISR then
posts a wakeup message to the PC-DDI process in the HYDROGEN. The
PC-DDI process then reads the call's data format from PC space
into HYDROGEN space by using DMA. The HYDROGEN processes the
call's format and makes the appropriate sub-service calls.
to Modem Control Interface API uses a new sub-service call
CTRL-ADSL. An existing socket(AIF-SOCKS) is used. CTRL-ADSL uses
the following definitions and mnemonics:
#define AF HAYES ADSL (1375)
The VCONS source code is a base code for implementation.
The PC application sends a command to the HYDROGEN at 5408
with the function call send (socket number, command string, length
in bytes, 0). Analogously, the PC application receives the
response at 5410 with the function call recv (socket number,
return buffer, length in bytes, 0).
The complete HOST Commands as described in the management
specification herein are passed to the HYDROGEN as part of the
command string. The format for the command passing parameters are
as follows:
Destinatio Source Command Length of N data
-192-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
n address address opcode data. N bytes
bytes
1 byte 1 byte 1 byte 1 byte N bytes
Destination address: An unsigned character 0-255 for this
request intended to. For the management application in the i960,
the value for this byte is Ox 10.
Source address: An unsigned character 0-255 showing the
originator of this command. For the PC application in the Host,
like Service Monitor, the value for this byte is 0x01.
Command opcode: An unsigned character 0-255 command opcode.
Length of data. (N bytes): An unsigned character 0-255
indicating if additional data bytes are present. N data bytes: If
the previous byte is non zero, there will be N more data bytes.
The PC-DDI process in the HYDROGEN runs an endless loop to
constantly check for any call back or response socket services in
the queue to be sent back to the PC. The queue is being added by
other active socket service processes that are running. The PC-DDI
process passes the socket response data format into the PC space
DMA followed by an ARM mail box interrupt into the PC. The PC-NIC
driver then reads the data and passes the data up the
corresponding PC application that owns the socket services.
-193-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The return buffer format is very similar to the command
string except that the source and destination addresses are
swapped.
The "length of data bytes follow" field is usually greater
than 1 to hold the response data, which can be 1-255 bytes.
Hydrogen Control Interface (0x20) - Commands
Table 1 lists the Host commands that the Host may issue to the
Hydrogen.
-194-


CA 02335743 2000-12-19
WO 99!66782 PCT/US99/14236
Table 1. Host Commands
Co~mmaad Opcode Date Field Data Field
Zeagtb Conteata


Open PVC connection 0x01 Variable ASCII
textstring


Close PVC connection 0x02 4 Binary vpivci


(bet PVC performance data 0x03 4 Binary vpivci


OAMF4 enable(1)/disable(0) 0x04 1 BOOL 1 or 0


OAMFS enablell)/disable(0) 0x05 1 BOOL 1 or 0


Get Global statistic 0x06 0 -
counters


bet Hydrogen Version 0x07 0 -


Get Hydrogen Vendor 0x08 0


Get MAC Address Ox09 0 -


Add NATM Connection OxOA Variable ASCII
textstring


Remove NATM Connection OxOB 4 Binary vpivci


Ieport ADSL Line Sync OxOC 1 ~ BOOL 1 or 0


Open PVC Connection
The Data fields content have the following ASCII format:
Classical IP example:
"proto:pipa/ip:192.120.60.35/vpi:32/vci:110/pcr:3622/class:cbr"
20 RFC1483 example:
"vpi:255/vci:65535/pcr:500/class:ubr/encap:llcs"
-195-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The above strings terminate with a NULL character. The
ordering of each key field is important.
The ranges of the above key values are as follows:
0<= vpi/vpi <= 255
0 < vci/vci <= 65535
xxx < pcr < 3622
aaa < scr < 3622
class: cbr, vbr, abr, ubr, ub+
encap: llcs, vcmx, null
to Data Field length = strlen(above string)
Close PVC Connection
The Data field contents has one 32-bit binary value of the
vpi-vci that needs to be closed.
32-bit vpi-vci
b31 b15 b0
00 vpi Vci vci
Get PVC performance data
The Data field contents will have one 32-bit binary value of
the vpi-vci.
32-bit vpi-vci
b31 b15 b0
00 vpi Vci vci
OAMF4 Enable/Disable, OAMF5 Enable/Disable
-196-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The Data field contents have one byte data value of either 1
(enable) or 0(disable).
Get Global Statistic Counters, Get Hydrogen Version, Get Hydrogen
Vender, Get MAC Address
No parameters required.
Add NATM Connection
The Data fields content have the following ASCII format:
"vpi:255/vci:65535/pcr:500/class:ubr"
The above strings terminate with a NULL character. The ordering of
each key field is IMPORTANT.
The ranges of the above key values are as follows:
0<= vpi/vpi <= 255
0 < vci/vci <= 65535
xxx < pcr < 3622
class: cbr, vbr
Data Field length = strlen(above string)
The above commands cause the HYDROGEN to add the connection
parameters to the NATM table. No physical connection is
established. The table list will be used to qualify if a
subsequent open NATM connection is allowed.
Del NATM Connection
The Data field contents have one 32-bit binary value of the
vpi-vci that needs to be removed.
32-bit vpi-vci
-197-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
b31 b15 b0
00 Vpi Vci vci
The above command removes the corresponding entry from the
NATM table. No physical connection is closed.
Report ADSL Dine Sync
The Data field contents have one byte data value of either 1
or 0.
1 is ADSL Line Synchronization has been established.
0 is ADSL Line Syncronization has not been established or failed
Hydrogen Control Interface (0x20) - Responds
Table 2 lists the response from Hydrogen to the Host commands
in Table 1.
Table 2. Host Response
Response Cpcode Data Field Data Fiald
Length Contents


m~5en PVC connection 0x01 1 See return code


Close PVC connection 0x02 1 See return code


Get PVC performance data 0x03 32 or 1 Binary


OAMF9 enable(1)/disable(0) 0x04 1 See return code


OAMFS enable(1)/disable(0) 0x05 1 See return code


bet Global statistic counters0x06 16 Binary


Get Hydrogen Version 0x07 Variable ASCII text


Get Hydrogen Vendor 0x08 Variable ASCII text


Get MAC Address 0x09 6 binary


Add NATM Connection OxOA 1 See return code


-198-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Remove NATM Connection OxOB 1 See return code


Report ADSL Line Sync Ack _OxOC 1 Binary 0


Unsolicited Messages I OxFE ~1 ~ Binary


Open PVC Connection
Return codes:
0 Success.
Connection already opened and is currently active.
Cannot open connection, exceed maximum
connections.
3 (3 & above) Error opening connection.
Close PVC Connection
Return codes:
0 Success.
No such active connection, cannot close.
2 Connection already closed
Get PVC performance data
If this fails, the Data field length will be 1 and the Data
field contents will have 1 byte return
code:
1 No such active connection, data not available
2 Current connection is not active, data not available
-199

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Otherwise, the Data field length will be 32 and The Data field
contents will have 6 32-bit words as follows:
First in time:
VPIVCI (32-bit)
Total number of good data bytes transmitted for this PVC (32
bit)
Total number of good data bytes received for this PVC (32
bit)
Total number of bad data bytes received for this PVC (32bit)
l0 Total number of received cells count discarded for this PVC
(32bit)
Total number of received packets good for this PVC (32 bit)
Total number of received packets bad for this PVC (32bit)
Time stamp of this command being polled, in seconds (32 bit)
~ Good data bytes transmitted is the number of data bytes from
the PC sent to the HYDROGEN hardware transmit queue.
~ Good data bytes received is the number of data bytes send to
the PC. This normally means the CRC of the data packet is OK.
~ Bad data bytes received is the number of data bytes received
from the network and probably due to payload CRC error,
LLC/SNAP header not recognized, and others.
~ Received cells counts discarded is detected at the very front
end of the HYDROGEN hardware receive queue. The discard is
-200-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
probably due to: PTI field > 4 in the cell header or no more
free buffers (data coming in too fast). 1 cell=53 bytes
~ Received packets good due to payload CRC OK.
~ Received packets bad due to payload CRC error, unrecognized
llc/snap, or others.
**Note 1: The data bytes counters do not include ATM cell header,
trailer, or padding.
**Note 2: I packet can be 60 bytes to 1.5K bytes of data.
OAMF4 Enable/Disable, OAMFS Enable/Disable
l0 This will always return 0.
Get Global Statistic Counters
The Data field length will be 16 and The Data field contents
will have 9 32-bit values as follows:
First in time:
Total number of transmitted cells (32 bit)
Total number of received cells good (32 bit)
Total number of received cells discarded (32bit)
Time stamp of this command being polled, in seconds (32 bit)
Note: A cell is equals to 53 bytes of data.
Received cells discarded due to: Cell header checksum bad and VCI
0 cells
-201-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
Get Hydrogen Version, Get Hydrogen Vender
The Data field contents is a NULL terminated ASCII text
string with a length of less than 255.
The Data field length is the strlen( above text string)
Get MAC Address
The Data field length is 6 and The Data field contents will
have 6 bytes of MAC address.
Add NATM PVC Connection
Return codes:
l0 0 Success
No more free entry in the table.
Remove NATM PVC Connection
Return codes:
0 Success
1 No such connection entry in the table, cannot
remove
Report ADSL Line Sync Ack
The Data field contents has one byte data value of 0. It
always return 0
Unsolicited Messages
The Hydrogen sends the following unsolicited 1 byte hex code
to the Service Monitor if the following 1960 errors have been
detected by the HYDROGEN.
Return codes:
-202-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
1 1960 mailbox not in sync yet. This unsolicited message
will be sent to the Service Monitor in the event the
HYDROGEN receives a command string destination to i960
and the i960 mailbox sync is not completed.
2 i960 command buffer overflow. This unsolicited message
will be sent to the Service Monitor in the event the 32
bytes i960 command buffer is full, the most recent i960
command string will be discarded. Also indicating the
1960 is not reading the mailbox, thus the HYDROGEN
cannot send another command byte.
3 1960 response buffer exceed maximum, mailbox will be
out of sync. This unsolicited message will be sent to
the Service Monitor if the i960 send a response buffer
greater than the maximum allocated. The mailbox will be
out of sync.
HYDROGEN/ASIC Interface
The ASIC registers become an external memory map I/0 device
to the HYDROGEN.
The HYDROGEN external I/O addresses access reside on the
memory block from 020000000h to 03 FFFFFFFh. Only the A23 -A16
lines(or less) will be decoded by the ASIC to activate the mailbox
register locations.
-203-

CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
The register definition in the HWSPEC portion provide further
detail. The HYDROGEN uses these registers for command/response
communication to the 1960.
The disclosed implementation of the communication includes
modifying the current AIF-SOCKS process in the HYDROGEN to handle
send/receive data to/from 1960.
OBC (i960) Firmware
Operating System for the Modem Processor
pSOS will be used initially as the pSOS operating system code
l0 image generated and downloaded to the i960 DRAM.
Power-on Self Test and Self-Initialization
At power up, the 1960 is held in reset by the ASIC. After the
ASIC and the HYDROGEN are initialized, the ASIC allows the
HYDROGEN to gain control over the i960 bus. The HYDROGEN downloads
the i960 binaries into the 1960 DRAM. The ASIC then return the bus
control to the i960 and releases i960 out of reset. The downloaded
1960 binaries may contain the following components:
~ i960 power-on self test(POST) .
~ pSOS operating system image which contains the real
time kernel, Board Support Package(hardware specific
code), X-API, and File system
~ Modem software
~ Management Application code
-204-


CA 02335743 2000-12-19
WO 99/66782 PCT/US99/14236
When the 1960 is first released out of reset, The POST code
is run first and the POST result is passed back to the PC through
the mailbox. When the POST result is read, the i960 is put back
into reset and the second download of the i960 main binary is
performed. When the 1960 is released out of reset, the pSOS is
run, followed by modem software and management application.
OBC/SACHEM Interface -
The SACHEM becomes a memory map I/0 device to the 1960
processor. The address above the DRAM( >100000h) is mapped into
l0 the SACHEM memory space. The A20-A16 lines are decoded by the ASIC
to assert the CSB signal to the SACHEM.
Host Interface Firrnnware
The ASIC implements a mailbox function for exchanging
information between the 1960 and the HYDROGEN. The Mailbox has
transmit buffer registers(size TBD), receive Buffer registers(size
TBD), Status registers. These registers become another memory map
I/0 device to the i960 processor. The A20-A16 lines are decoded by
the ASIC to activate these registers.
The management application uses the mailboxes to send and
receive commands/responses to/from the HYDROGEN. The 1960 can
receive the message by polling or interrupt.
Interrupt -
A write to the transmit Buffer by the HYDROGEN causes the
ASIC to generate an interrupt to the 1960 (INT 1 pin). The i960
-205-


CA 02335743 2000-12-19
WO 99/66?82 PCT/US99/14236
INT 1 routine reads the messages into the local buffer, clears the
corresponding bit in the Status register, and sets a flag to
inform the background routine to process the message.
Polling -
The Status register can be checked regularly by the OBC for
message full.
Although only a few embodiments have been described in detail
above, other embodiments are contemplated by the inventor and are
intended to be encompassed within the following claims. In
1o addition, other modifications are contemplated and are also
intended to be covered. For example, the present specification
refers to the controller being a processor, and the PCI interface
being a hydrogen chip set, other devices could alternatively be
used.
-206-

Representative Drawing

Sorry, the representative drawing for patent document number 2335743 was not found.

Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date Unavailable
(86) PCT Filing Date 1999-06-23
(87) PCT Publication Date 1999-12-29
(85) National Entry 2000-12-19
Dead Application 2005-06-23

Abandonment History

Abandonment Date Reason Reinstatement Date
2004-06-23 FAILURE TO REQUEST EXAMINATION
2005-06-23 FAILURE TO PAY APPLICATION MAINTENANCE FEE

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Application Fee $300.00 2000-12-19
Registration of a document - section 124 $100.00 2001-04-20
Maintenance Fee - Application - New Act 2 2001-06-26 $100.00 2001-06-07
Maintenance Fee - Application - New Act 3 2002-06-24 $100.00 2002-06-03
Maintenance Fee - Application - New Act 4 2003-06-23 $100.00 2003-06-04
Maintenance Fee - Application - New Act 5 2004-06-23 $200.00 2004-06-02
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
RICOS INTERNATIONAL, INC.
Past Owners on Record
LEE, KENNY YING THEENG
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Claims 2000-12-19 19 743
Drawings 2000-12-19 37 992
Description 2000-12-19 206 6,106
Abstract 2000-12-19 1 47
Cover Page 2001-04-03 1 35
Correspondence 2001-03-15 1 24
Assignment 2000-12-19 4 173
PCT 2000-12-19 136 3,506
PCT 2001-01-11 1 54
Correspondence 2001-04-19 2 118
Assignment 2001-04-20 2 77