user_server.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #include "user_server.h"
  2. #include "modbus.h"
  3. #include "user_led.h"
  4. static uint32_t ulUser_server_delaycount = 0;
  5. coll_data_s coll_data = {
  6. .count = 1,
  7. .sw_stat = {COLL_FAULT_ITEMS},
  8. .items_stat = {NO_ITEMS_STAT},
  9. };
  10. /*******************************************************************************
  11. * @函数名称 vUser_server_set_led_stat
  12. * @函数说明 设置LED灯变化
  13. * @输入参数 idx:底座号
  14. * @输出参数 无
  15. * @返回参数 无
  16. *******************************************************************************/
  17. static void vUser_server_set_led_stat(void)
  18. {
  19. for(int i = 0; i < DEV_MAX_COUNT; i++)
  20. {
  21. if(coll_data.items_stat[i] == NO_ITEMS_STAT)
  22. {
  23. if(coll_data.sw_stat[i] == COLL_ITEMS)
  24. {
  25. vUser_led_set_view_stat(i, LED_VIEW_ITEMS);
  26. }
  27. else if(coll_data.sw_stat[i] == COLL_NO_ITEMS)
  28. {
  29. vUser_led_set_view_stat(i, LED_VIEW_NO_ITEMS);
  30. }
  31. else if(coll_data.sw_stat[i] == COLL_FAULT_ITEMS)
  32. {
  33. vUser_led_set_view_stat(i, LED_VIEW_NO_BOARD);
  34. }
  35. }
  36. else if(coll_data.items_stat[i] == TAKE_ITEMS_STAT)
  37. {
  38. if(coll_data.sw_stat[i] == COLL_ITEMS)
  39. {
  40. vUser_led_set_view_stat(i, LED_VIEW_TAKE_ITEMS);
  41. }
  42. else if(coll_data.sw_stat[i] == COLL_NO_ITEMS)
  43. {
  44. vUser_led_set_view_stat(i, LED_VIEW_NO_ITEMS);
  45. }
  46. else if(coll_data.sw_stat[i] == COLL_FAULT_ITEMS)
  47. {
  48. vUser_led_set_view_stat(i, LED_VIEW_NO_BOARD);
  49. }
  50. }
  51. else if(coll_data.items_stat[i] == PUT_ITEMS_STAT)
  52. {
  53. if(coll_data.sw_stat[i] == COLL_ITEMS)
  54. {
  55. vUser_led_set_view_stat(i, LED_VIEW_NO_ITEMS);
  56. }
  57. else if(coll_data.sw_stat[i] == COLL_NO_ITEMS)
  58. {
  59. vUser_led_set_view_stat(i, LED_VIEW_PUT_ITEMS);
  60. }
  61. else if(coll_data.sw_stat[i] == COLL_FAULT_ITEMS)
  62. {
  63. vUser_led_set_view_stat(i, LED_VIEW_NO_BOARD);
  64. }
  65. }
  66. }
  67. }
  68. /*******************************************************************************
  69. * @函数名称 vUser_server_set_sw_stat
  70. * @函数说明 设置开关量状态
  71. * @输入参数 stat:开关量状态
  72. * @输出参数 无
  73. * @返回参数 无
  74. *******************************************************************************/
  75. void vUser_server_set_download_sw_stat(uint32_t stat)
  76. {
  77. for(int i = 0; i < DEV_MAX_COUNT; i++)
  78. {
  79. if(i < coll_data.count)
  80. {
  81. coll_data.sw_stat[i] = (uint8_t)(stat >> (i * 2)) & 0x03;
  82. }
  83. else{
  84. coll_data.sw_stat[i] = COLL_FAULT_ITEMS;
  85. }
  86. }
  87. vUser_server_set_led_stat();
  88. }
  89. /*******************************************************************************
  90. * @函数名称 vUser_server_set_coll_stat
  91. * @函数说明 设置就绪状态
  92. * @输入参数 count:下挂主板个数
  93. * @输出参数 无
  94. * @返回参数 无
  95. *******************************************************************************/
  96. void vUser_server_set_coll_stat(uint16_t count)
  97. {
  98. coll_data.count = count;
  99. if(count > 0)
  100. {
  101. coll_data.coll_stat = COLL_READY_STAT;
  102. }
  103. else{
  104. coll_data.coll_stat = COLL_NOT_READY_STAT;
  105. }
  106. for(int i = coll_data.count = count; i < DEV_MAX_COUNT; i++)
  107. {
  108. coll_data.sw_stat[i] = COLL_FAULT_ITEMS;
  109. }
  110. }
  111. /*******************************************************************************
  112. * @函数名称 vUser_server_set_items_stat
  113. * @函数说明 设置物资灯状态
  114. * @输入参数 idx:下标
  115. * type:状态
  116. * @输出参数 无
  117. * @返回参数 无
  118. *******************************************************************************/
  119. void vUser_server_set_items_stat(uint8_t idx, items_stat_type_e type)
  120. {
  121. coll_data.items_stat[idx] = type;
  122. vUser_server_set_led_stat();
  123. }
  124. /*******************************************************************************
  125. * @函数名称 vUser_server_init
  126. * @函数说明 初始化
  127. * @输入参数 无
  128. * @输出参数 无
  129. * @返回参数 无
  130. *******************************************************************************/
  131. void vUser_server_init(void)
  132. {
  133. for(int i = 0; i < DEV_MAX_COUNT; i++)
  134. {
  135. coll_data.sw_stat[i] = COLL_FAULT_ITEMS;
  136. coll_data.items_stat[i] = NO_ITEMS_STAT;
  137. }
  138. vUser_server_set_led_stat();
  139. }