FreeCalypso > hg > tcs211-l1-reconst
diff g23m/condat/ms/src/mfw/mfw_acie.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/condat/ms/src/mfw/mfw_acie.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,258 @@ +/* ++--------------------------------------------------------------------+ +| PROJECT: MMI-Framework (8417) $Workfile:: mfw_acie.c $| +| $Author:: Es $Revision:: 1 $| +| CREATED: 26.10.98 $Modtime:: 2.03.00 15:25 $| +| STATE : code | ++--------------------------------------------------------------------+ + + MODULE : MFW_ACIE + + PURPOSE : This modul contains ACI external functions. + + + $History:: mfw_acie.c $ + * + * ***************** Version 8 ***************** + * User: Es Date: 2.03.00 Time: 16:04 + * Updated in $/GSM/Condat/MS/SRC/MFW + * some cleanups + * + * ***************** Version 7 ***************** + * User: Vo Date: 12.02.99 Time: 18:59 + * Updated in $/GSM/DEV/MS/SRC/MFW + * + * ***************** Version 6 ***************** + * User: Es Date: 8.12.98 Time: 16:53 + * Updated in $/GSM/DEV/MS/SRC/MFW + * + * ***************** Version 5 ***************** + * User: Vo Date: 24.11.98 Time: 21:40 + * Updated in $/GSM/DEV/MS/SRC/MFW + * first successful compilation of MFW +| +| ***************** Version 4 ***************** +| User: Le Date: 11.11.98 Time: 13:35 +| Updated in $/GSM/DEV/MS/SRC/MFW +| +| ***************** Version 3 ***************** +| User: Le Date: 10.11.98 Time: 16:07 +| Updated in $/GSM/DEV/MS/SRC/MFW +| +| ***************** Version 2 ***************** +| User: Le Date: 10.11.98 Time: 11:08 +| Updated in $/GSM/DEV/MS/SRC/MFW +| +| ***************** Version 1 ***************** +| User: Le Date: 27.10.98 Time: 15:58 +| Created in $/GSM/DEV/MS/SRC/MFW +| first implementation + +*/ +#define ENTITY_MFW + +#if defined (NEW_FRAME) + +#include "typedefs.h" +#include "vsi.h" +#include "custom.h" +#include "gsm.h" + +#else + +#include "STDDEFS.H" +#include "custom.h" +#include "gsm.h" +#include "vsi.h" + +#endif +#ifdef BT_INTERFACE +#include "Bti.h" +#include "mfw_mfw.h" +#include "mfw_bt.h" +#endif +#include "mfw_acie.h" +#include <string.h> + +T_MFW_ACI_EXT aci_ext_handler [MAX_ACI_HANDLER]; +#ifdef BT_INTERFACE +int pSlotBt = 0; +#endif +/* ++--------------------------------------------------------------------+ +| PROJECT: GSM-MFW (8417) MODULE: MFW_ACIE | +| STATE : code ROUTINE: aci_ext_init | ++--------------------------------------------------------------------+ + + PURPOSE : + +*/ + +void aci_ext_init() +{ + UBYTE i; + + TRACE_FUNCTION ("aci_ext_init()"); + + for (i=0;i<MAX_ACI_HANDLER;i++) + { + aci_ext_handler[i].prim_handler = NULL; + aci_ext_handler[i].cmd_handler = NULL; + } +} + +/* ++--------------------------------------------------------------------+ +| PROJECT: GSM-MFW (8417) MODULE: MFW_ACIE | +| STATE : code ROUTINE: aci_create | ++--------------------------------------------------------------------+ + + PURPOSE : + +*/ + +GLOBAL int aci_create(T_PRIM_HANDLER prim_func, T_CMD_HANDLER cmd_func) +{ + UBYTE i; + + TRACE_FUNCTION ("aci_create()"); + + + /* changes to resolve the BUG OMAPS00064964, checking wether the + * callbacks are registered twice. + */ + for (i=0;i<MAX_ACI_HANDLER;i++) + { + + if(aci_ext_handler[i].prim_handler EQ prim_func AND + aci_ext_handler[i].cmd_handler EQ cmd_func) + { + return i; + } + + } + + for (i=0;i<MAX_ACI_HANDLER;i++) + { + if (aci_ext_handler[i].prim_handler EQ NULL AND + aci_ext_handler[i].cmd_handler EQ NULL) + { + /* + * empty entry + */ + aci_ext_handler[i].prim_handler = prim_func; + aci_ext_handler[i].cmd_handler = cmd_func; + return i; + } + } + return -1; +} + + +/* ++--------------------------------------------------------------------+ +| PROJECT: GSM-MFW (8417) MODULE: MFW_ACIE | +| STATE : code ROUTINE: aci_delete | ++--------------------------------------------------------------------+ + + PURPOSE : + +*/ + +GLOBAL void aci_delete(int handle) +{ + TRACE_FUNCTION ("aci_delete ()"); + + if (handle >= 0 AND + handle < MAX_ACI_HANDLER) + { + aci_ext_handler[handle].prim_handler = NULL; + aci_ext_handler[handle].cmd_handler = NULL; + } +} + + +/* ++--------------------------------------------------------------------+ +| PROJECT: GSM-MFW (8417) MODULE: MFW_ACIE | +| STATE : code ROUTINE: aci_check_primitive | ++--------------------------------------------------------------------+ + + PURPOSE : + +*/ + +GLOBAL BOOL aci_check_primitive(ULONG opc, void * data) +{ + UBYTE i; + + TRACE_FUNCTION ("aci_check_primitive()"); + + for (i=0;i<MAX_ACI_HANDLER;i++) + { + if (aci_ext_handler[i].prim_handler NEQ NULL) + { + /* + * extension handler is installed; pass 32 bit opcode to primitive + * handling function; note that the MFW functions are similar to pei_primitive + * of aci_pei.c and as a loop is used and thus any primitive is parsed, the casting + * to 32 bit opcodes needs to be performed inside those handling functions + * which handle still 16bit SAPs + */ + if (aci_ext_handler[i].prim_handler(opc, data)) + /* + * primitive is processed by the extension + */ + return TRUE; + } + } +#ifdef _SIMULATION_ +#ifdef BT_INTERFACE +if(!pSlotBt) +{ + TRACE_EVENT_P1 ("mfw_acie:pSlotBt = %d",pSlotBt); + bt_init(); +} +#endif +#endif + /* + * primitive is not processed by the extension + */ + return FALSE; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT: GSM-MFW (8417) MODULE: MFW_ACIE | +| STATE : code ROUTINE: aci_check_command | ++--------------------------------------------------------------------+ + + PURPOSE : + +*/ + +GLOBAL BOOL aci_check_command(char * cmd) +{ + UBYTE i; + + TRACE_FUNCTION ("aci_check_command()"); + + for (i=0;i<MAX_ACI_HANDLER;i++) + { + if (aci_ext_handler[i].cmd_handler NEQ NULL) + { + /* + * extension handler is installed + */ + if ((*aci_ext_handler[i].cmd_handler) (cmd)) + /* + * command is processed by the extension + */ + return TRUE; + } + } + /* + * command is not processed by the extension + */ + return FALSE; +}