/****************************************************************************** * \attention * *

© COPYRIGHT 2020 STMicroelectronics

* * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License"); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * www.st.com/myliberty * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ /* * PROJECT: ST25R3916 firmware * Revision: * LANGUAGE: ISO C99 */ /*! \file * * \author Gustavo Patricio * * \brief ST25R3916 LEDs handling * */ /* ****************************************************************************** * INCLUDES ****************************************************************************** */ #include "st25r3916_led.h" #include "st25r3916_irq.h" #include "st25r3916_com.h" #include "st25r3916.h" /* ****************************************************************************** * MACROS ****************************************************************************** */ #ifdef PLATFORM_LED_RX_PIN #define st25r3916ledRxOn() platformLedOn( PLATFORM_LED_RX_PORT, PLATFORM_LED_RX_PIN ); /*!< LED Rx Pin On from system HAL */ #define st25r3916ledRxOff() platformLedOff( PLATFORM_LED_RX_PORT, PLATFORM_LED_RX_PIN ); /*!< LED Rx Pin Off from system HAL */ #else /* PLATFORM_LED_RX_PIN */ #define st25r3916ledRxOn() #define st25r3916ledRxOff() #endif /* PLATFORM_LED_RX_PIN */ #ifdef PLATFORM_LED_FIELD_PIN #define st25r3916ledFieldOn() platformLedOn( PLATFORM_LED_FIELD_PORT, PLATFORM_LED_FIELD_PIN ); /*!< LED Field Pin On from system HAL */ #define st25r3916ledFieldOff() platformLedOff( PLATFORM_LED_FIELD_PORT, PLATFORM_LED_FIELD_PIN ); /*!< LED Field Pin Off from system HAL */ #else /* PLATFORM_LED_FIELD_PIN */ #define st25r3916ledFieldOn() #define st25r3916ledFieldOff() #endif /* PLATFORM_LED_FIELD_PIN */ /* ****************************************************************************** * GLOBAL FUNCTIONS ****************************************************************************** */ void st25r3916ledInit( void ) { /* Initialize LEDs if existing and defined */ platformLedsInitialize(); st25r3916ledRxOff(); st25r3916ledFieldOff(); } /*******************************************************************************/ void st25r3916ledEvtIrq( uint32_t irqs ) { if( (irqs & (ST25R3916_IRQ_MASK_TXE | ST25R3916_IRQ_MASK_CAT) ) != 0U ) { st25r3916ledFieldOn(); } if( (irqs & (ST25R3916_IRQ_MASK_RXS | ST25R3916_IRQ_MASK_NFCT) ) != 0U ) { st25r3916ledRxOn(); } if( (irqs & (ST25R3916_IRQ_MASK_RXE | ST25R3916_IRQ_MASK_NRE | ST25R3916_IRQ_MASK_RX_REST | ST25R3916_IRQ_MASK_RXE_PTA | ST25R3916_IRQ_MASK_WU_A | ST25R3916_IRQ_MASK_WU_A_X | ST25R3916_IRQ_MASK_WU_F | ST25R3916_IRQ_MASK_RFU2) ) != 0U ) { st25r3916ledRxOff(); } } /*******************************************************************************/ void st25r3916ledEvtWrReg( uint8_t reg, uint8_t val ) { if( reg == ST25R3916_REG_OP_CONTROL ) { if( (ST25R3916_REG_OP_CONTROL_tx_en & val) != 0U ) { st25r3916ledFieldOn(); } else { st25r3916ledFieldOff(); } } } /*******************************************************************************/ void st25r3916ledEvtWrMultiReg( uint8_t reg, const uint8_t* vals, uint8_t len ) { uint8_t i; for(i=0; i<(len); i++) { st25r3916ledEvtWrReg( (reg+i), vals[i] ); } } /*******************************************************************************/ void st25r3916ledEvtCmd( uint8_t cmd ) { if( (cmd >= ST25R3916_CMD_TRANSMIT_WITH_CRC) && (cmd <= ST25R3916_CMD_RESPONSE_RF_COLLISION_N) ) { st25r3916ledFieldOff(); } if( cmd == ST25R3916_CMD_UNMASK_RECEIVE_DATA ) { st25r3916ledRxOff(); } if( cmd == ST25R3916_CMD_SET_DEFAULT ) { st25r3916ledFieldOff(); st25r3916ledRxOff(); } }