SYSTEM {
IMR {
TOPLEVEL COMPONENT IMR {
ATTRIBUTES {
ATTRIBUTE _old_the_emergency_flashing {
SYMBOLTYPE: GlobalVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 1
TOLERANCE: 0
}
ATTRIBUTE _old_the_flashing_mode {
SYMBOLTYPE: GlobalVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 5
TOLERANCE: 0
}
ATTRIBUTE _old_the_turn_indicator_lever {
SYMBOLTYPE: GlobalVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 2
TOLERANCE: 0
}
ATTRIBUTE _old_the_voltage {
SYMBOLTYPE: GlobalVar
TYPE: int
INITVALUE: 0
LOWERBOUND: -100
UPPERBOUND: 100
TOLERANCE: 0
}
ATTRIBUTE the_emergency_flashing {
SYMBOLTYPE: InputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 1
TOLERANCE: 0
}
ATTRIBUTE the_flashing_counter {
SYMBOLTYPE: OutputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: -100
UPPERBOUND: 100
TOLERANCE: 0
}
ATTRIBUTE the_flashing_mode {
SYMBOLTYPE: OutputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 5
TOLERANCE: 0
}
ATTRIBUTE the_flashing_timer {
SYMBOLTYPE: GlobalVar
TYPE: clock
INITVALUE: 0
LOWERBOUND: 1
UPPERBOUND: 1
TOLERANCE: 0
}
ATTRIBUTE the_left_indication_lights {
SYMBOLTYPE: OutputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 1
TOLERANCE: 0
}
ATTRIBUTE the_right_indication_lights {
SYMBOLTYPE: OutputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 1
TOLERANCE: 0
}
ATTRIBUTE the_turn_indicator_lever {
SYMBOLTYPE: InputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 2
TOLERANCE: 0
}
ATTRIBUTE the_voltage {
SYMBOLTYPE: InputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: -100
UPPERBOUND: 100
TOLERANCE: 0
}
}
SC-LOCATIONS {
LOCATION NAME: IMR OID: <ARTIFICIAL>
{
}
}
}
SUT COMPONENT IMR.SUT {
SC-LOCATIONS {
LOCATION NAME: SUT OID: _SUT
{
}
}
}
SUT COMPONENT IMR.SUT.the_flashing_mode_component {
SC-LOCATIONS {
LOCATION NAME: the_flashing_mode_component OID: _the_flashing_mode_component
{
SUB-STATECHART NAME: the_flashing_mode_component OID: _the_flashing_mode_component {
LOCATION NAME: Initial OID: _Initial
{
EMANATING TRANSITIONS {
[0] --- [ true ] / ... ---> the_flashing_mode_component_L0
}
}
LOCATION NAME: the_flashing_mode_component_L0 OID: _the_flashing_mode_component_L0
{
EMANATING TRANSITIONS {
[3] --- [ ((((!(IMR._old_the_turn_indicator_lever == 0)) && (IMR.the_turn_indicator_lever == 0)) && (IMR.the_emergency_flashing == 0)) && ((IMR.the_flashing_mode != 0) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
[6] --- [ ((((!(IMR._old_the_turn_indicator_lever == 1)) && (IMR.the_turn_indicator_lever == 1)) && (IMR.the_emergency_flashing == 0)) && ((IMR.the_flashing_mode != 1) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
[9] --- [ (((!(IMR._old_the_emergency_flashing == 1)) && (IMR.the_emergency_flashing == 1)) && ((IMR.the_flashing_mode != 2) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
[12] --- [ ((((IMR.the_emergency_flashing == 1) && (IMR._old_the_emergency_flashing == 1)) && ((!(IMR._old_the_turn_indicator_lever == 0)) && (IMR.the_turn_indicator_lever == 0))) && ((IMR.the_flashing_mode != 0) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
[15] --- [ ((((IMR.the_emergency_flashing == 1) && (IMR._old_the_emergency_flashing == 1)) && ((!(IMR._old_the_turn_indicator_lever == 1)) && (IMR.the_turn_indicator_lever == 1))) && ((IMR.the_flashing_mode != 1) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
[18] --- [ (((((IMR.the_emergency_flashing == 1) && (IMR._old_the_emergency_flashing == 1)) && ((!(IMR._old_the_turn_indicator_lever == 2)) && (IMR.the_turn_indicator_lever == 2))) && (!(IMR.the_flashing_mode == 2))) && ((IMR.the_flashing_mode != 2) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
[21] --- [ ((((((!(IMR._old_the_emergency_flashing == 0)) && (IMR.the_emergency_flashing == 0)) && (IMR.the_turn_indicator_lever == 0)) && (IMR._old_the_turn_indicator_lever == 0)) && (!(IMR.the_flashing_mode == 0))) && ((IMR.the_flashing_mode != 0) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
[24] --- [ ((((((!(IMR._old_the_emergency_flashing == 0)) && (IMR.the_emergency_flashing == 0)) && (IMR.the_turn_indicator_lever == 1)) && (IMR._old_the_turn_indicator_lever == 1)) && (!(IMR.the_flashing_mode == 1))) && ((IMR.the_flashing_mode != 1) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
[25] --- [ (((((IMR.the_emergency_flashing == 0) && (IMR._old_the_emergency_flashing == 0)) && (IMR.the_flashing_counter < 3)) && ((IMR._old_the_turn_indicator_lever == 0) && (IMR.the_turn_indicator_lever == 2))) && (IMR.the_flashing_mode != 4)) ] / ... ---> the_flashing_mode_component_L0
[26] --- [ (((((IMR.the_emergency_flashing == 0) && (IMR._old_the_emergency_flashing == 0)) && (IMR.the_flashing_counter < 3)) && ((IMR._old_the_turn_indicator_lever == 1) && (IMR.the_turn_indicator_lever == 2))) && (IMR.the_flashing_mode != 5)) ] / ... ---> the_flashing_mode_component_L0
[29] --- [ (((IMR.the_flashing_counter >= 3) && ((IMR.the_flashing_mode == 4) || (IMR.the_flashing_mode == 5))) && ((IMR.the_flashing_mode != 3) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
[32] --- [ ((((((IMR.the_turn_indicator_lever == 2) && (IMR.the_emergency_flashing == 0)) && ((IMR.the_flashing_counter >= 3) || (IMR._old_the_turn_indicator_lever == 2))) && (!(IMR.the_flashing_mode == 4))) && (!(IMR.the_flashing_mode == 5))) && ((IMR.the_flashing_mode != 3) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_flashing_mode_component_L0
}
}
}
}
}
}
SUT COMPONENT IMR.SUT.the_lights_controller_component {
SC-LOCATIONS {
LOCATION NAME: the_lights_controller_component OID: _the_lights_controller_component
{
SUB-STATECHART NAME: the_lights_controller_component OID: _the_lights_controller_component {
LOCATION NAME: Initial OID: _Initial
{
EMANATING TRANSITIONS {
[33] --- [ true ] / ... ---> the_lights_controller_component_L0
}
}
LOCATION NAME: the_lights_controller_component_L0 OID: _the_lights_controller_component_L0
{
EMANATING TRANSITIONS {
[37] --- [ (((!(IMR._old_the_voltage <= 80)) && (IMR.the_voltage <= 80)) && (((IMR.the_left_indication_lights != 0) || (IMR.the_right_indication_lights != 0)) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_lights_controller_component_L0
[41] --- [ ((((IMR.the_voltage > 80) && (IMR.the_flashing_mode == 0)) && ((!(IMR._old_the_flashing_mode == 0)) || (IMR._old_the_voltage <= 80))) && (((IMR.the_left_indication_lights != 1) || (IMR.the_right_indication_lights != 0)) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_lights_controller_component_L0
[45] --- [ ((((IMR.the_voltage > 80) && (IMR.the_flashing_mode == 1)) && ((!(IMR._old_the_flashing_mode == 1)) || (IMR._old_the_voltage <= 80))) && (((IMR.the_left_indication_lights != 0) || (IMR.the_right_indication_lights != 1)) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_lights_controller_component_L0
[49] --- [ ((((IMR.the_voltage > 80) && (IMR.the_flashing_mode == 2)) && ((!(IMR._old_the_flashing_mode == 2)) || (IMR._old_the_voltage <= 80))) && (((IMR.the_left_indication_lights != 1) || (IMR.the_right_indication_lights != 1)) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_lights_controller_component_L0
[53] --- [ (((IMR.the_voltage > 80) && (IMR.the_flashing_mode == 3)) && (((IMR.the_left_indication_lights != 0) || (IMR.the_right_indication_lights != 0)) || (IMR.the_flashing_counter != 0))) ] / ... ---> the_lights_controller_component_L0
[57] --- [ ((((IMR.the_voltage > 80) && ((_timeTick - IMR.the_flashing_timer) >= 340)) && ((IMR.the_left_indication_lights == 1) || (IMR.the_right_indication_lights == 1))) && (((IMR.the_left_indication_lights != 0) || (IMR.the_right_indication_lights != 0)) || (IMR.the_flashing_counter != (IMR.the_flashing_counter + 1)))) ] / ... ---> the_lights_controller_component_L0
[60] --- [ ((((((IMR.the_voltage > 80) && ((_timeTick - IMR.the_flashing_timer) >= 220)) && ((IMR.the_flashing_mode == 0) || (IMR.the_flashing_mode == 4))) && (IMR.the_left_indication_lights == 0)) && (IMR.the_right_indication_lights == 0)) && ((IMR.the_left_indication_lights != 1) || (IMR.the_right_indication_lights != 0))) ] / ... ---> the_lights_controller_component_L0
[63] --- [ ((((((IMR.the_voltage > 80) && ((_timeTick - IMR.the_flashing_timer) >= 220)) && ((IMR.the_flashing_mode == 1) || (IMR.the_flashing_mode == 5))) && (IMR.the_left_indication_lights == 0)) && (IMR.the_right_indication_lights == 0)) && ((IMR.the_left_indication_lights != 0) || (IMR.the_right_indication_lights != 1))) ] / ... ---> the_lights_controller_component_L0
[66] --- [ ((((((IMR.the_voltage > 80) && ((_timeTick - IMR.the_flashing_timer) >= 220)) && (IMR.the_flashing_mode == 2)) && (IMR.the_left_indication_lights == 0)) && (IMR.the_right_indication_lights == 0)) && ((IMR.the_left_indication_lights != 1) || (IMR.the_right_indication_lights != 1))) ] / ... ---> the_lights_controller_component_L0
}
}
}
}
}
}
TE COMPONENT IMR.TE {
SC-LOCATIONS {
LOCATION NAME: TE OID: _TE
{
}
}
}
}
SYMBOLTABLE {
KNOWN TYPES {
Bool type 'bool' SIZE: 1
Clock type 'clock' SIZE: 0
Bool type 'bool' SIZE: 1 CONST
Floating type 'const double' SIZE: 8 CONST
Floating type 'const float' SIZE: 4 CONST
Floating type 'const long double' SIZE: 16 CONST
Integral type SIGNED 'const signed char' SIZE: 1 CONST
Integral type SIGNED 'const signed int' SIZE: 4 CONST
Integral type SIGNED 'const signed long int' SIZE: 8 CONST
Integral type SIGNED 'const signed long long int' SIZE: 8 CONST
Integral type SIGNED 'const signed short int' SIZE: 2 CONST
Integral type UNSIGNED 'const unsigned char' SIZE: 1 CONST
Integral type UNSIGNED 'const unsigned int' SIZE: 4 CONST
Integral type UNSIGNED 'const unsigned long int' SIZE: 8 CONST
Integral type UNSIGNED 'const unsigned long long int' SIZE: 8 CONST
Integral type UNSIGNED 'const unsigned short int' SIZE: 2 CONST
Floating type 'double' SIZE: 8
Floating type 'float' SIZE: 4
Floating type 'long double' SIZE: 16
Integral type SIGNED 'signed char' SIZE: 1
Integral type SIGNED 'signed int' SIZE: 4
Integral type SIGNED 'signed long int' SIZE: 8
Integral type SIGNED 'signed long long int' SIZE: 8
Integral type SIGNED 'signed short int' SIZE: 2
Integral type UNSIGNED 'unsigned char' SIZE: 1
Integral type UNSIGNED 'unsigned int' SIZE: 4
Integral type UNSIGNED 'unsigned long int' SIZE: 8
Integral type UNSIGNED 'unsigned long long int' SIZE: 8
Integral type UNSIGNED 'unsigned short int' SIZE: 2
}
VARIABLE ENTRIES {
ENTRY IMR.SUT.the_flashing_mode_component.the_flashing_mode_component.Initial {
Bool type 'bool' SIZE: 1

}
ENTRY IMR.SUT.the_flashing_mode_component.the_flashing_mode_component.the_flashing_mode_component_L0 {
Bool type 'bool' SIZE: 1

}
ENTRY IMR.SUT.the_lights_controller_component.the_lights_controller_component.Initial {
Bool type 'bool' SIZE: 1

}
ENTRY IMR.SUT.the_lights_controller_component.the_lights_controller_component.the_lights_controller_component_L0 {
Bool type 'bool' SIZE: 1

}
ENTRY IMR._old_the_emergency_flashing {
ATTRIBUTE _old_the_emergency_flashing {
SYMBOLTYPE: GlobalVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 1
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR._old_the_flashing_mode {
ATTRIBUTE _old_the_flashing_mode {
SYMBOLTYPE: GlobalVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 5
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR._old_the_turn_indicator_lever {
ATTRIBUTE _old_the_turn_indicator_lever {
SYMBOLTYPE: GlobalVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 2
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR._old_the_voltage {
ATTRIBUTE _old_the_voltage {
SYMBOLTYPE: GlobalVar
TYPE: int
INITVALUE: 0
LOWERBOUND: -100
UPPERBOUND: 100
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR.the_emergency_flashing {
ATTRIBUTE the_emergency_flashing {
SYMBOLTYPE: InputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 1
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR.the_flashing_counter {
ATTRIBUTE the_flashing_counter {
SYMBOLTYPE: OutputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: -100
UPPERBOUND: 100
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR.the_flashing_mode {
ATTRIBUTE the_flashing_mode {
SYMBOLTYPE: OutputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 5
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR.the_flashing_timer {
ATTRIBUTE the_flashing_timer {
SYMBOLTYPE: GlobalVar
TYPE: clock
INITVALUE: 0
LOWERBOUND: 1
UPPERBOUND: 1
TOLERANCE: 0
}
Clock type 'clock' SIZE: 0

}
ENTRY IMR.the_left_indication_lights {
ATTRIBUTE the_left_indication_lights {
SYMBOLTYPE: OutputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 1
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR.the_right_indication_lights {
ATTRIBUTE the_right_indication_lights {
SYMBOLTYPE: OutputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 1
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR.the_turn_indicator_lever {
ATTRIBUTE the_turn_indicator_lever {
SYMBOLTYPE: InputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: 0
UPPERBOUND: 2
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY IMR.the_voltage {
ATTRIBUTE the_voltage {
SYMBOLTYPE: InputVar
TYPE: int
INITVALUE: 0
LOWERBOUND: -100
UPPERBOUND: 100
TOLERANCE: 0
}
Integral type SIGNED 'signed int' SIZE: 4

}
ENTRY _timeTick {
Clock type 'clock' SIZE: 0

}
}