st25r3916_led.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /******************************************************************************
  2. * \attention
  3. *
  4. * <h2><center>&copy; COPYRIGHT 2020 STMicroelectronics</center></h2>
  5. *
  6. * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
  7. * You may not use this file except in compliance with the License.
  8. * You may obtain a copy of the License at:
  9. *
  10. * www.st.com/myliberty
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
  15. * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
  17. * See the License for the specific language governing permissions and
  18. * limitations under the License.
  19. *
  20. ******************************************************************************/
  21. /*
  22. * PROJECT: ST25R3916 firmware
  23. * Revision:
  24. * LANGUAGE: ISO C99
  25. */
  26. /*! \file
  27. *
  28. * \author Gustavo Patricio
  29. *
  30. * \brief ST25R3916 LEDs handling
  31. *
  32. */
  33. /*
  34. ******************************************************************************
  35. * INCLUDES
  36. ******************************************************************************
  37. */
  38. #include "st25r3916_led.h"
  39. #include "st25r3916_irq.h"
  40. #include "st25r3916_com.h"
  41. #include "st25r3916.h"
  42. /*
  43. ******************************************************************************
  44. * MACROS
  45. ******************************************************************************
  46. */
  47. #ifdef PLATFORM_LED_RX_PIN
  48. #define st25r3916ledRxOn() platformLedOn( PLATFORM_LED_RX_PORT, PLATFORM_LED_RX_PIN ); /*!< LED Rx Pin On from system HAL */
  49. #define st25r3916ledRxOff() platformLedOff( PLATFORM_LED_RX_PORT, PLATFORM_LED_RX_PIN ); /*!< LED Rx Pin Off from system HAL */
  50. #else /* PLATFORM_LED_RX_PIN */
  51. #define st25r3916ledRxOn()
  52. #define st25r3916ledRxOff()
  53. #endif /* PLATFORM_LED_RX_PIN */
  54. #ifdef PLATFORM_LED_FIELD_PIN
  55. #define st25r3916ledFieldOn() platformLedOn( PLATFORM_LED_FIELD_PORT, PLATFORM_LED_FIELD_PIN ); /*!< LED Field Pin On from system HAL */
  56. #define st25r3916ledFieldOff() platformLedOff( PLATFORM_LED_FIELD_PORT, PLATFORM_LED_FIELD_PIN ); /*!< LED Field Pin Off from system HAL */
  57. #else /* PLATFORM_LED_FIELD_PIN */
  58. #define st25r3916ledFieldOn()
  59. #define st25r3916ledFieldOff()
  60. #endif /* PLATFORM_LED_FIELD_PIN */
  61. /*
  62. ******************************************************************************
  63. * GLOBAL FUNCTIONS
  64. ******************************************************************************
  65. */
  66. void st25r3916ledInit( void )
  67. {
  68. /* Initialize LEDs if existing and defined */
  69. platformLedsInitialize();
  70. st25r3916ledRxOff();
  71. st25r3916ledFieldOff();
  72. }
  73. /*******************************************************************************/
  74. void st25r3916ledEvtIrq( uint32_t irqs )
  75. {
  76. if( (irqs & (ST25R3916_IRQ_MASK_TXE | ST25R3916_IRQ_MASK_CAT) ) != 0U )
  77. {
  78. st25r3916ledFieldOn();
  79. }
  80. if( (irqs & (ST25R3916_IRQ_MASK_RXS | ST25R3916_IRQ_MASK_NFCT) ) != 0U )
  81. {
  82. st25r3916ledRxOn();
  83. }
  84. if( (irqs & (ST25R3916_IRQ_MASK_RXE | ST25R3916_IRQ_MASK_NRE | ST25R3916_IRQ_MASK_RX_REST | ST25R3916_IRQ_MASK_RXE_PTA |
  85. ST25R3916_IRQ_MASK_WU_A | ST25R3916_IRQ_MASK_WU_A_X | ST25R3916_IRQ_MASK_WU_F | ST25R3916_IRQ_MASK_RFU2) ) != 0U )
  86. {
  87. st25r3916ledRxOff();
  88. }
  89. }
  90. /*******************************************************************************/
  91. void st25r3916ledEvtWrReg( uint8_t reg, uint8_t val )
  92. {
  93. if( reg == ST25R3916_REG_OP_CONTROL )
  94. {
  95. if( (ST25R3916_REG_OP_CONTROL_tx_en & val) != 0U )
  96. {
  97. st25r3916ledFieldOn();
  98. }
  99. else
  100. {
  101. st25r3916ledFieldOff();
  102. }
  103. }
  104. }
  105. /*******************************************************************************/
  106. void st25r3916ledEvtWrMultiReg( uint8_t reg, const uint8_t* vals, uint8_t len )
  107. {
  108. uint8_t i;
  109. for(i=0; i<(len); i++)
  110. {
  111. st25r3916ledEvtWrReg( (reg+i), vals[i] );
  112. }
  113. }
  114. /*******************************************************************************/
  115. void st25r3916ledEvtCmd( uint8_t cmd )
  116. {
  117. if( (cmd >= ST25R3916_CMD_TRANSMIT_WITH_CRC) && (cmd <= ST25R3916_CMD_RESPONSE_RF_COLLISION_N) )
  118. {
  119. st25r3916ledFieldOff();
  120. }
  121. if( cmd == ST25R3916_CMD_UNMASK_RECEIVE_DATA )
  122. {
  123. st25r3916ledRxOff();
  124. }
  125. if( cmd == ST25R3916_CMD_SET_DEFAULT )
  126. {
  127. st25r3916ledFieldOff();
  128. st25r3916ledRxOff();
  129. }
  130. }