nfc_brcm_defs.h revision f937782dff072eeea70c04db97bdc76d8b6ef9f2
1/****************************************************************************** 2 * 3 * Copyright (C) 2012-2014 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 20/****************************************************************************** 21 * 22 * This file contains the Broadcom-specific defintions that are shared 23 * between HAL, nfc stack, adaptation layer and applications. 24 * 25 ******************************************************************************/ 26 27#ifndef NFC_BRCM_DEFS_H 28#define NFC_BRCM_DEFS_H 29 30/***************************************************************************** 31** Broadcom HW ID definitions 32*****************************************************************************/ 33#define BRCM_20791B3_ID 0x20791b03 34#define BRCM_20791B4_ID 0x20791b04 35#define BRCM_20791B5_ID 0x20791b05 36#define BRCM_43341B0_ID 0x43341b00 37#define BRCM_20795T1_ID 0x20795a01 38#define BRCM_20795A0_ID 0x20795a00 39#define BRCM_20795A1_ID 0x20795a10 40 41#define BRCM_NFC_GEN_MASK 0xFFFFF000 /* HW generation mask */ 42#define BRCM_NFC_REV_MASK 0x00000FFF /* HW revision mask */ 43#define BRCM_NFC_20791_GEN 0x20791000 44#define BRCM_NFC_20791_GEN_MAX_EE 3 /* HCI access and 2 UICCs */ 45#define BRCM_NFC_43341_GEN 0x43341000 46#define BRCM_NFC_43341_GEN_MAX_EE 3 /* HCI access and 2 UICCs */ 47#define BRCM_NFC_20795_GEN 0x20795000 48#define BRCM_NFC_20795_GEN_MAX_EE 4 /* HCI access and 3 UICCs */ 49 50/***************************************************************************** 51** Broadcom-specific NCI definitions 52*****************************************************************************/ 53 54/********************************************** 55 * NCI Message Proprietary Group - F 56 **********************************************/ 57#define NCI_MSG_TAG_SET_MEM 0x00 58#define NCI_MSG_TAG_GET_MEM 0x01 59#define NCI_MSG_T1T_SET_HR 0x02 60#define NCI_MSG_SET_CLF_REGISTERS 0x03 61#define NCI_MSG_GET_BUILD_INFO 0x04 62#define NCI_MSG_HCI_NETWK 0x05 63#define NCI_MSG_SET_FWFSM 0x06 64#define NCI_MSG_SET_UICCRDRF 0x07 65#define NCI_MSG_POWER_LEVEL 0x08 66#define NCI_MSG_FRAME_LOG 0x09 67#define NCI_MSG_UICC_READER_ACTION 0x0A 68#define NCI_MSG_SET_PPSE_RESPONSE 0x0B 69#define NCI_MSG_PRBS_SET 0x0C 70#define NCI_MSG_RESET_ALL_UICC_CFG 0x0D /* reset HCI network/close all pipes (S,D) register */ 71#define NCI_MSG_GET_NFCEE_INFO 0x0E 72#define NCI_MSG_DISABLE_INIT_CHECK 0x0F 73#define NCI_MSG_ANTENNA_SELF_TEST 0x10 74#define NCI_MSG_SET_MAX_PKT_SIZE 0x11 75#define NCI_MSG_NCIP_CLK_REQ_OR_CAR_DET 0x12 76#define NCI_MSG_NCIP_CONFIG_DBUART 0x13 77#define NCI_MSG_NCIP_ENABLE_DVT_DRIVER 0x14 78#define NCI_MSG_SET_ASWP 0x15 79#define NCI_MSG_ENCAPSULATE_NCI 0x16 80#define NCI_MSG_CONFIGURE_ARM_JTAG 0x17 81#define NCI_MSG_STATISTICS 0x18 82#define NCI_MSG_SET_DSP_TABLE 0x19 83#define NCI_MSG_GET_DSP_TABLE 0x1a 84#define NCI_MSG_READY_RX_CMD 0x1b 85#define NCI_MSG_GET_VBAT 0x1c 86#define NCI_MSG_GET_XTAL_INDEX_FROM_DH 0x1d 87#define NCI_MSG_SWP_LOG 0x1e 88#define NCI_MSG_GET_PWRLEVEL 0x1f 89#define NCI_MSG_SET_VBAT_MONITOR 0x20 90#define NCI_MSG_SET_TINT_MODE 0x21 91#define NCI_MSG_ACCESS_APP 0x22 92#define NCI_MSG_SET_SECURE_MODE 0x23 93#define NCI_MSG_GET_NV_DEVICE 0x24 94#define NCI_MSG_LPTD 0x25 95#define NCI_MSG_SET_CE4_AS_SNOOZE 0x26 96#define NCI_MSG_NFCC_SEND_HCI 0x27 97#define NCI_MSG_CE4_PATCH_DOWNLOAD_DONE 0x28 98#define NCI_MSG_EEPROM_RW 0x29 99#define NCI_MSG_GET_CLF_REGISTERS 0x2A 100#define NCI_MSG_RF_TEST 0x2B 101#define NCI_MSG_DEBUG_PRINT 0x2C 102#define NCI_MSG_GET_PATCH_VERSION 0x2D 103#define NCI_MSG_SECURE_PATCH_DOWNLOAD 0x2E 104#define NCI_MSG_SPD_FORMAT_NVM 0x2F 105#define NCI_MSG_SPD_READ_NVM 0x30 106#define NCI_MSG_SWP_BIST 0x31 107#define NCI_MSG_WLESS_DBG_MODE 0x32 108#define NCI_MSG_I2C_REQ_POLARITY 0x33 109#define NCI_MSG_AID_FILTER 0x39 110 111 112/********************************************** 113 * Proprietary NCI status codes 114 **********************************************/ 115#define NCI_STATUS_SPD_ERROR_ORDER 0xE0 116#define NCI_STATUS_SPD_ERROR_DEST 0xE1 117#define NCI_STATUS_SPD_ERROR_PROJECTID 0xE2 118#define NCI_STATUS_SPD_ERROR_CHIPVER 0xE3 119#define NCI_STATUS_SPD_ERROR_MAJORVER 0xE4 120#define NCI_STATUS_SPD_ERROR_INVALID_PARAM 0xE5 121#define NCI_STATUS_SPD_ERROR_INVALID_SIG 0xE6 122#define NCI_STATUS_SPD_ERROR_NVM_CORRUPTED 0xE7 123#define NCI_STATUS_SPD_ERROR_PWR_MODE 0xE8 124#define NCI_STATUS_SPD_ERROR_MSG_LEN 0xE9 125#define NCI_STATUS_SPD_ERROR_PATCHSIZE 0xEA 126 127 128 129#define NCI_NV_DEVICE_NONE 0x00 130#define NCI_NV_DEVICE_EEPROM 0x08 131#define NCI_NV_DEVICE_UICC1 0x10 132 133/* The events reported on tNFC_VS_CBACK */ 134/* The event is (NCI_NTF_BIT|oid) or (NCI_RSP_BIT|oid) */ 135#define NFC_VS_HCI_NETWK_EVT (NCI_NTF_BIT|NCI_MSG_HCI_NETWK) 136#define NFC_VS_HCI_NETWK_RSP (NCI_RSP_BIT|NCI_MSG_HCI_NETWK) 137#define NFC_VS_UICC_READER_ACTION_EVT (NCI_NTF_BIT|NCI_MSG_UICC_READER_ACTION) 138#define NFC_VS_POWER_LEVEL_RSP (NCI_RSP_BIT|NCI_MSG_POWER_LEVEL) 139#define NFC_VS_GET_NV_DEVICE_EVT (NCI_RSP_BIT|NCI_MSG_GET_NV_DEVICE) 140#define NFC_VS_LPTD_EVT (NCI_NTF_BIT|NCI_MSG_LPTD) 141#define NFC_VS_GET_BUILD_INFO_EVT (NCI_RSP_BIT|NCI_MSG_GET_BUILD_INFO) 142#define NFC_VS_GET_PATCH_VERSION_EVT (NCI_RSP_BIT|NCI_MSG_GET_PATCH_VERSION) 143#define NFC_VS_SEC_PATCH_DOWNLOAD_EVT (NCI_RSP_BIT|NCI_MSG_SECURE_PATCH_DOWNLOAD) 144#define NFC_VS_SEC_PATCH_AUTH_EVT (NCI_NTF_BIT|NCI_MSG_SECURE_PATCH_DOWNLOAD) 145#define NFC_VS_EEPROM_RW_EVT (NCI_RSP_BIT|NCI_MSG_EEPROM_RW) 146 147#define NCI_GET_PATCH_VERSION_NVM_OFFSET 37 148 149 150#define NCI_NFCC_PIPE_INFO_NV_SIZE 24 /* Static and dynamic pipe id and status for each pipe to uicc0 and uicc1. */ 151#define NCI_PERSONALITY_SLOT_SIZE 19 152#define NCI_DYNAMIC_PIPE_SIZE 8 153 154#define NCI_SWP_INTERFACE_TYPE 0xFF /* Type of TLV in NCI_MSG_HCI_NETWK */ 155#define NCI_HCI_GATE_TYPE 0xFE /* Type of TLV in NCI_MSG_HCI_NETWK */ 156 157/* Secure Patch Download definitions (patch type definitions) */ 158#define NCI_SPD_TYPE_HEADER 0x00 159#define NCI_SPD_TYPE_SRAM 0x01 160#define NCI_SPD_TYPE_AON 0x02 161#define NCI_SPD_TYPE_PATCH_TABLE 0x03 162#define NCI_SPD_TYPE_SECURE_CONFIG 0x04 163#define NCI_SPD_TYPE_CONTROLLED_CONFIG 0x05 164#define NCI_SPD_TYPE_SIGNATURE 0x06 165#define NCI_SPD_TYPE_SIGCHEK 0x07 166 167/* Secure Patch Download definitions (NCI_SPD_TYPE_HEADER definitions) */ 168#define NCI_SPD_HEADER_OFFSET_CHIPVERLEN 0x18 169#define NCI_SPD_HEADER_CHIPVER_LEN 16 170 171/* NVM Type (in GET_PATCH_VERSION RSP) */ 172#define NCI_SPD_NVM_TYPE_NONE 0x00 173#define NCI_SPD_NVM_TYPE_EEPROM 0x01 174#define NCI_SPD_NVM_TYPE_UICC 0x02 175 176/********************************************** 177 * NCI NFCC proprietary features in octet 3 178 **********************************************/ 179#define NCI_FEAT_SIGNED_PATCH 0x01000000 180 181/********************************************** 182 * NCI Interface Types 183 **********************************************/ 184#define NCI_INTERFACE_VS_CALYPSO_CE 0x81 185#define NCI_INTERFACE_VS_T2T_CE 0x82 /* for Card Emulation side */ 186#define NCI_INTERFACE_VS_15693 0x83 /* for both Reader/Writer and Card Emulation side */ 187#define NCI_INTERFACE_VS_T1T_CE 0x84 /* for Card Emulation side */ 188 189/********************************************** 190 * NCI Proprietary Parameter IDs 191 **********************************************/ 192#define NCI_PARAM_ID_LA_FSDI 0xA0 193#define NCI_PARAM_ID_LB_FSDI 0xA1 194#define NCI_PARAM_ID_HOST_LISTEN_MASK 0xA2 195#define NCI_PARAM_ID_CHIP_TYPE 0xA3 /* NFCDEP */ 196#define NCI_PARAM_ID_PA_ANTICOLL 0xA4 197#define NCI_PARAM_ID_CONTINUE_MODE 0xA5 198#define NCI_PARAM_ID_LBP 0xA6 199#define NCI_PARAM_ID_T1T_RDR_ONLY 0xA7 200#define NCI_PARAM_ID_LA_SENS_RES 0xA8 201#define NCI_PARAM_ID_PWR_SETTING_BITMAP 0xA9 202#define NCI_PARAM_ID_WI_NTF_ENABLE 0xAA 203#define NCI_PARAM_ID_LN_BITRATE 0xAB /* NFCDEP Listen Bitrate */ 204#define NCI_PARAM_ID_LF_BITRATE 0xAC /* FeliCa */ 205#define NCI_PARAM_ID_SWP_BITRATE_MASK 0xAD 206#define NCI_PARAM_ID_KOVIO 0xAE 207#define NCI_PARAM_ID_UICC_NTF_TO 0xAF 208#define NCI_PARAM_ID_NFCDEP 0xB0 209#define NCI_PARAM_ID_CLF_REGS_CFG 0xB1 210#define NCI_PARAM_ID_NFCDEP_TRANS_TIME 0xB2 211#define NCI_PARAM_ID_CREDIT_TIMER 0xB3 212#define NCI_PARAM_ID_CORRUPT_RX 0xB4 213#define NCI_PARAM_ID_ISODEP 0xB5 214#define NCI_PARAM_ID_LF_CONFIG 0xB6 215#define NCI_PARAM_ID_I93_DATARATE 0xB7 216#define NCI_PARAM_ID_CREDITS_THRESHOLD 0xB8 217#define NCI_PARAM_ID_TAGSNIFF_CFG 0xB9 218#define NCI_PARAM_ID_PA_FSDI 0xBA /* ISODEP */ 219#define NCI_PARAM_ID_PB_FSDI 0xBB /* ISODEP */ 220#define NCI_PARAM_ID_FRAME_INTF_RETXN 0xBC 221 222#define NCI_PARAM_ID_UICC_RDR_PRIORITY 0xBD 223#define NCI_PARAM_ID_GUARD_TIME 0xBE 224#define NCI_PARAM_ID_STDCONFIG 0xBF /* dont not use this config item */ 225#define NCI_PARAM_ID_PROPCFG 0xC0 /* dont not use this config item */ 226#define NCI_PARAM_ID_MAXTRY2ACTIVATE 0xC1 227#define NCI_PARAM_ID_SWPCFG 0xC2 228#define NCI_PARAM_ID_CLF_LPM_CFG 0xC3 229#define NCI_PARAM_ID_DCLB 0xC4 230#define NCI_PARAM_ID_ACT_ORDER 0xC5 231#define NCI_PARAM_ID_DEP_DELAY_ACT 0xC6 232#define NCI_PARAM_ID_DH_PARITY_CRC_CTL 0xC7 233#define NCI_PARAM_ID_PREINIT_DSP_CFG 0xC8 234#define NCI_PARAM_ID_FW_WORKAROUND 0xC9 235#define NCI_PARAM_ID_RFU_CONFIG 0xCA 236#define NCI_PARAM_ID_EMVCO_ENABLE 0xCB 237#define NCI_PARAM_ID_ANTDRIVER_PARAM 0xCC 238#define NCI_PARAM_ID_PLL325_CFG_PARAM 0xCD 239#define NCI_PARAM_ID_OPNLP_ADPLL_ENABLE 0xCE 240#define NCI_PARAM_ID_CONFORMANCE_MODE 0xCF 241 242#define NCI_PARAM_ID_LPO_ON_OFF_ENABLE 0xD0 243#define NCI_PARAM_ID_FORCE_VANT 0xD1 244#define NCI_PARAM_ID_COEX_CONFIG 0xD2 245#define NCI_PARAM_ID_INTEL_MODE 0xD3 246 247#define NCI_PARAM_ID_AID 0xFF 248 249/********************************************** 250 * NCI Parameter ID Lens 251 **********************************************/ 252#define NCI_PARAM_LEN_PWR_SETTING_BITMAP 3 253#define NCI_PARAM_LEN_HOST_LISTEN_MASK 2 254#define NCI_PARAM_LEN_PLL325_CFG_PARAM 14 255 256/********************************************** 257 * Snooze Mode 258 **********************************************/ 259#define NFC_SNOOZE_MODE_NONE 0x00 /* Snooze mode disabled */ 260#define NFC_SNOOZE_MODE_UART 0x01 /* Snooze mode for UART */ 261#define NFC_SNOOZE_MODE_SPI_I2C 0x08 /* Snooze mode for SPI/I2C */ 262 263#define NFC_SNOOZE_ACTIVE_LOW 0x00 /* high to low voltage is asserting */ 264#define NFC_SNOOZE_ACTIVE_HIGH 0x01 /* low to high voltage is asserting */ 265 266 267/********************************************** 268 * HCI definitions 269 **********************************************/ 270#define NFC_HAL_HCI_SESSION_ID_LEN 8 271#define NFC_HAL_HCI_SYNC_ID_LEN 2 272 273/* HCI Network command definitions */ 274#define NFC_HAL_HCI_NETWK_INFO_SIZE 250 275#define NFC_HAL_HCI_NO_RW_MODE_NETWK_INFO_SIZE 184 276#define NFC_HAL_HCI_DH_NETWK_INFO_SIZE 111 277#define NFC_HAL_HCI_MIN_NETWK_INFO_SIZE 12 278#define NFC_HAL_HCI_MIN_DH_NETWK_INFO_SIZE 11 279 280/* Card emulation RF Gate A definitions */ 281#define NFC_HAL_HCI_CE_RF_A_UID_REG_LEN 10 282#define NFC_HAL_HCI_CE_RF_A_ATQA_RSP_CODE_LEN 2 283#define NFC_HAL_HCI_CE_RF_A_MAX_HIST_DATA_LEN 15 284#define NFC_HAL_HCI_CE_RF_A_MAX_DATA_RATE_LEN 3 285 286/* Card emulation RF Gate B definitions */ 287#define NFC_HAL_HCI_CE_RF_B_PUPI_LEN 4 288#define NFC_HAL_HCI_CE_RF_B_ATQB_LEN 4 289#define NFC_HAL_HCI_CE_RF_B_HIGHER_LAYER_RSP_LEN 61 290#define NFC_HAL_HCI_CE_RF_B_MAX_DATA_RATE_LEN 3 291 292/* Card emulation RF Gate BP definitions */ 293#define NFC_HAL_HCI_CE_RF_BP_MAX_PAT_IN_LEN 8 294#define NFC_HAL_HCI_CE_RF_BP_DATA_OUT_LEN 40 295 296/* Reader RF Gate A definitions */ 297#define NFC_HAL_HCI_RD_RF_B_HIGHER_LAYER_DATA_LEN 61 298 299/* DH HCI Network command definitions */ 300#define NFC_HAL_HCI_DH_MAX_DYN_PIPES 20 301 302/* Target handle for different host in the network */ 303#define NFC_HAL_HCI_DH_TARGET_HANDLE 0xF2 304#define NFC_HAL_HCI_UICC0_TARGET_HANDLE 0xF3 305#define NFC_HAL_HCI_UICC1_TARGET_HANDLE 0xF4 306#define NFC_HAL_HCI_UICC2_TARGET_HANDLE 0xF5 307 308/* Card emulation RF Gate A registry information */ 309typedef struct 310{ 311 UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 312 UINT8 mode; /* Type A card emulation enabled indicator, 0x02:enabled */ 313 UINT8 sak; 314 UINT8 uid_reg_len; 315 UINT8 uid_reg[NFC_HAL_HCI_CE_RF_A_UID_REG_LEN]; 316 UINT8 atqa[NFC_HAL_HCI_CE_RF_A_ATQA_RSP_CODE_LEN]; /* ATQA response code */ 317 UINT8 app_data_len; 318 UINT8 app_data[NFC_HAL_HCI_CE_RF_A_MAX_HIST_DATA_LEN]; /* 15 bytes optional storage for historic data, use 2 slots */ 319 UINT8 fwi_sfgi; /* FRAME WAITING TIME, START-UP FRAME GUARD TIME */ 320 UINT8 cid_support; 321 UINT8 datarate_max[NFC_HAL_HCI_CE_RF_A_MAX_DATA_RATE_LEN]; 322 UINT8 clt_support; 323} tNCI_HCI_CE_RF_A; 324 325/* Card emulation RF Gate B registry information */ 326typedef struct 327{ 328 UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 329 UINT8 mode; /* Type B card emulation enabled indicator, 0x02:enabled */ 330 UINT8 pupi_len; 331 UINT8 pupi_reg[NFC_HAL_HCI_CE_RF_B_PUPI_LEN]; 332 UINT8 afi; 333 UINT8 atqb[NFC_HAL_HCI_CE_RF_B_ATQB_LEN]; /* 4 bytes ATQB application data */ 334 UINT8 higherlayer_resp[NFC_HAL_HCI_CE_RF_B_HIGHER_LAYER_RSP_LEN]; /* 0~ 61 bytes ATRB_INF use 1~4 personality slots */ 335 UINT8 datarate_max[NFC_HAL_HCI_CE_RF_B_MAX_DATA_RATE_LEN]; 336 UINT8 natrb; 337} tNCI_HCI_CE_RF_B; 338 339/* Card emulation RF Gate BP registry information */ 340typedef struct 341{ 342 UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 343 UINT8 mode; /* Type B prime card emulation enabled indicator, 0x02:enabled */ 344 UINT8 pat_in_len; 345 UINT8 pat_in[NFC_HAL_HCI_CE_RF_BP_MAX_PAT_IN_LEN]; 346 UINT8 dat_out_len; 347 UINT8 dat_out[NFC_HAL_HCI_CE_RF_BP_DATA_OUT_LEN]; /* ISO7816-3 <=64 byte, and other fields are 9 bytes */ 348 UINT8 natr; 349} tNCI_HCI_CE_RF_BP; 350 351/* Card emulation RF Gate F registry information */ 352typedef struct 353{ 354 UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 355 UINT8 mode; /* Type F card emulation enabled indicator, 0x02:enabled */ 356 UINT8 speed_cap; 357 UINT8 clt_support; 358} tNCI_HCI_CE_RF_F; 359 360/* Reader RF Gate A registry information */ 361typedef struct 362{ 363 UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 364 UINT8 datarate_max; 365} tNCI_HCI_RD_RF_A; 366 367/* Reader RF Gate B registry information */ 368typedef struct 369{ 370 UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 371 UINT8 afi; 372 UINT8 hldata_len; 373 UINT8 high_layer_data[NFC_HAL_HCI_RD_RF_B_HIGHER_LAYER_DATA_LEN]; /* INF field in ATTRIB command */ 374} tNCI_HCI_RD_RF_B; 375 376/* Dynamic pipe information */ 377typedef struct 378{ 379 UINT8 source_host; 380 UINT8 dest_host; 381 UINT8 source_gate; 382 UINT8 dest_gate; 383 UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 384} tNCI_HCI_DYN_PIPE_INFO; 385 386/************************************************************* 387 * HCI Network CMD/NTF structure for UICC host in the network 388 *************************************************************/ 389typedef struct 390{ 391 UINT8 target_handle; 392 UINT8 session_id[NFC_HAL_HCI_SESSION_ID_LEN]; 393 UINT8 sync_id[NFC_HAL_HCI_SYNC_ID_LEN]; 394 UINT8 static_pipe_info; 395 tNCI_HCI_CE_RF_A ce_rf_a; 396 tNCI_HCI_CE_RF_B ce_rf_b; 397 tNCI_HCI_CE_RF_BP ce_rf_bp; 398 tNCI_HCI_CE_RF_F ce_rf_f; 399 tNCI_HCI_RD_RF_A rw_rf_a; 400 tNCI_HCI_RD_RF_B rw_rf_b; 401} tNCI_HCI_NETWK; 402 403/************************************************ 404 * HCI Network CMD/NTF structure for Device host 405 ************************************************/ 406typedef struct 407{ 408 UINT8 target_handle; 409 UINT8 session_id[NFC_HAL_HCI_SESSION_ID_LEN]; 410 UINT8 static_pipe_info; 411 UINT8 num_dyn_pipes; 412 tNCI_HCI_DYN_PIPE_INFO dyn_pipe_info[NFC_HAL_HCI_DH_MAX_DYN_PIPES]; 413} tNCI_HCI_NETWK_DH; 414 415#endif /* NFC_BRCM_DEFS_H */ 416