FreeCalypso > hg > fc-tourmaline
view src/g23m-gsm/sms/sms_em.h @ 223:740a8e8fc9d7
startup sync logic rework for the new PWON button boot scheme
Previously we added logic to the MMI task to hold off PEI init until
R2D is running, and then extended that condition to wait for FCHG
init too. However, the dependencies of MMI upon R2D and FCHG don't
start until mmiInit(), and that call is driven by Switch_ON() code,
hence the wait for R2D and FCHG init can be made in that code path
instead of the MMI task. Furthermore, with our new way of signaling
PWON button boot to MMI, we need a new wait to ensure that the MMI
task is up - previously this assurance was provided by the wait for
Kp pointers to be set.
Solution: revert our previous PEI init hold-off additions to MMI,
add a new flag indicating MMI task init done, and put the combined
wait for all needed conditions into our new PWON button boot code
in power.c.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 27 Apr 2021 06:24:52 +0000 |
parents | fa8dc04885d8 |
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 : Engineering Mode (EM) Declarations + Macros | +----------------------------------------------------------------------------- */ #ifndef SMS_EM_H #define SMS_EM_H #ifdef FF_EM_MODE /* ----------------- data declarations for EM ------------- */ /* * Ring buffer is by one bigger than max. number of prims, because it * needs always one termination entry. * To optimize the buffersize, the data is packed in the buffer as follows: * type, length, value * Value is the combination of the additional parameters as defined in 8443.601, coded as UBYTE. */ #define EM_SMS_BUFFER_SIZE 110 /* * EM_MAX_SMS_EVENTS defines maximum number of event traces for the engineering mode. * The number is increased by one to ensure that the event numbers defined in the * corresponding document are the same as in the sources. */ #define EM_MAX_SMS_EVENTS 34 /* * The offset is used to indicate the source entity the event trace is from. * L1/ALR = 0x00, DL = 0x2D, RR = 0x37, MM = 0x5F, CC = 0x78, SS = 0xAF, SMS = 0xBE, SIM = E1 */ #define SMS_OFFSET 0xBE /* * Type is combination of entity index(upper nibble) plus event number(lower nibble). * Bit 8 7 6 5 4 3 2 1 * | entity | event number | */ #define SMS_V_1 (1 + SMS_OFFSET) #define SMS_V_2 (2 + SMS_OFFSET) #define SMS_V_3 (3 + SMS_OFFSET) #define SMS_V_4 (4 + SMS_OFFSET) #define SMS_V_5 (5 + SMS_OFFSET) #define SMS_V_6 (6 + SMS_OFFSET) #define SMS_V_7 (7 + SMS_OFFSET) #define SMS_V_8 (8 + SMS_OFFSET) #define SMS_V_9 (9 + SMS_OFFSET) #define SMS_V_10 (10+ SMS_OFFSET) #define SMS_V_11 (11+ SMS_OFFSET) #define SMS_V_12 (12+ SMS_OFFSET) #define SMS_V_13 (13+ SMS_OFFSET) #define SMS_V_14 (14+ SMS_OFFSET) #define SMS_V_15 (15+ SMS_OFFSET) #define SMS_V_16 (16+ SMS_OFFSET) #define SMS_V_17 (17+ SMS_OFFSET) #define SMS_V_18 (18+ SMS_OFFSET) #define SMS_V_19 (19+ SMS_OFFSET) #define SMS_V_20 (20+ SMS_OFFSET) #define SMS_V_21 (21+ SMS_OFFSET) #define SMS_V_22 (22+ SMS_OFFSET) #define SMS_V_23 (23+ SMS_OFFSET) #define SMS_V_24 (24+ SMS_OFFSET) #define SMS_V_25 (25+ SMS_OFFSET) #define SMS_V_26 (26+ SMS_OFFSET) #define SMS_V_27 (27+ SMS_OFFSET) #define SMS_V_28 (28+ SMS_OFFSET) #define SMS_V_29 (29+ SMS_OFFSET) #define SMS_V_30 (30+ SMS_OFFSET) #define SMS_V_31 (31+ SMS_OFFSET) #define SMS_V_32 (32+ SMS_OFFSET) #define SMS_V_33 (33+ SMS_OFFSET) EXTERN BOOL sms_v[EM_MAX_SMS_EVENTS]; EXTERN UBYTE em_change_flag; EXTERN UBYTE em_sms_event_buffer[EM_SMS_BUFFER_SIZE]; EXTERN UBYTE em_sms_buffer_write; /*-------------------Functions------------*/ EXTERN void sms_em_sms_event_req (T_EM_SMS_EVENT_REQ *em_sms_event_req); /* * If all entities are linked into one module this definitions * prefixes all this functions with the enity name */ #ifdef OPTION_MULTITHREAD #define em_write_buffer_2 _ENTITY_PREFIXED(em_write_buffer_2) #define em_write_buffer_3 _ENTITY_PREFIXED(em_write_buffer_3) #define em_write_buffer_3a _ENTITY_PREFIXED(em_write_buffer_3a) #define em_write_buffer_4 _ENTITY_PREFIXED(em_write_buffer_4) #define em_write_buffer_4a _ENTITY_PREFIXED(em_write_buffer_4a) #define em_write_buffer_5 _ENTITY_PREFIXED(em_write_buffer_5) #define em_write_buffer_6 _ENTITY_PREFIXED(em_write_buffer_6) #define check_write_index _ENTITY_PREFIXED(check_write_index) #endif EXTERN UBYTE em_write_buffer_2 (UBYTE event_no); EXTERN UBYTE em_write_buffer_3 (UBYTE event_no, UBYTE value); EXTERN UBYTE em_write_buffer_3a (UBYTE event_no, USHORT value); EXTERN UBYTE em_write_buffer_4 (UBYTE event_no, UBYTE value1, UBYTE value2); EXTERN UBYTE em_write_buffer_4a (UBYTE event_no, UBYTE value, USHORT cs); EXTERN UBYTE em_write_buffer_5 (UBYTE event_no, UBYTE value1, UBYTE value2, UBYTE value3); EXTERN UBYTE em_write_buffer_6 (UBYTE event_no, UBYTE value, UBYTE value1, UBYTE value2, UBYTE value3); EXTERN void em_init_sms_event_trace(void); /*------------------- Macros --------------*/ #define SMS_EM_SET_CHANGE_FLAG_1\ em_change_flag = 1; #define SMS_EM_SET_CHANGE_FLAG_2\ em_change_flag = 2; #define SMS_EM_MO_SHORT_MESSAGE\ /* MO short message **/\ if (sms_v[1])\ {\ sms_v[1] = em_write_buffer_3 (SMS_V_1, SMS_TP_REF(sms_data));\ } /* sms_v[1] */ #define SMS_EM_SEND_RP_DATA\ /* SEND RP-Data*/\ if (sms_v[2])\ {\ sms_v[2] = em_write_buffer_3 (SMS_V_2, msg_ref);\ } /* sms_v[2] */ #define SMS_EM_MM_CONNECTION_ESTABLISHMENT\ /* MM connection establishment */\ if (sms_v[3])\ {\ sms_v[3] = em_write_buffer_3 (SMS_V_3, SMS_INST.ti);\ } /* sms_v[3] */ #define SMS_EM_MM_CONNECTION_ESTABLISHED\ /* MM connection established */\ if (sms_v[4])\ {\ sms_v[4] = em_write_buffer_3 (SMS_V_4, establish_cnf->ti);\ } /* sms_v[4] */ #define SMS_EM_SEND_CP_DATA\ /* Send CP-Data */\ if (sms_v[5])\ {\ sms_v[5] = em_write_buffer_2 (SMS_V_5);\ } /* sms_v[5] */ #define SMS_EM_MM_CONNECTION_FAILED\ /* MM connection failed */\ if (sms_v[6])\ {\ sms_v[6] = em_write_buffer_3a(SMS_V_6, release_ind->cause);\ } /* sms_v[6] */ #define SMS_EM_TIMEOUT_TR1M\ /* Timeout TR1M */\ if (sms_v[7])\ {\ sms_v[7] = em_write_buffer_2 (SMS_V_7);\ } /* sms_v[7] */ #define SMS_EM_RECEIVE_CP_ACKNOWLEDGE\ /* Receive CP-ACK */\ if (sms_v[8])\ {\ sms_v[8] = em_write_buffer_3 (SMS_V_8, ti);\ } /* sms_v[8] */ #define SMS_EM_RECEIVE_CP_DATA\ /* Receive CP-Data */\ if (sms_v[9])\ {\ sms_v[9] = em_write_buffer_3 (SMS_V_9, ti);\ } /* sms_v[9] */ #define SMS_EM_RECEIVE_UNKNOWN\ /* Receive unknown */\ if (sms_v[10])\ {\ sms_v[10] = em_write_buffer_4 (SMS_V_10, ti, _decodedMsg[0]);\ } /* sms_v[10] */ #define SMS_EM_SEND_CP_ERROR\ /* Send CP-Error */\ if (sms_v[11])\ {\ sms_v[11] = em_write_buffer_2 (SMS_V_11);\ } /* sms_v[11] */ #define SMS_EM_RECEIVE_CP_ERROR\ /* Receive CP-Error */\ if (sms_v[12])\ {\ sms_v[12] = em_write_buffer_2 (SMS_V_12);\ } /* sms_v[12] */ #define SMS_EM_LOSS_OF_MM_CONNECTION\ /* Loss of MM connection */\ if (sms_v[13])\ {\ sms_v[13] = em_write_buffer_2 (SMS_V_13);\ } /* sms_v[13] */ #define SMS_EM_ABORT_OF_MM_CONNECTION\ /* Abort of MM-Connection */\ if (sms_v[14])\ {\ sms_v[14] = em_write_buffer_2 (SMS_V_14);\ } /* sms_v[14] */ #define SMS_EM_TIMEOUT_TC1M\ /* Timeout TC1M */\ if (sms_v[15])\ {\ sms_v[15] = em_write_buffer_2 (SMS_V_15);\ } /* sms_v[15] */ #define SMS_EM_TIMEOUT_TR2M\ /* Timeout TR2M */\ if (sms_v[16])\ {\ sms_v[16] = em_write_buffer_2 (SMS_V_16);\ } /* sms_v[16] */ #define SMS_EM_SEND_CP_ACKNOWLEDGE\ /* Send CP ACK */\ if (sms_v[17])\ {\ sms_v[17] = em_write_buffer_2 (SMS_V_17);\ } /* sms_v[17] */ #define SMS_EM_RECEIVE_RP_ERROR\ /* Receive RP-Error */\ if (sms_v[18])\ {\ sms_v[18] = em_write_buffer_4 (SMS_V_18, cp_user_data_dl->reference,\ cp_user_data_dl->rp_error.rp_cause.rp_cause_value);\ } /* sms_v[18] */ #define SMS_EM_RECEIVE_RP_AKNOWLEDGE\ /* RECEIVE RP-Akn */\ if (sms_v[19])\ {\ sms_v[19] = em_write_buffer_3 (SMS_V_19, cp_user_data_dl->reference);\ } /* sms_v[19] */ #define SMS_EM_RECEIVE_RP_DATA\ /* Receive RP-DATA */\ if (sms_v[20])\ {\ sms_v[20] = em_write_buffer_3 (SMS_V_20, cp_user_data_dl->reference);\ } /* sms_v[20] */ #define SMS_EM_RECEIVE_UNKNOWN_2\ /* Receive Unknown */\ if (sms_v[21])\ {\ sms_v[21] = em_write_buffer_4 (SMS_V_21, cp_user_data_dl->reference,\ cp_user_data_dl->rp_mti);\ } /* sms_v[21] */ #define SMS_EM_SEND_RP_ERROR\ /* Send RP-Error */\ if (sms_v[22])\ {\ sms_v[22] = em_write_buffer_4 (SMS_V_22, SMS_RP_REF(sms_data),\ SMS_RP_CS_MSG_NOT_COMP);\ } /* sms_v[22] */ #define SMS_EM_MO_SHORT_MESSAGE_COMMAND\ /* MO short message */\ if (sms_v[23])\ {\ sms_v[23] = em_write_buffer_4 (SMS_V_23, SMS_TP_REF(sms_data),\ sim_pdu->tpdu.b_tpdu[4]); /* TP-MN */\ } /* sms_v[23] */ #define SMS_EM_DISPLAY_MT_SHORT_MESSAGE\ /* Display MT short message */\ if (sms_v[24])\ {\ sms_v[24] = em_write_buffer_4 (SMS_V_24, sms_deliver->tp_pid,\ sms_deliver->tp_dcs);\ } /* sms_v[24] */ #define SMS_EM_STORE_MT_MESSAGE\ if (record NEQ SMS_RECORD_NOT_EXIST)\ {\ /* Store MT message in ME/SIM */\ if (sms_v[25])\ {\ sms_v[25] = em_write_buffer_4 (SMS_V_25, mem_type, record);\ } /* sms_v[25] */\ } #define SMS_EM_REPLACE_SMS_IN_ME\ /* Replace SMS in ME */\ if (sms_v[26])\ {\ sms_v[26] = em_write_buffer_6 (SMS_V_26, MEM_ME, (UBYTE)i,\ sms_deliver->tp_pid,\ sms_deliver->tp_dcs);\ } /* sms_v[26] */ #define SMS_EM_REPLACE_SMS_IN_SIM\ /* Replace SMS in SIM */\ if (sms_v[26])\ {\ sms_v[26] = em_write_buffer_6 (SMS_V_26, MEM_SM, record,\ SMS_PID(sms_data), SMS_DCS(sms_data));\ } /* sms_v[26] */ #define SMS_EM_SMS_STATUS_MESSAGE\ /* SMS status message */\ if (sms_v[27])\ {\ sms_v[27] = em_write_buffer_2 (SMS_V_27);\ } /* sms_v[27] */ #define SMS_EM_RECEIVE_SIM_TOOLKIT_DATA_DOWNLOAD\ /* Receive SIM toolkit data download */\ if (sms_v[28])\ {\ sms_v[28] = em_write_buffer_4 (SMS_V_28, SMS_DCS(sms_data), SMS_PID(sms_data));\ } /* sms_v[28] */ #define SMS_EM_STORE_MO_SHORT_MESSAGE\ if (em_change_flag == 1) /* new sms */\ {\ /* Store SMS */\ if (sms_v[29])\ {\ sms_v[29] = em_write_buffer_4 (SMS_V_29, MEM_ME, (UBYTE)index);\ } /* sms_v[29] */\ } #define SMS_EM_STORE_MO_SHORT_MESSAGE_2\ if (em_change_flag == 1) /* new sms */\ {\ /* Store SMS */\ if (sms_v[29])\ {\ sms_v[29] = em_write_buffer_4 (SMS_V_29, MEM_SM, record);\ } /* sms_v[29] */\ } #define SMS_EM_CHANGE_SHORT_MESSAGE\ if (em_change_flag == 2) /* change sms */\ {\ /* Store SMS */\ if (sms_v[30])\ {\ sms_v[30] = em_write_buffer_4 (SMS_V_30, MEM_ME, (UBYTE)index);\ } /* sms_v[30] */\ } #define SMS_EM_CHANGE_SHORT_MESSAGE_2\ if (em_change_flag == 2) /* change sms */\ {\ /* Store SMS */\ if (sms_v[30])\ {\ sms_v[30] = em_write_buffer_4 (SMS_V_30, MEM_SM, record);\ } /* sms_v[30] */\ } #define SMS_EM_READ_SHORT_MESSAGE\ /* Read short message */\ if (sms_v[31])\ {\ sms_v[31] = em_write_buffer_4 (SMS_V_31, MEM_ME, (UBYTE)index);\ } /* sms_v[31] */ #define SMS_EM_READ_SHORT_MESSAGE_2\ /* Read short message - MO SMS*/\ if (sms_v[31])\ {\ sms_v[31] = em_write_buffer_4 (SMS_V_31, MEM_SM, record);\ } /* sms_v[31] */ #define SMS_EM_DELETE_SHORT_MESSAGE\ if (error EQ SIM_NO_ERROR)\ {\ /* Delete short message */\ if (sms_v[32])\ {\ sms_v[32] = em_write_buffer_4 (SMS_V_32, mem_type, record);\ } /* sms_v[32] */\ } #define SMS_EM_UNKNOWN_TRANSACTION\ /* Unknown Transaction */\ if (sms_v[33])\ {\ sms_v[33] = em_write_buffer_5 (SMS_V_33, ti, _decodedMsg[0], pd);\ } /* sms_v[33] */ #else /*FF_EM_MODE */ #define SMS_EM_SET_CHANGE_FLAG_1 #define SMS_EM_SET_CHANGE_FLAG_2 #define SMS_EM_MO_SHORT_MESSAGE /*Event 1*/ #define SMS_EM_SEND_RP_DATA /*Event 2*/ #define SMS_EM_MM_CONNECTION_ESTABLISHMENT /*Event 3*/ #define SMS_EM_MM_CONNECTION_ESTABLISHED /*Event 4*/ #define SMS_EM_SEND_CP_DATA /*Event 5*/ #define SMS_EM_MM_CONNECTION_FAILED /*Event 6*/ #define SMS_EM_TIMEOUT_TR1M /*Event 7*/ #define SMS_EM_RECEIVE_CP_ACKNOWLEDGE /*Event 8*/ #define SMS_EM_RECEIVE_CP_DATA /*Event 9*/ #define SMS_EM_RECEIVE_UNKNOWN /*Event 10*/ #define SMS_EM_SEND_CP_ERROR /*Event 11*/ #define SMS_EM_RECEIVE_CP_ERROR /*Event 12*/ #define SMS_EM_LOSS_OF_MM_CONNECTION /*Event 13*/ #define SMS_EM_ABORT_OF_MM_CONNECTION /*Event 14*/ #define SMS_EM_TIMEOUT_TC1M /*Event 15*/ #define SMS_EM_TIMEOUT_TR2M /*Event 16*/ #define SMS_EM_SEND_CP_ACKNOWLEDGE /*Event 17*/ #define SMS_EM_RECEIVE_RP_ERROR /*Event 18*/ #define SMS_EM_RECEIVE_RP_AKNOWLEDGE /*Event 19*/ #define SMS_EM_RECEIVE_RP_DATA /*Event 20*/ #define SMS_EM_RECEIVE_UNKNOWN_2 /*Event 21*/ #define SMS_EM_SEND_RP_ERROR /*Event 22*/ #define SMS_EM_MO_SHORT_MESSAGE_COMMAND /*Event 23*/ #define SMS_EM_DISPLAY_MT_SHORT_MESSAGE /*Event 24*/ #define SMS_EM_STORE_MT_MESSAGE /*Event 25*/ #define SMS_EM_REPLACE_SMS_IN_ME /*Event 26*/ #define SMS_EM_REPLACE_SMS_IN_SIM /*Event 26*/ #define SMS_EM_SMS_STATUS_MESSAGE /*Event 27*/ #define SMS_EM_RECEIVE_SIM_TOOLKIT_DATA_DOWNLOAD /*Event 28*/ #define SMS_EM_STORE_MO_SHORT_MESSAGE /*Event 29*/ #define SMS_EM_STORE_MO_SHORT_MESSAGE_2 /*Event 29*/ #define SMS_EM_CHANGE_SHORT_MESSAGE /*Event 30*/ #define SMS_EM_CHANGE_SHORT_MESSAGE_2 /*Event 30*/ #define SMS_EM_READ_SHORT_MESSAGE /*Event 31*/ #define SMS_EM_READ_SHORT_MESSAGE_2 /*Event 31*/ #define SMS_EM_DELETE_SHORT_MESSAGE /*Event 32*/ #define SMS_EM_UNKNOWN_TRANSACTION /*Event 33*/ #endif /*FF_EM_MODE */ #endif /* SMS_EM_H */