/******************************************************************************* ** ** Function HAL_NfcPrmSetSpdNciCmdPayloadSize ** ** Description Set Host-to-NFCC NCI message size for secure patch download ** ** This API must be called before calling HAL_NfcPrmDownloadStart. ** If the API is not called, then PRM will use the default ** message size. ** ** Typically, this API is only called for platforms that have ** message-size limitations in the transport/driver. ** ** Valid message size range: NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE to 255. ** ** Returns HAL_NFC_STATUS_OK if successful ** HAL_NFC_STATUS_FAILED otherwise ** ** *******************************************************************************/ tHAL_NFC_STATUS HAL_NfcPrmSetSpdNciCmdPayloadSize (UINT8 max_payload_size) { /* Validate: minimum size is NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE */ if (max_payload_size < NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE) { HAL_TRACE_ERROR2 ("HAL_NfcPrmSetSpdNciCmdPayloadSize: invalid size (%i). Must be between %i and 255", max_payload_size, NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE); return (HAL_NFC_STATUS_FAILED); } else { HAL_TRACE_API1 ("HAL_NfcPrmSetSpdNciCmdPayloadSize: new message size during download: %i", max_payload_size); nfc_hal_cb.ncit_cb.nci_ctrl_size = max_payload_size; return (HAL_NFC_STATUS_OK); } }
/******************************************************************************* ** ** Function HAL_NfcSetSnoozeMode ** ** Description Set snooze mode ** snooze_mode ** NFC_HAL_LP_SNOOZE_MODE_NONE - Snooze mode disabled ** NFC_HAL_LP_SNOOZE_MODE_UART - Snooze mode for UART ** NFC_HAL_LP_SNOOZE_MODE_SPI_I2C - Snooze mode for SPI/I2C ** ** idle_threshold_dh/idle_threshold_nfcc ** Idle Threshold Host in 100ms unit ** ** nfc_wake_active_mode/dh_wake_active_mode ** NFC_HAL_LP_ACTIVE_LOW - high to low voltage is asserting ** NFC_HAL_LP_ACTIVE_HIGH - low to high voltage is asserting ** ** p_snooze_cback ** Notify status of operation ** ** Returns tHAL_NFC_STATUS ** *******************************************************************************/ tHAL_NFC_STATUS HAL_NfcSetSnoozeMode (UINT8 snooze_mode, UINT8 idle_threshold_dh, UINT8 idle_threshold_nfcc, UINT8 nfc_wake_active_mode, UINT8 dh_wake_active_mode, tHAL_NFC_STATUS_CBACK *p_snooze_cback) { UINT8 cmd[NFC_HAL_BT_HCI_CMD_HDR_SIZE + HCI_BRCM_WRITE_SLEEP_MODE_LENGTH]; UINT8 *p; HAL_TRACE_API1 ("HAL_NfcSetSnoozeMode (): snooze_mode = %d", snooze_mode); nfc_hal_cb.dev_cb.new_snooze_mode = snooze_mode; nfc_hal_cb.dev_cb.nfc_wake_active_mode = nfc_wake_active_mode; nfc_hal_cb.dev_cb.p_prop_cback = p_snooze_cback; p = cmd; /* Add the HCI command */ UINT16_TO_STREAM (p, HCI_BRCM_WRITE_SLEEP_MODE); UINT8_TO_STREAM (p, HCI_BRCM_WRITE_SLEEP_MODE_LENGTH); memset (p, 0x00, HCI_BRCM_WRITE_SLEEP_MODE_LENGTH); UINT8_TO_STREAM (p, snooze_mode); /* Sleep Mode */ UINT8_TO_STREAM (p, idle_threshold_dh); /* Idle Threshold Host */ UINT8_TO_STREAM (p, idle_threshold_nfcc); /* Idle Threshold HC */ UINT8_TO_STREAM (p, nfc_wake_active_mode); /* BT Wake Active Mode */ UINT8_TO_STREAM (p, dh_wake_active_mode); /* Host Wake Active Mode */ nfc_hal_dm_send_bt_cmd (cmd, NFC_HAL_BT_HCI_CMD_HDR_SIZE + HCI_BRCM_WRITE_SLEEP_MODE_LENGTH, nfc_hal_dm_set_snooze_mode_cback); return (NCI_STATUS_OK); }