8.11.2.1 Unsolicited Response Configuration/Startup (revision 2.7, subset level 2)

Device under test: Step Function I/O dnp3 outstation

10:58:01.520 Running procedure: 8.11.2.1
10:58:01.523 This procedure is enabled because the following options:
10:58:01.523 - supports.unsolicitedResponse == true
10:58:01.523 step: 1
10:58:01.523 - Verify that offline configuration can enable or disable unsolicited responses
10:58:01.523 - Configure the unsolicited response mode to 'true'
10:58:01.523 [PLG] Unsolicited responses were enabled
10:58:01.523 [PLG] Cycling power
10:58:01.524 step: 2
10:58:01.524 - Not verified by this tool: that offline configuration can set the unsolicited confirmation timeout from 1 second or less to 1 minute or more
10:58:01.524 step: 3
10:58:01.524 - Set the unsolicited confirmation timeout to 2000 milliseconds (to follow the test spec, prefer 5 seconds in the configuration)
10:58:01.524 [PLG] Confirm timeout, for solicited and unsolicited responses, was set to 2000 ms
10:58:01.524 [PLG] Cycling power
10:58:01.525 step: 4
10:58:01.525 - Verify that offline configuration can set the destination master address for unsolicited responses
10:58:01.525 - Configure the DUT to transmit unsolicited responses to master address 2
10:58:01.525 [PLG] Master address was set to 2
10:58:01.525 [PLG] Cycling power
10:58:01.525 step: 5
10:58:01.525 - Cycle power to the DUT
10:58:01.525 [PLG] Cycling power
10:58:01.526 step: 6
10:58:01.526 - Read an unsolicited response
10:58:01.526 - Verify that the response is empty
10:58:01.526 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:58:01.527 <-P-- 05 64 0A 44 02 00 00 04 26 82
10:58:01.527 C0 F0 82 90 00 43 A2
10:58:01.527 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 2 src: 1024
10:58:01.527 <-T-- fir: 1 fin: 1 seq: 0
10:58:01.527 <-A-- Unsolicited Response(0x82) fir: 1 fin: 1 con: 1 uns: 1 seq: 0x00 IIN(DeviceRestart, NeedTime)
10:58:01.527 step: 7
10:58:01.527 - Configure the DUT to transmit unsolicited responses to master address 1
10:58:01.527 [PLG] Master address was set to 1
10:58:01.527 [PLG] Cycling power
10:58:01.528 step: 8
10:58:01.528 - Cycle power to the DUT
10:58:01.528 [PLG] Cycling power
10:58:01.529 steps: 9 to 14
10:58:01.529 - Read an unsolicited response
10:58:01.529 - Verify that the IIN field contains IIN(DeviceRestart)
10:58:01.529 - Verify that the response is empty
10:58:01.529 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:58:01.529 - Leave the response unconfirmed for now
10:58:01.529 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:58:01.529 C0 F0 82 90 00 43 A2
10:58:01.529 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:58:01.530 <-T-- fir: 1 fin: 1 seq: 0
10:58:01.530 <-A-- Unsolicited Response(0x82) fir: 1 fin: 1 con: 1 uns: 1 seq: 0x00 IIN(DeviceRestart, NeedTime)
10:58:01.530 steps: 15 to 18
10:58:01.530 - Expect a retry 2000 ms (+/- 500 ms) after the previous unsolicited response
10:58:01.530 - Verify that the IIN field contains IIN(DeviceRestart)
10:58:01.530 - Verify that the response is empty
10:58:01.530 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:58:01.530 - Expect a retry 2000 ms (+/- 500 ms) after the previous unsolicited response
10:58:01.530 - Verify that the IIN field contains IIN(DeviceRestart)
10:58:01.530 - Verify that the response is empty
10:58:01.530 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:58:03.531 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:58:03.532 C1 F1 82 90 00 AD 43
10:58:03.532 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:58:03.532 <-T-- fir: 1 fin: 1 seq: 1
10:58:03.532 <-A-- Unsolicited Response(0x82) fir: 1 fin: 1 con: 1 uns: 1 seq: 0x01 IIN(DeviceRestart, NeedTime)
10:58:05.533 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:58:05.533 C2 F2 82 90 00 E6 2C
10:58:05.533 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:58:05.533 <-T-- fir: 1 fin: 1 seq: 2
10:58:05.533 <-A-- Unsolicited Response(0x82) fir: 1 fin: 1 con: 1 uns: 1 seq: 0x02 IIN(DeviceRestart, NeedTime)
10:58:05.533 step: 19
10:58:05.533 - Write(0x02) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x00
10:58:05.533 - g80v1, 1-Byte Start/Stop, start: 7 stop: 7
10:58:05.533 - [7] - BooleanValue(false)
10:58:05.533 --A-> Write(0x02) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x00
10:58:05.533 g80v1, 1-Byte Start/Stop, start: 7 stop: 7
10:58:05.533 [7] - BooleanValue(false)
10:58:05.533 --T-> fir: 1 fin: 1 seq: 0
10:58:05.533 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 14 dest: 1024 src: 1
10:58:05.533 --P-> 05 64 0E C4 00 04 01 00 43 72
10:58:05.533 C0 C0 02 50 01 00 07 07 00 2C 49
10:58:05.534 step: 20
10:58:05.534 - Read a single fragment response w/ sequence(0x00)
10:58:05.534 - Verify that the response is empty
10:58:05.534 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:58:05.534 - Verify that the IIN field does not contain bits IIN(DeviceRestart)
10:58:05.534 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:58:05.534 C3 C0 81 10 00 BE 52
10:58:05.534 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:58:05.534 <-T-- fir: 1 fin: 1 seq: 3
10:58:05.534 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x00 IIN(NeedTime)
10:58:05.534 steps: 21 to 22
10:58:05.534 - Expect a retry 2000 ms (+/- 500 ms) after the previous unsolicited response
10:58:05.534 - Verify that the response is empty
10:58:05.534 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:58:05.534 - Verify that the IIN field does not contain bits IIN(DeviceRestart)
10:58:07.534 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:58:07.534 C4 F3 82 10 00 35 3F
10:58:07.534 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:58:07.534 <-T-- fir: 1 fin: 1 seq: 4
10:58:07.534 <-A-- Unsolicited Response(0x82) fir: 1 fin: 1 con: 1 uns: 1 seq: 0x03 IIN(NeedTime)
10:58:07.534 step: 23
10:58:07.534 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:58:07.534 - g60v1, All Objects
10:58:07.534 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:58:07.535 g60v1, All Objects
10:58:07.535 --T-> fir: 1 fin: 1 seq: 0
10:58:07.535 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:58:07.535 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:58:07.535 C0 C1 01 3C 01 06 F9 73
10:58:07.535 step: 24
10:58:07.535 - The DUT may defer its response until the startup unsolicited response is confirmed or its confirm timeout expires, so wait up to 4500 ms for it (the response timeout, the unsolicited confirm timeout and 500 ms)
10:58:07.535 - Read any number of valid responses beginning w/ sequence(0x01) and incrementing by 1 modulo 16
10:58:07.535 - Confirm each response that asks for a confirmation
10:58:09.536 <-P-- 05 64 E0 44 01 00 00 04 70 7A
10:58:09.536 C5 C1 81 10 00 01 01 01 00 00 0B 00 00 00 0A 02 85 F0
10:58:09.536 01 00 00 13 00 01 01 01 01 01 01 01 01 01 01 01 96 07
10:58:09.536 01 01 01 01 01 01 01 01 01 14 02 01 00 00 09 00 26 7E
10:58:09.536 01 00 00 01 00 00 01 00 00 01 00 00 01 00 00 01 FE 85
10:58:09.536 00 00 01 00 00 01 00 00 01 00 00 01 00 00 15 02 85 CD
10:58:09.536 01 00 00 09 00 01 00 00 01 00 00 01 00 00 01 00 B6 06
10:58:09.536 00 01 00 00 01 00 00 01 00 00 01 00 00 01 00 00 9E 0F
10:58:09.536 01 00 00 1E 02 01 00 00 09 00 01 00 00 01 00 00 0A 10
10:58:09.536 01 00 00 01 00 00 01 00 00 01 00 00 01 00 00 01 FE 85
10:58:09.536 00 00 01 00 00 01 00 00 28 02 01 00 00 13 00 01 EF FE
10:58:09.536 00 00 01 00 00 01 00 00 01 00 00 01 00 00 01 00 DB 49
10:58:09.536 00 01 00 00 01 00 00 01 00 00 01 00 00 01 00 00 9E 0F
10:58:09.536 01 00 00 01 00 00 01 00 00 01 00 00 01 00 00 01 FE 85
10:58:09.536 00 00 01 00 00 01 00 00 01 00 00 61 8D
10:58:09.536 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 224 dest: 1 src: 1024
10:58:09.536 <-T-- fir: 1 fin: 1 seq: 5
10:58:09.537 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01 IIN(NeedTime)
10:58:09.537 g1v1, 2-Byte Start/Stop, start: 0 stop: 11
10:58:09.537 [0] - BooleanValue(false)
10:58:09.537 [1] - BooleanValue(false)
10:58:09.537 [2] - BooleanValue(false)
10:58:09.537 [3] - BooleanValue(false)
10:58:09.537 [4] - BooleanValue(false)
10:58:09.537 [5] - BooleanValue(false)
10:58:09.537 [6] - BooleanValue(false)
10:58:09.537 [7] - BooleanValue(false)
10:58:09.537 [8] - BooleanValue(false)
10:58:09.537 [9] - BooleanValue(false)
10:58:09.537 [10] - BooleanValue(false)
10:58:09.537 [11] - BooleanValue(false)
10:58:09.537 g10v2, 2-Byte Start/Stop, start: 0 stop: 19
10:58:09.537 [0] - flags: 0x01
10:58:09.537 [1] - flags: 0x01
10:58:09.537 [2] - flags: 0x01
10:58:09.537 [3] - flags: 0x01
10:58:09.537 [4] - flags: 0x01
10:58:09.537 [5] - flags: 0x01
10:58:09.537 [6] - flags: 0x01
10:58:09.537 [7] - flags: 0x01
10:58:09.537 [8] - flags: 0x01
10:58:09.537 [9] - flags: 0x01
10:58:09.537 [10] - flags: 0x01
10:58:09.537 [11] - flags: 0x01
10:58:09.537 [12] - flags: 0x01
10:58:09.537 [13] - flags: 0x01
10:58:09.537 [14] - flags: 0x01
10:58:09.537 [15] - flags: 0x01
10:58:09.537 [16] - flags: 0x01
10:58:09.537 [17] - flags: 0x01
10:58:09.537 [18] - flags: 0x01
10:58:09.537 [19] - flags: 0x01
10:58:09.537 g20v2, 2-Byte Start/Stop, start: 0 stop: 9
10:58:09.537 [0] - flags: 0x01 count: 0
10:58:09.537 [1] - flags: 0x01 count: 0
10:58:09.537 [2] - flags: 0x01 count: 0
10:58:09.537 [3] - flags: 0x01 count: 0
10:58:09.537 [4] - flags: 0x01 count: 0
10:58:09.537 [5] - flags: 0x01 count: 0
10:58:09.537 [6] - flags: 0x01 count: 0
10:58:09.537 [7] - flags: 0x01 count: 0
10:58:09.537 [8] - flags: 0x01 count: 0
10:58:09.537 [9] - flags: 0x01 count: 0
10:58:09.537 g21v2, 2-Byte Start/Stop, start: 0 stop: 9
10:58:09.537 [0] - flags: 0x01 count: 0
10:58:09.537 [1] - flags: 0x01 count: 0
10:58:09.537 [2] - flags: 0x01 count: 0
10:58:09.537 [3] - flags: 0x01 count: 0
10:58:09.537 [4] - flags: 0x01 count: 0
10:58:09.537 [5] - flags: 0x01 count: 0
10:58:09.537 [6] - flags: 0x01 count: 0
10:58:09.537 [7] - flags: 0x01 count: 0
10:58:09.537 [8] - flags: 0x01 count: 0
10:58:09.537 [9] - flags: 0x01 count: 0
10:58:09.537 g30v2, 2-Byte Start/Stop, start: 0 stop: 9
10:58:09.537 [0] - flags: 0x01 value: 0
10:58:09.537 [1] - flags: 0x01 value: 0
10:58:09.537 [2] - flags: 0x01 value: 0
10:58:09.537 [3] - flags: 0x01 value: 0
10:58:09.537 [4] - flags: 0x01 value: 0
10:58:09.537 [5] - flags: 0x01 value: 0
10:58:09.537 [6] - flags: 0x01 value: 0
10:58:09.537 [7] - flags: 0x01 value: 0
10:58:09.537 [8] - flags: 0x01 value: 0
10:58:09.537 [9] - flags: 0x01 value: 0
10:58:09.537 g40v2, 2-Byte Start/Stop, start: 0 stop: 19
10:58:09.537 [0] - flags: 0x01 value: 0
10:58:09.537 [1] - flags: 0x01 value: 0
10:58:09.537 [2] - flags: 0x01 value: 0
10:58:09.537 [3] - flags: 0x01 value: 0
10:58:09.537 [4] - flags: 0x01 value: 0
10:58:09.537 [5] - flags: 0x01 value: 0
10:58:09.537 [6] - flags: 0x01 value: 0
10:58:09.537 [7] - flags: 0x01 value: 0
10:58:09.537 [8] - flags: 0x01 value: 0
10:58:09.537 [9] - flags: 0x01 value: 0
10:58:09.537 [10] - flags: 0x01 value: 0
10:58:09.537 [11] - flags: 0x01 value: 0
10:58:09.537 [12] - flags: 0x01 value: 0
10:58:09.537 [13] - flags: 0x01 value: 0
10:58:09.537 [14] - flags: 0x01 value: 0
10:58:09.537 [15] - flags: 0x01 value: 0
10:58:09.537 [16] - flags: 0x01 value: 0
10:58:09.537 [17] - flags: 0x01 value: 0
10:58:09.537 [18] - flags: 0x01 value: 0
10:58:09.537 [19] - flags: 0x01 value: 0
10:58:09.537 The answer to the READ arrived 2002 ms after the unconfirmed unsolicited response, whose confirm timeout is 2000 ms
10:58:09.537 steps: 25 to 26
10:58:09.537 - Expect a retry 2000 ms (+/- 500 ms) after the previous unsolicited response
10:58:09.537 - Verify that the response is empty
10:58:09.537 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:58:09.537 - Answer a response that asks for a confirmation with a confirmation of the wrong sequence number
10:58:09.537 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:58:09.537 C6 F4 82 10 00 53 AF
10:58:09.537 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:58:09.537 <-T-- fir: 1 fin: 1 seq: 6
10:58:09.538 <-A-- Unsolicited Response(0x82) fir: 1 fin: 1 con: 1 uns: 1 seq: 0x04 IIN(NeedTime)
10:58:09.538 --A-> Confirm(0x00) fir: 1 fin: 1 con: 0 uns: 1 seq: 0x05
10:58:09.538 --T-> fir: 1 fin: 1 seq: 0
10:58:09.538 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 8 dest: 1024 src: 1
10:58:09.538 --P-> 05 64 08 C4 00 04 01 00 9A 19
10:58:09.538 C0 D5 00 9F D5
10:58:09.538 steps: 27 to 28
10:58:09.538 - Expect a retry 2000 ms (+/- 500 ms) after the previous unsolicited response
10:58:09.538 - Verify that the response is empty
10:58:09.538 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:58:09.538 - Confirm each response that asks for a confirmation
10:58:11.537 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:58:11.537 C7 F5 82 10 00 BD 4E
10:58:11.537 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:58:11.537 <-T-- fir: 1 fin: 1 seq: 7
10:58:11.537 <-A-- Unsolicited Response(0x82) fir: 1 fin: 1 con: 1 uns: 1 seq: 0x05 IIN(NeedTime)
10:58:11.537 --A-> Confirm(0x00) fir: 1 fin: 1 con: 0 uns: 1 seq: 0x05
10:58:11.537 --T-> fir: 1 fin: 1 seq: 0
10:58:11.537 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 8 dest: 1024 src: 1
10:58:11.537 --P-> 05 64 08 C4 00 04 01 00 9A 19
10:58:11.537 C0 D5 00 9F D5
10:58:11.537 step: 29
10:58:11.537 - Generate Class 1, 2 or 3 events that would normally trigger an unsolicited response
10:58:11.538 [PLG] Updated BI 0: value=true, flags=81, timestamp=1793185091537 (UNSYNCHRONIZED_TIME)
10:58:11.538 step: 30
10:58:11.538 - Expect no unsolicited response within 2500 ms.
10:58:14.041 Passed procedure: 8.11.2.1