sensor_driver.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /*
  2. * Implement sensor driver function in here.
  3. * Every sensor include init,write,read function.
  4. * Author:Jimbo
  5. */
  6. #include "sensor_tbl.h"
  7. #include "sensor_thread.h"
  8. #include <stdio.h>
  9. #include "bmc_main.h"
  10. //static sensor_tbl_t sensor_tbl[]=
  11. sensor_tbl_t sensor_tbl[]=
  12. {
  13. //lm73_1
  14. {
  15. 0, //sensor number
  16. 10, //power on delay
  17. 3, //reset delay
  18. 2, //Monitor interval
  19. MonitorOnStandby, //monitor states
  20. lm73_1_read, //read function
  21. lm73_1_write, //write functon
  22. lm73_1_init, //init function
  23. },
  24. /*lm73_2*/
  25. {
  26. 1,
  27. 10, //power on delay
  28. 3, //reset delay
  29. 2, //Monitor interval
  30. MonitorOnStandby, //monitor states
  31. lm73_2_read,
  32. lm73_2_write,
  33. lm73_2_init,
  34. },
  35. /*INA220_3V3*/
  36. {
  37. 2,
  38. 10, //power on delay
  39. 3, //reset delay
  40. 2, //Monitor interval
  41. MonitorOnStandby, //monitor states
  42. INA220_3V3_Volts_read,
  43. INA220_3V3_Volts_write,
  44. INA220_3V3_Volts_init,
  45. },
  46. /*INA220_5V0*/
  47. {
  48. 3,
  49. 10, //power on delay
  50. 3, //reset delay
  51. 2, //Monitor interval
  52. MonitorOnStandby, //monitor states
  53. INA220_5V0_Volts_read,
  54. INA220_5V0_Volts_write,
  55. INA220_5V0_Volts_init,
  56. },
  57. /*INA220_12V0*/
  58. {
  59. 4,
  60. 10, //power on delay
  61. 3, //reset delay
  62. 2, //Monitor interval
  63. MonitorOnStandby, //monitor states
  64. INA220_12V0_Volts_read,
  65. INA220_12V0_Volts_write,
  66. INA220_12V0_Volts_init,
  67. },
  68. /*INA220_3V3*/
  69. {
  70. 5,
  71. 10, //power on delay
  72. 3, //reset delay
  73. 2, //Monitor interval
  74. MonitorOnStandby, //monitor states
  75. INA220_3V3_Amps_read,
  76. INA220_3V3_Amps_write,
  77. INA220_3V3_Amps_init,
  78. },
  79. /*INA220_5V0*/
  80. {
  81. 6,
  82. 10, //power on delay
  83. 3, //reset delay
  84. 2, //Monitor interval
  85. MonitorOnStandby, //monitor states
  86. INA220_5V0_Amps_read,
  87. INA220_5V0_Amps_write,
  88. INA220_5V0_Amps_init,
  89. },
  90. /*INA220_12V0*/
  91. {
  92. 7,
  93. 10, //power on delay
  94. 3, //reset delay
  95. 2, //Monitor interval
  96. MonitorOnStandby, //monitor states
  97. INA220_12V0_Amps_read,
  98. INA220_12V0_Amps_write,
  99. INA220_12V0_Amps_init,
  100. },
  101. { 0 } /* dummy entry when 0 sensors */
  102. };
  103. sensor_tbl_t *getSensorDev(uint8_t sensorNum)
  104. {
  105. uint8_t temp=0;
  106. temp = sizeof(sensor_tbl)/sizeof(sensor_tbl_t);
  107. // printf("sensor_tbl size:%d, sensor_tbl_t size:%d\n", sizeof(sensor_tbl), sizeof(sensor_tbl_t));
  108. if(temp != MAX_SENSOR_NUM+1) //there is a dummy entry
  109. {
  110. printf("Error: Invalid sensor table!\n");
  111. return NULL;
  112. }
  113. if(sensorNum >= MAX_SENSOR_NUM)
  114. {
  115. printf("Error: Ivalid sensor number!\n");
  116. return NULL;
  117. }
  118. return &sensor_tbl[sensorNum];
  119. }