File: cc_ptp_agent_flattened.fsm

package info (click to toggle)
libpri 1.6.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid
  • size: 2,696 kB
  • sloc: ansic: 39,045; makefile: 159; sh: 66
file content (200 lines) | stat: -rw-r--r-- 5,193 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
/*
 * FSM pseudo code used in the design/implementation of the CC PTP agent.
 */
FSM CC_PTP_Agent
{
	State CC_STATE_IDLE {
		Stimulus CC_EVENT_AVAILABLE {
			Next_State CC_STATE_PENDING_AVAILABLE;
		}
		Stimulus CC_EVENT_CANCEL {
			Action Set_Selfdestruct;
		}
	}
	State CC_STATE_PENDING_AVAILABLE {
		Stimulus CC_EVENT_MSG_ALERTING {
			Action Send_CC_Available(Q931_ALERTING);
			Next_State CC_STATE_AVAILABLE;
		}
		Stimulus CC_EVENT_MSG_DISCONNECT {
			Action Send_CC_Available(Q931_DISCONNECT);
			Next_State CC_STATE_AVAILABLE;
		}
		Stimulus CC_EVENT_INTERNAL_CLEARING {
			Action Pass_Up_CC_Cancel;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
		Stimulus CC_EVENT_CANCEL {
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
	}
	State CC_STATE_AVAILABLE {
		/*
		 * For PTP mode the T_RETENTION timer is not defined.  However,
		 * we will use it anyway in this state to protect our resources
		 * from leaks caused by user A not requesting CC.  This timer
		 * should be set much longer than the PTMP network link to
		 * allow for variations in user A's CC offer timer.
		 */
		Stimulus CC_EVENT_MSG_RELEASE {
			Action Stop_T_RETENTION;
			Action Start_T_RETENTION;
		}
		Stimulus CC_EVENT_MSG_RELEASE_COMPLETE {
			Action Stop_T_RETENTION;
			Action Start_T_RETENTION;
		}
		Stimulus CC_EVENT_CC_REQUEST {
			Action Pass_Up_CC_Request;
			Action Stop_T_RETENTION;
			Next_State CC_STATE_REQUESTED;
		}
		Stimulus CC_EVENT_INTERNAL_CLEARING {
			Action Stop_T_RETENTION;
			Action Start_T_RETENTION;
		}
		Stimulus CC_EVENT_TIMEOUT_T_RETENTION {
			Action Pass_Up_CC_Cancel;
			Action Stop_T_RETENTION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
		Stimulus CC_EVENT_CANCEL {
			Action Stop_T_RETENTION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
	}
	State CC_STATE_REQUESTED {
		Stimulus CC_EVENT_CC_REQUEST_ACCEPT {
			/* Start T_CCBS5/T_CCNR5 depending upon CC mode. */
			Action Start_T_SUPERVISION;
			Action Reset_A_Status;
			Next_State CC_STATE_ACTIVATED;
		}
		Stimulus CC_EVENT_SIGNALING_GONE {
			/* Signaling link cleared. */
			Action Pass_Up_CC_Cancel;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
		Stimulus CC_EVENT_CANCEL {
			Action Hangup_Signaling_Link;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
	}
	State CC_STATE_ACTIVATED {
		Stimulus CC_EVENT_REMOTE_USER_FREE {
			Action Pass_Up_A_Status_Indirect;
			Test = Get_A_Status;
			Test == Busy {
				Next_State CC_STATE_SUSPENDED;
			}
			Action Send_RemoteUserFree;
			Next_State CC_STATE_WAIT_CALLBACK;
		}
		Stimulus CC_EVENT_SUSPEND {
			/* Received CCBS_T_Suspend */
			Action Set_A_Status_Busy;
		}
		Stimulus CC_EVENT_RESUME {
			/* Received CCBS_T_Resume */
			Action Reset_A_Status;
		}
		Stimulus CC_EVENT_RECALL {
			/* Received CCBS_T_Call */
			Action Pass_Up_CC_Call;
			Action Set_Original_Call_Parameters;
		}
		Stimulus CC_EVENT_TIMEOUT_T_SUPERVISION {
			Action Pass_Up_CC_Cancel;
			Action Hangup_Signaling_Link;
			Action Stop_T_SUPERVISION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
		Stimulus CC_EVENT_SIGNALING_GONE {
			/* Signaling link cleared. */
			Action Pass_Up_CC_Cancel;
			Action Stop_T_SUPERVISION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
		Stimulus CC_EVENT_CANCEL {
			Action Hangup_Signaling_Link;
			Action Stop_T_SUPERVISION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
	}
	State CC_STATE_WAIT_CALLBACK {
		Stimulus CC_EVENT_SUSPEND {
			/* Received CCBS_T_Suspend */
			Action Set_A_Status_Busy;
			Action Pass_Up_A_Status;
			Next_State CC_STATE_SUSPENDED;
		}
		Stimulus CC_EVENT_RECALL {
			/* Received CCBS_T_Call */
			Action Pass_Up_CC_Call;
			Action Set_Original_Call_Parameters;
		}
		Stimulus CC_EVENT_TIMEOUT_T_SUPERVISION {
			Action Pass_Up_CC_Cancel;
			Action Hangup_Signaling_Link;
			Action Stop_T_SUPERVISION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
		Stimulus CC_EVENT_SIGNALING_GONE {
			/* Signaling link cleared. */
			Action Pass_Up_CC_Cancel;
			Action Stop_T_SUPERVISION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
		Stimulus CC_EVENT_CANCEL {
			Action Hangup_Signaling_Link;
			Action Stop_T_SUPERVISION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
	}
	State CC_STATE_SUSPENDED {
		Stimulus CC_EVENT_RESUME {
			/* Received CCBS_T_Resume */
			Action Set_A_Status_Free;
			Action Pass_Up_A_Status;
			Action Reset_A_Status;
			Next_State CC_STATE_ACTIVATED;
		}
		Stimulus CC_EVENT_RECALL {
			/* Received CCBS_T_Call */
			Action Pass_Up_CC_Call;
			Action Set_Original_Call_Parameters;
		}
		Stimulus CC_EVENT_TIMEOUT_T_SUPERVISION {
			Action Pass_Up_CC_Cancel;
			Action Hangup_Signaling_Link;
			Action Stop_T_SUPERVISION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
		Stimulus CC_EVENT_SIGNALING_GONE {
			/* Signaling link cleared. */
			Action Pass_Up_CC_Cancel;
			Action Stop_T_SUPERVISION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
		Stimulus CC_EVENT_CANCEL {
			Action Hangup_Signaling_Link;
			Action Stop_T_SUPERVISION;
			Action Set_Selfdestruct;
			Next_State CC_STATE_IDLE;
		}
	}
}