#include "user_server.h" #include "modbus.h" #include "user_led.h" static uint32_t ulUser_server_delaycount = 0; coll_data_s coll_data = { .count = 1, .sw_stat = {COLL_FAULT_ITEMS}, .items_stat = {NO_ITEMS_STAT}, }; /******************************************************************************* * @函数名称 vUser_server_set_led_stat * @函数说明 设置LED灯变化 * @输入参数 idx:底座号 * @输出参数 无 * @返回参数 无 *******************************************************************************/ static void vUser_server_set_led_stat(void) { for(int i = 0; i < DEV_MAX_COUNT; i++) { if(coll_data.items_stat[i] == NO_ITEMS_STAT) { if(coll_data.sw_stat[i] == COLL_ITEMS) { vUser_led_set_view_stat(i, LED_VIEW_ITEMS); } else if(coll_data.sw_stat[i] == COLL_NO_ITEMS) { vUser_led_set_view_stat(i, LED_VIEW_NO_ITEMS); } else if(coll_data.sw_stat[i] == COLL_FAULT_ITEMS) { vUser_led_set_view_stat(i, LED_VIEW_NO_BOARD); } } else if(coll_data.items_stat[i] == TAKE_ITEMS_STAT) { if(coll_data.sw_stat[i] == COLL_ITEMS) { vUser_led_set_view_stat(i, LED_VIEW_TAKE_ITEMS); } else if(coll_data.sw_stat[i] == COLL_NO_ITEMS) { vUser_led_set_view_stat(i, LED_VIEW_NO_ITEMS); } else if(coll_data.sw_stat[i] == COLL_FAULT_ITEMS) { vUser_led_set_view_stat(i, LED_VIEW_NO_BOARD); } } else if(coll_data.items_stat[i] == PUT_ITEMS_STAT) { if(coll_data.sw_stat[i] == COLL_ITEMS) { vUser_led_set_view_stat(i, LED_VIEW_NO_ITEMS); } else if(coll_data.sw_stat[i] == COLL_NO_ITEMS) { vUser_led_set_view_stat(i, LED_VIEW_PUT_ITEMS); } else if(coll_data.sw_stat[i] == COLL_FAULT_ITEMS) { vUser_led_set_view_stat(i, LED_VIEW_NO_BOARD); } } } } /******************************************************************************* * @函数名称 vUser_server_set_sw_stat * @函数说明 设置开关量状态 * @输入参数 stat:开关量状态 * @输出参数 无 * @返回参数 无 *******************************************************************************/ void vUser_server_set_download_sw_stat(uint32_t stat) { for(int i = 0; i < DEV_MAX_COUNT; i++) { if(i < coll_data.count) { coll_data.sw_stat[i] = (uint8_t)(stat >> (i * 2)) & 0x03; } else{ coll_data.sw_stat[i] = COLL_FAULT_ITEMS; } } vUser_server_set_led_stat(); } /******************************************************************************* * @函数名称 vUser_server_set_coll_stat * @函数说明 设置就绪状态 * @输入参数 count:下挂主板个数 * @输出参数 无 * @返回参数 无 *******************************************************************************/ void vUser_server_set_coll_stat(uint16_t count) { coll_data.count = count; if(count > 0) { coll_data.coll_stat = COLL_READY_STAT; } else{ coll_data.coll_stat = COLL_NOT_READY_STAT; } for(int i = coll_data.count = count; i < DEV_MAX_COUNT; i++) { coll_data.sw_stat[i] = COLL_FAULT_ITEMS; } } /******************************************************************************* * @函数名称 vUser_server_set_items_stat * @函数说明 设置物资灯状态 * @输入参数 idx:下标 * type:状态 * @输出参数 无 * @返回参数 无 *******************************************************************************/ void vUser_server_set_items_stat(uint8_t idx, items_stat_type_e type) { coll_data.items_stat[idx] = type; vUser_server_set_led_stat(); } /******************************************************************************* * @函数名称 vUser_server_init * @函数说明 初始化 * @输入参数 无 * @输出参数 无 * @返回参数 无 *******************************************************************************/ void vUser_server_init(void) { for(int i = 0; i < DEV_MAX_COUNT; i++) { coll_data.sw_stat[i] = COLL_FAULT_ITEMS; coll_data.items_stat[i] = NO_ITEMS_STAT; } vUser_server_set_led_stat(); }