00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef IRIAP_FSM_H
00026 #define IRIAP_FSM_H
00027
00028
00029 struct iriap_cb;
00030
00031
00032 typedef enum {
00033
00034 S_DISCONNECT,
00035 S_CONNECTING,
00036 S_CALL,
00037
00038
00039 S_MAKE_CALL,
00040 S_CALLING,
00041 S_OUTSTANDING,
00042 S_REPLYING,
00043 S_WAIT_FOR_CALL,
00044 S_WAIT_ACTIVE,
00045
00046
00047 R_DISCONNECT,
00048 R_CALL,
00049
00050
00051 R_WAITING,
00052 R_WAIT_ACTIVE,
00053 R_RECEIVING,
00054 R_EXECUTE,
00055 R_RETURNING,
00056 } IRIAP_STATE;
00057
00058 typedef enum {
00059 IAP_CALL_REQUEST,
00060 IAP_CALL_REQUEST_GVBC,
00061 IAP_CALL_RESPONSE,
00062 IAP_RECV_F_LST,
00063 IAP_LM_DISCONNECT_INDICATION,
00064 IAP_LM_CONNECT_INDICATION,
00065 IAP_LM_CONNECT_CONFIRM,
00066 } IRIAP_EVENT;
00067
00068 void iriap_next_client_state (struct iriap_cb *self, IRIAP_STATE state);
00069 void iriap_next_call_state (struct iriap_cb *self, IRIAP_STATE state);
00070 void iriap_next_server_state (struct iriap_cb *self, IRIAP_STATE state);
00071 void iriap_next_r_connect_state(struct iriap_cb *self, IRIAP_STATE state);
00072
00073
00074 void iriap_do_client_event(struct iriap_cb *self, IRIAP_EVENT event,
00075 struct sk_buff *skb);
00076 void iriap_do_call_event (struct iriap_cb *self, IRIAP_EVENT event,
00077 struct sk_buff *skb);
00078
00079 void iriap_do_server_event (struct iriap_cb *self, IRIAP_EVENT event,
00080 struct sk_buff *skb);
00081 void iriap_do_r_connect_event(struct iriap_cb *self, IRIAP_EVENT event,
00082 struct sk_buff *skb);
00083
00084 #endif
00085