rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | /***************************************************************************** |
| 2 | * Copyright Statement: |
| 3 | * -------------------- |
| 4 | * This software is protected by Copyright and the information contained |
| 5 | * herein is confidential. The software may not be copied and the information |
| 6 | * contained herein may not be used or disclosed except with the written |
| 7 | * permission of MediaTek Inc. (C) 2016 |
| 8 | * |
| 9 | * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| 10 | * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") |
| 11 | * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON |
| 12 | * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| 13 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| 14 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| 15 | * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| 16 | * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| 17 | * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH |
| 18 | * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO |
| 19 | * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| 20 | * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| 21 | * |
| 22 | * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE |
| 23 | * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, |
| 24 | * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, |
| 25 | * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO |
| 26 | * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| 27 | * |
| 28 | * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE |
| 29 | * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF |
| 30 | * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND |
| 31 | * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER |
| 32 | * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). |
| 33 | * |
| 34 | *****************************************************************************/ |
| 35 | |
| 36 | /***************************************************************************** |
| 37 | |
| 38 | FILE NAME: do_rmc_msgid.h |
| 39 | |
| 40 | DESCRIPTION: |
| 41 | |
| 42 | This file contains the defenitions of all the RMC msg id's. |
| 43 | |
| 44 | *****************************************************************************/ |
| 45 | |
| 46 | #ifndef _DO_RMC_MSGID_H_ |
| 47 | #define _DO_RMC_MSGID_H_ |
| 48 | |
| 49 | /*---------------------------------------------------------------------------- |
| 50 | Include Files |
| 51 | ----------------------------------------------------------------------------*/ |
| 52 | #include "module_msg_range.h" |
| 53 | |
| 54 | #undef MSGID_SET |
| 55 | #undef MSGID_NEXT |
| 56 | |
| 57 | |
| 58 | |
| 59 | |
| 60 | /* Messages handled by RMC task |
| 61 | NOTE: Following messages are processed by RMC but defined as MPA messages(in MpaCmdIdT) |
| 62 | since they are used also by L1D |
| 63 | MPA_RF_ANTENNA_RELEASE_REQ_MSG, |
| 64 | MPA_RF_ANTENNA_ASSIGN_MSG, |
| 65 | */ |
| 66 | MODULE_MSG_BEGIN(MSG_ID_RMC_CODE_BEGIN) |
| 67 | |
| 68 | |
| 69 | /* RMC segment */ |
| 70 | MSG_ID_RMC_INSP_PILOT_ACQ_MSG = MSG_ID_RMC_CODE_BEGIN, |
| 71 | MSG_ID_RMC_INSP_1XASSIST_DOACQ_MSG, |
| 72 | MSG_ID_RMC_ALMP_NETWORK_RESET_MSG, |
| 73 | MSG_ID_RMC_RESERVED1_MSG, //Place-holder for a deprecated msg. Ensures succeeding MSGIDs dont change numeric values. Can be used for adding new MSG in the future |
| 74 | MSG_ID_RMC_MPA_RF_PREEMPT_REQ_MSG, |
| 75 | MSG_ID_RMC_MPA_RF_SHUTOFF_REQ_MSG, |
| 76 | MSG_ID_RMC_FMP_MODE_CHANGE_MSG, |
| 77 | MSG_ID_RMC_HSC_RXACTIVATE_MSG, |
| 78 | MSG_ID_RMC_HSC_STOP_CMD_MSG, |
| 79 | MSG_ID_RMC_RF_DIV_REQ_MSG, |
| 80 | MSG_ID_RMC_INSP_NETWORK_RESET_MSG, |
| 81 | MSG_ID_RMC_INSP_POWER_DOWN_IND, |
| 82 | MSG_ID_RMC_RESERVED2_MSG, //Place-holder for a deprecated msg. Ensures succeeding MSGIDs dont change numeric values. Can be used for adding new MSG in the future |
| 83 | MSG_ID_RMC_RUP_RXDEACTIVATE_MSG, |
| 84 | MSG_ID_RMC_RUP_RXACTIVATE_MSG, |
| 85 | MSG_ID_RMC_ETS_PREEMPT_MSG, |
| 86 | MSG_ID_RMC_ETS_RXACTIVATE_MSG, |
| 87 | MSG_ID_RMC_HSC_STOP_TX_MSG, |
| 88 | MSG_ID_RMC_HWD_RESET_ACK_MSG, |
| 89 | MSG_ID_RMC_RSSI_REPORT_ACK_MSG, |
| 90 | MSG_ID_RMC_IDP_DDL_CHANGE_MSG, |
| 91 | MSG_ID_RMC_RUP_DDL_CHANGE_MSG, |
| 92 | MSG_ID_RMC_FH_RAKE_DDL_DONE_MSG, |
| 93 | /* ON_PC */ |
| 94 | MSG_ID_RMC_TEMP_ADJ_UPDATE_MSG, |
| 95 | MSG_ID_RMC_FREQ_ADJ_UPDATE_MSG, |
| 96 | |
| 97 | MSG_ID_RMC_LEC_MOBSYSTEMOFFSET_QUERY_MSG, |
| 98 | MSG_ID_RMC_HSC_SLEEP_OVER_MSG, |
| 99 | MSG_ID_RMC_TOP_CMD_MSGID_LAST, |
| 100 | /* MTK_DEV_RF_CUSTOMIZE */ |
| 101 | MSG_ID_RMC_RX_DIV_CTRL_AFTER_RF_CUST_GET_MSG, |
| 102 | |
| 103 | /*IRAT*/ |
| 104 | MSG_ID_RMC_RUP_DFS_INFO_MSG, |
| 105 | MSG_ID_RMC_IRATM_CCELL_MEAS_REQ, |
| 106 | MSG_ID_RMC_IRATM_SYNC_MSG, |
| 107 | MSG_ID_RMC_IRATM_ACQ_CGI_REQ, |
| 108 | MSG_ID_RMC_IRATM_SET_RAT_REQ, |
| 109 | MSG_ID_RMC_CLC_IDLE_MODE_CFG_MSG, |
| 110 | MSG_ID_RMC_IDP_ACCESS_PROTECTION_MSG, |
| 111 | MSG_ID_RMC_IDP_TRAFFIC_PROTECTION_MSG, |
| 112 | |
| 113 | /* SCH segment */ |
| 114 | MSG_ID_SCH_RUP_SEARCHPARMS_UPDATE_MSG, /*_MsgStruct SchParmUpdateMsgT*/ |
| 115 | MSG_ID_SCH_RUP_PILOT_UPDATE_MSG, /*_MsgStruct SchPilotUpdateMsgT*/ |
| 116 | |
| 117 | /* SYS_OPTION_SINGLECHIP_MULTIMODE, ASPEN IRAT LTE Idle and Active DO measurement */ |
| 118 | MSG_ID_RMC_IRAT_DO_EARLY_WAKEUP_REQ, |
| 119 | MSG_ID_RMC_IRAT_SRCH_CFG_MSG, |
| 120 | MSG_ID_RMC_CDMAL1_DOMEAS_ABORT_REQ, |
| 121 | MSG_ID_RMC_IRAT_DOMEAS_ABORT_CNF, |
| 122 | MSG_ID_RMC_IRAT_DO_INACTIVATE_REQ, |
| 123 | |
| 124 | /* FMP segment */ |
| 125 | MSG_ID_FMP_INSP_SYNC_MSG, |
| 126 | MSG_ID_FMP_ALMP_CONNECTION_CLOSED_MSG, |
| 127 | MSG_ID_FMP_CCM_CCSHORTPKTIND_MSG, |
| 128 | MSG_ID_RMC_SH_FINGER_RESET_MSG, |
| 129 | MSG_ID_RMC_SH_RAKE_FNG_CFG_DONE_MSG, |
| 130 | MSG_ID_RMC_SH_DRC_CHTYPE_ESTIMATE_MSG, |
| 131 | MSG_ID_RMC_BRP_DRC_RATE_DETERMINATE_MSG, |
| 132 | MSG_ID_RMC_FH_RAT_UPDATE_MSG, |
| 133 | MSG_ID_RMC_FH_DFS_PILOT_UPDATE_MSG, |
| 134 | MSG_ID_RMC_SH_SCH_START_IND, |
| 135 | MSG_ID_RMC_RUP_DFS_CFG_MSG, |
| 136 | MSG_ID_RMC_RUP_DFS_ABORT_MSG, |
| 137 | MSG_ID_RMC_RUP_INTER_HO_MSG, |
| 138 | MSG_ID_RMC_IDP_INTER_HO_CMD_MSG, |
| 139 | MSG_ID_RMC_RCP_ACCESS_START_IND_MSG, |
| 140 | MSG_ID_RMC_RCP_RTAP_CFG_MSG, |
| 141 | MSG_ID_RMC_FCP_FTAP_CFG_MSG, |
| 142 | MSG_ID_RMC_FH_MODEM_STATE_UPDATE_MSG, |
| 143 | MSG_ID_RMC_FCP_FTM_STATE_UPDATE_MSG, |
| 144 | MSG_ID_RMC_FCP_DRC_ACTIVE_MSG, |
| 145 | MSG_ID_RMC_FCP_DRC_DEFAULT_ATTRI_UPDATE_MSG, |
| 146 | MSG_ID_RMC_FCP_DRC_ENHANCE_ATTRI_UPDATE_MSG, |
| 147 | MSG_ID_DRC_CSM_CELL_SWITCH_REQED_MSG, |
| 148 | MSG_ID_DRC_CSM_CELL_SWITCH_OCCUR_MSG, |
| 149 | |
| 150 | /* RUP segment */ |
| 151 | MSG_ID_RUP_SCH_RESULT_RPT_MSG, /*_MsgStruct RupSearchResultRptMsgT*/ |
| 152 | MSG_ID_RUP_OMP_UPDATE_CMD_MSG, /*_MsgStruct RupOmpUpdatedMsgGT*/ |
| 153 | MSG_ID_RUP_OMP_SNROUTEUPDATE_CMD_MSG, |
| 154 | MSG_ID_RUP_ACM_TXSTART_CMD_MSG, |
| 155 | MSG_ID_RUP_ACM_TXEND_CMD_MSG, |
| 156 | MSG_ID_RUP_ALMP_ACTIVATE_CMD_MSG, /*_MsgStruct RupAlmpActiveMsgGT*/ |
| 157 | MSG_ID_RUP_ALMP_DEACTIVATE_CMD_MSG, |
| 158 | MSG_ID_RUP_ALMP_CLOSE_CMD_MSG, |
| 159 | MSG_ID_RUP_CSP_CLOSE_CMD_MSG, |
| 160 | MSG_ID_RUP_IDP_CONNST_TMSTATE_CMD_MSG, |
| 161 | MSG_ID_RUP_IDP_FREEZE_MSG, |
| 162 | MSG_ID_RUP_IDP_THAW_MSG, |
| 163 | MSG_ID_RUP_RTM_LINKACQ_CMD_MSG, |
| 164 | MSG_ID_RUP_TIMER_EXPIRED_CMD_MSG, |
| 165 | MSG_ID_RUP_RMC_CAMP_ON_CHANNEL_COMPLETE_MSG, |
| 166 | MSG_ID_RUP_RMC_INTER_HO_NOTIFY_MSG, |
| 167 | |
| 168 | MSG_ID_RUP_SCP_RECONFIGURED_MSG, |
| 169 | MSG_ID_RUP_SCP_COMMITTED_MSG, |
| 170 | MSG_ID_RUP_ACM_ACCESS_HO_ENABLE_MSG, |
| 171 | MSG_ID_RUP_ACM_ACCESS_HO_DISABLE_MSG, |
| 172 | |
| 173 | MSG_ID_RUP_IDP_STOP_REM_MSG, |
| 174 | MSG_ID_RUP_OMP_IHO_ENABLED_MSG, |
| 175 | MSG_ID_RUP_IDP_FORCE_IHO_REQ_MSG, |
| 176 | |
| 177 | MSG_ID_RUP_IRAT_CUR_SYS_MEAS_REQ, |
| 178 | MSG_ID_RUP_IRAT_RAT_SIG_MON_REQ, |
| 179 | MSG_ID_RUP_RCP_ACCESS_INITIATE_MSG, |
| 180 | |
| 181 | /*IRAT*/ |
| 182 | MSG_ID_RMC_CMD_MSGID_RUP_LAST, |
| 183 | |
| 184 | MSG_ID_RMC_RF_DIV_RELEASE_MSG, |
| 185 | |
| 186 | MSG_ID_RMC_CSS_DOSCAN_SLOTNUM_IND, |
| 187 | MSG_ID_RUP_IDP_DFS_START_MSG, |
| 188 | MSG_ID_RUP_IDP_DFS_ABORT_MSG, |
| 189 | MSG_ID_RUP_CLC_DFS_SETTINGS_MSG, |
| 190 | MSG_ID_RUP_IOP_GET_DFS_INFO_MSG, |
| 191 | |
| 192 | /* LL1A segment */ |
| 193 | MSG_ID_EVSTANDBY_LL1A_GAP_NOTIFY_IND_MSG, |
| 194 | MSG_ID_EVSTANDBY_LL1A_GAP_STOP_REQ_MSG, |
| 195 | MSG_ID_EVSTANDBY_LL1A_AUTO_GAP_CNF_MSG, |
| 196 | MSG_ID_EVSTANDBY_LL1A_AUTO_GAP_STOP_IND_MSG, |
| 197 | MSG_ID_RMC_LL1A_SET_RAT_CNF_MSG, |
| 198 | MSG_ID_RUP_IRATM_CUR_SECTOR_MEAS_REQ, |
| 199 | MSG_ID_RUP_IRATM_CUR_SECTOR_SIG_MON_REQ, |
| 200 | MSG_ID_RUP_IRATM_DFS_FREQ_NUM_SENT_REQ, |
| 201 | MSG_ID_RUP_CSS_IHO_DISABLE_REQ, |
| 202 | MSG_ID_RUP_CSS_IHO_ENABLE_REQ, |
| 203 | |
| 204 | /** RTBA Segment.*/ |
| 205 | MSG_ID_RMC_RTBA_RF_RESERVE_END_IND_MSG, |
| 206 | |
| 207 | /* EVDO RMC Signals --do_rmcapi.h */ |
| 208 | MSG_ID_RMC_TASK_SIGNAL, |
| 209 | MSG_ID_RMC_SRCH_RESULTS_RDY_SIGNAL, |
| 210 | MSG_ID_RMC_GENERATE_DECIMATED_TRACE_INFO_SIGNAL, |
| 211 | MSG_ID_RMC_PROC_DELAYED_SCH_RESULT_SIGNAL, |
| 212 | MSG_ID_RMC_GENERATE_DECIMATED_TRACE_INFO1_SIGNAL, |
| 213 | MSG_ID_RMC_SCH_LOGIQ_SIGNAL, |
| 214 | MSG_ID_RMC_IDP_IHO_WAKE_REDUCTION_STATE_REQ_MSG, |
| 215 | |
| 216 | MSG_ID_RMC_CMD_MSGID_LAST, |
| 217 | |
| 218 | /*---------------*/ |
| 219 | /* SCH Test Msgs */ |
| 220 | /*---------------*/ |
| 221 | MSG_ID_RMC_TEST_MSGID_START, |
| 222 | MSG_ID_SCH_ETS_CAPTURE_INPUT_BUFFER_MSG = MSG_ID_RMC_TEST_MSGID_START, //MSG_ID_RMC_TEST_MSGID_START, |
| 223 | MSG_ID_SCH_MINIACQ_WINSIZE_MSG, |
| 224 | |
| 225 | /*---------------*/ |
| 226 | /* RFC Test Msgs */ |
| 227 | /*---------------*/ |
| 228 | /*---------------*/ |
| 229 | /* FMP Test Msgs */ |
| 230 | /*---------------*/ |
| 231 | MSG_ID_FMP_TEST_HWTESTMODE_MSG, |
| 232 | MSG_ID_FMP_TEST_UPDATEFINGERS_MSG, |
| 233 | MSG_ID_FMP_TEST_UPDATEMACFINGERS_MSG, |
| 234 | MSG_ID_FMP_TEST_INSP_SYNC_MSG, |
| 235 | MSG_ID_FMP_TEST_SCHPROC_MSG, |
| 236 | MSG_ID_FMP_TEST_SCHPROGFNG_CALLBK_MSG, |
| 237 | MSG_ID_FMP_TEST_SLOTFOUND_MSG, |
| 238 | MSG_ID_FMP_TEST_UPDATEPWR_MSG, |
| 239 | MSG_ID_FMP_TEST_UPDATEFNGPOS_MSG, |
| 240 | MSG_ID_FMP_TEST_INITACQFNGASSIGN_CALLBK_MSG, |
| 241 | MSG_ID_FMP_TEST_CONNSETUP_CALLBK_MSG, |
| 242 | MSG_ID_FMP_TEST_FNHW_MSG, |
| 243 | MSG_ID_FMP_FNALGOPARMS_GET_CMD, |
| 244 | MSG_ID_FMP_FNALGOPARMS_SET_CMD, |
| 245 | MSG_ID_FMP_FINGER_SCAN_CMD, |
| 246 | MSG_ID_FMP_FINGER_COMB_CFG_CMD, |
| 247 | #if defined(MTK_CBP) && (!defined(MTK_PLT_ON_PC)) |
| 248 | MSG_ID_FMP_FINGER_ANTCOMB_CFG_CMD, |
| 249 | #endif |
| 250 | MSG_ID_FMP_EQFNALGOPARMS_SET_CMD, |
| 251 | MSG_ID_FMP_EQFEATURE_SET_CMD, |
| 252 | MSG_ID_FMP_EQ_MANUAL_ASSIGN_CMD, |
| 253 | |
| 254 | /*-------------------------------*/ |
| 255 | /* FMP MMSE MRC Ctrl Config Cmds */ |
| 256 | /*-------------------------------*/ |
| 257 | MSG_ID_CP_RMC_MAC_TARGET_TEST_CMD, |
| 258 | |
| 259 | |
| 260 | /*---------------*/ |
| 261 | /* RUP Msgs */ |
| 262 | /*---------------*/ |
| 263 | MSG_ID_RUP_ETS_TCA_MSG, |
| 264 | MSG_ID_RUP_ETS_SET_SUPPORT_CDMACHAN_MSG, |
| 265 | MSG_ID_RUP_ETS_SET_SIMPLE_ATTR_MSG, |
| 266 | MSG_ID_RUP_ETS_SET_SEARCH_PARM_MSG, |
| 267 | MSG_ID_RUP_ETS_SET_MANCHAN_PARM_MSG, |
| 268 | MSG_ID_RUP_ETS_OTA_MSG, |
| 269 | MSG_ID_RUP_TST_SN_TCA_MSG, |
| 270 | MSG_ID_RUP_SNROUTEUPDATE_CMD_MSG, |
| 271 | MSG_ID_RUP_ETS_SET_PNPHASE, |
| 272 | MSG_ID_RUP_ETS_SET_MAC_PARM, |
| 273 | |
| 274 | MSG_ID_RMC_TEST_RMC_DEACTIVATE_CMD, |
| 275 | MSG_ID_RMC_TEST_RMC_SPY_DECI_CMD, |
| 276 | MSG_ID_RMC_TEST_DO_DFS_CMD, |
| 277 | MSG_ID_RMC_TEST_CTRL, |
| 278 | MSG_ID_RMC_TST_UT_REQ, |
| 279 | #ifdef MTK_CBP |
| 280 | MSG_ID_RMC_TEST_DO_DFS_SERVCH_CMD, |
| 281 | MSG_ID_RMC_TEST_FMP_MD_CHG_AFT_RXDEACT_CMD, |
| 282 | MSG_ID_RMC_TEST_DO_SET_DFS_CHCNT_CMD, |
| 283 | #if defined (MTK_DEV_C2K_IRAT) && defined (MTK_DEV_C2K_SRLTE_L1) |
| 284 | MSG_ID_RMC_TEST_DO_DFS_MEET_1X_WAKEUP_CMD, |
| 285 | #endif |
| 286 | #endif |
| 287 | /*---------------*/ |
| 288 | /* RMC IMD Msgs */ |
| 289 | /*---------------*/ |
| 290 | MSG_ID_CP_RMC_IMD_CONFIG_SET_MSG, |
| 291 | MSG_ID_CP_RMC_IMD_CONFIG_GET_MSG, |
| 292 | |
| 293 | /*---------------*/ |
| 294 | /* RMC EQ Msgs */ |
| 295 | /*---------------*/ |
| 296 | MSG_ID_CP_RMC_EQ_W_WL_SELECT_SET_MSG, |
| 297 | MSG_ID_CP_RMC_EQ_W_WL_SELECT_GET_MSG, |
| 298 | |
| 299 | /*---------------*/ |
| 300 | /* MBP Msgs */ |
| 301 | /*---------------*/ |
| 302 | MSG_ID_MBP_ETS_PROC_MCD_RPC_TH, |
| 303 | MSG_ID_MBP_ETS_PROC_MCD_RPC_TH_C2I, |
| 304 | |
| 305 | /*-----Adaptive RX power mode ----*/ |
| 306 | MSG_ID_RMC_ETS_DO_ADAPTIVE_RX_CFG_CMD, |
| 307 | |
| 308 | MSG_ID_RMC_AFC_ON_MSG, |
| 309 | MSG_ID_RMC_AFC_STATE_SET_MSG, |
| 310 | MSG_ID_RMC_AFC_FNG_FOE_UPDATE_MSG, |
| 311 | MSG_ID_RMC_VAL_DO_RX_TX_TIME_INFO_DATA_REQ, |
| 312 | MSG_ID_VAL_RMC_DO_RX_TX_TIME_INFO_DATA_RSP, |
| 313 | MSG_ID_FH_MODE_CHANGE_REQ, |
| 314 | MSG_ID_FH_STB_MEAS_IND_MSG, |
| 315 | MSG_ID_RMC_TEST_MSGID_LAST, |
| 316 | MSG_ID_RMC_VAL_DO_DAT_CFG_MSG, |
| 317 | |
| 318 | |
| 319 | MODULE_MSG_END(MSG_ID_RMC_CODE_TAIL) |
| 320 | |
| 321 | |
| 322 | /***************************************************************************** |
| 323 | * End of File |
| 324 | *****************************************************************************/ |
| 325 | #endif |