Abstract:
Redundant but independently operable data processors called encoders are arranged so that control of a particular recorder gathering billing data in a telephone switching system can be transferred while maintaining billing continuity for calls being handled by that recorder. More specifically, each encoder checks the validity of billing information received from each recorder. However, each encoder only transmits billing data pertaining to a designated group of recorders to a remote processor. When an encoder detects that it is not receiving valid data from one of its designated recorders, the control of only that designated recorder is transferred to the other encoder if the other encoder indicates that it is receiving valid data from that recorder. Moreover, the relinquishing encoder sends a message to the remote processor indicating that it is giving up control of the designated recorder, while the accepting encoder inhibits the transmission of information to the remote processor for a predetermined time interval and then transmits a message indicating that it has accepted control of the designated recorder. This delay ensures that the remote processor will receive the relinquish message before the acceptance message so that the continuity of processing billing data for calls handled by the designated recorder can be maintained.

Description:
FIELD OF THE INVENTION 
     This invention pertains to automatic message accounting equipment and apparatus for transferring control of data sources in a manner to maintain the continuity of billing data reception; and more particularly this invention pertains to an arrangement in which a plurality of recorders can be individually associated and disassociated with a pair of independently operable data processing units. 
     BACKGROUND OF THE INVENTION AND PRIOR ART 
     Switching systems assigned to interconnect calling telephone stations with called telephone stations are often provided with automatic message accounting (AMA) equipment arranged to assess message charges against calling telephone stations. When a telephone station is utilized to originate a call to a called telephone station, the serving switching system, normally an electromechanical local office, accesses automatic message accounting equipment to record an initial entry identifying the calling telephone station, the called telephone station, and the switching system trunk equipment used to establish a call connection. After the call connection has been established, the switching system trunk equipment detects answer of the call by the called telephone station and again accesses the automatic message accounting equipment in order that an answer entry may be recorded identifying the time the call was answered. Subsequently the switching system trunk equipment detects the disconnect of the telephone stations from the call connection and again accesses the automatic message accounting equipment in order that a disconnect entry identifying the disconnect time of the call connection may be recorded. Thus, for each telephone call, the AMA equipment records three entries (i.e., initial, answer, disconnect) which in combination indicate the called and calling telephone station identities, the time that the call was answered and the time that the telephone stations were disconnected from the call connection. 
     The trunk equipment of a switching system is comprised of a number of trunk circuits that are arranged to connect one switching system with another to establish call connections between the calling and called telephone stations. Normally, groups of trunks bid for the services of a recorder which in turn accesses an associated perforator to record the initial, answer, and disconnect entries on paper tape. 
     The paper tapes produced by the various perforators are normally physically carried to a centralized data processing system where they are each read in reverse order and the three billing entries associated with each call are placed in sequence so that the requiring charges can be computed. The billing information on each tape is interspersed with entries from various of the 100 trunks which are normally served by a single recorder. 
     In one prior art system it was recognized that the paper tape medium was not a very good source of billing information because of its low information density, bulk, difficulty of copying, etc.; and this system provided a magnetic tape arrangement to replace the paper perforators. This arrangement gathers billing data directly from a group of recorders and places the billing data directly on magnetic tape. This system provides redundant structure limited to memory and a pair of tape decks which are switched when the end of a particular magnetic tape is reached. A malfunction in the nonduplicated hardware could possibly cause, for an indeterminate time, the loss of billing information for 10 recorders each serving up to 100 trunks. Such an outage could result in severe revenue losses. In the prior art perforator arrangement, each recorder was associated with its own perforator so most hardware problems would only invalidate the billing data for a particular recorder. However, when a data processing system is utilized to gather data from a plurality of recorders, any malfunction in key equipment in this processing unit can cause a massive loss of billing information. 
     It is an object of our invention to provide a data gathering system adapted to maintain the integrity of billing data reception during most data processing malfunctions. 
     It is a further object of our invention to provide a data gathering system in which billing information is transmitted to a centralized processing unit, and even during partial system outages, billing data is transmitted to the centralized processing unit in a manner such that it can maintain the continuity of received billing information. 
     It is a further object of our invention to maintain the continuity of billing data reception even when recorders are manually associated or disassociated with data processing units. 
     SUMMARY OF THE INVENTION 
     In accordance with the principles of our invention, a pair of independently operable but redundant data processors called encoders interrogate a plurality of data sources, normally recorders, to gather billing data therefrom. Each encoder checks the validity of billing data from each of the recorders. However, the recorders are initially assigned on a primary-secondary relationship to the encoders. An encoder will only transmit billing data received from recorders for which it is primary to a remote centralized processor via a data link. For secondary recorders, the encoder only checks the validity of the billing data therefrom. 
     When an encoder discovers it has received invalid data from one of its primary recorders, it then checks whether or not the other encoder has received valid data from that recorder. If the secondary encoder has not received valid data, the primary encoder assumes that the data is invalid, and so marks the data; however, if the secondary encoder indicates the data is valid, the primary encoder assumes that it has malfunctioned, and transfers control of only that recorder to the other encoder. Thus, the primary and secondary relationship between the encoders for that particular recorder is now reversed, so that now the other encoder transmits billing data for that recorder to the remote processor. 
     Thus in accordance with an aspect of our invention, each encoder checks the validity of billing data from each recorder, but for data transmission the recorders are selectively associated and disassociated with the encoders. The primary and secondary encoder relationships for any particular recorder can be altered while the primary and secondary relationships for the other recorders remain the same. 
     When a switch of the primary-secondary statuses has occurred, the &#34;relinquishing&#34; encoder, which was relegated from primary to secondary status, generates a relinquish message indicating that it is giving up control of a particular recorder. This relinguish message is temporarily buffered and then transmitted to the remote processor. In contrast, the &#34;accepting&#34; encoder, which was altered from secondary to primary status, generates an acceptance message indicating it is accepting control of the particular recorder and buffers this message. This encoder then inhibits the transmission of any data to the remote processor for a predetermined time interval and at the end of this time interval, the acceptance message is sent to the remote processor with the buffered messages. During this time interval, this encoder continues to buffer billing data from its all &#34;primary&#34; recorders. This time delay is designed so that the remote processor will receive the relinquish message before the acceptance message so that it realizes that subsequent billing data from the particular recorder will be received over the data link associated with the other encoder. 
     Thus, in accordance with another aspect of our invention, after a transfer of encoders has occurred, relinquish and acceptance messages are generated and the transmission of the acceptance message is delayed so that the remote processor will receive the relinquish message before the acceptance message so that the continuity of reception of billing information can be maintained. 
     In this one illustrative embodiment of our invention, a recorder control circuit is associated with each recorder. This recorder control circuit contains status indications indicating to both encoders the present primary-secondary statuses assigned that recorder. When an encoder concludes that the other encoder should transmit the billing data for one of its primary recorders, it operates a contact which causes the primary and secondary status relationships indicated by the associated recorder control circuit to the encoders to be altered. This greatly facilitates the assigning of primary and secondary relationships between each recorder and the encoders, and allows these relationships to be easily altered on an individual recorder basis. 
     Thus, in accordance with another feature of our invention, a control circuit is associated with each recorder to indicate the primary-secondary relationship in regard to only that recorder, and the primary encoder can easily control the circuit to reverse the indicated relationship. 
     The use of individual recorder control circuits also facilitates manual switchovers between encoders during normal maintenance activities without any loss of billing information. When the primary-secondary statuses of a recorder are altered by a craftperson by activating a contact in the associated control circuit, this status change is detected by each of the encoders which generates the appropriate acceptance and relinquish messages in the manner described above. The transmission of the acceptance message is delayed as described above so that the continuity of billing information can be maintained at the remote processor. 
     Thus, in accordance with still another aspect of our invention, when control of a recorder is manually transferred to the other encoder, both encoders generate appropriate messages and transmit the messages in a manner such that the remote processor can maintain billing continuity. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     The foregoing as well as other objects, features and advantages of our invention will be more apparent from a description of the drawing in which: 
     FIG. 1 illustrates in generalized form a billing data transmitter including duplicated encoders operative in accordance with the principles of our invention; 
     FIG. 2 illustrates the format of each line of billing information generated by the recorders in FIG. 1; and 
     FIG. 3 illustrates portions of the circuitry in recorder circuit RCDRO in FIG. 1, circuitry in recorder control circuit RCCO and the corresponding signal distribute and scan points in encoders E0 and E1. 
    
    
     GENERAL DESCRIPTION 
     In this one illustrative embodiment of our invention, a billing data transmitter is included in an existing telephone switching system to gather automatic message accounting (AMA) information from a plurality of recorders RCDR -- , check the validity of the information, change its format and then transmit it over a data link to a remote processing unit which stores the information on magnetic tape. This billing data transmitter is adapted to replace existing perforating equipment which now places the AMA information on paper tape. 
     Now turning to FIG. 1, eleven recorders designated RCDRO-RCDR9 and an emergency recorder RCDREMG are illustrated. Each of these recorders services 100 trunk circuits which bid for access to the recorders through numerous circuits (not shown), such as senders, transverters and call identity indexers. The specific manner in which billing data is received by the recorders is described in R. B. Curtis et al, application Ser. No. 516,624, filed Oct. 21, 1974, now U.S. Pat. No. 3,934,090, issued Jan. 20, 1976, and in more detail in H. D. Cahill et al., U.S. Pat. No. 2,599,358, issued June 3, 1952, and will be described herein only to the extent necessary to fully understand the operation of this illustrative embodiment of our invention. 
     The format of billing information provided by the recorders is illustrated in FIG. 2. Twenty-eight data bits are provided over parallel leads such as cable DCO in FIG. 1 and are subdivided into six groups or digits of information designated A, B, . . . , F. The A group comprises 3 bits (designated A0, A1 and A2) and each of the other groups B-F comprise 5 bits (designated B0, B1, B2, B4 and B7 for example). The 3 bits of information in the A group are provided in one-out-of-three or three-out-of-three format, depending upon the type of call. The data bits in the other groups are provided in a two-out-of-five format. 
     In the prior art systems, each recorder was associated with its own perforator. For example, as illustrated in FIG. 1, recorder RCDRO was associated with perforator PERFO. This perforator would detect the state of certain leads in the recorder indicating that a line of billing data was available. The perforator would then access the billing data and would store it on paper tape by punching the appropriate holes on the tape. Then the perforator would return a check signal back to the recorder indicating that it had successfully stored the line of information. The recorder, then provided the next line of information and the perforator would operate in a similar manner. As mentioned previously, the recorders provide three basic types of AMA information, namely, initial entries, answer entries and disconnect entries. Since each recorder serves 100 trunks, the AMA information for each trunk would normally be interspersed with the AMA information for all the other trunks. Thus, for example, recorder RCDRO might receive an initial entry for one trunk followed by a disconnect entry for another trunk and so on. To process the raw AMA information on the paper tape into data useful for customer billing, the paper tapes were read backwards, and when a disconnect entry was read for a particular trunk, then the machine processing the paper tape would look for an answer and finally an initial entry for that particular trunk. All specifics concerning the call are available from these three entries and the appropriate billing information can then be generated. 
     Emergency recorder RCDREMG is not operable when each of the other recorders is operating successfully. However, when a trouble condition is detected for one of the other recorders, then the emergency recorder is manually placed in service and receives billing data from the 100 trunks normally associated with the out-of-service recorder. 
     In accordance with this one illustrative embodiment of my invention, a billing data transmitter comprising duplicated encoders E0 and E1 is provided to gather billing data directly from the recorders via their associated recorder control circuits RCC --  and to transmit the processed billing data directly to a remote processor RP which may be hundreds of miles from the encoders. To elaborate, each encoder comprises an 8-bit self-checked programmable controller. This controller in turn comprises duplicated microprocessors which operate in complete synchronism and perform matching operations at the end of each cycle. For example, encoder E0 comprises microprocessors 0A and 0B. Each encoder also comprises a scanner such as SCN0 which includes a 480 point scan point matrix. These scan points are high input impedance devices which provide an interface between the electromechanical apparatus in the telephone central office and the lower voltage circuits in the microprocessors. These scanners are adapted to detect the 28 data bits in each line of information as well as the states of a plurality of control leads in each recorder indicating various statuses associated with the billing data such as test calls, emergency recorder calls, etc. Thus, billing data and control information is applied to scanners SCN0 and SCN1 from each of the recorders via their associated recorder control circuits RCC --  and the respective cables DC -- . As described in greater detail . hereinafter, each scanner also includes certain scan points associated with the operation of the other encoder so that each encoder monitors the operation of its counterpart encoder. 
     Each encoder also includes a 64-point signal distributor such as SD0 in encoder E0. Each point comprises a flip-flop and high-speed mercury relay responsive to the state of the flip-flop for operating a make contact which in turn controls the state of relays in the recorder control circuits RCC. 
     The microprocessors communicate with the peripheral circuits including the scanner and signal distributor via two main buses, the peripheral address bus PAB and the peripheral data bus PDB. To elaborate, microprocessors 0A and 0B respectively provide an address on output buses 0A0 and 0B0 identifying a row of scan points in scanner SCN0, which address is gated into peripheral address register PAR from bus 0A0. Then, the address in register PAR is received by bus extender circuit BET which buffers the address because the scanner and signal distributor operate at much slower speeds than the microprocessors. This address is then decoded, and the identified row of scan points in scanner SCN0 is interrogated and the states of all interrogated scan points are returned to bus extender BET, and placed on peripheral data bus PDB, and applied to both microprocessors 0A and 0B over input bus IB. 
     The states of a row of distribute points in signal distributor SD0 are controlled in a similar manner. First the address of a particular row is loaded into register PAR, then this address is stored in circuit BET, and data indicating the new states of the points in this row is placed on peripheral data bus PDB from output bus 0B0 and applied to bus extender BET. Signal distributor SD0 changes the states of the flip-flops in the designated row and these flip-flops in turn indirectly control the states of relays in the recorder control circuits RCC as mentioned previously. For example, distributor SD0 controls the states of relays in each of the circuits RCC0-RCC10 over cables RC0-RC10 respectively. 
     AMA information received from the recorders by scanner SCN0 is first placed in buffer memory BM under the control of microprocessors 0A and 0B and then on a subsequent instruction is presented to input-output channel IOC and then the data set (not shown) in circuit IOC modulates the data for serial transmission over data link DLO to remote processor RP. 
     FIG. 1 illustrates the circuitry in encoders E0 and E1 only to the extent necessary to fully understand the principles of our invention. The specific operation of each encoder is described in some detail in S. D. Coomer patent application, Ser. No. 626,338, filed Oct. 28, 1975, now U.S. Pat. No. 4,020,459, issued Apr. 26, 1977. Moreover, one suitable microprocessor is described in R. W. Sevcik patent application Ser. No. 450,896, filed Mar. 13, 1974, now U.S. Pat. No. 3,931,505, issued Jan. 6, 1976. 
     Each encoder receives billing data from each of the recorders RCDR0-RCDR9 (and RCDREMG when required) via associated recorder control circuits RCC0-RCC9 (and RCC10). The microprocessors in each encoder operate in complete synchronism. However, each encoder E0 and E1 operates independently and not in synchronism. Each encoder examines the billing data from each of the recorders, but only buffers billing data for those recorders assigned to it as &#34;primaries&#34; and returns check signals to the recorders indicating that the received data was valid and properly received. Thus, for example, encoder E1 is assumed to be primary encoder for the even recorders namely RCDR0, RCDR2 . . . RCDR10, while encoder E0 is primary for the odd recorders, RCDR1, RCDR3 . . . RCDR9. Thus, encoder E1 receives billing data from each of the recorders RCDR0-RCDREMG via circuits RCC0-RCC10 and cables DC0-DC10. Encoder E1 checks the validity of all billing data by checking that the data is in the proper one-out-of-three, three-out-of-three or two-out-of-five format. However, encoder E1 only stores billing data for recorders RCDR0, RCDR2 . . . for subsequent transmission to the remote processor RP. 
     Each recorder control circuit such as RCC0 is uniquely associated with a recorder such as RCDR0 and includes state information which indicates to both encoders the primary-secondary status for the recorder. For this example, we will assume that recorder RCDR0 is primarily associated with encoder E1 and secondarily associated with encoder E0 as indicated by circuit RCC0. Thus, while both encoders check the validity of the data from recorder RCDR0, only encoder E1 buffers the data and then later transmits the data to remote processor RP. 
     When recorder RCDR0 has data, the state of one of its control leads changes, and this change is independently detected by each of the encoders through interrogation of their respective scanners. Each encoder then independently controls its scanner to preliminarily scan the 28 data bits associated with recorder RCDR0 received via cable DC0 which extends to both scanners. Then both encoders independently scan all control leads of RCDR0 leads to determine what action will be required on the data. Then both encoders independently scan the data a second time, logically &#34;OR&#34; the second scan information with the preliminary data and perform the normal one-out-of-three, three-out-of-three or two-out-of-five check on the logical result. Assuming that each encoder has received valid data, then each will provide a check signal to recorder control circuit RCC0 over cables RC0 and Z0 respectively. The check signal from primary encoder E1 passes through circuit RCC0 to recorder RCDR0, and indicates that the data has been successfully received. The check signal from the secondary encoder is also applied to a circuit RCC0 but is blocked in RCC0 from reaching recorder RCDR0. 
     In accordance with an aspect of our invention, each encoder is adapted to detect the presence or absence of the check signal provided by the other encoder. For example, encoder E1 will detect that encoder E0 did provide a check signal to RCC0 via cable RC0, as indicated over cable DC0 to scanner SCN1 and, accordingly, will continue with its normal operations. Encoder E0 will operate similarly to detect whether E1 provided a check signal. The primary encoder E1 will then convert 28 bits of billing data from recorder RCDR0 into binary coded decimal data, append the recorder number and timing information on answer and disconnect entries, store the combined data in its buffer and later transmit the data to remote processor over data link DL1. The buffer memory operates on a first-in first-out basis, so that billing data is transmitted to remote processor RP in the order in which such data was received from the recorders and stored therein. 
     Now assuming that &#34;primary&#34; encoder E1 provided a check signal indicating a line of received data was valid while encoder E0 did not provide this check signal. Secondary encoder E0 would detect the presence of the check signal in encoder E1 and would be aware of its own failure to generate a check signal and in accordance with its program, would presume that it had not received valid data, whereas encoder E1 had received valid data. Encoder E0 would then control the state of logic (not shown in FIG. 1) in recorder control circuit RCC0 to prevent encoder E0 from assuming primary status in regard to recorder RCDR0. 
     Now assume the contrary situation in which encoder E1 did not provide a check signal, whereas encoder E0 did. Since encoder E1 was primary for recorder RCDR0, and failed to provide a check signal, recorder RCDR0 would not receive a check signal indicating this information had been received. The recorder would time out and generate a trouble report in accordance with its normal operations. Then, encoder E1 through scanner SCN1 would detect that encoder E0 had provided a check signal. Encoder E1 would then presume that it was malfunctioning due to internal problems or a malfunction in the leads running from recorder control circuit RCC0 to its scanner SCN1. Accordingly encoder E1 would then alter the state of circuitry (not shown in FIG. 1) in recorder circuit RCC0 which circuitry in turn would change the primary-secondary status of recorder RCDR0 so that encoder E0 would now be primary for this recorder. 
     For subsequent billing data from recorder RCDR0 and from the odd numbered recorders RCDR1, RCDR3 . . . , encoder E0 now transmits the data to the remote processor. However, prior to transmission of such data for RCDR0, the remote processor must be informed of the &#34;switchover&#34; from encoder E1 to E0 so that continuity of billing can be maintained for all calls on the trunks served by recorder RCDR0. Thus, encoder E1 generates a &#34;relinquish&#34; message, places this message in its buffer memory and subsequently transmits it to remote processor RP via data link DL1. This message indicates that recorder RCDR0 is being transferred to encoder E0. Encoder E0 responsive to the new state of the primary-secondary indications in recorder control circuit RCC0 detects that a switch has occurred and it generates an &#34;acceptance&#34; message. This message is placed in its buffer memory BM. To ensure that the relinquish message is received before the acceptance message, the transmission of all information from encoder E0&#39;s buffer memory is inhibited for a predetermined time interval such as 8 seconds. During this time interval, encoder E0 does not send data in response to polling messages from remote processor RP. However, it continues to store in its buffer memory, billing data from all recorders for which it is primary, now including recorder RCDR0. 
     If remote processor RP receives the relinquish message before the acceptance message, then the processing of billing information can be continued in the normal manner with the exception that further billing information pertaining to recorder RCDR0 is now expected over data link DL0. However, if the acceptance message is received before the relinquish message, then the possibility exists that billing data for recorder RCDR0 might have been lost, and accordingly, a disconnect may have gone undetected. The failure to detect this disconnect would mean that a subscriber was being overcharged for a call. To avoid this possibility of misbilling, all potentially affected calls served by recorder RCDR0 are charged only for an initial period or when appropriate no charge is made. 
     Assuming that neither encoder returned check signals for RCDR0, then each encoder would detect that the other recorder had not generated a check signal and each would presume the data itself was invalid and no switch-over would take place. Recorder RCDR0 would time out and generate a trouble report. For subsequent AMA information, both encoders operate in a normal manner. 
     Thus, in accordance with one feature of our invention, each recorder is assigned on a primary-secondary basis to the redundant encoders. Each encoder checks the validity of data from each of the recorders. However, each encoder only transmits data back to the remote processor pertaining to those recorders for which it has primary responsibility. 
     Furthermore in accordance with another aspect of our invention, when the primary encoder detects invalid data or is otherwise incapacitated, and when the secondary encoder returns a check signal indicating that it has received valid data and can process it, the primary encoder generates a change signal in the associated recorder control circuit causing the primary-secondary status of the encoders to be switched. 
     Thus, in accordance with another aspect of our invention, duplicated encoders operating independently share the load in regard to processing billing data from a plurality of recorders on a primary-secondary basis. When the primary encoder detects that it can no longer handle data from a particular recorder, it alters the primary-secondary status indications for only that recorder. Thus, merely because an encoder has difficulty in receiving valid data from a particular recorder, the primary-secondary control indications are not altered for the other recorders. 
     In accordance with still another feature of our invention, the relinquishing encoder transmits a message to the remote processor indicating that a switchover is taking place. The accepting encoder generates an acceptance message; however the accepting encoder inhibits the transmission of all data to the remote processor for a predetermined time so hopefully the relinquish message will arrive at the remote processor before the acceptance message. Thus, the billing for trunks served by the involved recorder can be continued without any billing changes. 
     In accordance with still another aspect of our invention, the relinquish, acceptance, and delay scheme described above is also beneficially utilized in manual changes of the primary-secondary statuses of the encoders. Thus when an encoder is going to be placed out-of-service for routine maintenance, the status indications in the recorder control circuits are manually changed. The other encoder then assumes responsibility for all recorders and no loss of billing revenue is anticipated because relinquish messages for all affected recorders should be received before the corresponding acceptance messages so that the continuity in reception of billing information at the remote processor is not interrupted. 
     DETAILED DESCRIPTION 
     FIG. 3 illustrates the source of data and control information in recorder RCDR0, the circuitry in RCC0 which is operative to transfer the primary-secondary status indications for RCDR0, and the scan point and signal distribute points in both encoders corresponding to recorder control circuit RCC0 and recorder RCDR0. It should be understood that similar circuitry is provided in each of the other recorder control circuits RCC1-RCC10 in FIG. 1 and similar scan and distribute points are provided for each of the other recorders. Each encoder operates independently in regard to each of the recorder control circuits RCC. The scan points and signal distribute points are symbolically shown in FIG. 3. For more details in regard to the circuitry of these points, the above-mentioned Coomer application can be consulted. 
     Since many recorders may be presenting data to the encoders simultaneously, it is necessary for each encoder to time-share its activities among all recorders. Thus, only certain of the encoder tasks will be performed for a given recorder each time the encoder cycles through all the recorders. On subsequent cycles the remainder of the work for that line of data will be accomplished. The time that it takes the encoder to step through all recorders and perform some operations of the total work for each recorder is called a &#34;processor cycle&#34; and is nominally 7 milliseconds. Breaking up the work in this manner requires that each encoder keep track of which task was performed for a recorder on any given processor cycle so that on the next processor cycle it will know the work that must then be done. The encoder program performs this bookkeeping function by assigning &#34;progress marks&#34; to the various tasks. The program then keeps track of which progress marks should be entered on each processor cycle. There are five progress marks, i.e., the IDLE PROGRESS mark, the CHECK PROGRESS mark, the WAIT1 PROGRESS mark, the WAIT2 PROGRESS mark and the TROUBLE PROGRESS mark. Each of these will be described in more detail in subsequent paragraphs. 
     Turning now to FIG. 3, it will be assumed that initially encoder E1 is primary for recorder RCDR0 and encoder E0 is secondary and no data is present in RCDR0. This primary-secondary relationship is initially established manually by setting the open or closed state of contact RUNSW also known as the RUN switch. When RUN switch (contact) is closed, current flows from ground through closed contact OK1-1, closed contact RUNSW and through relays PA, PB and PC to negative battery. Each of these relays is energized, operating corresponding sets of contacts. For example, relay PC operates so that contact PC-1 closes and contact PC-2 opens. Current flows from ground through closed contact PC-1 and diode RUN1 to negative battery, which is -48 volts. This diode is of a light-emitting variety and accordingly, a visible indication is given that encoder E1 is primary because diode RUN1 is lit. If encoder E0 were primary, then contact PC-2 would be closed because relay PC is not activated (RUN switch is open) and accordingly, the RUN0 diode would give a visible indication. Assuming again that E1 is primary, relay PA operates to close contact PA-2 and open contact PA-1. As described below, this allows only a check signal from encoder E1 to be transmitted to the check relay CK in recorder RCDR0. When this CK relay operates it indicates to the recorder that it should progress to its next line of billing information. The operation of relay PB closes contact PB-1 and opens contact PB-2. Thus, lead LP0 assumes a voltage of -48 because it is connected to source NB1 via lead ZA. Lead LP1 floats around -48 because it is connected to negative battery in the associated scan points. Leads LP0 and LP1 are applied to scan points in each of the encoders (DISP0 and P0SP0 in SCN0 and P0SP1 and P1SP1 in SCN1 respectively) and the states of these leads in combination indicates to the encoders their primary-secondary relationship for recorder RCDR0. This will be described in greater detail hereinafter. 
     IDLE PROGRESS MARK 
     When no data is present in recorder RCDR0, relay PTC and relay PTS (not shown) are normal; this causes lead LPTC not to be grounded and signal present relay SP remains not operated and accordingly, lead LSP is not grounded. Each of the scanners scans its scan point SPSP which is associated with lead LSP and detects that this lead is not grounded and each encoder thereby determines that no data is present in RCDR0. This forces the encoder program to enter an IDLE PROGRESS mark wherein the following audits are made to ensure valid control leads. A check is made to ensure that the SPSP scan point is not grounded while either scan points P0SP --  or P1SP --  is at ground. This check detects a faulty SPSP scan point. If a check fails for 8 consecutive processor cycles, the TROUBLE PROGRESS mark is entered. 
     Each encoder E0 and E1 provides an indication of its own sanity via contacts CRUN0 and CRUN1 respectively. These contacts respectively control relays 0K0 and 0K1. During each processor cycle, numerous self-checks are made between the results of the microprocessors in each encoder. Such checks include internal matches, bus matches, timing checks to detect that certain timing indications are met and numerous other such diagnostic tests. These tests are described in great detail in the above-mentioned Coomer application and serve to control a STOP flip-flop (not shown) if a fault is detected. The detection of such a major fault affecting all recorders will cause the encoder to release its CRUN --  contact which in turn releases the associated OK --  relay. For example, if encoder E0 detects a bus mismatch between results of microprocessors 0A and 0B, relay 0K0 is released. As mentioned hereinafter, relay 0K0 may also be released when encoder E0 determines that it has received invalid data from a particular recorder while the other encoder has received valid data, and a &#34;switchover&#34; is needed. 
     Also during the IDLE PROGRESS mark, the state of lead LON in FIG. 3 is verified to ensure that it is not grounded. This lead is monitored to indicate how long recorder RCDR0 has been continuously busy. If calls are stacked up for this recorder, contact ON1 will remain essentially closed (except for approximately 100 ms open periods). As described hereinafter, this LON lead is monitored to generate an indication of the maximum possible time that a trunk was waiting to seize recorder RCDR0. This time interval is then subtracted from each disconnect entry for trunks served by that recorder so that a subscriber will not be charged for the time interval required for the disconnect to be recorded. This is one of the thrusts of the invention described in the above-mentioned R. B. Curtis et al application. In the billing data transmitter this timing is performed under software control rather than using the various timers ITM1-ITM4 in the Curtis et al application; however, the concept is identical. 
     The encoder program will continue entering the IDLE PROGRESS mark on every processor cycle until a line of data is presented by a recorder. When data is present, contact PTS will close supplying an operate path to relays PTC and SP. Relay SP, a mercury relay, will operate prior to relay PTC. Contact SP-1 closes and thereafter contact PTC-1 closes applying ground potential to lead LSP. This ground potential is detected at scan points SPSP in each of the scanners SCN0 and SCN1. Each encoder will then independently execute the following sequence. The digit leads from the recorder will be scanned and stored. These digit leads are shown as leads LA0, LA1, . . . LF7 in FIG. 3. As previously mentioned, these data leads utilize the format illustrated in FIG. 2. The various data leads will either be at -48 volts or at ground depending upon whether the respective relays A0, A1 . . . F7 are operated or not operated. For example, if relay A0 is operated, then contact A0 will close, applying ground to lead LA0 via contact PR1. A separate scan point is provided in each scanner corresponding to each of the data leads. For example, with reference to scanner SCN0, scan point A0SP0 monitors lead LA0 and in scanner SCN1, scan point A0SP1 monitors lead LA0. Recorder RCDR0 in addition to the data leads also includes a plurality of control leads which indicate the type of call that is involved and what kind of entry is required. For example, lead LON, as mentioned previously, indicates how long recorder RCDR0 has been continuously busy and leads LMTP, LHP and LAT each indicates various types of test calls in which no data is sent to the remote processor. These last three test indications are monitored over a single lead LCMTP. Lead LIP is grounded for initial entries in normal calls, and lead LTP is grounded for answer and disconnect entries for normal calls. These last two leads are monitored via scan points associated with lead LTPIP. Lead LTN when grounded indicates that this recorder has been manually transferred to the emergency recorder. When an encoder detects a start indication for the emergency recorder (SPSP scan point for RCDREMG), it scans all the TN leads to detect which recorder is out-of-service. The program substitutes the identity of the out-of-order recorder for the emergency recorder in all billing data handled by the emergency recorder so that the remote processing unit does not have to contend with transfers between recorders and the emergency recorder. 
     Each encoder then checks the master timer preference and transverter or indexer preference over leads LCMTP and LTPIP respectively. Only one of these two leads should be grounded because either a test call is indicated or a regular call is indicated, but not both. Each encoder also checks its P0SP --   and PISP --  scan points for a one-out-of-two indication. One of these scan points should be at ground potential while the other one is at negative battery. As mentioned previously when the P1SP --  scan point for a particular encoder is grounded, this indicates to that encoder that it has primary responsibility for the particular recorder. For example, when encoder E1 is primary for RCDR0, the PA, PB and PC relays are operated and lead LP1 is grounded via closed contact PB-1, lead LPTC and closed contacts PTS and TEC to ground. Moreover, lead CP0 is at a potential of -48 because contact PB-2 is open. Thus for encoder E1 scan point P1SP1 is at ground, while scan point P0SP1 is at -48 volts. In contrast, scan point P1SP0 in encoder E0 is at negative 48 volts while scan point P0SP0 is at ground. Since scan point P0SP0 is at ground potential, this indicates to encoder E0 that it has a secondary relationship to recorder RCDR0. 
     If either of the above two checks regarding the control leads fails, the encoder detecting this failure enters the TROUBLE PROGRESS mark on the next processor cycle. If the control leads passed the check, the encoder enters the CHECK PROGRESS mark on the next processor cycle. It will be assumed that these control leads pass the checks. 
     CHECK PROGRESS MARK 
     When an encoder enters the CHECK PROGRESS mark, it rescans the billing information over leads LA0-LE7 and logically ORs this information with the results previously stored from the first scan. A two-out-of-five check is then performed on each of the digits B-F, while a one-out-of-three or three-out-of-three check is made on the A digit. If the check passes, the encoder operates its DCK --  contact to provide a checkback signal to the recorder. For example, ground is applied through closed contacts DOK1, CRUN1 and DCK1 to lead LCK1, and through closed contact PA-2 to operate the relay CK in recorder RCDR0. The operation of relay CK indicates to the recorder that the present line of data has been successfully received. Assuming that encoder E0 also found the line of data to be valid, it will also apply a check signal back toward recorder RCDR0. This check signal on lead LCK0 is inhibited from reaching the recorder by open contact PA-1. If the data was valid, the encoder enters the WAIT1 PROGRESS mark on the next processor cycle. 
     If the check fails, the failing encoder checks the status of its SPSP scan point to determine what further action should be taken. Assuming that encoder E1 detected invalid data and did therefore not close contact DCK1 and, a check signal was not returned to recorder RCDR0. If encoder E1 now finds that the SPSP scan point is still grounded, indicating the recorder is still presenting data, encoder E1 will continue to enter the CHECK PROGRESS mark on the subsequent processor cycles. Because encoder E1 is assigned as primary for this recorder, the check signal will not be returned, and the PTC timer (not shown) in recorder RCDR0 will time out, causing a trouble record to be taken. After the trouble record is taken, ground will no longer be applied on lead LPTC and, accordingly, the SP relay will release and scan points SPSP will no longer be at ground potential because contact SP-1 opens. 
     Encoder E1 must now determine if the check failure was caused by invalid data from the recorder or if the error was only associated with the operation of encoder E1. To accomplish this, encoder E1 checks the status of scan point CKOSP which monitors whether a check signal was returned by encoder E0. Assuming that lead LCK0 is at ground, indicating that encoder E0 successfully received valid data from RCDR0, scan point CKOSP would so indicate. Encoder E1 then assumes that its own circuits have failed. Encoder E1 then releases relay OK1 by opening contact DOK1. As mentioned previously relay OK1 is operated only as long as encoder E1 believes that it can handle information from recorder RCDR0. The release of relay OK1 closes contacts OK1-2 and current flows through light-emitting diode FAIL1, thereby visibly indicating that encoder E1 has failed with regard to recorder RCDR0. Contact OK1-1 opens removing the prior ground path for the PA, PB, and PC relays through closed contact RUNSW, assuming lead LPTC is not grounded. Accordingly, the PA, PB, and PC relays release to thereby transfer the primary and secondary indications for this recorder. To elaborate contact PC-2 closes. Diode RUN0 provides a visible indication that encoder E0 is now primary. Contact PC-1 opens extinguishing light-emitting diode RUN1. Contact PA-1 closes and PA-2 opens so that the check signal from encoder E0 will now be returned to CK relay. Contact PB-2 closes and PB-1 opens so that neither leads LP1 or LP0 is grounded because lead LPTC is not grounded. However, when lead LPTC is grounded indicating that new billing information is present in RCDR0, lead LP0 will be grounded. Accordingly, scan point P1SP0 in encoder E0 will be at ground potential indicating that this encoder is primary and scan point P0SP1 in encoder E1 will be at ground potential indicating this encoder is secondary. After encoder E1 released distribute point DOK1 as described previously, it enters the WAIT2 PROGRESS mark in the next processor cycle. 
     If encoder E0 did not return a check signal either in the above example, encoder E1 assumes that the fault exists in the recorder and directly enters the WAIT2 PROGRESS mark during this processor cycle. 
     The table below summarizes the various failure combinations based upon the then existing primary-secondary relationships of the encoder for a given recorder and further summarizes the actions taken. 
     
         __________________________________________________________________________State of                  P1SP0 Scan                             P1SP1 ScanPA, PB, PC  Failure         RCC         Point of                             Point ofRelays Encountered         Action      ENCODER E0                             ENCODER E1__________________________________________________________________________  Encoder E0         Light Fail 0                     Remains Not                             Remains  Fails              Grounded                             GroundedOperated  Encoder E1         Light Fail 1 and                     Becomes Becomes Not(Encoder 1  Fails  Release PA-PC                     Grounded                             Groundedis            Relays so thatPrimary)      Encoder 0 is         Primary__________________________________________________________________________  Encoder E0         Light Fail 0 and                     Becomes not                             Becomes  Fails  Operate PA-PC                     Grounded                             GroundedNot           Relays so thatOperated      Encoder 1 is primary(Encoder 0is     Encoder E1         Light Fail 1                     Remains Remains NotPrimary)  Fails              Grounded                             Grounded__________________________________________________________________________ 
    
     The WAIT1 PROGRESS MARK 
     The WAIT1 PROGRESS mark is entered when an RCDR0, successfully checks the data as described previously in regard to the CHECK PROGRESS mark. On subsequent processor cycles for this recorder, the encoder continues to enter this progress mark until the SPSP scan point is no longer at ground potential. This will occur when the recorder&#39;s CK relay is successfully operated by a check signal from the primary encoder (assume E1) and the data input from the recorder has been released. The encoder will then release its check distribute point DCK -- . Encoder E1, since it is primary for recorder RCDRO, loads the data into its buffer in binary coded decimal format and then returns to the IDLE PROGRESS mark. Encoder E1 is then ready to process a new line of data. Encoder E0, after releasing its distribute point DCK0 also returns to the IDLE PROGRESS mark, but as described previously does not buffer the information for subsequent transmission to the remote processor. 
     The WAIT2 PROGRESS MARK 
     The WAIT2 PROGRESS mark is entered each time an encoder detects that an invalid line of data has been received from a recorder, as previously described in regard to the CHECK PROGRESS mark. This WAIT2 PROGRESS mark is always entered on one processor cycle and exited on the next cycle, thereby merely producing a delay before entering the next progress mark. In leaving the WAIT2 PROGRESS mark, the encoder will flag the data received as invalid, place it in its buffer if the encoder is primary and then enter the IDLE PROGRESS mark. The encoder is then ready to accept a new line of data from RCDR0, and operates in accordance with the now existing primary-secondary status indications. 
     THE TROUBLE PROGRESS MARK 
     The TROUBLE PROGRESS mark is entered whenever there has been a control lead failure in the IDLE PROGRESS mark, as described above, or when there is an audit failure of the SPSP scan point and the scan point associated with lead LON during the CHECK PROGRESS mark or during the WAIT2 PROGRESS mark. This audit failure is caused by a condition whereby the SPSP scan point is at a ground potential while the scan point associated with lead LON is not at a ground condition. When this condition occurs, the encoder assumes that the SPSP scan point is stuck at a ground condition and reenters the TROUBLE PROGRESS mark. The encoder will enter the TROUBLE PROGRESS mark on all subsequent progress cycles until the SPSP scan point returns to its nongrounded state. It will then enter the IDLE PROGRESS mark in the next processor cycle and will be ready to process a new line of data. 
     MESSAGE GENERATION INFORMING REMOTE PROCESSOR OF SWITCHOVER 
     When encoder E1 detected that it had received invalid data, but encoder E0 had received valid data, the primary-secondary status of the encoders was switched for RCDR0 after encoder E1 released relay OK1 during the CHECK PROGRESS mark, as described above. Then encoder E1 entered the WAIT2 PROGRESS mark for one cycle and then returned to the IDLE PROGRESS mark to receive new data from RCDR0. All subsequent data for recorder RCDR0 will be conveyed by encoder E0 to the remote processor rather than by encoder E1 as was done previously because of switchover in primary-secondary indications in RCC0. Remote processor RP in FIG. 1 must be advised of this switch in encoders to maintain the continuity of billing information for all the 100 trunks served by recorder RCDR0. To accomplish this, encoder E1 detects that the state of its P1SP1 and P0SP1 scan points have switched states, and encoder E1 now recognizes its secondary status. Accordingly, it generates a relinquish message which is loaded into buffer memory, and subsequently transmitted over data link DL1 to remote processor RP in the normal data sequence because buffer memory is controlled to operate on a first-in first-out basis. This relinquish message indentifies recorder RCDR0 and indicates that encoder E1 is no longer transmitting the data received from recorder RCDR0. 
     Encoder E0 also detects the reversal in states of its scan points P0SP0 and P1SP0 and realizes it now has primary responsibility for encoder RCDR0. Encoder E0 then generates an acceptance message and places this message in its buffer memory BM. However, in accordance with its stored program, it then inhibits the transmission of any data from its buffer memory to the remote processor and replies &#34;no data&#34; to all polling messages from the remote processor. At the end of a predetermined time interval, of approximately 8 seconds (based on size of buffer memory and rate of transmission), normal transmission between the remote processor and encoder E0 is continued. 
     The remote processor should receive the relinquish message before the acceptance message. Thus the remote processor realizes that all subsequent information for recorder RCDR0 will be received over data link DL0 rather than DL1 and can maintain the proper sequential relationship for the incoming billing data for this recorder. It is anticipated that the remote processor will serve numerous billing data transmitters, and will include normal multiplexing and demultiplexing apparatus for sending and receiving messages in regard to the billing data transmissions. 
     If the acceptance message arrives before the relinquish message, then a discontinuity in data reception may have occurred and accordingly, billing for the trunks served by this recorder must be modified to prevent any possibility of overbilling. The latter condition could occur where the relinquishing encoder went insane and was stopped to inhibit the mutilation of data. In this situation, the relinquish message may never be sent to remote processor and accordingly the answer billing alterations will have to be made. 
     MANUAL SWITCHOVER OF ENCODERS 
     The transfer of one or more recorders from one encoder to the other can also be accomplished manually without the loss of any billing data. Assuming now that encoder E0 is primary, contact RUNSW would be open and relays PA, PB, and PC would not be operated. Assuming that the malfunction in encoder E1 had been corrected, its OK1 relay would be operated as would the OK0 relay associated with encoder E0. Assuming that the craft person wanted to return a recorder RCDR0 to its normal primary association with encoder E1, he or she would merely close switch RUNSW which would operate the PA, PB, and PC relays, and accordingly would change the application of ground potential to the LP1 and LP0 leads when lead LPTC was grounded. Each of the encoders would detect the change of these leads via their scanners and thereby the new primary-secondary relationship. Encoder E0 would generate a relinquish message since its status was changed from primary to secondary, and this message would be subsequently transmitted to the remote processor. Encoder E1 would generate an acceptance message because its status had changed from secondary to primary, and would then place this message in its buffer memory and then inhibit the transmission of all messages to the remote processor for the predetermined time interval. Thus, the continuity of billing information for recorder RCDR0 would be maintained during normal maintenance action by craft persons and accordingly no revenue loss would result.