Investigating resets on 528 mic stations and Titan frames.

Investigating 528 and Titan frame soft resets.

528 mic stations and Titan frame devices come preconfigured with a list of Cobranet errors that the device will monitor.  If any of these errors persist for X polls in a row, then the firmware will soft reset the device.  Below is a description of the default reset criteria and a list of properties pertinent to determining the cause of the last soft reset.


Error Reset Criteria:

The preconfigured error reset criteria is an array of bytes found in the Cobranet Interface object.  The default array contains the following bytes:

{$01, $00, $04, $F0, $20, $21, $22, $2D, $2F, $F4, $00, $00}

1. The first 3 bytes of the criteria are combined ($040001) to check against the
   24-bit Error Indicators.
    a. $000001 = Fault
    b. $040000 = Unexpected System Error

2. $F0 is a special criteria byte indicating that the next series of non-special
   bytes should be checked against the Error Display Code.

           Code        Desc                                   Expected Condition        ----------------------------------------------------------------------------
    a.    $20 (32)    DSP Cycles exhausted            Broadcast Storm
    b.    $21 (33)    Rx Storm                             Loop in network
    c.    $22 (34)    Beat Flood                           Multiple Conductors
    d.    $2D (45)    Too many ctrl packets           Excessive broadcast traffic
    e.    $2F (47)    Receive packets backlogged    Excessive broadcast traffic

3. $F4 is a special criteria byte indicating that the SysUptime should be checked.


Diagnosing the cause of the last soft reset:

1.  Pertinant Properties:
     A. Device Manager (object 0)
        1. 2p103 - DSP Error Count
        2. 2p104 - DSP Error Code
        3. 2p105 - Task Fault Flags

            From I24 Appendix A.2.d
            MAIN_TASK_FAULT            0x0002
            ENET_TASK_FAULT            0x0004
            CAN_TASK_FAULT             0x0008
            COBRANET_TASK_FAULT     0x0010
            USNET_RX_TASK_FAULT     0x0020
            TIM_BUFFERS_FAULT         0x0100

            USSW_TASK_FAULT           0x2000
            TASK_CHECK_IN_FAULT      0x4000
            TASK_SOFT_RESET           0x8000 (Could be Cobrnet Interface).

        4. 2p106 - Reset Count

     B. CobraNet Interface (Object 60050)
         1. 3p25 - Last Error Indicators (32 bits).
            a. Most significant byte represents the "Read Error Code". (These are error
                communicating with the Cobranet module.)
                Read Error Codes (From I24 Appendix B.7.c)
                 Desc               Decimal    Hex
                cERR_NO_ERROR    0          00
                cERR_MUTE          1          01
                cERR_DAWG          2          02
                cERR_TRDY           3          03
                cERR_HF2High       4          04
                cERR_HF2Low        5          05
                cERR_RXDF           6          06
                cERR_TXDE           7          07
                cERR_HOST           8          08
                cERR_MEMORY       9          09
                cERR_SIZE           10          0A
                cERR_BAD_TYPE    11          0B
                cERR_TIMEOUT     12          0C
                cERR_HREQ_HIGH   13         0D
                NE_TX_NOT_IDLE   -2         FE
                NE_BUFFER_OVR    -3         FD
                NE_MEM               -4         FC
                NE_QUEUE_FULL    -5         FB

            b. Low 3 bytes represent the Cobranet Error Indicators.

                (I24 Appendix B.7.a)

                HexValue       Condition
                000001         Fault
                000004         Receive Error
                000008         Transmit Error
                010000         Audio Mute (audio output may be corrupt)
                020000         BuddyLink output disabled
                040000         Unexpected System Error


         2. 3p26 - Last Error Code (32 bits).
            The lower 3 bytes are the Error Display and the High Byte is the Error Code
            at the time of the last reset. If the CobraNet variable could not be read,
            this property will be 0xffffffff.  A complete list of error codes can be
            found in the Cobranet Data Sheet file.  An abbreviated list of error codes
            pertinant to IED can be found in the I24 Appendix B.7.b.

        3. 3p27 - Reset Count

2. Using the pertinant properties to diagnose the reset.
    A. Check the DevMgr 2p106 Reset Count.  If non-zero, check the Task
        Fault Flags (2p105). If task faults indicate a "soft reset",
        then the reset could have been due to a Cobranet Reset
        Criteria or communication with the Cobranet Module.
        Move to "B".
    B. Check the Cobranet interface reset count (3p27).  If non-zero,
        check the check and decipher Last Error Indicators (3p25)
        and Last Error Code (3p26).

Note: A cold boot or writing to any of the "Reset Count" properties should
    clear the values.