led.c 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /*! \file
  2. * Led.c contains all interface- and low-level routines to
  3. * control the LED
  4. * Copyright STREAMIT BV 2010
  5. * \version 1.0
  6. * \date 26 september 2003
  7. */
  8. #define LOG_MODULE LOG_LED_MODULE
  9. #include <sys/timer.h>
  10. #include <sys/thread.h>
  11. #include <sys/event.h>
  12. #include "system.h"
  13. #include "portio.h"
  14. #include "led.h"
  15. static u_char LedStatus;
  16. /*-------------------------------------------------------------------------*/
  17. /* local variable definitions */
  18. /*-------------------------------------------------------------------------*/
  19. /*-------------------------------------------------------------------------*/
  20. /* local routines (prototyping) */
  21. /*-------------------------------------------------------------------------*/
  22. /*!
  23. * \addtogroup Led
  24. */
  25. /*@{*/
  26. /*-------------------------------------------------------------------------*/
  27. /* start of code */
  28. /*-------------------------------------------------------------------------*/
  29. /* ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ */
  30. /*!
  31. * \brief Interface routine to control the SIR LED
  32. *
  33. * Using this routine, the LED can be set to 'ON', 'OFF" or it's state can
  34. * be toggeld
  35. *
  36. * \param LedMode can be eiter 'ON', 'OFF' or 'TOGGLE'
  37. */
  38. /* ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ */
  39. /************************************************************/
  40. /* Control the LED: ON, OFF or TOGGLE */
  41. /* in case Lucas is 'OFF' -> return */
  42. /************************************************************/
  43. void LedControl(u_char LedMode)
  44. {
  45. switch (LedMode)
  46. {
  47. case LED_OFF:
  48. case LED_POWER_OFF:
  49. case LED_FLASH_OFF:
  50. cbi (LED_OUT_WRITE, LED_PIN);
  51. LedStatus = LedMode;
  52. break;
  53. case LED_ON:
  54. case LED_POWER_ON:
  55. case LED_FLASH_ON:
  56. sbi (LED_OUT_WRITE, LED_PIN);
  57. LedStatus = LedMode;
  58. break;
  59. case LED_TOGGLE:
  60. if (LedStatus == LED_ON)
  61. {
  62. cbi (LED_OUT_WRITE, LED_PIN);
  63. LedStatus = LED_OFF;
  64. }
  65. else
  66. {
  67. sbi (LED_OUT_WRITE, LED_PIN);
  68. LedStatus = LED_ON;
  69. }
  70. break;
  71. }
  72. }
  73. /* ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ */
  74. /*!
  75. * \brief Initialise the Led module
  76. *
  77. * clear LED and update LedStatus
  78. *
  79. */
  80. /* ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ */
  81. void LedInit()
  82. {
  83. cbi (LED_OUT_WRITE, LED_PIN);
  84. LedStatus = LED_OFF;
  85. }
  86. /*!
  87. * \brief Get LedStatus for external use
  88. *
  89. */
  90. u_char LedGetStatus()
  91. {
  92. return(LedStatus);
  93. }
  94. /* ---------- end of module ------------------------------------------------ */
  95. /*@}*/