Message routing through data communication networks4645874Abstract A mechanized system distributing the access, test and communication functions to the point of testing, typically the centralized switching facility serving the telephone loops and equipment to be tested. Computer (200) stores information about each subscriber loop in the geographical area served by a system. Front-end computers (220,221) interact with computer (200) to retrieve pertinent data regarding loops to be tested. Each switching facility in an area includes a loop testing system (e.g., 160) that implements the required functions. The communication functions residing in front-end computers (220,221) and loop testing systems (160,161) are coupled via a data communication network (140) in a manner that allows any front-end computer to communicate with any loop testing system. Users of the system control access and test from consoles having the capability of establishing independent communication paths over the national dial network for interactive tests on loops accessed through standard test trunks. Microprocessor-based circuitry is utilized for numerous system tasks such as signal generation, digital signal processing and controlling sensitive analog measurements. Signal generation includes digital generation of analog waveforms. Signal processing techniques incorporate various digital filters to analyze sample sequences derived from, for example, dial pulses and coin telephone signals. Sensitive analog measurements of loop characteristics are effected with a magnetic current detector that operates over broad current and frequency ranges. Frequency dependent measurements are converted to DC using synchronous demodulation techniques to enhance resolution. Claims What is claimed is: Description REFERENCE TO A MICROFICHE APPENDIX
TABLE I
______________________________________
Array 141
Bus Connects to busses
______________________________________
14101 14104, 14107, 14110
14102 14105, 14108, 14111
14103 14106, 14109, 14112
______________________________________
The processing circuits 14001, . . . , 14096 of tier 3 are arranged to have an equal association with all devices 1401, . . . , 1412 of tier 1. From one to eight tier 3 circuits are allowed per tier 2 interface; the arrangement of FIG. 3 shows the maximum limit. Consequently, the number of tier 3 circuits that appear is ninety-six, and these circuits are labeled `1` through `96` in the pictorial representations of circuits 14001 through 14096. Corresponding to the actual designations (A.sub.3) `1` through `96` are logical designations (L.sub.3) `0` through `7` which may be derived from the relationship L.sub.3 =mod (A.sub.3 -1, 8). Also, each of the ninety-six tier 3 circuits 14001 through 14096 controls eight contiguous links comprising outgoing data links 93001 through 93768 coupled to LTS's having actual designations `1` through `768` in FIG. 3. Each LTS with an actual designation (A.sub.4) of `1` through `768` has a logical designation (L.sub.4) determined by L.sub.4 =mod (A.sub.4 -1, 8). FIG. 4 shows that circuits 14001 through 14096 are divided into twelve sets with each set containing eight circuits, and each circuit has four input busses and up to eight output data links. For instance, circuit 14001 is served by input busses 145001 through 145004 originating from matrix 145 and provides output links 93001 through 93008. All input busses 145001 through 145384 associated with circuits 14001 through 14096 implement a parallel protocol, typically the GPIB, whereas output links 93001 through 93768 are serial transmission links. The protocol on the serial links will be discussed later. The function of matrix 145 is to interconnect busses 14501 through 14548 arriving at its input to busses 145001 through 145384 exiting its output. The data bus means depicted as matrix 145 in FIG. 4 accomplishes this function. Matrix 145 comprises forty-eight similar but independent busses 145501 through 145548 implementing the GPIB protocol. On the input side of matrix 145: incoming bus 14501 connects to internal bus 145501; incoming bus 14502 connects to internal bus 145505; incoming bus 14512 connects to internal bus 145545; incoming bus 145513 connects to internal bus 145502; and so forth. On the output side of matrix 145: internal bus 145501 connects to outgoing busses 145004, 145008, . . . , 145032; internal bus 145502 connects to outgoing busses 145003, 145007, . . . , 145031; internal bus 145503 connects to outgoing busses 145002, 145006, . . . , 145030; internal bus 145505 connects to outgoing busses 145036, 145040, . . . , 145064; and so forth. The interconnection arrangement of matrix 145 may be summarized with the aid of a shorthand notation, as follows: if interfaces 1421 through 1468 are represented by the notation i(1), i(2), . . . , i(48), respectively, and the twelve sets comprising circuits 14001 through 14096 by m, m=1, 2, . . . , 12, with m=1 corresponding to circuits 14001 through 14008, and so forth, then matrix 145 maps tier 2 interfaces and tier 3 circuits according to the relation i(m+12(n-1)), n=1,2,3 and 4. For example, with m=1, then interface devices i(1), i(13), i(25) and i(37), corresponding to actual devices 1421, 1433, 1445 and 1457, serve the set containing circuits 14001 through 14008. 2.1b Message Routing With reference to FIG. 2, data links 920,921 arriving at the input to DCN 140 and outgoing data links 930,931 departing DCN 140 utilize a serial mode of transmission and a protocol that is bit oriented. Information is transmitted over these links in communication elements called frames. The bit pattern of a typical frame is shown in FIG. 5; this pattern is representative of conventional high level data link control type protocols. One example of a conventional link level (oftentimes designated Level II) protocol is the well-known synchronous data link control (SDLC) protocol. With these protocols, the components of a frame include: (1) an eight bit OPENING FLAG field to indicate the start of a frame; (2) an eight bit ADDRESS field identifying the receiving station that is controlled by the transmitting station; (3) an eight bit CONTROL field used by the transmitting station to control the receiving station and by the latter station to respond to the former station; (4) a variable length INFORMATION field containing the message that is to be transmitted without constraints on length or bit patterns; (5) a sixteen bit FRAME CHECK field to detect transmission errors; and (6) an eight bit CLOSING FLAG field to indicate the end of a frame. Of primary importance in the transmittal of messages within the MLT system is the data contained in the INFORMATION field. In general, MLT messages have the format shown in FIG. 6. The message comprises a HEADER portion and a DATA portion. The HEADER includes a number of bytes to indicate: whether the message is a request or response (`request.sub.-- response`); routing procedure (`up.sub.-- route` and `down.sub.-- route`); the processor which is the source (`up.sub.-- circuit.sub.-- type`) and destination (`down.sub.-- circuit.sub.-- type`); the software task at the source (`up.sub.-- task.sub.-- id`) and the destination (`down.sub.-- task.sub.-- id`); and other bytes to be discussed later. The DATA portion contains a variable number of bytes primarily indicating the type of tests desired and the raw data measured as a result of these tests. These DATA bytes will be discussed in detail later. Particularly pertinent to message routing in DCN 140 are the `down.sub.-- route` and `up.sub.-- route` bytes. Whenever a message is sent from a FE computer 220 or 221 to a LTS 160 or 161, the `down.sub.-- route` parameter, comprising two bytes, must be parsed in order to guide the message through the three tiers of DCN 140. As an example, it is supposed that a FE computer 220 or 221 is to interact with an LTS that has an actual designation of `121` in FIG. 3. The actual decimal designation is decremented by one to yield a decimal value of 120 and this is represented in `down.sub.-- route` by the following bit pattern:
______________________________________
bit 15 14 13 12 11 10 9 8
position
value 0 0 0 0 0 0 0 0
bit 7 6 5 4 3 2 1 0
position
value 0 1 1 1 1 0 0 0.
______________________________________
In general, bit positions 0, 1 and 2 are used by tier 3 circuits 14001 through 14096 to decide which one of its eight associated outgoing data links 93001 through 93768 will be used to transmit the INFORMATION field to the appropriate LTS (`121` in this example). Bit positions 3, 4 and 5 are used by tier 2 interfaces 1421 through 1468 to decide which one of its eight associated tier 3 circuits 14001 through 14096 will receive the INFORMATION field. Finally, bit positions 6, 7, 8 and 9 are used by tier 1 devices to decide which one of its twelve corresponding tier 2 interfaces 1421 through 1468 will receive the INFORMATION field. In this example, parsing of the `down.sub.-- route` two-byte parameter in conjunction with reference to FIGS. 3 and 4 indicates that: (i) tier 1 device 1401, 1402, . . . or 1412 (say 1403) receiving the frame passes the INFORMATION field to the tier 2 interface having logical address (L.sub.2) of `1` (binary 0001 is equivalent to decimal 1); (ii) tier 2 interface 1422, corresponding to logical address `1`, receives the INFORMATION field and passes it to the tier 3 circuit having logical address (L.sub.3) of `7` (binary 111 is decimal 7); and (iii) tier 3 circuit 14016, corresponding to logical address `7`, passes the INFORMATION field, after reassembly into a data link protocol, to the LTS having logical address (L.sub.4) of `0` (000 in binary is decimal 0). As indicated in FIG. 3, the LTS having logical address `0` at the output of actual tier 3 circuit 14016 is the LTS labeled `121`, as requested. Whenever any tier 1 device 1401 through 1412 receives a frame on its data link connection to FE computer 220 or 221, this is an indication that the INFORMATION field contained in the frame is to be propagated in the so-called DOWN direction through the MLT architecture of FIG. 2. The parameter in the HEADER portion of the INFORMATION field indicating the ultimate destination is `down.sub.-- circuit.sub.-- type`, which will be discussed later. The specific path through DCN 140 to this destination is found in `down.sub.-- route`, as exemplified above. A similar protocol is observed for messages traveling in the so-called UP direction of the hierarchy. In UP transmissions, the pertinent HEADER parameters are `up.sub.-- circuit.sub.-- type` and `up.sub.-- route`. As a message is passed DOWN the hierarchy by DCN 140, appropriate return information is saved in `up.sub.-- circuit.sub.-- type` and assembled in `up.sub.-- route` to allow for an orderly progression UP the hierarchy. The bit positions of `up.sub.-- route` are interpreted as follows: (1) bits 4 and 5 are employed by tier 1 devices to indicate the return path on one of two data links associated with each device 1401 through 1412; (2) bits 2 and 3 are used by tier 2 interfaces 1421 through 1468 to return on one of three busses connecting each tier 2 interface to its associated connecting array 141, . . . or 144; (3) bits 1 and 0 are utilized by tier 3 circuits 14001 through 14096 to return on one of four busses connecting each tier 3 circuit to connection matrix 145. In the example given above for routing in the DOWN direction, it is supposed, as above, that tier 1 device 1403 received the frame under consideration on link 9206, as shown in FIG. 3. This link has logical designation `1`; in fact, the left-hand, incoming data link associated with each tier 1 device is the `1` link whereas the other link is designated `0`, by convention. Before routing the INFORMATION field to tier 2 interfaces, the logical designation is converted to binary and bits 5 and 4 are filled with the binary representation--in this case 01. Tier 2 interface 1422 received the message on bus 14109 from array 141 (FIG. 4); this bus is designated by a logical `0`; in fact, the three busses entering a tier 2 interface from an array 141 through 144 are labeled `0`, `1` and `2` starting with the right-most bus. Then, before sending the message to tier 3 circuit 14016, bits 3 and 2 are given the values 0 and 0, respectively (`0` in decimal converts to 00 in two-bit binary). Finally, since tier 3 circuit 14016 receives the message on its logical `3` bus from matrix 145 (again, the right-most bus is logical `0` and the left-most bus in logical `3`), bit positions 1 and 0 are filled with 1 and 1, respectively (`3` in decimal converts to 11 in binary). To summarize for this example, the LTS having actual address A.sub.4 =121 receives a frame with the `up.sub.13 route` parameter of HEADER filled as follows:
______________________________________
bit 7 6 5 4 3 2 1 0
position
value -- -- 0 1 0 0 1 1.
______________________________________
(Bit positions 6 and 7 generally have values but are not pertinent to the immediate discussion and, therefore, have been shown without values). As indicated in FIG. 3, each tier 1 device 1401, . . . , or 1412, receives two data links at its input. Since the typical MLT system is implemented with twelve on-line FE computers, each FE computer 220 or 221 supports two data links at its output. To provide a degree of redundancy for fail-soft operation, FE computers 220,221 and tier 1 devices 1401-1412 are interconnected so that there are two possible paths between each FE computer 220 or 221 and DCN 140. For example, FE computer 220 supports the two data links 9201 and 9219 that terminate on tier 1 devices 1401 and 1410, respectively. Similarly, FE computer 221 implements two data links which terminate on devices 1412 and 1409. With such a Fe-to-DCN connection arrangement, if one of the FE-to-LTS paths comprising the input data links 9201-9224 and DCN 140 fails during a transaction, it is possible to re-route the results from the given LTS to the appropriate FE computer over the alternate path. The folowing procedure implements the the alternate routing technique. Each FE computer 220,221 is initialized with a unique identifier. This identifier is stored as part of the `logical.sub.-- id` byte of the message HEADER, as dipicted in FIG. 6, for all messages originated by the associated FE computer. The `logical.sub.-- id` is not related to the actual physical connection to DCN 140. Thus, if a FE computer fails and is replaced by a backup computer, the backup inherits the identifier of the FE computer being replaced. As a message travels DOWN the hierarchy, information about the return path is stored in `up.sub.-- route`, as described above. When the message reaches the designated one of the tier 3 circuits 14001-14096, the completed `up.sub.-- route` byte and associated `logical.sub.-- id` byte may be extracted. Each tier 3 circuit maintains a table containing the two most recently used upward paths for each `logical.sub.-- id`. Since the instruction routines controlling FE computers 220,221 generally distribute information transmissions equally through DCN 140, the table for a given FE computer, at any one time, will contain `up.sub.-- route` information on the two most recent paths needed to reach the particular FE computer in UP transmissions. If an upward message connot reach the destination FE computer via its `up.sub.-- route` information because of a primary path blockage, the message is marked as failed and sent back to the originating Tier 3 circuit. The table entry for the same `logical.sub.-- id` is accessed and the `up.sub.-- route` information is replaced with the alternate or secondary `up.sub.-- route` path. If any subsequent failures occur, the message is then discarded. In some situations, it is possible that the two most recent entries in the table do not correspond to the `up.sub.-- route` byte in the UP message. This occurs in situations where long-term craft activities are in progress, such as pair identification with an identifier tone provided by the MLT system. If a message fails to traverse the UP path on its first attempt, then either path in the table may be used as an alternate route. 2.1c Software Design Each microprocessor executing within DCN 140 runs under supervision of its own ROM-based operating system. However, each separate operating system is identical, so only this one operating system, designated OS, requires explanation. The OS provides a multitasking environment so that the operations performed by individual modules comprising the three-tiers of DCN 140 can be partitioned into a series of suboperations called "tasks". Each task is dedicated to handling a specialized activity. The OS is arranged to insure that the appropriate task gains control of its associated microprocessor and commences execution of its programmed sequence when a particular activity is requested. For example, one task resident in DCN 140 is designed to handle GPIB activity; this task executes whenever a bus transfer is required over any one of the numerous GPIB-type busses embedded within DCN 140. Whenever a bus transfer is completed and no other transfers are required, the bus transfer task relinquishes control of its microprocessor, and other scheduled tasks are now free to execute and satisfy requests for other activities. If no activities are scheduled, the OS is in its wait state, testing for a flag; a flag is set whenever a particular activity, and its associated task, await execution. The microcomputer architecture, in pictorial form, for each tier of DCN 140 is shown in FIGS. 7, 8 and 9 for tier 1, tier 2 and tier 3, respectively. There are, at most, six types of tasks implemented by any particular microcomputer within the hierarchy of DCN 140. Five of these tasks are shown in FIG. 7, which depicts the architectural arrangement for tier 1 device 1401 (the remaining tier 1 devices 1402 through 1412 have essentially the same architectural arrangement as device 1401 and, therefore, device 1401 is taken as representative). The task designated SERIAL DATA within elements 11405 and 11406 of FIG. 7 controls the activity associated with information transfer over serial data links 9201 and 9202, respectively. This task (i) parses incoming frames (FIG. 5) received over a data link 9201 or 9202, extracts the contents of the INFORMATION field, and stores the contents in a buffer memory within the controlling microprocessor that is accessible to other tasks; and (ii) performs the inverse to parsing on outgoing frames, that is, constructs a frame for transmission by extracting the contents of buffer memory to form the INFORMATION field of the frame and augments this field with the other fields (FIG. 5) needed for the serial protocol on links 9201 and 9202. The task labeled PARALLEL OUTPUT within element 11407 controls the transfer of information over parallel-oriented bus 14101 and, when required, serves as the bus master. Information requiring transfer is extracted from or stored in buffer memory accessible by other tasks. The ADMINISTRATION task, represented by element 11409, performs all non-operational functions required in the local environment. For instance, ADMINISTRATION controls sanity and diagnostic testing and the reporting of trouble. With reference to FIG. 6, ADMINISTRATION utilizes `up.sub.-- circuit.sub.-- type`, `down.sub.-- circuit.sub.-- type`, `up.sub.-- task.sub.-- id` and `down.sub.-- task.sub.-- id` for communicating with other MLT microcomputers to synchronize testing among the various modules. The DUMP MEM task, represented by element 11411, waits a certain period after a reset or restart operation and determines if a snapshot of tier 1 memory is to be sent to a FE computer 220 or 221. The BROADCAST task, depicted by element 11412, replicates a message for transmission in parallel to tasks having a plurality of appearances within a particular tier or, in this case of tier 1, to SERIAL DATA tasks 11405 and 11406. Replication reduces throughput time by allowing several slow serial transfers to proceed in parallel. Tasks are defined so that the programs executing in the microcomputers of DCN 140 are relatively independent of the hardware they control. To accomplish this, generally each hardware component having input or output (I/O) capability has both a hardware driver and a software buffer that accompany the sole task controlling that I/O capability. Upon system initialization, a unique memory block is defined for each I/O hardware component; this block is known only to the hardware driver and software buffer associated with each I/O request. To service an I/O request, the buffer routine fills the appropriate memory block with control parameters and signals the driver to start I/O processing. The I/O operation is completed by the driver at interrupt level. Whereas the only connection between the hardware driver and buffer software is the common memory block, the only connection between the driver and the associated task is a flag or semaphore that is set by the driver when its activity requires execution. The task awaits the occurrence of the semaphore, after which the task is scheduled by OS. In this manner, a task never communicates directly with a hardware driver. With reference to FIG. 7, the driver and software buffer functions associated with the incoming links 9201 and 9202 and outgoing bus 14101 may be identified. For instance, INPUT DRIVER 11401 and INPUT BUFFER 11403, interposed between incoming data link 9201 and SERIAL DATA task 11405, perform the desired buffering on incoming link 9201. To transmit a message between SERIAL DATA task 11405 and BUFFER 11403, the task makes a function call and passes appropriate parameters (e.g., the memory address of the assigned memory block and the address of the completion semaphore) to the function. The function that is called is referred to as the buffer routine, and it is this routine that is represented pictorially by element 11403 in FIG. 7. From FIG. 7 it may also be observed that INPUT BUFFER 11404 and INPUT DRIVER 11402 serve to interface SERIAL DATA TASK 11406 and incoming data link 9202, whereas OUTPUT BUFFER 11408 and OUTPUT DRIVER 11410 service PARALLEL OUTPUT task 11407 and parallel-oriented bus 14101. The one task remaining to be defined is the PARALLEL INPUT task represented by elements 11427, 11428 and 11429 in FIG. 8; this figure pictorially represents tier 2 interface 1421 (the remaining tier 2 interfaces 1422 through 1468 have essentially the same architectural arrangement as interface 1421 and, therefore, interface 1421 is taken as representative). The PARALLEL INPUT task organizes message transfers across the parallel-input busses 14104, 14105 and 14106 via the individual tasks 11427, 11428 and 11429, respectively. These three PARALLEL INPUT tasks run under control of PARALLEL OUTPUT task 11407 of FIG. 7, which is the bus master. INPUT DRIVER and INPUT BUFFER pairs 11421,11424; 11422,11425; and 11423,11426 serve basically the same function as INPUT DRIVER and INPUT BUFFER pairs 11401,11403 (or 11402,11404) of FIG. 7, that is, they indirectly couple PARALLEL INPUT tasks 11427, 11428 and 11429 to incoming parallel busses 14104, 14105 and 14106, respectively. The primary difference lies in the parallel bit orientation of busses 14104, 14105 and 14106 as contrasted to the serial protocol of links 9201 and 9202. ADMINISTRATION task 11430, PARALLEL OUTPUT task 11431, DUMP MEM task 11434 and BROADCAST task 11435 of FIG. 8 are the equivalent of ADMINISTRATION task 11409, PARALLEL OUTPUT task 11407, DUMP MEM task 11411 and BROADCAST task 11412 of FIG. 7. FIG. 9 depicts, in pictorial fashion, the architecture of tier 3 within DCN 140. The four elements labeled 114009 through 114012 represent the PARALLEL INPUT task associated with incoming, parallel-oriented busses 145001 through 145004, respectively. Each PARALLEL INPUT task performs in essentially the same manner as each PARALLEL INPUT task 11427, 11428 or 11429 of FIG. 8. In addition, each PARALLEL INPUT task is indirectly coupled to its associated hardware via an INPUT DRIVER and INPUT BUFFER, as depicted by element pairs 114001,114005; 114002,114006; 114003,114007; and 114004,114008. These pairs operate basically the same as INPUT DRIVERS and INPUT BUFFER pairs 11421,11424; 11422,11425; and 11423,11426 of FIG. 8. The eight elements designated 114014 through 114021 represent the SERIAL DATA task associated with outgoing, serially-oriented links 93001 through 93008, respectively. These eight tasks are equivalent to SERIAL DATA task 11405 and 11406 of FIG. 7. Also, each SERIAL DATA task is buffered from its associated hardware via an OUTPUT DRIVER and OUTPUT BUFFER, as depicted by the eight element pairs 114022,114030; . . . ; 114029,114037. These eight element pairs are the counterpart to INPUT DRIVER and INPUT BUFFER pairs 11401,11403 and 11402,11404 of FIG. 7. Finally, ADMINISTRATION task 114013, DUMP MEM task 114038 and BROADCAST task 114039 of FIG. 9 serve to control tier 3 microcomputers in a manner equivalent to tasks 11409, 11411 and 14112 of FIG. 7 or tasks 11430, 11434 and 11435 of FIG. 8. FIGS. 7, 8 and 9 are pictorial in the sense that they indicate a logical situation in terms of the number of copies of software utilized to implement the tasks. For example, the tier 3 architecture of FIG. 9 indicates there are four distinct PARALLEL INPUT tasks 114009 through 114012 and eight distinct SERIAL DATA tasks 114014 through 114021. Actually, there is only one copy of the PARALLEL INPUT program and one copy of the SERIAL DATA program stored in microcomputer 14001. There are four distinct read/write (R/W) memory regions or stacks dedicated to PARALLEL INPUT tasks and eight distinct R/W stacks dedicated to SERIAL DATA tasks. The state of each task is kept in the appropriate stack. The OS retains parameters indicating where, within each stack, the task should commence execution of an activity request. The environment described immediately above basically defines the concept of a multitasking operating system. In terms related to tier 3 interfaces, multitasking obtains because four independent PARALLEL INPUT programs are executed from within four distincts environments by the central processing unit of each microcomputer, namely, the four PARALLEL INPUT tasks 114009 through 114012. Similar remarks apply to the eight SERIAL DATA tasks 114014 through 114021 of FIG. 9. 2.1d Software Operation To understand how each of the microcomputers embedded in DCN 140 operates in terms of an unfolding sequence in time, processing circuit 1401 of FIG. 7 is considered as exemplary. As previously discussed, there are six application tasks and their interaction with the OS to consider. However, the concepts may be readily conveyed by presenting the interaction of a subset of these tasks, namely, SERIAL DATA, PARALLEL OUTPUT and ADMINISTRATION, as now discussed. At system startup, the OS commences execution by: (i) initializing its associated internal random-access memory; (ii) organizing memory blocks to serve as message buffers and placing these buffer locations onto a list called the FREE buffer list; (iii) scheduling each task to run according to a preselected priority; and (iv) shifting execution to the SCHEDULER program. Since the only tasks that have been scheduled to this point in the execution are those arranged in preselected order, the SCHEDULER finds that the first task, designated Task 0, is READY to RUN. Task 0 controls the incoming data link having logical designation `0`, so with reference to FIG. 7, Task 0 is identified as SERIAL DATA task 11405 and its associated data link is line 9201. Just prior to transferring execution to Task 0, the SCHEDULER identified the stack to be associated with Task 0. Once the stack location is identified, execution of Task 0 commences from the first program statement. Since Task 0 controls a serial data link (link 9201 having logical designation `0` in FIG. 7), the task begins by making a system call to OS to obtain an unused message buffer from the FREE list of buffers and then sets up data link INPUT BUFFER 0 program (element 11403 of FIG. 7) to receive data into the now allocated buffer. Task 0 then initializes link 9201 by arranging and sending a data link start-up message. Task 0 finally relinquishes control of the central processing unit (CPU) of its associated microcomputer by making a system call to OS. The OS SCHEDULER program is entered again and, since the initialization program of OS has made all tasks READY to RUN, Task 1, having the next highest priority, is READY to RUN. The CPU is arranged to execute in the stack environment of Task 1, and control is then passed to Task 1. Task 1 begins to execute from the first statement in its program. Since Task 1 controls data link `1`, (link 9202 in FIG. 7), it executes essentially the same program as did Task 0, the only difference being that the stack areas in memory have different locations. A view of the stack associated with Task 0 at this point in the execution of Task 1 indicates a wait state in which data link 9201 is set up to receive data and a data link start-up message has been transmitted. In contrast, the stack of Task 1 indicates that link 9202 is quiescent. However, upon relinquishment of the CPU by Task 1, its associated stack is also primed in the wait state. The SCHEDULER program finds Task 2 READY to RUN. This task is the one depicted as PARALLEL OUTPUT task 11407 of FIG. 7 and controls parallel-oriented bus 14101. Basically the same program sequencing occurs in Task 2 as in the prior task executions. The CPU is arranged to operate in the stack environment of Task 2, and begins by executing from the first statement in the so-called GPIB program since bus 14101 is presumed to implement the GPIB protocol. A message buffer is obtained from the OS, and the OUTPUT DRIVER-OUTPUT BUFFER interface is arranged for message transmission or reception. Task 2 then relinquishes control of the CPU. Since Task 3 is READY to RUN, the SCHEDULER program sets up the CPU to execute in the stack environment of Task 3. In FIG. 7, Task 3 may be identified with ADMINISTRATION task 11407. The instructions of Task 3 call OS to arrange for OS to schedule an execution of the so-called ADMIN program only when certain events occur. Task 3 also arranges for a timeout of about 15 seconds to schedule the ADMIN program for execution. ADMIN resets a timer whenever timeout occurs. If this timer signal is not reset in this manner, the tier 1 device 1401 is considered to have lost its sanity and a RESET of the microcomputer occurs upon expiration of the timer interval. As suggested above, the task numbers indicate the order of priority in execution, with Task 0 having the highest priority and Task 3 the lowest. The execution of tasks in the sequence described above presumes no external event interrupted the progression through task executions, and the time diagram in the top half of FIG. 10 depicts such a sequence. It is possible, however, to have an external event interrupt the top-down sequencing. For instance, if data link 9201 had a message to send in the DOWN direction prior to the execution of Task 3, then Task 0 would execute before Task 3 even executed for the first time. As an example demonstrating external event interrupts and one that is exemplary of the typical operation of a tier 1 device, it is supposed that the four tasks discussed in the above example have RUN and the OS is in the state of awaiting the posting of a flag to indicate a task is READY to RUN (i.e., the rightmost state in the top diagram of FIG. 10). It is further supposed a message is now received over data link 9201 for transmission to LTS 161 (FIG. 3). With reference to the bottom time diagram of FIG. 10 and the numerals associate with the various periods of execution of the individual tasks, the following sequencing occurs: (1) A message is received over data link 9201 or `0`, and INPUT DRIVER 11401 signals OS that Task 0 should execute. (2) Task 0 begins to execute to verify the message via the high level protocol acceptance technique. (3) At interrupt level, a message is received across bus 14101. Task 2 is made READY to RUN, but execution is precluded until Task 0 relinquishes control of the CPU. The message on bus 14101 is headed UP the hierarchy, say over link 9202. (4) At the completion of the verification phase and message reception by Task 0, the message is sent to Task 2 since the `down.sub.-- circuit.sub.-- type` field in the HEADER indicated a LTS was the ultimate message destination. During this interval, the OS SCHEDULER begins execution. Now Task 2 has the highest priority that is in the READY to RUN state, and control is passed to Task 2. (5) Task 2 processes the message sent to it by Task 0, and begins sending output over GPIB bus 14101 to the tier 2 interface indicated in the `down.sub.-- route` field of HEADER. Now the message previously received for UP direction transmission may be processed by Task 2 before relinquishing control of the CPU. A signal is sent so that Task 1 may be made READY to RUN, and control is passed to OS. (6) The SCHEDULER sees that Task 1 is the highest priority task that is READY to RUN, and passes control to Task 1. (7) Task 1 processes the message available through Task 2 and sends the message, properly formatted, over data link 9202. Control is passed back to OS. (8) The output previously initiated over bus 14101 is now completed so Task 2 is made READY to RUN and OS passes control to Task 2. (9) Task 2 effects follow-up processing by freeing the message buffer for use elsewhere by the microcomputer and relinquishes control of the CPU. (10) No task is presently READY to RUN until the interrupt handler for data link `1`, via INPUT DRIVER 11401, signals OS that transmission UP link `1` is now complete, whereupon Task 1 should be executed. Control is passed to Task 1. (11) Task 1 performs clean-up operations for its recent transmission over data link `1`. OS is again given control. (12) The SCHEDULER continues to execute until another I/O activity in the microcomputer indicates that a particular task should RUN. By way of a shorthand notation, which is similar to the actual high-level language utilized to program the tasks, the routing algorithms realized in device 1401 may be summarized as follows:
______________________________________
(i) Routing Algorithm for Task 0 and Task 1:
if (`down --circuit --type` = DCN --1){
pass message to local ADMINISTRATION
task;
}
else { destination = bits 6, 7, 8 and 9
of `down --route`;
set `up --route` bits 4 and 5;
pass message to PARALLEL OUTPUT
task;
}
(ii) Routing Algorithm for Task 2:
if (`up --circuit --type` = DCN --1){
pass message to local ADMINISTRATION
task;
}
else { if (`up --route` bits 4, 5 = 00 {
pass message to SERIAL DATA 0;
}
else { pass message to SERIAL
DATA 1;
}
}
______________________________________
In each of these routing algorithms, the symbolic notation DCN.sub.-- 1 has been utilized. As alluded to earlier in this section, generators of messages can indicate not only the destination (`down.sub.-- route` and `up.sub.--route`) but also the microcomputer type within the hierarchy of the MLT system. DCN.sub.-- 1 is one type and refers to tier 1 devices of DCN 140. Other types that may be referenced in bytes `down.sub.-- circuit.sub.-- type` or `up.sub.-- circuit.sub.-- type` include: MLT.sub.-- CNTLER for FE computer 220 or 221; DCN.sub.-- 2 for tier 2 interfaces and DCN.sub.-- 3 for tier 3 circuits of DCN 140; LTS.sub.-- CNTLER for the LTS controller, PORT.sub.-- CNTLER for port controller and PMU.sub.-- CNTLER for precision measurement unit controller; these latter three controllers are found in LTS 160 or 161. As indicated in Section 2.1a with reference to FIG. 4, the busses serving as inputs to and outputs from connecting arrays 141-144, as well as the array busses themselves, implement the GPIB protocol. Similarly, the input and output busses associated with matrix 145 utilize the GPIB protocol. In the case of an array 141, . . . , or 144, it is evident from FIG. 4 that each tier 1 device controls an output GPIB bus that has twelve talker/listeners. For instance, bus 14101 is controlled by tier 1 device 1401 and the twelve T/L networks on bus 14101 serve as inputs to interfaces 1421-1432, respectively. Within this GPIB framework, it is necessary to provide an embedded protocol for connecting a plurality of T/L networks to a controller on the same GPIB bus so that messages may be transmitted efficiently and message overhead is mitigated in return of message accept/reject status information. The particular PARALLEL OUTPUT task and the associated PARALLEL INPUT task accomplished the embedded protocol. Further discussion of this second-level protocol is held in abeyance until GPIB circuitry and software are presented. 2.2 Loop Testing System (LTS) 2.2a Structure Referring again to FIG. 2, it is shown pictorially that wire-center based LTS 160 (LTS 161 is substantially the same) performs communication, loop access and loop testing functions. LTS 160 is actually an arrangement of loosely coupled microprocessors organized to perform these functions. The term "loosely coupled" is used herein to denote an organization of processors that share no common memory but communicate by passing messages over serial or parallel oriented channels. FIG. 11 shows a block diagram of LTS 160. LTS controller 2000 is responsible for communications with DCN 140 (FIG. 2), via serial data link 930, and for local control of other LTS subcomponents, including: precision measurement unit (PMU) 2101, 2102 and 2103; port controller 2200; talk circuits 2301 through 2306; direct distance dialer (DDD) circuit 2400; ringing distributor 2500; and portions of equipment access network (EAN) 2700. Each of these subcomponents is explained as the discussion proceeds. LTS controller 2000 and port controller 2200 are linked with interconnect bus 20001, which typically supports a parallel-oriented protocol such as the GPIB. Port controller 2200 is responsible for the loop access function is that it provides tip, ring and sleeve control for connections to so-called "no-test" trunks 940 that enable the MLT system to interface to switching machine 170 (FIG. 2). A no-test trunk is one that provides the ability to interconnect to any customer line 180 or 181 in a bridging mode. One such test trunk is shown as TIP 1-RING 1 pair 9401 with its corresponding sleeve lead S1 lead 9417 in FIG. 11. PMU's 2101 through 2103 are also interconnected to LTS controller with bus 20001. Each PMU 2101, 2102 or 2103 is a general purpose testing circuit that is used to make measurements on customer loops 180 and 181. Each LTS 160 may contain from one to three PMUs. The maximum number is depicted in FIG. 11. PMU 2101 (PMU 2102 or 2103 is similar) accesses a customer loop 180 or 181 through a serial arrangement comprising, for example: wire pair 21010 emanating from PMU 2101; equipment access network 2700; wire pair 28010 serving as the input to port device 2801; and port device 2801, which is an interface to no-test trunk pair 9401. EAN 2700 serves to interconnect any PMU 2101, 2102 or 2103 to any port device 2801, . . . or 2816 under control of both LTS controller 2000, via bus 20002, and port controller 2200, via bus 22001. The L CONTROL 2701 portion of EAN 2700 connects to bus 20002, whereas the P CONTROL 2702 portion of EAN 2700 connects to bus 22001. LTS controller 2000, port controller 2200 and PMUs 2101 through 2103 are each self-contained microprocessor modules. Because of the relative independence of these microprocessor modules, the MLT system is modular so that wire centers (150 or 151 of FIG. 2) ranging from one thousand to one hundred thousand customer loops can be served by augmenting the basic system. Thus, as a wire center grows, more PMUs can be added (up to three per LTS), up to sixteen port circuits can be accommodated (the maximum of sixteen is shown in FIG. 11 as circuits 2801 through 2816), and EAN 2700 can be expanded. Hence the largest size LTS can have up to sixteen loops simultaneously accessed for testing and can time share three identical PMUs to perform requested tests. The separation of the testing function, access function and communication function allows for the simultaneous operation of these functions, thereby maximizing throughput for a given testing traffic load. 2.2b LTS Operation With reference to FIG. 11, LTS controller 2000 implements a serial-oriented protocol function on incoming data link 930. Received messages, in the form shown in FIG. 5, are parsed to obtain the INFORMATION field as shown in FIG. 6, and then interpreted in LTS controller 2000. An access request is typically the first message received, as indicated in the `down.sub.-- task.sub.-- id` byte of the HEADER by the binary equivalent of ACCESS and in the `request.sub.-- response` byte as REQUEST in binary representation. This message causes LTS controller 2000 to initialize an area of its RAM to track and time the request as well as to generate a parallel-protocol message for passage over bus 20001 to port controller 2200. The information utilized in construct this latter message is found in the DATA portion of the INFORMATION field of FIG. 6. For instance, the first byte (byte 1) may be, symbolically, `ACC.sub.-- NOTEST`. This indicates that the type of access desired is a connection to a "no-test" trunk. Another byte would indicate the `switch.sub.-- type` to inform port controller 2200 of the type of switching machine (e.g., an electronic central office or a cross-bar office). The next several bytes list the telephone number of the customer loop to be accessed. Based on message content, port controller 2200 proceeds to access the loop specified in the message by attaching trunk dialer 2650 (see FIG. 11) to a free port 2801 through 2816, dialing the telephone number, and attaching busy/speech detector 2600 to determine whether the loop is idle. Presuming loop access is obtained, port controller 2200 sends a response across GPIB 20001. This response proceeds in the UP direction and, accordingly, appropriate INFORMATION field bytes must be filled. With reference to FIG. 6, the `request.sub.-- response` byte has the entry RESPONSE in binary form placed in the HEADER. In the DATA portion, byte 1 has an entry that echos the test code which, in this case, is `ACC.sub.-- NOTEST`. This is to indicate that the completed request conforms to the desired request. The second byte (byte 2) indicates the `status` of the request and the third byte (byte 3) indicates the `port.sub.13 number`. For the instant example, these bytes might read, symbolically as `ACC.sub.-- COMPLETE` and `PORT.sub.-- 1` to indicate that port 2801 of FIG. 11 has a connection established to the loop associated with the telephone number sent in the DOWN direction. At this point in the operation, the loop is accessed, and LTS 160 awaits subsequent requests, typically to effect testing. Most test requests require the services of one PMU 2101, 2102 or 2103. However, some requests can be satisfied by either LTS controller 2000 or port controller 2200 and their associated circuitry. Test requests are coded so that LTS controller 2000 can determine which LTS circuits can satisfy the request. LTS controller 2000 therefore acts as a resource manager for the entire LTS 160. In order to proceed with the operational description of LTS 160, it is necessary to discuss its component parts in some detail. Attention is focussed first on LTS controller 2000, followed by port controller 2200 and PMU 2101 and, finally, the remaining circuitry of LTS 160 shown in FIG. 11. 2.2.1 LTS Controller LTS controller 2000 is a microcomputer-based system also running under the same operating system (OS) a DCN 140. Again, the software controlling the microcomputer is partitioned into tasks, and tasks communicate with each other by signaling each other or by sending messages to one another via facilities provided by OS. In LTS controller 2000, the tasks are as follows: (a) SERIAL DATA task controls data link 930 and implements a high level data link protocol on all messages passing onto or coming from physical data link 930. All tasks that must transmit data over link 930 do so by sending the data as a message to the SERIAL DATA task. This task is equivalent to the SERIAL DATA task 114014 of FIG. 9 associated with DCN 140. All messages entering LTS 160 and destined for a specific task in LTS controller 2000 must pass through SERIAL DATA. (b) PARALLEL DATA task controls the transmission and reception of messages over parallel-oriented bus 20001 shown in FIG. 11. All tasks that must transmit data over bus 20001 to port controller 2200 or to PMU's 2101-2103 do so by sending the data as a message to the PARALLEL DATA task. Similarly, data received from controller 2200 or units 2101-2103 pass through the PARALLEL DATA task. This task is equivalent to the PARALLEL OUTPUT task 11407 of FIG. 7 associated with DCN 140. (c) ACC task processes requests for access to trunks 9401 through 9416 of FIG. 11 and requests for establishment of callback paths via the national direct distance dialing (DDD) network as implemented by DDD circuit 2400. The processing of requests for loop access includes the formatting of messages to port controller 2200, where the access is actually performed, and the setting up of a timeout over the access activity in port controller 2200. The ACC task indirectly sends a message for loop access to port controller 2200 by sending the message to the PARALLEL DATA task. Requests to DDD circuit 2400 are transmitted over bus 20002. (d) TST task controls the processing of test requests on a given port, selected from one of the ports 2801 through 2816, once that port has accessed a loop for testing. There are sixteen TST tasks, one for each possible port 2801, . . . , 2816. The TST tasks are not bound to a particular port number in a fixed manner, but may be assigned to any individual port 2801-2816 over a long period of time. For example, for the duration of a given loop access, TST 7 task may be assigned to port 2803. When the access to port 2803 is dropped, TST 7 task may be assigned to port 2801. Once the assignment is made, it is fixed for the duration of the loop access. This dynamic assignment allows processing priority to be evenly distributed among ports 2801-2816. TST task software either performs the test request itself or arranges for the test to be performed by either port controller 2200 or PMU's 2101-2103. TST task also provides a timeout function for the request. (e) TCD task controls the dialing for talk circuits 2301-2306. This task can manipulate DDD circuit 2400 and thereby arrange a callback to, typically, a craftsperson at the facility designated the Maintenance Center which contains the I/O terminals 230,231. The callback feature is required to implement the combined talk/test procedures of the MLT system whereby a craftsperson can be in speech communication with either a customer or another craftsperson over a loop accessed for testing. The maintenance administrator at the Maintenance Center can enter a test request as a MLT system user, have that test run by LTS 160 while the talk path is broken, and when the test is completed, have the talk path restored by LTS 160. These are two TCD tasks in LTS controller 2000 software so that two dialing operations may be concurrently in progress. (f) ADMINISTRATION task provides all administrative functions in LTS 2000. These functions include: sending to FE computer 220 or 221 a request for data base download when LTS 160 is reset and processing this downloaded data base; responding to echo messages from ADMINITRATION task of DCN 140; and providing an interface during self-diagnostic checking. (g) DIAGNOSTICS task provides self-testing capabilities that are used to diagnose LTS controller 2000 hardware problems. DIAGNOSTICS task interfaces to ADMINISTRATION task, via the OS message passing facility, to request and receive the reservation of LTS 160 hardware for use in conducting self-tests. (h) DUMP MEM task arranges for the transmission of a snapshot of LTS controller 2000 memory when a malfunction occurs. At system startup or when a system reset occurs, operating system OS initializes its tables, places all message buffers on a "free queue" of buffers, initializes all system semaphores or inter-task signals, and makes each task READY to execute (RUN). The OS then calls a hardware and software initialization function. Tables are kept in permanent memory and define the state of the equipment configuration to be associated with the particular LTS 160. For instance, the number of PMU's 2101-2103 configuring the particular MLT system is one such table parameter. These tables are accessed for initialization. Next, the task scheduling function, again called the SCHEDULER, is executed. Program execution in LTS 160 is similar to that of the DCN 140 once the SCHEDULER is called. Thus, execution is transferred from the SCHEDULER to the highest priority task which is READY to RUN. At startup, all tasks are READY, and the SERIAL DATA task has the highest priority. Execution of SERIAL DATA enables the hardware receiver associated with link 930 and causes a transmission of a data link start-up message to DCN 140 in the high level protocol format. The SERIAL DATA task then relinquishes control of the CPU in LTS controller 2000. The OS is now free to select another task for execution. The PARALLEL DATA task has the next highest priority and executes so as to enable its associated hardware for two-way communication on bus 20001. Control is again passed to the OS once the task is initialized. All the other tasks eventually RUN and initialize themselves and their associated hardware. The tasks then await some activity requiring their specialized services. Usually they wait to receive a message buffer or for a semaphore to be posted. It may also be that a particular task is waiting for a timeout to occur before regaining control of the CPU. For example, ADMINISTRATION waits for about seven seconds before gaining control after its initialization; this task then sends a data base download request to FE computer 220 or 221 by passing the message to SERIAL DATA for transmission over data link 930. The download data messages from FE computer 220 or 221 pass through the SERIAL DATAL task and are routed accordingly to data in the INFORMATION field. Download messages have LTS.sub.-- CNTLER (LTS controller) names in `down.sub.-- circuit.sub.-- type` byte and ADMINISTRATION task in the `down.sub.-- task.sub.-- id` byte. Consequently, the routing function in LTS controller 2000 realizes that the INFORMATION field is to be processed in LTS controller 2000 itself and sends the message, via OS, to ADMINISTRATION task. This task processes the message by passing the data that appears in the DATA portion of the message. Download messages identify the number of equipment types installed at the particular LTS 160 site and the present status of the equipment (AVAILABLE, OUT.sub.-- OF.sub.-- SERVICE, and so forth). These messages also organize ports 2801-2816 into trunk groups, specify dialer types associated with talk circuit 2301-2306, and so on. After configuration information has been downloaded, LTS 160 is prepared to process access and test requests. 2.2.1a Access Request Processing Access request messages have LTS controller 2000 specified in the `down.sub.-- circuit.sub.-- type` of the message header symbolically as LTS.sub.-- CNTLER and the ACC task in the `down.sub.-- task.sub.-- id` symbolically as ACC. The SERIAL DATA task routing function transmits the access message to the ACC task. The format of the DATA portion of the INFORMATION field of FIG. 6 has two possible arrangements depending on the type of access desired. Four types of access are allowed: (i) a regular test access of customer loop 180, . . . , 183; the INFORMATION field is exemplified in FIG. 12; (ii) a main distribution frame (MDF) trunk access as also exemplified by FIG. 12; (iii) a regular test access plus a callback to the Maintenance Center; the INFORMATION field is exemplified in FIG. 13; and (iv) a callback of the Maintenance Center that is to be associated with a specified test access already in effect at LTS 160 site; FIG. 13 also depicts the corresponding INFORMATION field. Processing for each of these types of access is covered next. 2.2.1a.1 Regular Test Access and MDF Trunk Access Regular test access requires that circuitry and equipment within switching machine 170 be manipulated according to the type of central office (e.g, cross-bar or electronic). MDF trunk access requires only that local memory tables be updated with entries disclosing, in effect, that the trunk circuit is being attended to by craft personnel. MDF trunks are not automatically connected to a customer loop, but require interaction and manipulation by a craftsperson located at the MDF. The ACC task begins to RUN when a message is sent to it. In the immediate case, the message is a REQUEST for either a test trunk or MDF trunk access. A memory table is used to store pertinent information about the REQUEST; such information includes the address of the REQUEST message, memory locations for the storage of the address of a RESPONSE message, and whether a callback is required for this REQUEST. The access code (regular, designated by NOTEST access, or MDF access), the switching machine type, the trunk group containing the loop under test and the telephone number of the customer are placed as data in the message buffer. The address of the original REQUEST message and the address of the table used to store information about the REQUEST are also placed in the message HEADER, in the `up.sub.-- 1parameter` and `up.sub.-- 2parameter` locations, so that the response of port controller 2200 can be identified with the present REQUEST. The message is then sent to PARALLEL DATA task for transmission to port controller 2200. A timeout is started on the activity of port controller 2200 and ACC task relinquishes control of the CPU. When port controller 2200 completes its processing of the access request, it returns a RESPONSE message to ACC task by sending the message across the PARALLEL DATA task. ACC task is identified in the `up.sub.-- route` of the message HEADER and the routing function in PARALLEL DATA task sends the message to ACC task. ACC task associates the RESPONSE message with the original request message by checking for the address of the original request message and of the temporary storage table used for the request. The access response message has the format shown in FIG. 14. The `status` byte indicates whether the access was successful or not. If it was unsuccessful or if LTS controller 2000 had timed out on port controller 2200 request, a RESPONSE message is formed and sent to SERIAL DATA task for transmission UP the hierarchy. The temporary table used to store data for the failed request is now made available for use with another access REQUEST that may have arrived. If port controller 2200 passes a RESPONSE that indicates an access has been obtained, ACC task attempts to close a relay embedded within equipment access network (EAN) 2700 (FIG. 11) to one of the ports 2801-2816 selected for loop access. If this operation fails, trouble counters are stroked against the selected port 2801-2816 and EAN 2700 and the aforementioned failure sequence is followed again. If relay closure is successful, ACC task selects an idle TST task to control testing on the selected port, arranges to have a memory space called the port control table filled with information about the access, and makes the chosen TST task READY to execute. Port control table information includes the address of the orignal request message, the address of the results buffer received from port controller 2200, whether the access is of long or short holding time, a timeout value to be used to timeout the access before it is automatically dropped, the logical identifier of the FE computer that requested the access, and an identifier that allows the FE computer to associate the access with a results buffer internal to the FE computer. ACC task is now finished with its processing of this access request, and makes its temporary table available for use with a new access request. The return of a RESPONSE message is the responsibility of the TST task, and will be covered in a later section. This convention has been adopted because the original REQUEST message may have a test REQUEST appended to the access REQUEST. 2.2.1a.2 Interactive Access Request Processing The interactive access request message of FIG. 13 is used when a loop access is desired together with a talk path to a craftsperson in the Maintenance Center. The request message format is basically the same one used for a regular test access, as per FIG. 12, except that a callback telephone information has been appended and the `request.sub.-- code` is symbolically designated ACC.sub.-- INTR (as contrasted to ACC.sub.-- NOTEST or ACC.sub.-- MDF of FIG. 12). The ACC task processes the so-called "regular loop portion" of the message as outlined above. However, besides formatting and sending a message to port controller 2200, a message is also sent to one of the TCD tasks. This latter message contains the callback telephone number appearing in the original DOWN route REQUEST message as is shown in FIG. 15. The ACC task now waits to receive two RESPONSE messages, namely, one from port controller 2200 and one internally from TCD task. A timeout is started on these activities. The TCD task starts to RUN as soon as it can be scheduled after ACC task relinquishes control of the CPU. TCD task receives messages sent to it and begins to execute its dialing algorithm. The task also attempts to acquire one of talk circuits 2301-2306. If no circuit 2301-2306 is available, the callback sequence fails and a message to this effect is sent to ACC task. If one of the circuits 2301-2306 is available, TCD task attempts to acquire either a dial pulse dialer or in-band dialer for use with the available talk circuit. The dialer is represented in FIG. 11 by DDD circuit 2400. The dialer type depends on the central office equipment used to terminate the talk circuit, which appears to the central office switching machine as a station set on a customer loop. The dialer type is a parameter contained in the download data sent from the FE computer to LTS 160 as part of the startup sequence discussed above. If there is no dialer circuit 2400 available, either because it is presently in use or out of service, the callback sequence is terminated, the selected talk circuit is released and made available for use on another callback request, and a failure message is sent to ACC task. If dialer circuit 2400 is acquired, the callback digits D1, D2, . . . , D12 are passed to a dialing program, and the digits are dialed. The dialing occurs at the interrupt level since dialing takes between 1 and 10 seconds to complete and, consequently, TCD task gives up control of the CPU for the dialing interval at least. When dialing is complete, an interrupt handler posts a semaphore to signal TCD task that it should return and continue its processing. Before having relinquished control of the CPU, TCD task started a timeout on the dialing activity. If this timeout expires before notification of dial completion, TCD task arranged to free its associated equipment, namely, one of the talk circuits 2301-2306 and dialer 2400, and generates a failure message for ACC task. If dialing successfully completes, TCD task frees dialer 2400 circuitry, and enables the allocated talk circuit 2301-2306 for the detection of a handshake signal called "KEY-ZERO". The craftsperson at the Maintenance Center is required to depress the "0" key on the in-band signaling pad of the telephone set to signal LTS 160 that the callback has been successfully received at the Maintenance Center. The TCD task starts a timeout for the reception of the KEY-ZERO signal by the talk circuit hardware, and if the timeout expires before the signal is received, the callback is aborted, and the failure procedure outlined above is initiated. If the KEY-ZERO signal is detected by the talk circuit, the callback sequence is completed, and an indication of this is formatted and returned to ACC task. The message contains information identifying the talk circuit 2301, . . . , or 2306 utilized. The ACC task can receive RESPONSE messages from TCD task and port controller 2200 in either order since the activities of callback and loop access are synchronous with respect to each other. After both responses arrive, ACC task completes its processing of the access request by checking `status` results and either sending a message to FE computer 220,221 or by connecting the allocated port from ports 2801-2816 and the selected talk circuit from circuits 2301-2306 through EAN 2700. If the loop access failed, or if the attempt to connect the allocated port fails, a failure message is returned to the corresponding FE computer, and LTS 160 equipment on the failed arrangement is relinquished. If the connect attempt fails for the allocated talk circuit, the talk circuit equipment is freed, trouble counters are strobed, and a TST task is selected for loop access in the manner described above. If the callback attempt is successful, the loop access is successful, and the connection through EAN 2700 is successful, a TST task is selected to oversee testing on the loop, and ACC task completes its processing with basically the same procedure as described above for the "loop access only" case. 2.2.1a.3 Callback Access Processing There are instances when a Maintenance Center administrator needs to talk to either a customer or to an outside repair person after the customer loop has been successfully accessed for testing. In these instances, LTS 160 receives basically the same message of FIG. 13 except that the `request.sub.-- code` is, symbolically, ACC.sub.-- DDD and the port 2801-2816 to be associated with the callback in the `down.sub.-- parameter` byte of the HEADER. The ACC task begins to execute when this message is received. It formats a message for TCD task as outlined above for the interactive test case, sends the message and waits for a RESPONSE. A timeout is started to time the callback request. The TCD task processes this message exactly as described above, and returns its response to ACC task. No message from port controller 2200 is expected in this case, so ACC task proceeds to send a message to the FE computer associated with the ACCESS request or to attach one to talk circuits 2301-2306 to the specified port, depending on the `status` returned from the callback activity. The description to this point in this section has covered in some detail the action of ACC task and TCD task. It should be recalled that these software functions operate in a multitasking environment, and that at any instant, ACC task can be processing several access requests that are in different states of completion. However, TCD task is designed to process one dialing request at a time. To insure efficient throughput, there are two TCD tasks within the software of each LTS controller 2000. Consequently, two dialing activities can be going on in LTS controller 2000 concurrently. Since there are two dialer types, namely, dial pulse and an in-band, in LTS 160 for dialing over the national telephone network, two TCD tasks insures the maximum dialing activity may occur. 2.2.1b Test Request Processing An active TST task has a private memory table that it uses to conrol testing on a given port. Entries in this table include the address for a request message or addresses for a series of messages and the corresponding address or addresses for the responses. TST task is first activated by the action of ACC task, which attaches both a request buffer and a response buffer to the table. Then TST task begins a timeout of the loop access; if the timeout expires before the loop access is dropped by request, the loop access is automatically dropped by LTS controller 2000. This timeout prevents the loss of use of LTS 160 circuitry such as talk circuits 2301-2306 and ports 2801-2816 in cases where FE computer 220 or 221 failures occur. One of the requests that can be made of TST task is that of restarting the timeout activity on a loop under test so that any access may be held for longer than the initial timeout value if required. After initiating the timeout activity on loop access, TST task processes any request message in the table as follows. A `current count` variable that has been preset by ACC task has a value equal to the number of bytes taken by the access request data. In addition, each message buffer has a field called `nbytes` that contains a count of the number of bytes of meaningful data contained in the buffer. If `current count` equals `nbytes`, the message contained only the ACCESS request, and TST task arranges to send the response message associated with the initial ACCESS request in the UP direction. If, however, current count is less than `nbytes`, then test requests have been included with ACCESS request, and TST task proceeds to process those other requests. This processing activity is described in the subsequent paragraphs. For each test request found in the request message, TST task arranges for the request to be performed, collects the response in the associated response message buffer, and when the last request has been processed, returns the response message to the FE computer 220 or 221 making the requests. If the last request processed was not one to drop the test access, TST task then waits for the arrival of a new message containing test requests. In this way, the FE computer guiding the testing can request tests to be performed, analyze results and determine the next test to be performed according to its embedded adaptive test algorithms. Whenever the associated FE computer 220 or 221 transmits a new message of test requests DOWN the hierarchy for a loop already accessed via a particular LTS port 2801-2816, that message is received by the SERIAL DATA task and routed to the appropriate TST task. The HEADER portion `down.sub.-- parameter` byte contains the port identifier, and a dynamic table in LTS controller 2000 is used to determine the specific TST task governing activity on a specific port. The TST task is scheduled to RUN when the new request message is sent to it. The TST task attaches the message to the temporary table referred to above, and sets `current count` equal to the size of the message HEADER. Consequently, `current count` has the offset of the first byte after the message HEADER, which is the first request in the present message. This is depicted in FIG. 16. A message buffer is now obtained from OS, attached to the table, and used to accumulate response to the requests specified in the REQUEST message. Before processing any test requests, TST task determines if a DDD callback is associated with the loop under test. If so, the callback path is placed in the so-called HOLD mode so that testing can be performed on the loop while the callback path is still held up. The talk circuit `mode` (either HOLD, TALK or MONITOR) is saved for restoration upon completion of test request processing. In this way, tests are performed on a loop with an associated callback, and the loop is subsequently restored to the callback state that existed prior to receipt of the request message. The callback state can be changed by a request in the message that simply causes LTS controller 2000 to change the value of the remembered state. When the remembered state is restored, a new state is actually effected for the callback path. The TST task divides test requests into two categories, namely, those that can be performed by either LTS controller 2000 or port controller 2200, and those that require the services of one PMU 2101-2103. If the request is to be performed by a PMU 2101-2103, TST task attempts to have allocated to it an idle PMU. If no PMU is available, a `status` of BUSY is set for the test request, no further processing of requests is carried out for the current request message, and the accumulated responses are returned to the FE computer supervising the testing. If, however, a PMU is allocated to the TST task, a message buffer is obtained from OS, the PMU request is formatted in this buffer, and the buffer is sent to PARALLEL DATA task for transfer to the PMU. A timeout is started on the request. If the timeout expires before the PMU returns the test results, a timeout failure status is recorded in the results buffer, further processing of requests in the present buffer is terminated, and the accumulated results are returned to the supervising FE computer. If the PMU returns the test results within the time limit, the status and results data are stored in the associated results buffer, `current count` is incremented by the number of bytes required for the just processed test, and TST task determines if the request message contains another test request. This determination is made by comparing `current count` with the `nbytes` field in the request message. Since `current count` is incremented with each request processed, it eventually equals or exceeds `nbytes`, and processing for the present request message is terminated; the buffer of the accumulated response is returned to the proper FE computer. If the request is determined to be one that LTS controller 2000 can respond to directly, it does so, and accumulates the response in the associated response buffer. `Current count` is incremented appropriately. If the request requires the services of port controller 2200, a new message buffer is obtained from OS, a request message is formatted for port controller 2200, and the message is sent to PARALLEL DATA task for transfer to port controller 2200. A timeout is initialized by PARALLEL DATA task, and if it expires before the responses from port controller 2200 is received, the timeout sequence is executed, as outlined above for the timed-out PMU request. If the response is received within the time limit, the response buffer is updated with the results, `current count` is incremented by the appropriate amount, and processing continues for the next test request, if any. The above discussion shows the LTS controller 2000 is capable of processing concatenated test requests received in a single request message. The only restriction is that the responses to all requests must fit into the response message buffer. As each message is processed, a PMU 2101-2103 is attached to TST task, if necessary. This PMU remains associated with TST task for the duration of processing of the present request message, but is freed for use by another TST task for servicing another loop accessed on another port when processing is completed for the present request message. As mentioned earlier, LTS 160 can be equipped with up to sixteen ports 2801-2816 and therefore can support concurrent testing on sixteen loops. Sixteen instances of TST task allow this processing to occur, and OS is the multitasking support for the simultaneous testing. The timeout mechanisms described in the above paragraphs of this section serve to insure that resources of LTS 160 are not lost to the system in cases where errors occur. For example, without a timeout facility, if a PMU should reset in the middle of a test request, the loop access, the associated port equipment and any associated talk circuit would be permanently stuck awaiting a response that could never occur. All this equipment would be unavailable to the MLT system in the sense that it could not be used again because of its permanent BUSY status. The timeout facility overcomes errors of this sort by causing error routines to execute and free associated equipment. The overall timeout on the loop access, started by TST task as soon as loop access is completed, overcomes the error condition that prevails when TST task is awaiting the next request message for the FE computer, but that computer fails. Since the knowledge of the FE computer regarding access prior to system failure is most likely lost, the next message may never arrive. LTS 160 resources are likewise lost in this case without the timeout mechanism because this equipment cannot be used by other FE computers, or indeed, by one that failed and is now back on-line. 2.2.1c LTS Requests With the presentation of the above structure and operation and the introduction of certain nomenclature, it is now appropriate to present a list of requests, including other access or test types, processed by a typical LTS 160. The list shows the subsystems, that is, PMU 2101-2103, LTS controller 2000 or port controller 2200, that actually perform | ||||||
