FreeCalypso > hg > fc-selenite
annotate src/g23m-gprs/sm/sm_user_plane_control.c @ 105:5c4db73d289a
build system support for memory supervision
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Mon, 23 Jul 2018 07:01:39 +0000 | 
| parents | d393cd9bb723 | 
| children | 
| rev | line source | 
|---|---|
| 1 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /*---------------------------------------------------------------------------- | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 | Project : 3G PS | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 | Module : SM | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 +----------------------------------------------------------------------------- | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 | Copyright 2003 Texas Instruments. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 | All rights reserved. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 | This file is confidential and a trade secret of Texas | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 | Instruments . | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 | The receipt of or possession of this file does not convey | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 | any rights to reproduce or disclose its contents or to | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 | manufacture, use, or sell anything it may describe, in | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 | whole, or in part, without the specific written consent of | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 | Texas Instruments. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 +----------------------------------------------------------------------------- | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 | Purpose: User Plane Control state machine implementation in the SM entity. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 | For design details, see: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 | 8010.908 SM Detailed Specification | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 +---------------------------------------------------------------------------*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 /*==== DECLARATION CONTROL =================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 /*==== INCLUDES =============================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 #include "sm.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 #include "sm_user_plane_control.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 #include "sm_context_control.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 #include "sm_upm_output_handler.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 /*==== CONSTS ===============================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 /*==== TYPES ================================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 typedef void (*T_SM_USER_PLANE_CONTROL_TRANSITION_FUNC)(struct T_SM_CONTEXT_DATA *ptr_context_data, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 typedef struct { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 #ifdef DEBUG | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 T_SM_USER_PLANE_CONTROL_EVENT event; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 #endif /* DEBUG */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 T_SM_USER_PLANE_CONTROL_TRANSITION_FUNC func; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 } T_SM_USER_PLANE_CONTROL_TRANSITION; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 /*==== LOCALS ===============================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 static void state_event_error(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 static void ignored (struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 static void handle_activate_start(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 static void handle_activate_complete(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 static void handle_deactivate(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 static void handle_deactivate_local(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 static void handle_modify(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 static void handle_sm_activate_res(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 static void handle_sm_deactivate_res(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 static void handle_sm_modify_res(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 /*********************************************************************** | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 * State/Transition Table | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 static const T_SM_USER_PLANE_CONTROL_TRANSITION | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 transition[SM_USER_PLANE_CONTROL_NUMBER_OF_STATES][SM_USER_PLANE_CONTROL_NUMBER_OF_EVENTS] = | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 { /* S0: SM USER PLANE DEACTIVATED */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 M_TRANSITION(SM_P_SM_ACTIVATE_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 M_TRANSITION(SM_P_SM_DEACTIVATE_RES, ignored), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 M_TRANSITION(SM_P_SM_MODIFY_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_START, handle_activate_start), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_COMPLETE, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE_LOCAL, ignored), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 M_TRANSITION(SM_I_USER_PLANE_MODIFY, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE, ignored) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 }, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 { /* S1: SM USER PLANE ACTIVATE STARTED */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 M_TRANSITION(SM_P_SM_ACTIVATE_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 M_TRANSITION(SM_P_SM_DEACTIVATE_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 M_TRANSITION(SM_P_SM_MODIFY_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_START, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_COMPLETE, handle_activate_complete), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE_LOCAL, handle_deactivate_local), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 M_TRANSITION(SM_I_USER_PLANE_MODIFY, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE, handle_deactivate) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 }, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 { /* S2: SM USER PLANE ACTIVATE COMPLETING */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 M_TRANSITION(SM_P_SM_ACTIVATE_RES, handle_sm_activate_res), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 M_TRANSITION(SM_P_SM_DEACTIVATE_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 M_TRANSITION(SM_P_SM_MODIFY_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_START, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_COMPLETE, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE_LOCAL, handle_deactivate_local), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 M_TRANSITION(SM_I_USER_PLANE_MODIFY, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE, handle_deactivate) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 }, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 { /* S3: SM USER PLANE ACTIVATED */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 M_TRANSITION(SM_P_SM_ACTIVATE_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 M_TRANSITION(SM_P_SM_DEACTIVATE_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 M_TRANSITION(SM_P_SM_MODIFY_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_START, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_COMPLETE, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE_LOCAL, handle_deactivate_local), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 M_TRANSITION(SM_I_USER_PLANE_MODIFY, handle_modify), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE, handle_deactivate) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 }, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 { /* S4: SM USER PLANE MODIFYING */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 M_TRANSITION(SM_P_SM_ACTIVATE_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 M_TRANSITION(SM_P_SM_DEACTIVATE_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 M_TRANSITION(SM_P_SM_MODIFY_RES, handle_sm_modify_res), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_START, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_COMPLETE, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE_LOCAL, handle_deactivate_local), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 M_TRANSITION(SM_I_USER_PLANE_MODIFY, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE, handle_deactivate) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 }, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 { /* S5: SM USER PLANE DEACTIVATING */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 M_TRANSITION(SM_P_SM_ACTIVATE_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 M_TRANSITION(SM_P_SM_DEACTIVATE_RES, handle_sm_deactivate_res), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 M_TRANSITION(SM_P_SM_MODIFY_RES, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_START, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 M_TRANSITION(SM_I_USER_PLANE_ACTIVATE_COMPLETE, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE_LOCAL, handle_deactivate_local), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 M_TRANSITION(SM_I_USER_PLANE_MODIFY, state_event_error), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 M_TRANSITION(SM_I_USER_PLANE_DEACTIVATE, ignored) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 }; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 /*==== PRIVATE FUNCTIONS ====================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 | Function : state_event_error | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 | Description : General function used to report state event errors. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 | Parameters : context - Not used | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 | data - Not used | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 static void state_event_error(/*@unused@*/ struct T_SM_CONTEXT_DATA *context, /*@unused@*/ /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 (void)TRACE_ERROR("SM User Plane Control: STATE EVENT ERROR!"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 | Function : ignored | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 | Description : General function used for transitions that shall be ignored | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 | Parameters : context - Not used | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 | data - Not used | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 static void ignored(/*@unused@*/ struct T_SM_CONTEXT_DATA *context, /*@unused@*/ /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 (void)TRACE_FUNCTION("SM User Plane Control: Event ignored."); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 | Function : handle_activate_start | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 | Description : Handle event SM_I_USER_PLANE_ACTIVATE_START in S0 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 | data - Not used | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 static void handle_activate_start(struct T_SM_CONTEXT_DATA *context, /*@unused@*/ /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 (void)TRACE_FUNCTION("handle_activate_start"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 /* Send SM_ACTIVATE_STARTED_IND */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 send_sm_activate_started_ind(context); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 /* Go to state SM USER PLANE ACTIVATE STARTED */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 context->user_plane_control_state = SM_USER_PLANE_ACTIVATE_STARTED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 | Function : handle_activate_complete | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 | Description : Handle event SM_I_USER_PLANE_ACTIVATE_COMPLETE in S1 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 | data - Not used | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 static void handle_activate_complete(struct T_SM_CONTEXT_DATA *context, /*@unused@*/ /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 (void)TRACE_FUNCTION("handle_activate_complete"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 /* Send SM_ACTIVATE_IND */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 send_sm_activate_ind(context); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 /* Go to state SM USER PLANE ACTIVATE COMPLETING */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 context->user_plane_control_state = SM_USER_PLANE_ACTIVATE_COMPLETING; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 | Function : handle_modify | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 | Description : Handle event SM_I_USER_PLANE_MODIFY in S3 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 | data - Update flags | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 static void handle_modify(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 (void)TRACE_FUNCTION("handle_modify"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 /* Send SM_MODIFY_IND */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 send_sm_modify_ind(context); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 /* Go to state SM USER PLANE MODIFYING */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 context->user_plane_control_state = SM_USER_PLANE_MODIFYING; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 | Function : handle_deactivate | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 | Description : Handle event SM_I_USER_PLANE_DEACTIVATE in any state | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 | data - PS_rel_ind | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 static void handle_deactivate(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 (void)TRACE_FUNCTION("handle_deactivate"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 /* Send SM_DEACTIVATE_IND with local parameter taken from input */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 send_sm_deactivate_ind(sm_nsapi2nsapi_set(context->nsapi), | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 (data == NULL ? PS_REL_IND_NO : PS_REL_IND_YES)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 /* Go to state SM USER PLANE DEACTIVATING */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 context->user_plane_control_state = SM_USER_PLANE_DEACTIVATING; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 | Function : handle_deactivate_local | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 | Description : Handle event SM_I_USER_PLANE_DEACTIVATE_LOCAL in any state | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 | data - BOOL (TRUE = send SM_DEACTIVATE_IND) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 static void handle_deactivate_local(struct T_SM_CONTEXT_DATA *context, /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 254 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 (void)TRACE_FUNCTION("handle_deactivate_local"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 256 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 257 if (data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 258 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 259 /* Send SM_DEACTIVATE_IND with local parameter true */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 send_sm_deactivate_ind(sm_nsapi2nsapi_set(context->nsapi), PS_REL_IND_YES); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 261 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 /* Go to state SM USER PLANE DEACTIVATING */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 263 context->user_plane_control_state = SM_USER_PLANE_DEACTIVATING; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 } else { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 /* Go to state SM USER PLANE DEACTIVATED */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 context->user_plane_control_state = SM_USER_PLANE_DEACTIVATED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 267 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 | Function : handle_sm_activate_res | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 | Description : Handle event SM_P_SM_ACTIVATE_RES in S2 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 | data - Not used | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 static void handle_sm_activate_res(struct T_SM_CONTEXT_DATA *context, /*@unused@*/ /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 (void)TRACE_FUNCTION("handle_sm_activate_res"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 /* Go to state SM USER PLANE ACTIVATED */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 context->user_plane_control_state = SM_USER_PLANE_ACTIVATED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 /* If comp params is sent by UPM copy it to context. When SMREG_ACTIVATE_CNF | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 * primitive is composed this values are copied. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 if ( (((T_SM_ACTIVATE_RES*)data)->v_comp_params == TRUE) ) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 memcpy(&context->comp_params, &((T_SM_ACTIVATE_RES*)data)->comp_params, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 sizeof(T_NAS_comp_params)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 } else { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 memset(&context->comp_params, 0, sizeof(T_NAS_comp_params)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 296 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 297 /* Notify Context Control of activation completion */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 sm_context_control(context, SM_I_USER_PLANE_ACTIVATED, NULL); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 301 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 302 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 303 | Function : handle_sm_deactivate_res | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 305 | Description : Handle event SM_P_SM_DEACTIVATE_RES in S5 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 | data - Not used | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 309 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 311 static void handle_sm_deactivate_res(struct T_SM_CONTEXT_DATA *context, /*@unused@*/ /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 312 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 313 (void)TRACE_FUNCTION("handle_sm_deactivate_res"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 314 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 315 /* Go to state SM USER PLANE DEACTIVATED */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 316 context->user_plane_control_state = SM_USER_PLANE_DEACTIVATED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 317 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 318 /* Notify Context Control of deactivation completion */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 319 sm_context_control(context, SM_I_USER_PLANE_DEACTIVATED, NULL); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 320 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 321 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 322 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 323 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 324 | Function : handle_sm_modify_res | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 325 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 326 | Description : Handle event SM_P_SM_MODIFY_RES in S4 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 327 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 328 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 329 | data - Not used | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 330 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 331 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 332 static void handle_sm_modify_res(struct T_SM_CONTEXT_DATA *context, /*@unused@*/ /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 333 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 334 (void)TRACE_FUNCTION("handle_sm_modify_res"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 335 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 336 /* Go to state SM USER PLANE ACTIVATED */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 337 context->user_plane_control_state = SM_USER_PLANE_ACTIVATED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 338 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 339 /* Notify Context Control of modification completion */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 340 sm_context_control(context, SM_I_USER_PLANE_MODIFIED, NULL); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 341 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 342 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 343 /*==== PUBLIC FUNCTIONS =====================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 344 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 345 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 346 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 347 | Function : sm_user_plane_control_init | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 348 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 349 | Description : User Plane Control state machine initialization function | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 350 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 351 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 352 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 353 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 354 void sm_user_plane_control_init(struct T_SM_CONTEXT_DATA *context) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 355 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 356 (void)TRACE_FUNCTION("sm_user_plane_control_init"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 357 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 358 context->user_plane_control_state = SM_USER_PLANE_DEACTIVATED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 359 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 360 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 361 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 362 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 363 | Function : sm_user_plane_control_exit | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 364 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 365 | Description : User Plane Control state machine exit function | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 366 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 367 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 368 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 369 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 370 void sm_user_plane_control_exit(struct T_SM_CONTEXT_DATA *context) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 371 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 372 (void)TRACE_FUNCTION("sm_user_plane_control_exit"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 373 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 374 context->user_plane_control_state = SM_USER_PLANE_DEACTIVATED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 375 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 376 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 377 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 378 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 379 | Function : sm_user_plane_control_state | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 380 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 381 | Description : Returns a read-only string with the name of the active state. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 382 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 383 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 384 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 385 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 386 #ifdef DEBUG | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 387 /*@observer@*/const char * | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 388 sm_user_plane_control_state(struct T_SM_CONTEXT_DATA *context) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 389 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 390 /*@observer@*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 391 static const char *state_name[SM_USER_PLANE_CONTROL_NUMBER_OF_STATES] = { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 392 "S0_SM_USER_PLANE_DEACTIVATED", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 393 "S1_SM_USER_PLANE_ACTIVATE_STARTED", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 394 "S2_SM_USER_PLANE_ACTIVATE_COMPLETING", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 395 "S3_SM_USER_PLANE_ACTIVATED", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 396 "S4_SM_USER_PLANE_MODIFYING", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 397 "S5_SM_USER_PLANE_DEACTIVATING" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 398 }; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 399 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 400 TRACE_ASSERT(context->user_plane_control_state < SM_USER_PLANE_CONTROL_NUMBER_OF_STATES); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 401 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 402 return state_name[(U16)context->user_plane_control_state]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 403 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 404 #endif | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 405 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 406 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 407 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 408 | Function : sm_user_plane_control | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 409 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 410 | Description : User Plane Control state machine | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 411 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 412 | Parameters : context - Context data | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 413 | event - Internal event (see sm_user_plane_control.h) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 414 | data - Event dependent parameter | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 415 +------------------------------------------------------------------------------ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 416 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 417 void sm_user_plane_control(struct T_SM_CONTEXT_DATA *context, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 418 T_SM_USER_PLANE_CONTROL_EVENT event, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 419 /*@null@*/ void *data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 420 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 421 #ifdef DEBUG | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 422 const char *old_state_name, *new_state_name; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 423 T_SM_USER_PLANE_CONTROL_STATE old_state; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 424 /*@observer@*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 425 static const char *event_name[SM_USER_PLANE_CONTROL_NUMBER_OF_EVENTS] = { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 426 "SM_P_SM_ACTIVATE_RES", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 427 "SM_P_SM_DEACTIVATE_RES", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 428 "SM_P_SM_MODIFY_RES", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 429 "SM_I_USER_PLANE_ACTIVATE_START", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 430 "SM_I_USER_PLANE_ACTIVATE_COMPLETE", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 431 "SM_I_USER_PLANE_DEACTIVATE_LOCAL", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 432 "SM_I_USER_PLANE_MODIFY", | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 433 "SM_I_USER_PLANE_DEACTIVATE" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 434 }; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 435 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 436 TRACE_ASSERT(event < SM_USER_PLANE_CONTROL_NUMBER_OF_EVENTS); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 437 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 438 old_state = context->user_plane_control_state; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 439 old_state_name = sm_user_plane_control_state(context); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 440 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 441 if (transition[(U16)old_state][(U16)event].event != event) { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 442 (void)TRACE_ERROR("Event table error in sm_user_plane_control!"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 443 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 444 #endif /* DEBUG */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 445 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 446 transition[(U16)context->user_plane_control_state] | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 447 [(U16)event].func(context, data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 448 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 449 #ifdef DEBUG | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 450 new_state_name = sm_user_plane_control_state(context); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 451 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 452 (void)TRACE_EVENT_P4("SM U-PLANE #%d: %s => %s to %s", context->nsapi, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 453 event_name[(U16)event], old_state_name, new_state_name); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 454 #endif /* DEBUG */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 455 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 456 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 457 /*==== END OF FILE ==========================================================*/ | 
