receiver Module Interface Specification

(0) CHARACTERISTICS

-type specified: receiver

-features: deterministic, non-parameterized

-foreign types: flipflop, N_PDU, N_plus_1_PDU, msg

(1) SYNTAX

INPUT VARIABLES

Variable NameTypeCondition of interestEvent
N_minus_1_IND_SAPN_PDUAnyChangeIND
N_minus_1_TriggerflipflopAnyChangeACCEPTED

OUTPUT VARIABLES

Variable NameType
N_IND_SAPN_plus_1_PDU
N_minus_1_RES_SAPN_PDU

(2) CANONICAL TRACES

canonical(T) d:<N_PDU>; f:<flipflop> [T = IND(*, d) T = IND(*, d).ACCEPTED(*, f) ]

(3) SEMANTICS

INPUT VARIABLES

IND(T,d) =

ConditionValue
length(T) = 1 T
d1:<N_PDU>; s,s1,a:<int>; f:<flipflop>; m,m1:<msg> [T = IND(*, d1).ACCEPTED(*, f) s = N_PDU::get_seq_nb(d) s1 = N_PDU::get_seq_nb(d1) m = N_PDU::get_msg(d) m1 = N_PDU::get_msg(d1) a = N_PDU::get_ack(d) s < s1 + 1]IND(*, IND(*, N_PDU::CODE(s1, m1, a)))
d1:<N_PDU>; s,s1:<int>; f:<flipflop>; m,m1:<msg> [T = IND(*, d1).ACCEPTED(*, f) s = N_PDU::get_seq_nb(d) s1 = N_PDU::get_seq_nb(d1) m = N_PDU::get_msg(d) m1 = N_PDU::get_msg(d1) s = s1 + 1 ]IND(*, d)
d1:<N_PDU>; s,s1,a:<int>; f:<flipflop>; m,m1:<msg> [T = IND(*, d1).ACCEPTED(*, f) s = N_PDU::get_seq_nb(d) s1 = N_PDU::get_seq_nb(d1) m = N_PDU::get_msg(d) m1 = N_PDU::get_msg(d1) a = N_PDU::get_ack(d) s > s1 + 1]IND(*, N_PDU::CODE(s1, m1, a)).ACCEPTED(*, f)

ACCEPTED(T,f) =

ConditionValue
length(T) = 2 T
length(T) = 2 T.ACCEPTED(*, f)

OUTPUT VARIABLES

N_IND_SAP(T) = N_PDU::get_msg(d) where d:<N_PDU>; S:<<receiver>> [T = IND(*, d).S ]

N_minus_1_RES_SAP(T) =

ConditionValue
length(T) = 2 N_PDU::_
d:<N_PDU> [T = IND(*, d) ]N_PDU::CODE(0, N_plus_1_PDU::_, N_PDU::get_seq_nb(d))