FreeCalypso > hg > fc-magnetite
view src/aci2/aci/aci_em.h @ 600:8f50b202e81f
board preprocessor conditionals: prep for more FC hw in the future
This change eliminates the CONFIG_TARGET_FCDEV3B preprocessor symbol and
all preprocessor conditionals throughout the code base that tested for it,
replacing them with CONFIG_TARGET_FCFAM or CONFIG_TARGET_FCMODEM. These
new symbols are specified as follows:
CONFIG_TARGET_FCFAM is intended to cover all hardware designs created by
Mother Mychaela under the FreeCalypso trademark. This family will include
modem products (repackagings of the FCDEV3B, possibly with RFFE or even
RF transceiver changes), and also my desired FreeCalypso handset product.
CONFIG_TARGET_FCMODEM is intended to cover all FreeCalypso modem products
(which will be firmware-compatible with the FCDEV3B if they use TI Rita
transceiver, or will require a different fw build if we switch to one of
Silabs Aero transceivers), but not the handset product. Right now this
CONFIG_TARGET_FCMODEM preprocessor symbol is used to conditionalize
everything dealing with MCSI.
At the present moment the future of FC hardware evolution is still unknown:
it is not known whether we will ever have any beyond-FCDEV3B hardware at all
(contingent on uncertain funding), and if we do produce further FC hardware
designs, it is not known whether they will retain the same FIC modem core
(triband), if we are going to have a quadband design that still retains the
classic Rita transceiver, or if we are going to switch to Silabs Aero II
or some other transceiver. If we produce a quadband modem that still uses
Rita, it will run exactly the same fw as the FCDEV3B thanks to the way we
define TSPACT signals for the RF_FAM=12 && CONFIG_TARGET_FCFAM combination,
and the current fcdev3b build target will be renamed to fcmodem. OTOH, if
that putative quadband modem will be Aero-based, then it will require a
different fw build target, the fcdev3b target will stay as it is, and the
two targets will both define CONFIG_TARGET_FCFAM and CONFIG_TARGET_FCMODEM,
but will have different RF_FAM numbers. But no matter which way we are
going to evolve, it is not right to have conditionals on CONFIG_TARGET_FCDEV3B
in places like ACI, and the present change clears the way for future
evolution.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 01 Apr 2019 01:05:24 +0000 |
parents | 93999a60b835 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : | Modul : +----------------------------------------------------------------------------- | Copyright 2002 Texas Instruments Berlin, AG | All rights reserved. | | This file is confidential and a trade secret of Texas | Instruments Berlin, AG | The receipt of or possession of this file does not convey | any rights to reproduce or disclose its contents or to | manufacture, use, or sell anything it may describe, in | whole, or in part, without the specific written consent of | Texas Instruments Berlin, AG. +----------------------------------------------------------------------------- | Purpose : Handles all instances for the Engineering mode (EM). +----------------------------------------------------------------------------- */ #ifndef ACI_EM_H #define ACI_EM_H /* * Return Values */ #define EM_INVALID_CLASS 10 #define EM_INVALID_SUBCLASS 11 #define EM_INVALID_TYPE 12 #define EM_INVALID_ACCESS 13 #define EM_NO_MORE_DATA 14 #define EM_DATA_NOT_AVAIL 15 #define MAX_EM_LENGTH 80 /* * EM classes */ #define EM_CLASS_EVENT_TRACING 1 #define EM_CLASS_INFRA_DATA 3 #define EM_CLASS_MOBILE_DATA 4 /* * EM Subclasses Event Tracing / Counter */ #define EM_SUBCLASS_LAYER_1 1 #define EM_SUBCLASS_DL 2 #define EM_SUBCLASS_RR 3 #define EM_SUBCLASS_MM 4 #define EM_SUBCLASS_CC 5 #define EM_SUBCLASS_SS 6 #define EM_SUBCLASS_SMS 7 #define EM_SUBCLASS_SIM 8 /* * EM Subclasses Infrastructure data */ #define EM_SUBCLASS_SC 9 #define EM_SUBCLASS_SC_GPRS 10 #define EM_SUBCLASS_NC 11 #define EM_SUBCLASS_LOC_PAG 12 #define EM_SUBCLASS_PLMN 13 #define EM_SUBCLASS_CIPH_HOP_DTX 14 #define EM_SUBCLASS_GMM 15 #define EM_SUBCLASS_GRLC 16 #define EM_SUBCLASS_AMR 20 #define EM_SUBCLASS_PDP 21 /* * EM Subclasses Mobile Data */ #define EM_SUBCLASS_POWER 17 #define EM_SUBCLASS_ID 18 #define EM_SUBCLASS_SW_VERSION 19 /* * EM bitmask check */ #define EM_BITMASK_L1_H 0x007F /* 39 events */ #define EM_BITMASK_L1_L 0xFFFFFFFFL #define EM_BITMASK_DL 0x001F /* 5 events */ #define EM_BITMASK_RR_H 0x001F /* 37 events */ #define EM_BITMASK_RR_L 0xFFFFFFFFL #define EM_BITMASK_MM 0x0003FFFFL /* 18 events */ #define EM_BITMASK_CC_H 0x0001FFFFL /* 49 events */ #define EM_BITMASK_CC_L 0xFFFFFFFFL #define EM_BITMASK_SS 0x03FF /* 10 events */ #define EM_BITMASK_SMS_H 0x00000001L /* 33 events */ #define EM_BITMASK_SMS_L 0xFFFFFFFFL #define EM_BITMASK_SIM 0x01FFFFFFL /* 25 events */ /* #define EM_STARTED 1 #define EM_ESTABLISHED 2 #define EM_FAILED 3 #define EM_SEND 4 #define EM_RECEIVED 5 #define EM_ABORTED 6 #define EM_RELEASED 7 */ #define EM_DATA_IND_OPC 32267 #define EM_MM_BUFFER_SIZE 168 #define EM_CC_BUFFER_SIZE 185 #define EM_SS_BUFFER_SIZE 31 #define EM_SMS_BUFFER_SIZE 110 #define EM_SIM_BUFFER_SIZE 67 #define EM_MAX_MA_CHANNELS 64 #define MAX_VER 50 #ifdef TRACE_PRIM #define TRACE_PRIM_FROM(s) vsi_o_ttrace(VSI_CALLER TC_PRIM, "Pdir: " s) #define TRACE_PRIM_TO(s) vsi_o_ttrace(VSI_CALLER TC_PRIM, "Pdir: " s) #else #define TRACE_PRIM_FROM(s) #define TRACE_PRIM_TO(s) #endif #define TRACE_EVENT_EM_P1(s,a1) TRACE_USER_CLASS_P1(TC_USER8,s,a1) #define TRACE_EVENT_EM_P4(s,a1,a2,a3,a4) TRACE_USER_CLASS_P4(TC_USER8,s,a1,a2,a3,a4) /* / ************************************************************************************* * * Structures according to EM Functional interface description (8443.601.01.002) * ************************************************************************************* */ /* * Unit ID */ typedef enum { EM_UNIT_INVALID = -1, EM_UNIT_L1 = 1, EM_UNIT_DL, EM_UNIT_RR, EM_UNIT_MM, EM_UNIT_CC, EM_UNIT_SS, EM_UNIT_SMS, EM_UNIT_SIM } T_EM_UNIT_ID; typedef struct { UBYTE index; UBYTE length; } T_EVENT_PTR; typedef struct { T_EVENT_PTR alr; T_EVENT_PTR dl; T_EVENT_PTR rr; T_EVENT_PTR mm; T_EVENT_PTR cc; T_EVENT_PTR ss; T_EVENT_PTR sms; T_EVENT_PTR sim; } T_EM_EVENT_BUF; typedef struct { CHAR alr[MAX_VER]; CHAR dl[MAX_VER]; CHAR rr[MAX_VER]; CHAR mm[MAX_VER]; CHAR cc[MAX_VER]; CHAR ss[MAX_VER]; CHAR sms[MAX_VER]; CHAR sim[MAX_VER]; } T_EM_SW_VER; /*------------------------------------------------------------------------ drv_SignalID_Type - driver signal identification The type defines the signal information data used to identify a signal. This data type is used to define and to report a signal. A signal is defined by a process calling the driver function drv_SetSignal. An event is signalled by driver by calling the pre-defined signal call- back function. -------------------------------------------------------------------------*/ typedef struct { UBYTE SignalType; USHORT DataLength; union { T_EM_SC_INFO_CNF sc; T_EM_SC_GPRS_INFO_CNF sc_gprs; T_EM_NC_INFO_CNF nc; T_EM_LOC_PAG_INFO_CNF log_pag; T_EM_PLMN_INFO_CNF plmn; T_EM_CIP_HOP_DTX_INFO_CNF cip; T_EM_POWER_INFO_CNF power; T_EM_IDENTITY_INFO_CNF id; T_EM_SW_VER version; T_EM_GMM_INFO_CNF gmm; T_EM_GRLC_INFO_CNF grlc; T_EM_AMR_INFO_CNF amr; UBYTE defaulT; } UserData; } T_DRV_SIGNAL_EM; typedef struct { UBYTE * Pointer; USHORT DataLength; T_EM_EVENT_BUF Data; } T_DRV_SIGNAL_EM_EVENT; /*------------------------------------------------------------------------ drv_SignalCB_Type - driver signal device control block This type defines a call-back function used to signal driver events, e.g. driver is ready to accept data. The driver calls the signal call-back function when a specific event occurs and the driver has been instructed to signal the event to a specific process. A process can set or reset event signalling by calling one of the driver functions drv_SetSignal or drv_ResetSignal. Event signalling can only be performed when a call-back function has been installed at driver initialization. -------------------------------------------------------------------------*/ typedef void (*T_DRV_CB_FUNC_EM ) (T_DRV_SIGNAL_EM * Signal); typedef void (*T_DRV_CB_FUNC_EM_EVENT) (T_DRV_SIGNAL_EM_EVENT * Event); /* * callback functionality for em_Read_Data_Parameter */ #define drv_SignalCB_Type_EM T_DRV_CB_FUNC_EM #define drv_SignalID_Type_EM T_DRV_SIGNAL_EM /* * callback functionality for em_Read_Event_Parameter */ #define drv_SignalCB_Type_EM_EVENT T_DRV_CB_FUNC_EM_EVENT #define drv_SignalID_Type_EM_EVENT T_DRV_SIGNAL_EM_EVENT #define T_VSI_THANDLE USHORT /* * Prototypes */ EXTERN UBYTE em_Read_Data_Parameter (UBYTE em_class, UBYTE em_subclass, UBYTE em_type, void (*cbfunc)(T_DRV_SIGNAL_EM * Signal)); EXTERN UBYTE em_Read_Event_Parameter (UBYTE entity, void (*cbfunc)(T_DRV_SIGNAL_EM_EVENT * Signal)); EXTERN void em_Received_Data (void *data, UBYTE subclass); EXTERN UBYTE em_Set_EventTrace (UBYTE em_subclass, ULONG bitmask_h, ULONG bitmask_l); EXTERN UBYTE em_Init (drv_SignalCB_Type_EM in_SignalCBPtr, drv_SignalCB_Type_EM_EVENT in_SignalEventCBPtr); EXTERN void em_Exit (void); EXTERN void em_aci_sem_clear (void); EXTERN void em_aci_sem_init (void); EXTERN void em_aci_sem_exit (void); EXTERN UBYTE em_subclass_pco_bitmap (U32 em_pco_bitmap); /* en- or disable PCO-trace*/ /* EXTERN UBYTE em_SetSignal (drv_SignalID_Type * in_SignalIDPtr); EXTERN UBYTE em_ResetSignal (drv_SignalID_Type * in_SignalIDPtr); EXTERN UBYTE em_SetConfig (pwr_DCB_Type * in_DCBPtr); EXTERN UBYTE em_GetConfig (pwr_DCB_Type * out_DCBPtr); EXTERN UBYTE em_GetStatus (pwr_Status_Type * out_StatusPtr); */ #endif /* ACI_EM_H */ /*+++++++++++++++++++++++++++++++++++++++++ E O F +++++++++++++++++++++++++++++++++++++++++*/