| /***************************************************************************** |
| * Copyright Statement: |
| * -------------------- |
| * This software is protected by Copyright and the information contained |
| * herein is confidential. The software may not be copied and the information |
| * contained herein may not be used or disclosed except with the written |
| * permission of MediaTek Inc. (C) 2016 |
| * |
| * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (""MEDIATEK SOFTWARE"") |
| * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON |
| * AN ""AS-IS"" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH |
| * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO |
| * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| * |
| * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE |
| * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, |
| * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, |
| * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO |
| * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| * |
| * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE |
| * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF |
| * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND |
| * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER |
| * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). |
| * |
| *****************************************************************************/ |
| #ifndef SYSAPI_H |
| #define SYSAPI_H |
| /***************************************************************************** |
| |
| FILE NAME: sysapi.h |
| |
| DESCRIPTION: |
| |
| This file contains all the constants, mail message definition and |
| function prototypes exported by the SYS unit. |
| |
| *****************************************************************************/ |
| |
| #include "sysdefs.h" |
| #include "perf_api.h" |
| |
| #ifndef GEN_FOR_PC /* Disable for MoDIS CodenGen error */ |
| /* Define functions normally accessed from the C library */ |
| #include <string.h> |
| #include <stdlib.h> |
| |
| #endif |
| |
| #define SysMemset memset |
| #define SysMemcpy memcpy |
| #define SysMemcmp memcmp |
| #define SysAbs( x ) abs( (x) ) |
| |
| #define ALL_ST_INTS_MASK 0xFFFF /* Mask used for all ST interrupt Mask */ |
| |
| |
| #define PAD32(_bytes_) ((((_bytes_) + sizeof(kal_uint32) - 1)/sizeof(kal_uint32)) * sizeof(kal_uint32)) |
| |
| /* Define variables used for System Timer interrupts */ |
| #define ST_CPINT_0 0x0001 |
| #define ST_CPINT_125 0x0002 |
| #define ST_CPINT_250 0x0004 |
| #define ST_CPINT_375 0x0008 |
| #define ST_CPINT_500 0x0010 |
| #define ST_CPINT_625 0x0020 |
| #define ST_CPINT_750 0x0040 |
| #define ST_CPINT_875 0x0080 |
| #define ST_CPINT_1000 0x0100 |
| #define ST_CPINT_1125 0x0200 |
| #define ST_CPINT_1250 0x0400 |
| #define ST_CPINT_1375 0x0800 |
| #define ST_CPINT_1500 0x1000 |
| #define ST_CPINT_1625 0x2000 |
| #define ST_CPINT_1750 0x4000 |
| #define ST_CPINT_1875 0x8000 |
| |
| #define ST_CPINT_ALL 0xFFFF |
| |
| /* Define variables used for System Timer interrupts for DO*/ |
| #define ST_DO_CPINT_0 0x0001 |
| #define ST_DO_CPINT_166 0x0002 |
| #define ST_DO_CPINT_333 0x0004 |
| #define ST_DO_CPINT_500 0x0008 |
| #define ST_DO_CPINT_667 0x0010 |
| #define ST_DO_CPINT_834 0x0020 |
| #define ST_DO_CPINT_1001 0x0040 |
| #define ST_DO_CPINT_1168 0x0080 |
| #define ST_DO_CPINT_1335 0x0100 |
| #define ST_DO_CPINT_1502 0x0200 |
| #define ST_DO_CPINT_1669 0x0400 |
| #define ST_DO_CPINT_1836 0x0800 |
| #define ST_DO_CPINT_2003 0x1000 |
| #define ST_DO_CPINT_2170 0x2000 |
| #define ST_DO_CPINT_2337 0x4000 |
| #define ST_DO_CPINT_2504 0x8000 |
| |
| #define ST_DO_CPINT_ALL 0xFFFF |
| |
| |
| #define INVALID_SYSTIME_SECS 0xFFFFFFFF |
| |
| |
| #define C2K_INVALID_MODULE_ID 0 |
| #define C2K_INVALID_MESSAGE_ID 0 |
| |
| /*--------------------------------------------------------------- |
| * Carrier definitions and check for carrier compile options |
| *----------------------------------------------------------------*/ |
| /* !!! When adding new carrier extension: !!! */ |
| /* !!! -update TOTAL_CARRIER_EXTENSIONS check below !!! */ |
| /* !!! -add carrier to SysCarrierId enum below !!! */ |
| /* !!! -update function sysGetCarrierdId() in sysutils.c !!! */ |
| /* !!! -update CarrierFeatureMatrix[][] in function !!! */ |
| /* !!! sysIsFeatureSupported()in sysutils.c !!! */ |
| #define TOTAL_CARRIER_EXTENSIONS ( defined(VERIZON_EXTENSIONS) + \ |
| defined(SPRINT_EXTENSIONS) + \ |
| defined(LGT_EXTENSIONS) + \ |
| defined(KDDI_EXTENSIONS) ) |
| |
| #if TOTAL_CARRIER_EXTENSIONS > 1 |
| #error "Multiple carrier extensions(Verizon/Sprint/...) enabled in this build" |
| #endif |
| |
| typedef enum |
| { |
| SYS_CARRIER_GENERIC = 0, /* no carrier extension defined */ |
| SYS_CARRIER_VERIZON, /* VERIZON_EXTENSIONS */ |
| SYS_CARRIER_SPRINT, /* SPRINT_EXTENSIONS */ |
| SYS_CARRIER_CHINATELECOM, /* CHINATELECOM_EXTENSIONS */ |
| SYS_CARRIER_LGT, /* LGT_EXTENSIONS */ |
| SYS_CARRIER_KDDI, /* KDDI_EXTENSIONS */ |
| SYS_NUM_CARRIERS |
| } SysCarrierId; |
| |
| /*--------------------------------------------------------------- |
| * Declare constants and typedefs used for 1x in SysTime.c |
| *----------------------------------------------------------------*/ |
| |
| /* Define interrupt types used in SysIntEnable call */ |
| typedef enum |
| { |
| SYS_FIQ_INT = 0x40, |
| SYS_IRQ_INT = 0x80, |
| SYS_ALL_INT = SYS_IRQ_INT | SYS_FIQ_INT |
| } SysIntT; |
| |
| /* structure used for finer system time resolution (36 bits) */ |
| typedef struct |
| { |
| kal_uint32 MostSignificant32Bits; |
| kal_uint8 LeastSignificant4Bits; |
| } SysSystemTimeFineT; |
| |
| typedef struct |
| { |
| kal_bool Immediate; /* do immdediate or at action time */ |
| SysSystemTimeT Time; /* action time in 20 ms */ |
| } SysActionTimeT; |
| |
| typedef enum |
| { |
| SYS_FRAME_SIZE_20MS = 0, |
| SYS_FRAME_SIZE_26MS = 1 |
| } SysFrameSizeT; |
| |
| typedef enum |
| { |
| SYS_TX_SIGNAL_PERIOD_5MS, |
| SYS_TX_SIGNAL_PERIOD_10MS, |
| SYS_TX_SIGNAL_PERIOD_20MS |
| } SysTxSignalPeriodT; |
| |
| typedef enum |
| { |
| SYS_TX_SIGNAL_START_FRAME_SUBFRAME_0, /* Tx signal starts at 0 ms into 20 ms frame */ |
| SYS_TX_SIGNAL_START_FRAME_SUBFRAME_1, /* Tx signal starts at 5 ms into 20 ms frame */ |
| SYS_TX_SIGNAL_START_FRAME_SUBFRAME_2, /* Tx signal starts at 10 ms into 20 ms frame */ |
| SYS_TX_SIGNAL_START_FRAME_SUBFRAME_3 /* Tx signal starts at 15 ms into 20 ms frame */ |
| } SysTxSignalStartFrameT; |
| |
| |
| typedef enum |
| { |
| SLOT00_NUM = 0x00, /* PCG or Slot 0 */ |
| SLOT01_NUM, |
| SLOT02_NUM, |
| SLOT03_NUM, |
| SLOT04_NUM, |
| SLOT05_NUM, |
| SLOT06_NUM, |
| SLOT07_NUM, |
| SLOT08_NUM, |
| SLOT09_NUM, |
| SLOT10_NUM, |
| SLOT11_NUM, |
| SLOT12_NUM, |
| SLOT13_NUM, |
| SLOT14_NUM, |
| SLOT15_NUM |
| } SlotMaskNumberT; |
| |
| |
| typedef struct |
| { |
| kal_bool Enabled; |
| kal_uint8 FrameSize; |
| kal_uint8 Cnt; |
| kal_uint8 System; |
| } FreeRunT; |
| |
| typedef struct |
| { |
| kal_bool ValidCalendarSystemTime; |
| kal_uint32 Lower32; |
| kal_uint8 Upper6; |
| kal_uint8 LpSec; |
| kal_int8 LtmOff; |
| kal_bool DayLt; |
| FreeRunT FreeRun; |
| } SysTimeDataT; |
| |
| typedef struct |
| { |
| kal_uint32 Lower32; |
| kal_uint8 Upper6; |
| }FullSystemTimeT; |
| |
| |
| typedef struct |
| { |
| kal_uint32 Seconds; |
| kal_uint32 Milliseconds; |
| } SysCalendarTimeDataT; |
| |
| |
| /*--------------------------------------------------------------- |
| * Declare constants and typedefs used for DO in SysTime.c |
| *----------------------------------------------------------------*/ |
| /* Select the mode when called SysCallbackregister or cancel */ |
| #define SYS_ACTION_EVENT_MASK 0x1 |
| #define SYS_ACTION_SLOT_EVENT_MASK 0x2 |
| #define SYS_PERIODIC_SLOT_EVENT_MASK 0x4 |
| typedef enum |
| { /* bit 0 = 0: slot event |
| bit 0 = 1: action event |
| bit 1 = 1: action slot event |
| bit 2 = 0: single event |
| bit 2 = 1: periodic event |
| */ |
| ACTION_EVENT = SYS_ACTION_EVENT_MASK, |
| ACTION_SLOT_EVENT = (SYS_ACTION_EVENT_MASK | SYS_ACTION_SLOT_EVENT_MASK), |
| SLOT_EVENT = 0, |
| PERIODIC_SLOT_EVENT = SYS_PERIODIC_SLOT_EVENT_MASK, |
| ACTION_PERIODIC_SLOT_EVENT = (ACTION_SLOT_EVENT | SYS_PERIODIC_SLOT_EVENT_MASK) |
| } SysEventTypeT; |
| |
| typedef enum |
| { |
| SINGLE_PCG_EVENT = SLOT_EVENT, |
| PERIODIC_PCG_EVENT = PERIODIC_SLOT_EVENT |
| } PcgEventTypeT; |
| #define SINGLE_SLOT_EVENT SLOT_EVENT |
| |
| /* For Tag Type */ |
| #define SYS_TAG_FRMOFT_ADJ_MASK 0x8 /* FrameOffset adjust flag, bit 3: 0 = Offset not yet adjusted, 1 = FrameOffset adjusted */ |
| #define SYS_TAG_FRMOFT_MASK 0x4 /* FrameOffset, bit 2: 0 = No Offset, 1 = FrameOffset */ |
| #define SYS_TAG_KEEP_MASK 0x2 /* Flush or Keep, bit 1: 0 = Flush Q, 1 = Keep Q */ |
| #define SYS_TAG_MODE_MASK 0x1 /* AirInterface, bit 0: 0 = 1xRTT, 1 = EVDO */ |
| typedef enum |
| { |
| FLUSH_QUEUE_1X = 0, /* b000 */ |
| FLUSH_QUEUE_DO = 1, /* b001 */ |
| KEEP_QUEUE_1X = 2, /* b010 */ |
| KEEP_QUEUE_DO = 3, /* b011 */ |
| OFT_FLUSH_QUEUE_DO = 5, /* b101 */ |
| OFT_KEEP_QUEUE_DO = 7 /* b111 */ |
| } SysTagTypeT; |
| |
| /* Define Tracking Frame Counter based, according 1X and DO Frame counter */ |
| typedef struct |
| { |
| kal_uint32 Lower32; /* Lower 32 bit */ |
| kal_uint8 Upper6; /* Upper 6 bit */ |
| } FrameRecT; |
| |
| /* The system time definition in echip level. */ |
| typedef struct |
| { |
| kal_uint64 SuperFrame; /* The superframe in 80ms unit. */ |
| kal_uint32 Chip8xOffset; /* Offset to 80ms frame boundary, in unit of 1/8 chip. */ |
| } SysSFrameTimeT; |
| |
| |
| typedef struct |
| { |
| kal_uint32 Lower32; |
| kal_uint8 Upper6; |
| kal_int8 Subframe; |
| kal_int8 Slot; |
| kal_int16 SymbNum; |
| } SysTimeFullT; |
| |
| |
| /* For Transition from 1x to do or vise versa */ |
| #define SYS_TRANS_HW_SWITCH 0x1 |
| #define SYS_TRANS_DUAL_UPDATE 0x2 |
| #define SYS_TRANS_TIME_RESET 0x4 |
| #define SYS_TRANS_TIME_RESYNC 0x8 |
| typedef enum |
| { |
| /* (Time << 2) | (Update << 1) | HW |
| Time : 0 = Curr, 1 = Reset, 2 = Resync |
| Update: 0 = SINGLE, 1 = DUAL |
| HW : 0 = NO, 1 = HW |
| */ |
| SYS_TRANS_NO_ACTION = 0, |
| SYS_TRANS_CURR_SINGLE_HW = 1, /* b0001 */ |
| SYS_TRANS_RESET_SINGLE_HW = 5, /* b0101 */ |
| SYS_TRANS_RESET_DUAL_HW = 7, /* b0111 */ |
| SYS_TRANS_RESYNC_SINGLE_NO = 8, /* b1000 */ |
| SYS_TRANS_RESYNC_SINGLE_HW = 9, /* b1001 */ |
| SYS_TRANS_RESYNC_DUAL_HW = 11 /* b1011 */ |
| } SysTransitionTypeT; |
| |
| |
| /*---------------------------------------------------------------------------------- |
| * Declare constants and typedefs used for Bondout Option functions in SysBondout.c |
| *-----------------------------------------------------------------------------------*/ |
| typedef enum |
| { |
| SYS_BONDOUT_EVDOREV0_VOICE, |
| SYS_BONDOUT_EVDOREV0_NO_VOICE, |
| SYS_BONDOUT_EVDOREV0A_VOICE, |
| SYS_BONDOUT_EVDOREV0A_NO_VOICE, |
| SYS_BONDOUT_VOICE_ONLY |
| } SysBondoutOptionsT; |
| |
| typedef enum |
| { |
| SYS_ENH_SYSTEM_SELECT_FEATURE, /* Enhanced System Select with AutoA and AutoB options */ |
| SYS_ERI_FEATURE, /* Enhanced Roaming Indicator */ |
| SYS_EXT_SMS_INIT_FEATURE, /* External SMS Initialization */ |
| SYS_RSVD_ASSIGN_MODE_111_FEATURE,/* Enables IS-95A to specify Rate set 1 or 2 for data calls |
| using Reserved 111 ASSIGN Mode. */ |
| SYS_GPS_FEATURE, /* Enhanced GPS HW select with features */ |
| SYS_ALT_AKEY_CHKSUM_FEATURE, /* Alternate Akey Checksum algorithm */ |
| |
| SYS_GPS_SUPL_FEATURE, |
| |
| SYS_PRL_ENHANCE_FOR_INT_ROAM_FEATURE, /* PRL Enhancements for International Roaming per CDG 86 */ |
| |
| SYS_REGISTRATION_THROTTLING_FEATURE, /* Registration throttling (to avoid draining battery in area |
| where MS continously fails to register due to Max Access |
| Probe failures) */ |
| |
| SYS_SAFETY_NET_REGISTRATION_FEATURE, /* Feature to perform safety net/fallback registration in |
| * network conditions that may result in the network not |
| * knowing the whereabouts of the MS for extended periods. |
| * Feature needed to compensation for poor network configurations |
| * seen on the TATA network in India. |
| */ |
| |
| SYS_HSC_CLK_CAL_FAST_SETTLE_FEATURE, /* Feature to be turned on on devices with fast drifting 32k clocks */ |
| |
| SYS_HWD_KEYBOARD_FEATURE, /* Hwd Keyboard. */ |
| |
| SYS_CSS_1X_MAPE_HOME_SYS_AVOID_FEATURE, /* Home system avoidance upon MAPE registration failure. |
| Acquire less preferred system if available */ |
| |
| SYS_CSS_1X_CDG143_MAPE_SYS_AVOID_FEATURE, /* CDG143 Req. The channel over which access failed is placed last |
| in the channels list */ |
| |
| SYS_CSS_1X_CDG143_REDIR_SYS_AVOID_FEATURE, /* CDG143 Req. If Redirection Scan List is exhausted and return_if_fail is KAL_FALSE, |
| MS shall avoid the original channel over which the redirection was received for 30 sec. */ |
| |
| SYS_CSS_1X_CDG143_REDIR_MPSS_FEATURE, /* CDG143 Req 4.5.5. Perform MPSS after T_bsr_redir when acquiring a less pref. sys. following a |
| redirection. If no better service found, reacquire the original system from which it got redirected */ |
| |
| SYS_CSS_1X_CDG143_CALL_RELEASE_MPSS_FEATURE, /* CDG143 Req 4.2.5b. MS shall perform better service reselection T_bsr_call sec after end of call */ |
| |
| SYS_CSS_1X_FINISH_1ST_BSR_B4_DATACALL_FEATURE, /* MS will continue the initial BSR after acquiring a less preferred system |
| if the user attempts to access the network for a data call */ |
| |
| SYS_CSS_1X_FINISH_1ST_BSR_AFTER_POWERUP_FEATURE, /* MS will continue the initial BSR after acquiring a less preferred system |
| during power up if user attempts calls (except for 911) */ |
| |
| SYS_CSS_1X_USE_NAM_FOR_VALIDATION_FEATURE, /* A 1x System not found in the PRL, not negative in NAM but found in the NAM |
| positive SID NID list will be declared Home and accepted (if PRL pref_only=KAL_FALSE) */ |
| |
| SYS_CSS_1X_VOICE_ROAM_BARRING_FEATURE, /* Ability to reject International and or Domestic roaming based on ERI */ |
| |
| SYS_CSS_1X_LOST_CHANNEL_DWELL_FEATURE, /* The lost channel will be scanned repeatedly for the duratioon specified */ |
| /* in Phase 0 of OOSA System Lost Stage => Phase 0 scan method MUST be set to timer based. */ |
| |
| SYS_CSS_1X_RESET_GEO_UPON_SYSLOST_FEATURE, /* Upon system lost, the MS will scan from the top of the GEO instead of continuing */ |
| /* from current index */ |
| |
| SYS_CSS_1X_RESTRICT_SILENTRETRY_TO_SAME_GEO_FEATURE, /* Only same Geo Systems will be accepted in Silent Retry state */ |
| |
| SYS_CSS_1X_ONLY_REJECT_REDIR_IF_NEG_IN_PRL_FEATURE, /* Reject the redirected system only if found negative in PRL or NAM. */ |
| /* Non-system table systems will be accepted no matter what */ |
| |
| SYS_CSS_1X_ACCEPT_SIDNID_CHANGE_IN_IDLE_FEATURE, /* Do not inititate immediate better service scan in SID NID changes */ |
| /* as a result of idle channel hash, idle handoff */ |
| |
| SYS_CSS_1X_USE_RESTRICTIVE_SIDNID_MATCH_FEATURE, /* When matching an SID/NID in the PRL, use more restrictive SID/NID */ |
| /* matching using the band class and channel */ |
| |
| SYS_CSS_DO_USE_RESTRICTIVE_SUBNET_MATCH_FEATURE, /* Restrictive subnet match feature */ |
| |
| SYS_CSS_1X_MPSS_PILOT_STRENGTH_FEATURE, /* During MPSS, higher priority system can only be selected if they meet certain pilot strength criteria*/ |
| |
| SYS_CSS_1X_CDG143_NEW_SYS_MPSS_FEATURE, /* CDG143 Req 4.2.6. MS shall perform better service reselection T_bsr_newsys sec after idle handoff or hash to less pref system */ |
| |
| SYS_CSS_1X_ALLOW_SILENTRETRY_ON_LOWER_PRI_FEATURE, /* Allow Silent Retry on lower priority systems in same geo. */ |
| |
| SYS_MMC_MBIM_API_FEATURE, /* Microsoft MBIM API feature */ |
| |
| SYS_MCC_1X_LTE_ASSOCIATION, /* SPRINT carrier requirement */ |
| |
| SYS_NUM_FEATURES |
| } SysFeatureId; |
| |
| /* bitmap for Home System avoidance customization */ |
| typedef enum |
| { |
| ALLOW_AVOIDANCE_WHEN_SYS_LOST = 0, |
| ALLOW_LESS_PREF_SYS_AVOIDANCE, |
| ALLOW_MPSS_DURING_AVOIDANCE |
| } SysCssHomeSysAvoidanceOptions; |
| |
| /* For C2k ,Define for C2k Sys Recover PREF Info Trace */ |
| typedef struct |
| { |
| module_type module_id; /**Module id which call Sys Recover */ |
| SysAirInterfaceT cur_c2k_rat; /**Modem Rat which call Sys Recover*/ |
| kal_uint32 RecoverDbgData[16]; |
| } C2kSysRecoverDbgInfoT; |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysGetCpsrValue |
| |
| DESCRIPTION: |
| |
| PARAMETERS: |
| |
| None |
| |
| RETURNED VALUES: |
| |
| CPSR Value. |
| |
| *****************************************************************************/ |
| extern kal_uint32 SysGetCpsrValue(void); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysGetSpValue |
| |
| DESCRIPTION: |
| |
| PARAMETERS: |
| |
| None |
| |
| RETURNED VALUES: |
| |
| SP Value. |
| |
| *****************************************************************************/ |
| extern kal_uint32 SysGetSpValue(void); |
| |
| /***************************************************************************** |
| ; |
| ; FUNCTION NAME: SysSaveArmRegs |
| ; |
| ; DESCRIPTION: |
| ; |
| ; Stores the Arm current mode regs (r0~r15 to ArmRegs) |
| ; |
| ; This function should only be used during crash dump. |
| ; |
| ; C FUNCTION PROTOTYPE: |
| ; |
| ; void SysSaveArmRegs(void); |
| ; |
| ; PARAMETERS: |
| ; |
| ; None |
| ; |
| ; RETURNED VALUES: |
| ; |
| ; None. |
| ; |
| ;*****************************************************************************/ |
| void SysSaveArmRegs(void); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysSaveContextHistory |
| |
| DESCRIPTION: |
| |
| This routine save NU_Thread_Id and 32k time to ContextHistory array. |
| It is called by high frequency, so use ASM routine to save time. |
| |
| C FUNCTION PROTOTYPE: |
| |
| void SysSaveContextHistory(void); |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| void SysSaveContextHistory(void); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysJumpToCodeAddr |
| |
| DESCRIPTION: |
| |
| This routine jump to the one code section, boot, cp or UA boot etc. |
| |
| PARAMETERS: |
| |
| CpAddr: The start address of CP code section. |
| R6Flag: The flag need to save to R6 |
| |
| RETURNED VALUES: |
| |
| None |
| |
| *****************************************************************************/ |
| extern void SysJumpToCodeAddr(kal_uint32 CpAddr, kal_uint32 R6Flag); |
| |
| extern kal_uint32 SaveAndSetIRQMask(void); |
| extern void RestoreIRQMask(kal_uint32); |
| extern kal_uint32 kal_hrt_SaveAndSetIRQMask(void); |
| extern void kal_hrt_RestoreIRQMask(kal_uint32); |
| |
| #define SysIntDisable(IntType) \ |
| { \ |
| volatile kal_uint32 M_IntStat; \ |
| if (kal_get_current_domain() != KAL_DOMAIN_NORMAL) \ |
| { \ |
| M_IntStat = kal_hrt_SaveAndSetIRQMask(); \ |
| } \ |
| else \ |
| { \ |
| M_IntStat = SaveAndSetIRQMask(); \ |
| } \ |
| |
| #define SysIntEnable(IntType) \ |
| if (kal_get_current_domain() != KAL_DOMAIN_NORMAL) \ |
| { \ |
| kal_hrt_RestoreIRQMask(M_IntStat); \ |
| } \ |
| else \ |
| { \ |
| RestoreIRQMask(M_IntStat); \ |
| } \ |
| } |
| |
| #define SysIntDisableEnd(IntType) M_IntStat;} |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeRegister |
| |
| DESCRIPTION: |
| |
| This routine registers either a signal OR a call back function associated |
| with an action time in the system time queue. The system time queue contains an order |
| list of all action times. |
| |
| NOTE: 1. The Routine function pointer MUST be set to NULL to cause a message to be sent. |
| 2. If this Routine function is called in HRT domain, only be allowed in frame/PCG/slot tick. |
| |
| PARAMETERS: |
| |
| ActionTime - Action time to insert into the time queue |
| Module_id - Module ID of task to send signal. |
| Signal - Signal to send. |
| Routine - Call back routine when action time is reached |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| #ifdef SYS_DEBUG_FAULT_FILE_INFO |
| #define C2kSysTimeRegister(ActionTime, module_id, message, Routine) \ |
| __C2kSysTimeRegister(ActionTime, module_id, message, Routine, __MODULE__, __LINE__) |
| extern void __C2kSysTimeRegister(kal_uint32 ActionTime, module_type module_id, msg_type message, void (*Routine) (kal_uint32), |
| const char *ModuleName, unsigned line); |
| #else |
| extern void C2kSysTimeRegister(kal_uint32 ActionTime, module_type module_id, msg_type message, void (*Routine) (kal_uint32)); |
| #endif |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeRegisterCancel |
| |
| DESCRIPTION: |
| |
| This routine cancels the signal OR callback that is registered at a specified |
| action time. |
| |
| NOTE: If this Routine function is called in HRT domain, only be allowed in frame/PCG/slot tick. |
| |
| PARAMETERS: |
| |
| ActionTime - Action time of registered signal to cancel. |
| Module_id - Module ID of task to send signal. |
| Signal - Signal to send. |
| Routine - Call back routine when action time is reached |
| |
| RETURNED VALUES: |
| |
| kal_boolean flag indicating operation status. |
| Returns KAL_TRUE if action cancelled successfully. |
| Returns KAL_FALSE if specified action not found in registration queue. |
| |
| Note: Input paramters must match those used when SysTimeRegister was called |
| originally. |
| |
| *****************************************************************************/ |
| #ifdef SYS_DEBUG_FAULT_FILE_INFO |
| #define C2kSysTimeRegisterCancel(ActionTime, module_id, message, Routine) \ |
| __C2kSysTimeRegisterCancel(ActionTime, module_id, message, Routine, __MODULE__, __LINE__) |
| extern kal_bool __C2kSysTimeRegisterCancel(kal_uint32 ActionTime, module_type module_id, msg_type message, void (*Routine) (kal_uint32), |
| const char *ModuleName, unsigned line); |
| #else |
| extern kal_bool C2kSysTimeRegisterCancel(kal_uint32 ActionTime, module_type module_id, msg_type message, void (*Routine) (kal_uint32)); |
| #endif |
| |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysCallbackGroupCancel |
| |
| DESCRIPTION: |
| |
| This routine cancels all the SLOT_EVENT, ACTION_EVENT, and SLOT_ACTION_EVENT |
| (basically ALL) callbacks associated with the specified module id and Signal. |
| |
| NOTE: If this Routine function is called in HRT domain, only be allowed in frame/PCG/slot tick. |
| |
| PARAMETERS: |
| |
| Module_id - Module ID of task to send signal. |
| Signal - Signal to send. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| #ifdef SYS_DEBUG_FAULT_FILE_INFO |
| #define C2kSysCallbackGroupCancel(AirInterface, module_id, message) \ |
| __C2kSysCallbackGroupCancel(AirInterface, module_id, message, __MODULE__, __LINE__) |
| extern void __C2kSysCallbackGroupCancel(SysAirInterfaceT AirInterface, module_type module_id, msg_type message, |
| const char *ModuleName, unsigned line); |
| #else |
| extern void C2kSysCallbackGroupCancel(SysAirInterfaceT AirInterface, module_type module_id, msg_type message); |
| #endif |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysPcgEventRegister |
| |
| DESCRIPTION: |
| |
| This routine registers either a signal OR a call back function associated |
| with a PCG trigger with the system timer interrupts. The PCG event queue contains |
| the number of events based on which PCG is checked. |
| |
| NOTE: If this Routine function is called in HRT domain, only be allowed in frame/PCG/slot tick. |
| |
| PARAMETERS: |
| |
| PcgMask - System Timer event mask to identify which PCG(s) to trigger event |
| EventType - Continuous periodic or single PCG event types. |
| Module_id - Module ID of task to send signal. |
| Signal - Signal to send. |
| Routine - Call back routine when action time is reached |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| #ifdef SYS_DEBUG_FAULT_FILE_INFO |
| #define C2kSysPcgEventRegister(PcgMask, EventType, module_id, message, Routine) \ |
| __C2kSysPcgEventRegister(PcgMask, EventType, module_id, message, Routine, __MODULE__, __LINE__) |
| extern void __C2kSysPcgEventRegister(kal_uint16 PcgMask, PcgEventTypeT EventType, module_type module_id, msg_type message, void (*Routine) (kal_uint32), |
| const char *ModuleName, unsigned line); |
| #else |
| extern void C2kSysPcgEventRegister(kal_uint16 PcgMask, PcgEventTypeT EventType, module_type module_id, msg_type message, void (*Routine) (kal_uint32)); |
| #endif |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimePcgEventRegister |
| |
| DESCRIPTION: |
| |
| This routine registers either a signal OR a callback function associated |
| with a PCG trigger at an defined action time. This is done with a special |
| callback at the set action time which then logs the PCG event in the |
| appropriate PCG event queue. |
| |
| NOTE: If this Routine function is called in HRT domain, only be allowed in frame/PCG/slot tick. |
| |
| PARAMETERS: |
| |
| ActionTime - Action time to insert PCG event callback routine into the time queue |
| PcgMask - System Timer event mask to identify which PCG(s) to trigger event |
| EventType - Continuous periodic or single PCG event types. |
| Module_id - Module ID of task to send signal. |
| Signal - Signal to send. |
| Routine - Call back routine when action time is reached |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| #ifdef SYS_DEBUG_FAULT_FILE_INFO |
| #define C2kSysTimePcgEventRegister(ActionTime, PcgMask, EventType, module_id, message, Routine) \ |
| __C2kSysTimePcgEventRegister(ActionTime, PcgMask, EventType, module_id, message, Routine, __MODULE__, __LINE__) |
| extern void __C2kSysTimePcgEventRegister(kal_uint32 ActionTime, kal_uint16 PcgMask, PcgEventTypeT EventType, module_type module_id, msg_type message, void (*Routine) (kal_uint32), |
| const char *ModuleName, unsigned line); |
| #else |
| extern void C2kSysTimePcgEventRegister(kal_uint32 ActionTime, kal_uint16 PcgMask, PcgEventTypeT EventType, module_type module_id, msg_type message, void (*Routine) (kal_uint32)); |
| #endif |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysPcgEventRegisterCancel |
| |
| DESCRIPTION: |
| |
| This routine cancels the signal OR callback that is registered at a specified |
| PCG event. |
| |
| NOTE: Input parameters must match those used when SysEventRegister was called |
| originally. This function would normally be used to clear a PCG event which |
| is generated continuously/periodically - single PCG events clear themselves. |
| |
| NOTE: If this Routine function is called in HRT domain, only be allowed in frame/PCG/slot tick. |
| |
| PARAMETERS: |
| |
| PcgMask - System Timer event mask to identify which PCG(s) to clear event |
| Module_id - Module ID of task to send signal. |
| Signal - Signal to send. |
| Routine - Call back routine when action time is reached |
| |
| RETURNED VALUES: |
| |
| kal_boolean flag indicating operation status. |
| Returns KAL_TRUE if action cancelled successfully. |
| Returns KAL_FALSE if specified action not found in PCG event queue. |
| |
| *****************************************************************************/ |
| #ifdef SYS_DEBUG_FAULT_FILE_INFO |
| #define C2kSysPcgEventRegisterCancel(PcgMask, module_id, message, Routine) \ |
| __C2kSysPcgEventRegisterCancel(PcgMask, module_id, message, Routine, __MODULE__, __LINE__) |
| extern kal_bool __C2kSysPcgEventRegisterCancel(kal_uint16 PcgMask, module_type module_id, msg_type message, void (*Routine) (kal_uint32), |
| const char *ModuleName, unsigned line); |
| #else |
| extern kal_bool C2kSysPcgEventRegisterCancel(kal_uint16 PcgMask, module_type module_id, msg_type message, void (*Routine) (kal_uint32)); |
| #endif |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeIntReg |
| |
| DESCRIPTION: |
| |
| This routine register systime related IRQ |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| |
| extern void SysTimeIntReg(void); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeGet |
| |
| DESCRIPTION: |
| |
| Frame number updating in Gen93 is at frame boudary but not like Gen91 at PCG0 IRQ. |
| |
| To maintain meaning of this Routine return value, the returned frame number should |
| consider frame-offset. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| kal_uint32 - System time variable is returned. |
| |
| *****************************************************************************/ |
| extern kal_uint32 SysTimeGet(void); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeGetWithoutOffset |
| |
| DESCRIPTION: |
| |
| This routine gets a copy of the 1X system time variable which is not including |
| frame-offset. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| kal_uint32 - System time variable is returned. |
| |
| *****************************************************************************/ |
| extern kal_uint32 SysTimeGetWoOffset(void); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeGetFine |
| |
| DESCRIPTION: |
| |
| This routine returns the current system time with finer resolution, |
| nominally 1.25 ms resolution. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| Structure containing 36 bit resolution system time. |
| |
| *****************************************************************************/ |
| extern SysSystemTimeFineT SysTimeGetFine(void); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeLisr |
| |
| DESCRIPTION: |
| |
| This routine is the Lisr for system time. It increments |
| the system time variable and then determines if an action |
| is equal to the new system time. If so the HISR routine |
| is activated. |
| |
| PARAMETERS: |
| |
| StIntSrc - System Time Block Interrupt Source register contents at time of |
| interrupt. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeLisr(kal_uint32 StIntSrc, kal_uint8 AirInterface); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysInit |
| |
| DESCRIPTION: |
| |
| This routine initializes system time variables. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysInit(void); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysEnableTxSignal |
| |
| DESCRIPTION: |
| |
| This routine controls the sending of the Tx signal to any tasks registered |
| using the SysRegisterTxSignal routine. |
| |
| |
| PARAMETERS: |
| |
| TxSigPeriod - Sets rate at which Tx signal occurs. |
| TxSigStartFrame - Sets which sub-20ms frame the first Tx signal occurs in. |
| Parameter is relative to the 20 ms frame. This is ignored |
| for a 20 ms frame. Note this is valid for the first Tx |
| Signal; after the first one interrupts occur at each (sub)frame. |
| |
| Note: Tx signal interrupt is configured for a constant number of ms before |
| the frame. |
| |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysEnableTxSignal(SysTxSignalPeriodT TxSigPeriod, |
| SysTxSignalStartFrameT TxSigStartFrame, |
| kal_uint8 PcgIdx); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysDisableTxSignal |
| |
| DESCRIPTION: |
| |
| This routine disables the sending of the Tx signal to any tasks registered |
| using the SysRegisterTxSignal routine. |
| |
| |
| PARAMETERS: |
| |
| None. |
| |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysDisableTxSignal(void); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysEnableTimerSync |
| |
| DESCRIPTION: |
| |
| This routine enables/disables the synchronization of the CTS/DTS timers |
| with the System Timer. When enabled the System Timer block controls the |
| rollover of the CTS Timer. On disable, the CTS timer is set to rollover |
| at 20 ms, but not synced to the System Timer. |
| |
| PARAMETERS: |
| |
| Enable - KAL_TRUE for enable, KAL_FALSE for disable. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| #define SysEnableTimerSync(Enable) |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysSetFrameSize |
| |
| DESCRIPTION: |
| |
| This routine sets the System Timer block hardware to produce interrupts |
| corresponding to either a 20 ms or 26 ms period. |
| |
| PARAMETERS: |
| |
| FrameSize - Either 20 or 26 ms frames. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysSetFrameSize(SysFrameSizeT FrameSize); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysCtsCallbackClear |
| |
| DESCRIPTION: Clears out all instances of the specified function from the |
| CTS callback routine . |
| |
| PARAMETERS: CallbackPtr - routine to clear out of callback queue |
| |
| RETURNED VALUES: None |
| |
| *****************************************************************************/ |
| #define SysCtsCallbackClear(CallbackPtr) |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysCtsRegisterCallback |
| |
| DESCRIPTION: Provides a callback after the specified delay. The delay |
| is generated by using the hardware frame counter to |
| determine the current time, and then programming a single |
| shot strobe to occur after the specified delay. |
| |
| Notes: |
| 1) Assumes frame time is 20 ms. |
| 2) Contains overrun checking. |
| |
| PARAMETERS: DelayMs - Delay in ms. |
| CallbackPtr - Function to call after the delay. |
| |
| RETURNED VALUES: Flag indicating if a callback was scheduled successfully. |
| KAL_TRUE: Callback scheduled. |
| KAL_FALSE: NO CTS Timers available, callback NOT scheduled. |
| |
| *****************************************************************************/ |
| #define SysCtsRegisterCallback(DelayMs, CallbackPtr) |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysCtsRegisterCallbackUsec |
| |
| DESCRIPTION: Provides a callback after the specified delay. The delay |
| is generated by using the hardware frame counter to |
| determine the current time, and then programming a single |
| shot strobe to occur after the specified delay. |
| |
| Notes: |
| 1) Contains overrun checking. |
| 2) Minimum delay of 100usec is required due to resolution |
| of 80kHz counter value. |
| 3) Resolution of 80kHz timer effectively "truncates" usec callbacks |
| to units of 12.5usec ticks. |
| 4) Specifying the LISR context will cause the system to crash if |
| the registered callback attempts to use any EXE/RTOS functionality |
| (e.g. - Intertask messagings/signals or MonFaults) This should |
| ONLY be used for time-critical operations that does not involve |
| the RTOS. |
| |
| PARAMETERS: DelayUsec - Delay in usec. |
| Context - Context in which to execute callback (i.e., LISR or HISR) |
| CallbackPtr - Function to call after the delay. |
| |
| RETURNED VALUES: Flag indicating if a callback was scheduled successfully. |
| KAL_TRUE: Callback scheduled. |
| KAL_FALSE: NO CTS Timers available, callback NOT scheduled. |
| |
| *****************************************************************************/ |
| #define SysCtsRegisterCallbackUsec(DelayUsec, Context, CallbackPtr) |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysCtsRegisterCallbackAbs |
| |
| DESCRIPTION: Provides a callback when the hardware frame counter reaches |
| the specified value. This is implemented by programming a |
| single shot strobe to occur at the specified count. |
| |
| Notes: |
| 1) Assumes frame time is 20 ms. |
| 2) Contains overrun checking. |
| 3) Uses same CTS as SysCtsRegisterCallbackDly |
| |
| |
| PARAMETERS: AbsCount - Frame counter value to generate callback |
| CallbackPtr - Function to call after the delay. |
| |
| RETURNED VALUES: None |
| |
| *****************************************************************************/ |
| #define SysCtsRegisterCallbackAbs(AbsCount, CallbackPtr) |
| |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeReset |
| |
| DESCRIPTION: |
| |
| This routine re-initializes system time variables and clears all callback |
| queues. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeReset(void); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeDataGet |
| |
| DESCRIPTION: |
| |
| This routine retrieves the current system time data including the 38 bit |
| system time in 20 ms units and the other information most recently received |
| in the sync channel message. |
| |
| PARAMETERS: |
| |
| TimeDataP - Pointer to Time data structure to fill in with current data. |
| |
| RETURNED VALUES: |
| |
| kal_bool - KAL_TRUE if valid data was filled in. KAL_FALSE if valid data does NOT exist. |
| |
| *****************************************************************************/ |
| extern kal_bool SysTimeDataGet(SysTimeDataT *TimeDataP); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeSync |
| |
| DESCRIPTION: |
| |
| This routine is used to synchronize the system time variables received on |
| the sync channel with the data stored by SYS. |
| |
| PARAMETERS: |
| |
| LpSec : Leap seconds as received in sync channel message. |
| LtmOff : Local time offset as received in sync channel message |
| (units of signed 30 min). |
| DayLt : Daylight savings time kal_boolean flag. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeSync(kal_uint8 *FullSystemTimeP, |
| kal_uint8 LpSec, |
| kal_int8 LtmOff, |
| kal_bool DayLt); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeUpper6BitsGet |
| |
| DESCRIPTION: |
| |
| This routine retrieves the upper 6 bits of the current system time kept in |
| 20 ms units, making the full system time 38 bits. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| Upper 6 bits of system time (right justified in the 8 bits returned). |
| |
| *****************************************************************************/ |
| extern kal_uint8 SysTimeUpper6BitsGet(void); |
| |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeFullGet |
| |
| DESCRIPTION: |
| |
| This routine retrieves the current system time in 80 ms units. |
| It is returned in the same format as that received on the sync channel, |
| 36 bits contained in a five byte array with the data left justified. |
| |
| |
| |
| PARAMETERS: |
| |
| FullSystemTimeP - Pointer to 5 byte array for return data. |
| |
| RETURNED VALUES: |
| |
| Format: |
| FullSystemTimeP[0] => Current System Time, bits 35-28 |
| FullSystemTimeP[1] => Current System Time, bits 27-20 |
| FullSystemTimeP[2] => Current System Time, bits 19-12 |
| FullSystemTimeP[3] => Current System Time, bits 11-4 |
| FullSystemTimeP[4] => Current System Time, bits 3-0 |
| (contained in bits 7-4 of this byte) |
| |
| |
| *****************************************************************************/ |
| extern void SysTimeFullGet(kal_uint8 *FullSystemTimeP); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeDataCopy |
| |
| DESCRIPTION: |
| |
| PARAMETERS: |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeDataCopy(SysAirInterfaceT AirInterface); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeDataFlush |
| |
| DESCRIPTION: |
| |
| PARAMETERS: |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeDataFlush(SysAirInterfaceT AirInterface); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTime32BitTimeCalc |
| |
| DESCRIPTION: |
| |
| This routine calculates the system time in 20 ms, given the system |
| time in sync channel message format (36 bits in 80 ms units, left |
| justified) and returns the lower 32 bits of the calculated value. |
| |
| |
| |
| PARAMETERS: |
| |
| FullSystemTimeP - Pointer to 5 byte system time array. |
| Format: |
| FullSystemTimeP[0] => Current System Time, bits 35-28 |
| FullSystemTimeP[1] => Current System Time, bits 27-20 |
| FullSystemTimeP[2] => Current System Time, bits 19-12 |
| FullSystemTimeP[3] => Current System Time, bits 11-4 |
| FullSystemTimeP[4] => Current System Time, bits 3-0 |
| (contained in bits 7-4 of this byte) |
| |
| RETURNED VALUES: |
| |
| Lower 32 bits of system time in 20 ms units. |
| |
| *****************************************************************************/ |
| extern kal_uint32 SysTime32BitTimeCalc(kal_uint8 *FullSystemTimeP); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION : SysTime2Secs |
| |
| DESCRIPTION:Converts system time data into number of seconds since |
| the beginning of System Time. System time data includes |
| local time offset, leap seconds, and daylight savings time |
| indicator. |
| |
| PARAMETERS: TimeDataP |
| |
| !!!!IMPORTANT!!!! |
| TimeDataP must be initialized by SysTimeDataGet(TimeDataP). |
| In other words, SysTimeDataGet(TimeDataP) must be called |
| right before this function. |
| |
| RETURNS: kal_uint32 - Number of seconds since start of System Time. |
| Returns 0xFFFFFFFF if not valid. |
| |
| *********************************************************************** |
| * NOTE: THIS FUNCTION WILL NOT RETURN CORRECT VALUES FOR SYSTEM TIMES * |
| * CORRESPONDING TO A DATE LATER THAN FEB 12, 2067 (1X) or * |
| * 31 DEC, 2115 (DO). * |
| * SEE EMBEDDED COMMENTS IN THIS FUNCTION FOR MORE DETAILS. * |
| *********************************************************************** |
| |
| *****************************************************************************/ |
| extern SysCalendarTimeDataT SysTime2Secs(SysTimeDataT* SysTimeData); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysCallbackRegister |
| |
| DESCRIPTION: |
| |
| This routine registers either a signal OR a call back function associated |
| with an action time or Slot/PCG in the system time queue. The system time |
| queue contains an order list of all action times and contains Slot masks |
| without order. |
| |
| NOTE: 1. The Routine function pointer MUST be set to NULL to cause a message to be sent. |
| 2. If this Routine function is called in HRT domain, only be allowed in frame/PCG/slot tick. |
| |
| PARAMETERS: |
| |
| ActionTime - Action time |
| SlotMask - System Timer event mask to identify which Slot(s) to trigger event |
| TagType - Identify the Air interface with Quese operation for Transition such as Flush or Keep. |
| Type - Signal type such as single or periodic shot. |
| Module_id - Module ID of task to send signal. |
| Signal - Signal to send. |
| Routine - Call back routine when action time is reached |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| #ifdef SYS_DEBUG_FAULT_FILE_INFO |
| #define C2kSysCallbackRegister(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \ |
| __C2kSysCallbackRegister(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine, __MODULE__, __LINE__) |
| extern kal_bool __C2kSysCallbackRegister(kal_uint32 ActionTime, kal_uint16 SlotNum, SysTagTypeT TagType, |
| SysEventTypeT EventType, module_type module_id, msg_type message, |
| void (*Routine) (kal_uint32), |
| const char *ModuleName, unsigned line); |
| #else |
| extern kal_bool C2kSysCallbackRegister(kal_uint32 ActionTime, kal_uint16 SlotNum, SysTagTypeT TagType, |
| SysEventTypeT EventType, module_type module_id, msg_type message, |
| void (*Routine) (kal_uint32)); |
| #endif |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysCallbackRegisterCancel |
| |
| DESCRIPTION: |
| |
| This routine registers either a signal OR a call back function associated |
| with an action time or Slot in the system time queue. The system time queue contains |
| an order list of all action times and contains Slot mask without order. |
| |
| NOTE: 1. The Routine function pointer MUST be set to NULL to cause a message to be sent. |
| 2. If this Routine function is called in HRT domain, only be allowed in frame/PCG/slot tick. |
| |
| PARAMETERS: |
| |
| ActionTime - Action time |
| SlotMask - System Timer event mask to identify which Slot(s) to trigger event |
| TagType - Identify the Air interface with Quese operation for Transition such as Flush or Keep. |
| Module_id - Module ID of task to send signal. |
| Signal - Signal to send. |
| Routine - Call back routine when action time is reached |
| |
| RETURNED VALUES: |
| |
| kal_boolean flag indicating operation status. |
| Returns KAL_TRUE if action cancelled successfully. |
| Returns KAL_FALSE if specified action not found in registration queue. |
| |
| Note: Input paramters must match those used when SysCallbackRegister was called |
| originally. |
| |
| *****************************************************************************/ |
| #ifdef SYS_DEBUG_FAULT_FILE_INFO |
| #define C2kSysCallbackRegisterCancel(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine) \ |
| __C2kSysCallbackRegisterCancel(ActionTime, SlotNum, TagType, EventType, module_id, message, Routine, __MODULE__, __LINE__) |
| extern kal_bool __C2kSysCallbackRegisterCancel(kal_uint32 ActionTime, kal_uint16 SlotNum, SysTagTypeT TagType, |
| SysEventTypeT EventType, module_type module_id, msg_type message, |
| void (*Routine) (kal_uint32), |
| const char *ModuleName, unsigned line); |
| #else |
| extern kal_bool C2kSysCallbackRegisterCancel(kal_uint32 ActionTime, kal_uint16 SlotNum, SysTagTypeT TagType, |
| SysEventTypeT EventType, module_type module_id, msg_type message, |
| void (*Routine) (kal_uint32)); |
| #endif |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeCbOperation |
| |
| DESCRIPTION: |
| |
| This routine executes in message deliver HISR to run the systime CB operation which is called in HRT domain; |
| |
| NOTE: If systime CB operation is called in HRT domain, only be allowed in frame/PCG/slot tick. |
| |
| PARAMETERS: |
| |
| Ptr - Pointer to the parameters |
| |
| RETURNED VALUES: |
| |
| None |
| |
| *****************************************************************************/ |
| extern void SysTimeCbOperation(kal_uint8* Ptr); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysDoTimeGet |
| |
| DESCRIPTION: |
| |
| This routine gets a copy of the system time variable as 26msec unit. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| kal_uint32 - System time variable is returned. |
| |
| *****************************************************************************/ |
| extern kal_uint32 SysDoTimeGet( kal_bool useFrameOffset ); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysDoTimeGetSubframe |
| |
| DESCRIPTION: |
| |
| Returns Subframe: a 0-11 subframe count for an 80ms interval. |
| |
| PARAMETERS: |
| |
| UseFrameOffset: Set to KAL_TRUE to subtrace FrameOffset from the SYS unit hardware subframe. |
| |
| RETURNED VALUES: |
| kal_int8 |
| |
| *****************************************************************************/ |
| extern kal_int8 SysDoTimeGetSubframe( kal_bool UseFrameOffset ); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysDoTimeInSlotGet |
| |
| DESCRIPTION: |
| |
| This routine returns the current system time in units of slots. |
| Slots are 1.66ms duration. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| Structure containing 36 bit resolution system time. |
| |
| *****************************************************************************/ |
| extern kal_uint64 SysDoTimeInSlotGet( kal_bool UseFrameOffset ); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysDoTimeUpdateLtfLps |
| |
| DESCRIPTION: |
| |
| This routine writes the LeapSecs and LocalTimeOffset into global structure |
| SysTimeData. |
| |
| PARAMETERS: |
| |
| FrameOffset - in units of slots |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysDoTimeUpdateLtfLps(kal_uint8 LpSec, kal_uint16 LtmOff); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeStatusUpdate |
| |
| DESCRIPTION: |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeStatusUpdate(SysAirInterfaceT AirInterface, kal_uint8 UpdateReason); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysDoTimeFullSet |
| |
| DESCRIPTION: |
| |
| This routine sets the current system time. |
| |
| PARAMETERS: |
| |
| FrameRecT FullSystemTime - Structure to 37 bits input system time array. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysDoTimeFullSet(FrameRecT FullSystemTime); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysDoTimeFullGet |
| |
| DESCRIPTION: |
| |
| Returns: |
| - frame count in units of 26.66ms frame |
| - subframe count within 26.66ms frame [0-3] |
| - slot count within 26.66ms frame [0-15] |
| - symbol number within 26.66ms frame [0-511] |
| |
| PARAMETERS: |
| |
| none |
| |
| RETURNED VALUES: |
| See SysTimeFullT in sysapi.h |
| |
| *****************************************************************************/ |
| extern SysTimeFullT SysDoTimeFullGet(kal_bool UseFrameOffset); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysSetFrameOffset |
| |
| DESCRIPTION: |
| |
| This routine sets C2K modem's frame offset |
| |
| PARAMETERS: |
| |
| AirInterface - 1X or DO |
| FrameOffset - in units of slots |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysSetFrameOffset(SysAirInterfaceT AirInterface, kal_uint8 FrameOffset); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysGetFrameOffset |
| |
| DESCRIPTION: |
| |
| This routine gets C2K modem's frame offset |
| |
| PARAMETERS: |
| |
| AirInterface - 1X or DO |
| |
| |
| RETURNED VALUES: |
| |
| FrameOffset - in units of slots |
| |
| *****************************************************************************/ |
| extern kal_uint8 SysGetFrameOffset(SysAirInterfaceT AirInterface); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeSymbNum |
| |
| DESCRIPTION: |
| Returns the Symbol count [0-0x5FF] if AirInterface==SYS_MODE_EVDO. (wraps 80ms) |
| Returns 0 if AirInterface== SYS_MODE_1xRTT. (wraps 80ms) |
| |
| PARAMETERS: |
| |
| StIntSrc - Current setted Interrupt Mask. |
| |
| RETURNED VALUES: |
| |
| *****************************************************************************/ |
| extern kal_uint16 CphSysTimeSymbNum(SysAirInterfaceT Airinterface); |
| #define SysTimeSymbNum(AirInterface) CphSysTimeSymbNum(AirInterface) |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTime9MHzCnt |
| |
| DESCRIPTION: |
| Returns the 9MHz SystemTime count of the corresponding AirInterface |
| |
| PARAMETERS: |
| |
| StIntSrc - Current setted Interrupt Mask. |
| |
| RETURNED VALUES: |
| |
| *****************************************************************************/ |
| extern kal_uint32 CphSysTimeEchipCnt(SysAirInterfaceT Airinterface); |
| #define SysTime9MHzCnt(AirInterface) CphSysTimeEchipCnt(AirInterface) |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysFrameCntGet |
| |
| DESCRIPTION: |
| |
| PARAMETERS: |
| Return Upper8 and Lower 32 Frame Cnt (NO Frame Offset for EVDO!) |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysFrameCntGet(kal_uint8 AirInterfaceBM, FrameRecT* FrameCntP); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeRemove |
| |
| DESCRIPTION: |
| |
| This routine requests removes system time from active list. |
| |
| PARAMETERS: |
| |
| SysAirInterfaceT AirInterface |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeRemove(SysAirInterfaceT AirInterface); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeSwitchControl |
| |
| DESCRIPTION: |
| |
| This routine requests adds/removes systime for the system. |
| |
| PARAMETERS: |
| |
| SysAirInterfaceT NewAirInterface |
| kal_bool Enable |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| kal_uint8 SysTimeSwitchControl(SysAirInterfaceT NewAirInterface, kal_bool Enable); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysFrameCountGet |
| |
| DESCRIPTION: This function feels the 1X and DO time. |
| |
| PARAMETERS: |
| Return |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysFrameCountGet(void* pSysTime); |
| |
| extern void CphSysStIntDisable (SysAirInterfaceT Airinterface, kal_uint16 Mask); |
| extern void CphSysStIntEnable (SysAirInterfaceT Airinterface, kal_uint16 Mask); |
| #define SysStIntDisable(AirInterface, Mask) CphSysStIntDisable(AirInterface,Mask) |
| #define SysStIntEnable(AirInterface, Mask) CphSysStIntEnable(AirInterface,Mask) |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysAirInterfaceGet |
| |
| DESCRIPTION: |
| |
| PARAMETERS: |
| |
| RETURNED VALUES: |
| return SYS_MODE_1xRTT or SYS_MODE_EVDO |
| |
| None. |
| |
| *****************************************************************************/ |
| extern kal_uint8 SysAirInterfaceGet(void); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeSetFreqOffset |
| |
| DESCRIPTION: |
| |
| PARAMETERS: Airinterface - 1X or DO |
| AfcPpb - in unit of ppb, if AfcPpb>0, this setting will |
| increase chip-rate of Rx timer; else, decrease it. |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeSetFreqOffset(SysAirInterfaceT Airinterface, kal_int16 AfcPpb); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeGetFreqOffset |
| |
| DESCRIPTION: |
| |
| PARAMETERS: |
| |
| RETURNED VALUES: |
| |
| Return the frequency offset of Rx timer usage. |
| |
| *****************************************************************************/ |
| extern kal_int16 SysTimeGetFreqOffset(SysAirInterfaceT Airinterface); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeSyncTime |
| |
| DESCRIPTION: This Routine will implement the sys time big jump. |
| For ICS/Sync Reception/Cross copy/SIB8 timing |
| |
| PARAMETERS: Airinterface: 1X or DO |
| SyncEchip: the terminal e-chip count to restart counting |
| EchipIni: e-chip count initial value |
| SupfrmIniH/SupfrmIniL: super frame count synchronization initial value |
| |
| RETURNED VALUES: |
| return SYS_MODE_1xRTT or SYS_MODE_EVDO |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeSyncTime(SysAirInterfaceT Airinterface, kal_uint32 SyncEchip, kal_uint32 EchipIni, kal_uint8 SupfrmIniH, kal_uint32 SupfrmIniL); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: Sys9MHzCntInitReq |
| |
| DESCRIPTION: Uses the hardware 1X System time count to initialize the |
| hardware DO System time count |
| Note: Can do : 1X time -> DO time. |
| CanNOT do: DO time -> 1X time |
| |
| PARAMETERS: AckRequired: |
| KAL_TRUE : INSP_1XASSIST_DOACQ_MSG or some form of acknowledgement |
| will be sent upon successful completion of this request. |
| KAL_FALSE: No acknowledgement will be sent to indicate completion of |
| request. |
| |
| RETURNED VALUE: |
| KAL_TRUE : 1X system time can be used to initialize DO system time. |
| KAL_FALSE: 1X system time cannot be used to initialize DO system time. |
| |
| *****************************************************************************/ |
| extern kal_bool Sys9MHzCntInitReq(kal_bool AckRequired); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: Sys9MHzCntInitProcess |
| |
| DESCRIPTION: Thie Routine executes in PCG handler |
| |
| PARAMETERS: NONE |
| |
| RETURNED VALUE: |
| NONE |
| |
| *****************************************************************************/ |
| extern void Sys9MHzCntInitProcess(void); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeValid |
| |
| DESCRIPTION: |
| |
| Inquire whether the AirInterface has valid or invalid system time. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| KAL_TRUE: valid system time. KAL_FALSE: invalid system time. |
| |
| *****************************************************************************/ |
| extern kal_uint8 SysTimeValid(kal_uint8 AirInterfaceBM); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeCurrent |
| |
| DESCRIPTION: |
| |
| Inquire whether the AirInterface has current system time. |
| |
| PARAMETERS: |
| |
| None. |
| |
| RETURNED VALUES: |
| |
| KAL_TRUE: valid system time. KAL_FALSE: invalid system time. |
| |
| *****************************************************************************/ |
| extern kal_bool SysTimeCurrent(kal_uint8 AirInterfaceBM); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTimeTotalGet |
| |
| DESCRIPTION: |
| |
| This routine returns full time including super-frame / e-chip. |
| |
| PARAMETERS: |
| |
| AirInterface - 1X or DO |
| SFramePtr - pointer to the returned full time |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern void SysTimeTotalGet(SysAirInterfaceT AirInterface, SysSFrameTimeT * SFramePtr); |
| |
| |
| #if defined (MTK_DEV_C2K_IRAT) && defined (MTK_DEV_C2K_SRLTE_L1) |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysSFrameGet |
| |
| DESCRIPTION: |
| |
| PARAMETERS: AirInterface: 1X or DO |
| Curr: Return curr super frame num or not |
| CheckFrameLo32: If Curr=KAL_FALSE, Return super frame num of CheckFrameLo32 |
| |
| Return Lower 32 Super Frame Cnt |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern kal_uint64 SysSFrameGet(SysAirInterfaceT AirInterface, kal_bool Curr, kal_uint32 CheckFrameLo32); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysSFrameGetWith9M |
| |
| DESCRIPTION: Get correct super frame numer with giving 9M Cnt |
| |
| PARAMETERS: AirInterface: 1X or DO |
| Check9M: given 8X clock cnt of system time |
| |
| Return Lower 32 of Super Frame Cnt |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| extern kal_uint64 SysSFrameGetWith9M(SysAirInterfaceT AirInterface, kal_uint32 Check9M); |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysFrameSizeIs26ms |
| |
| DESCRIPTION: |
| |
| PARAMETERS: |
| |
| RETURNED VALUES: |
| return Frame size type |
| KAL_TRUE: is 80/3 ms |
| KAL_FALSE: is 20 ms |
| |
| None. |
| |
| *****************************************************************************/ |
| extern kal_bool SysFrameSizeIs26ms(SysAirInterfaceT AirInterface); |
| |
| |
| extern void SysUpdateSysTime(SysAirInterfaceT AirInterface); |
| |
| #endif |
| |
| extern sap_type SysGetSapIdHisr(module_type src,module_type dest); |
| |
| |
| /**************************************************************************** |
| |
| FUNCTION NAME: EndianSwap |
| |
| DESCRIPTION: |
| |
| This function is used to convert |
| unsigned integers from Big endian format to Little endian format and vice-versa. |
| |
| PARAMETERS: |
| |
| kal_uint8 *input Input that needs to be endian-swapped, in-place. |
| kal_uint8 numOfBytes Number of bytes |
| |
| RETURNED VALUES: |
| |
| KAL_TRUE if numOfBytes is 2,4,8 KAL_FALSE otherwise. This is because we have |
| 16,32 and 64 bit integers only in our S/W. |
| |
| *****************************************************************************/ |
| kal_bool EndianSwap( kal_uint8* input , kal_uint8 numOfBytes); |
| |
| /**************************************************************************** |
| |
| FUNCTION NAME: CP_Strnlen |
| |
| DESCRIPTION: |
| |
| This function is used to return the length of a "C" Style string (NULL |
| Terminated). The max length returned is capped at MAX_LENGTH parameter |
| which means that if the string is of size greater than MAX_LENGTH, further |
| calculation of the string's length is stopped and MAX_LENGTH is returned, |
| hence the name CP_Str **n** len. |
| |
| PARAMETERS: |
| |
| char *str Input string that needs to be used |
| kal_uint32 MAX_LENGTH Max length to be returned |
| |
| RETURNED VALUES: the length of the string if its less than or equal to MAX_LENGTH |
| else MAX_LENGTH is returned. |
| |
| *****************************************************************************/ |
| kal_uint32 CP_Strnlen( char *str, kal_uint32 MAX_LENGTH); |
| |
| /**************************************************************************** |
| ; |
| ; FUNCTION NAME: SysArmSleep |
| ; |
| ; DESCRIPTION: |
| ; |
| ; Puts Arm into light sleep using coprocessor. Any INT should wake |
| ; (SN bit does not work for CBP70 A0 so we use Arm968 light sleep) |
| ; |
| ; |
| ; PARAMETERS: |
| ; |
| ; None |
| ; |
| ; RETURNED VALUES: |
| ; |
| ; None. |
| ; |
| *****************************************************************************/ |
| void SysArmSleep(void); |
| |
| /***************************************************************************** |
| ; |
| ; FUNCTION NAME: SysArmModeRegs |
| ; |
| ; DESCRIPTION: |
| ; |
| ; Stores the Arm mode regs (CPSR, SP, LR, SPSR) for 5 Arm modes |
| ; (supervisor, FIQ, IRQ, Undef, Abort, Sytem). User mode does not have |
| ; its own mode specific registers. |
| ; |
| ; This function should only be used during crash dump. |
| ; |
| ; C FUNCTION PROTOTYPE: |
| ; |
| ; void SysArmModeRegs(MonExceptArmModeRegs* pRegs); |
| ; Use kal_uint32* so we don't need definition of MonExceptArmModeRegs |
| ; |
| ; PARAMETERS: |
| ; |
| ; pRegs (r0), pointer to array of 6 MonExceptArmModeRegs |
| ; |
| ; RETURNED VALUES: |
| ; |
| ; None. |
| ; |
| ;*****************************************************************************/ |
| void SysArmModeRegs(kal_uint32* pRegs); |
| |
| /**************************************************************************** |
| * |
| * Name: sysIsBandSupported() |
| * |
| * Description: This routine validates the band by examining the allowed |
| * operation modes as set by teh compile time switches in |
| * custom.h. |
| * |
| * Parameters: SysCdmaBandT band - band to be validated |
| * |
| * Returns: kal_bool - KAL_TRUE if the band is supported |
| * |
| * Notes: |
| * |
| ****************************************************************************/ |
| kal_bool sysIsBandSupported(SysCdmaBandT band); |
| |
| |
| /**************************************************************************** |
| * |
| * Name: sysFrequencyToBlock() |
| * |
| * Description: This routine finds the block for the given channel. |
| * |
| * Parameters: SysCdmaBandT band - band channel is in |
| * kal_uint16 channel - channel for which block is to be found |
| * |
| * Returns: kal_uint8 - PCS block |
| * |
| * Notes: A liberal range is used for channel numbers since this is |
| * not validating the channels, only selecting a system. |
| * |
| ****************************************************************************/ |
| kal_uint8 sysFrequencyToBlock(SysCdmaBandT band, kal_uint16 channel); |
| |
| /**************************************************************************** |
| * |
| * Name: sysFrequencyToSubClass() |
| * |
| * Description: This routine finds the subclass for the given channel. |
| * |
| * Parameters: SysCdmaBandT band - band channel is in |
| * kal_uint16 channel - channel for which block is to be found |
| * |
| * Returns: kal_uint8 - Subclass |
| * |
| ****************************************************************************/ |
| kal_uint8 sysFrequencyToSubClass(SysCdmaBandT band, kal_uint16 channel); |
| |
| /**************************************************************************** |
| * |
| * Name: sysIsBandChannelValid() |
| * |
| * Description: This routine validates a given channel against the given |
| * band, based on Standard band definion only. |
| * It DOES NOT consider hardware, including possible hwd |
| * band SubClass limitation. |
| * |
| * Parameters: BandChannel *bandChannel - band and channel to validate |
| * |
| * Returns: kal_bool - KAL_TRUE if channel is valid within the band |
| * |
| * Notes: |
| * |
| ****************************************************************************/ |
| kal_bool sysIsBandChannelValid(SysBandChannelT *bandChannel); |
| |
| /**************************************************************************** |
| * |
| * Name: sysSupportCDMAChannel() |
| * |
| * Description: This routine determines if the provided band and channel |
| * are supported and valid. |
| * |
| * Parameters: BandChannel *bandChannel - band and channel |
| * |
| * Returns: kal_bool - KAL_TRUE if the band is supported and the channel is valid |
| * |
| * Notes: |
| * |
| ****************************************************************************/ |
| kal_bool sysIsBandChannelSupported(SysBandChannelT *bandChannel); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: sysSOServiceType |
| |
| DESCRIPTION: |
| |
| This routine returns the service type for the passed Service option. |
| |
| PARAMETERS: |
| |
| SysServiceOptionT serviceOption |
| |
| RETURNED VALUES: |
| |
| SysServiceTypeT service type (e.g. VOICE, PACKET_DATA, etc...) |
| |
| *****************************************************************************/ |
| SysServiceTypeT sysSOServiceType(SysServiceOptionT serviceOption); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: sysLoopbackSvcType |
| |
| DESCRIPTION: |
| |
| This routine returns the service subtype for a loopback Service option. |
| |
| PARAMETERS: |
| |
| SysServiceOptionT serviceOption |
| |
| RETURNED VALUES: |
| |
| SysLoopbackSvcTypeT service sub type (IS126, Markov, TDSO) |
| |
| *****************************************************************************/ |
| SysLoopbackSvcTypeT sysLoopbackSvcType(SysServiceOptionT serviceOption); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: sysCircuitDataSvcType |
| |
| DESCRIPTION: |
| |
| This routine returns the service subtype for a cicuit data Service option. |
| |
| PARAMETERS: |
| |
| SysServiceOptionT serviceOption |
| |
| RETURNED VALUES: |
| |
| SysCircuitDataSvcTypeT service sub type (Async, Fax) |
| |
| *****************************************************************************/ |
| SysCircuitDataSvcTypeT sysCircuitDataSvcType(SysServiceOptionT serviceOption); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: sysPacketDataSvcType |
| |
| DESCRIPTION: |
| |
| This routine returns the service subtype for a packet data Service option. |
| |
| PARAMETERS: |
| |
| SysPacketDataSvcTypeT serviceOption |
| |
| RETURNED VALUES: |
| |
| SysPacketDataSvcTypeT service sub type (LSPD, MSPD, HSPD) |
| |
| *****************************************************************************/ |
| |
| SysPacketDataSvcTypeT sysPacketDataSvcType(SysServiceOptionT serviceOption); |
| |
| |
| |
| SysSoGrpT sysSOSvcGrp(kal_uint16 serviceOption); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: calcChecksum |
| |
| DESCRIPTION: |
| |
| Calculates the checksum for the data pointed to by ptrtodata whose size |
| is given by sizeofdata. The function also inverts the checksum before |
| returning it. |
| |
| PARAMETERS: |
| |
| kal_uint8 *ptrtodata - pointer to the data whose checksum has to be calc |
| kal_uint16 sizeofdata - size of the data whose checksum has to be calc |
| (this does not incl the checksum size) |
| |
| RETURNED VALUES: Inverted checksum. |
| |
| *****************************************************************************/ |
| kal_uint16 calcChecksum(kal_uint8 *ptrtodata, kal_uint16 sizeofdata); |
| |
| /**************************************************************************** |
| * |
| * Name: SysBondoutOptionGet () |
| * |
| * Description: This routine returns the chip's bondout option configuration. |
| * |
| * Parameters: None |
| * |
| * Returns: SysBondoutOptionsT - Bondout option |
| * |
| ****************************************************************************/ |
| SysBondoutOptionsT SysBondoutOptionGet (void); |
| |
| /**************************************************************************** |
| * |
| * Name: SysIsVoiceSupported() |
| * |
| * Description: This routine returns a kal_boolean indicating whether voice is |
| * supported based on the chip's bondout option configuration. |
| * |
| * Parameters: None |
| * |
| * Returns: KAL_TRUE if voice is supported, KAL_FALSE otherwise |
| * |
| ****************************************************************************/ |
| kal_bool SysIsVoiceSupported (void); |
| |
| |
| /**************************************************************************** |
| * |
| * Name: SysIsDORevASupported() |
| * |
| * Description: This routine returns a kal_boolean indicating whether or not EV-DO |
| * RevA is supported based on the chip's bondout option configuration. |
| * |
| * Parameters: None |
| * |
| * Returns: KAL_TRUE if EV-DO RevA is supported, KAL_FALSE otherwise |
| * |
| ****************************************************************************/ |
| kal_bool SysIsDORevASupported (void); |
| |
| /**************************************************************************** |
| * |
| * Name: sysIsFeatureSupported() |
| * |
| * Description: This routine returns whether a system wide feature is |
| * supported. |
| * |
| * Parameters: SysFeatures Feature |
| * |
| * Returns: kal_bool - KAL_FALSE: Feature not supported |
| * KAL_TRUE: Feature supported |
| * |
| ****************************************************************************/ |
| kal_bool sysIsFeatureSupported(SysFeatureId Feature); |
| |
| |
| /**************************************************************************** |
| * |
| * Name: sysSWFeatureValue() |
| * |
| * Description: Returns an indication as to which variation of a software |
| * feature is supported. |
| * |
| * Parameters: SysFeatures Feature |
| * |
| * Returns: |
| * |
| ****************************************************************************/ |
| kal_uint32 sysSWFeatureValue(SysFeatureId Feature); |
| |
| /**************************************************************************** |
| * |
| * Name: sysGetCarrierdId() |
| * |
| * Description: Returns the carrier Id for which the SW was compiled for |
| * |
| * Parameters: none |
| * |
| * Returns: SysCarrierId enum |
| * |
| ****************************************************************************/ |
| SysCarrierId sysGetCarrierId(void); |
| |
| |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: SysTransitionReq |
| |
| DESCRIPTION: |
| |
| This routine requests transition from 1x to Do and vice versa. |
| |
| PARAMETERS: |
| |
| SysAirInterfaceT NewAirInterface |
| kal_bool HybridMode |
| |
| RETURNED VALUES: |
| |
| None. |
| |
| *****************************************************************************/ |
| kal_uint8 SysTransitionReq(SysAirInterfaceT NewAirInterface); |
| |
| |
| |
| /**************************************************************************** |
| * |
| * Name: max8 |
| * |
| * Scope: public |
| * |
| * Description: Returns the greater of two kal_uint8 values. |
| * |
| * Parameters: |
| * kal_uint8 a - First value. |
| * kal_uint8 b - Second value. |
| * |
| * Returns: |
| * kal_uint8 |
| * |
| * Notes: |
| * |
| ****************************************************************************/ |
| kal_uint8 max8 (kal_uint8 a, kal_uint8 b); |
| |
| /**************************************************************************** |
| * |
| * Name: min8 |
| * |
| * Scope: public |
| * |
| * Description: Returns the lesser of two kal_uint8 values. |
| * |
| * Parameters: |
| * kal_uint8 a - First value. |
| * kal_uint8 b - Second value. |
| * |
| * Returns: |
| * kal_uint8 |
| * |
| * Notes: |
| * |
| ****************************************************************************/ |
| kal_uint8 min8 (kal_uint8 a, kal_uint8 b); |
| |
| /**************************************************************************** |
| * |
| * Name: max16 |
| * |
| * Scope: public |
| * |
| * Description: Returns the greater of two kal_uint16 values. |
| * |
| * Parameters: |
| * kal_uint16 a - First value. |
| * kal_uint16 b - Second value. |
| * |
| * Returns: |
| * kal_uint16 |
| * |
| * Notes: |
| * |
| ****************************************************************************/ |
| kal_uint16 max16 (kal_uint16 a, kal_uint16 b); |
| |
| /**************************************************************************** |
| * |
| * Name: min16 |
| * |
| * Scope: public |
| * |
| * Description: Returns the lesser of two kal_uint16 values. |
| * |
| * Parameters: |
| * kal_uint16 a - First value. |
| * kal_uint16 b - Second value. |
| * |
| * Returns: |
| * kal_uint16 |
| * |
| * Notes: |
| * |
| ****************************************************************************/ |
| kal_uint16 min16 (kal_uint16 a, kal_uint16 b); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: C2KPerfRecovery |
| |
| DESCRIPTION: flight mode recovery API |
| |
| PARAMETERS: module_id: module id,such as MOD_CPSW |
| debug_info: the information to be printed |
| debug_length: the length of debug_info |
| |
| RETURNED VALUES: None |
| |
| *****************************************************************************/ |
| void C2KPerfRecovery( module_type module_id, C2kSysRecoverDbgInfoT* debug_info, |
| const char* debug_file, kal_uint16 debug_line); |
| |
| /***************************************************************************** |
| |
| FUNCTION NAME: C2K_PERF_RECOVERY |
| |
| DESCRIPTION: C2K PERF recovery API |
| |
| PARAMETERS: module_id: module id,such as MOD_CPSW |
| p_buffer: pointer to debug variable |
| buf_size: the size of debug variable |
| |
| RETURNED VALUES: None |
| |
| *****************************************************************************/ |
| |
| #define C2K_PERF_RECOVERY(module_id,p_buffer,buf_size) \ |
| { \ |
| protocol_exception_recovery_info_struct info; \ |
| info.protocol_id = ((ValIratGetSimAccessIndex() >= UIM_IRAT_ACCESS_REMOTE_SIM1) && (ValIratGetSimAccessIndex() < UIM_IRAT_ACCESS_NUM)) \ |
| ?(ValIratGetSimAccessIndex() - UIM_IRAT_ACCESS_REMOTE_SIM1):(PEFR_ALL_PROTOCOL_ID); \ |
| info.debug.p_buf = (p_buffer); \ |
| info.debug.size = (buf_size); \ |
| PROTOCOL_EXCEPTION_RECOVERY((module_id), RECOVERY_TYPE_FLIGHT_MODE, &info); \ |
| } |
| |
| /**************************************************************************** |
| * |
| * Name: waitForExtMsg |
| * |
| * Scope: public |
| * |
| * Description: Wait for an external message |
| * |
| * Parameters: |
| * kal_uint32 expMsgId - Id of the expected external message. |
| * ilm_struct *ilm - pointer to the received expected message. |
| * |
| * Returns: |
| * void |
| * |
| * Notes: |
| * Do NOT forget to destroy the expected ilm after calling this function |
| ****************************************************************************/ |
| extern void waitForExtMsg(kal_uint32 expMsgId, ilm_struct *ilm); |
| |
| |
| extern void SysInitWaitEg(void); |
| |
| extern void SysInitSetEg(void); |
| |
| |
| /***************************************************************************** |
| |
| Empty MACRO stubbing for MON&HWD sleep |
| |
| *****************************************************************************/ |
| #define MonDeepSleepStatistInit(SetDefaultCheckLength) |
| #define MonDeepSleepStatistCtrlMsg(CheckLengthP) |
| #define MonDeepClearSleepRecordInfo() |
| #define MonDeepReadSleepRecordInfo(SleepCnts,MdSystemTime1,MdSystemTime2,MdRtcCnts,AllSleepduration) |
| #define MonDeepRecordRtcCntOfEnterSleep() |
| #define MonDeepRecordTotalSleepDuration() |
| #define MonDeepRecordSystimeOfExitSleep() |
| |
| #endif |
| |
| /***************************************************************************** |
| * removed! |
| *****************************************************************************/ |
| |
| /**Log information: \main\CBP80\cbp80_cshen_scbp10098\1 2012-07-26 06:27:42 GMT cshen |
| ** cbp80_cshen_scbp10098**/ |
| /**Log information: \main\Trophy\Trophy_czhang_href21785\1 2013-11-25 02:42:46 GMT czhang |
| ** HREF#21785**/ |
| /**Log information: \main\Trophy\1 2013-11-25 02:55:25 GMT czhang |
| ** HREF#21785**/ |
| /**Log information: \main\Trophy\Trophy_xding_href22331\1 2013-12-10 07:18:04 GMT xding |
| ** HREF#22331, ºÏ²¢MMCÏà¹Ø¹¦Äܵ½Trophy baselineÉÏ**/ |
| /**Log information: \main\Trophy\2 2013-12-10 08:33:42 GMT jzwang |
| ** href#22331:Merge MMC latest implementation from Qilian branch.**/ |
| |
| |
| |
| |
| |