forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-21 a05cacad5239ab3f35ffb58f443356b484e6cc1b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include "linked_list.h"
#include "stdlib.h"
 
 
ALARM_NODE_T * pList_head = NULL;
uint8_t alarm_list_cnt = 0;
    
///*Á´±íÍ·Êý¾Ý¹¹Ôì*/
//ALARM_NODE_T * Alarm_List_Node_HeadCreated(ALARM_NODE_T * pHead,SYS_ALARM_VALVE_T alarm_id)
//{
//    if(pHead->list_data == AV_NORMAL && pHead->alarm_list_next == NULL)
//    {
//        pHead->list_data = alarm_id;
//    }
//    return pHead;
//}
/*ÉêÇ붯̬Á´±í¿Õ¼ä*/
ALARM_NODE_T * Alarm_List_Node_Add(SYS_ALARM_VALVE_T alarm_id)
{
    ALARM_NODE_T * ptr = (ALARM_NODE_T * )malloc(ALARM_LIST_NODE_LEN);
    if(ptr != NULL)
    {
        ptr->list_data = alarm_id;
        ptr->alarm_list_next = NULL;
        return ptr;
    }
    return NULL;
}
//µ¥Á´±íβ²å
//Ë«ÖØÖ¸Õ룺ָÏòÖ¸ÕëµÄÖ¸Õ룬Èç¹ûÐè¸Ä±äÖ¸ÕëµØÖ·µÄÖµ£¬Ôò¿ÉÓÃË«ÖØÖ¸Õë
void Alarm_List_Node_PushBack(ALARM_NODE_T ** ppList,SYS_ALARM_VALVE_T alarm_id)
{
    ALARM_NODE_T * tail, * now_ptr;
    
    if(alarm_id != ALARM_ID_NORMAL)
    {
        alarm_list_cnt++;
        if(*ppList == NULL)
        {
            *ppList = Alarm_List_Node_Add(alarm_id);
        }
        else
        {
            //ÅжÏÁ´±íÖÐÊÇ·ñÒѾ­´æÔڸñ¨¾¯id£¬ÒѾ­´æÔÚ²»ÔÙ²åÈëÁ´±í
            do{
                if(now_ptr->list_data == alarm_id){
                    return;
                }else{
                    now_ptr = now_ptr->alarm_list_next;
                }
                
            }while(now_ptr != NULL);
            
            tail = *ppList;
            while(tail->alarm_list_next)
                tail = tail->alarm_list_next;
            tail->alarm_list_next = Alarm_List_Node_Add(alarm_id);
        }
    }
}
//µ¥Á´±íµÄβɾ
void Alarm_List_Node_PopBack(ALARM_NODE_T ** ppList)
{
    ALARM_NODE_T * tail = *ppList;
    while (tail->alarm_list_next->alarm_list_next)
    {
        tail = tail->alarm_list_next;
    }
    free(tail->alarm_list_next);
    tail->alarm_list_next = NULL;
}
////µ¥Á´±í²éÕÒ
//ALARM_NODE_T * Alarm_List_Node_Find(ALARM_NODE_T * pList,SYS_ALARM_VALVE_T alarm_id)
//{
//    ALARM_NODE_T * cur_ptr = pList;
//    while(cur_ptr)
//    {
//        if(cur_ptr->list_data == alarm_id)
//            return cur_ptr;
//        cur_ptr = cur_ptr->alarm_list_next;
//    }
//    return NULL;
//}    
//µ¥Á´±íÖмäɾ³ý
void Alarm_List_Node_Deleted(ALARM_NODE_T ** ppHeadList,SYS_ALARM_VALVE_T alarm_id)
{
    if(alarm_id != ALARM_ID_NORMAL)
    {
        ALARM_NODE_T * last_ptr,* now_ptr;
        if(*ppHeadList == NULL)
            return;
        else
        {
            now_ptr = *ppHeadList;
            while(now_ptr->alarm_list_next != NULL && now_ptr->list_data != alarm_id)
            {
                last_ptr = now_ptr;
                now_ptr = now_ptr->alarm_list_next;
            }
            if(now_ptr->list_data == alarm_id)
            {
                alarm_list_cnt--;
                if(now_ptr == *ppHeadList)
                    *ppHeadList = now_ptr->alarm_list_next;
                else
                    last_ptr->alarm_list_next = now_ptr->alarm_list_next;
                free(now_ptr);
                now_ptr = NULL;
            }
        }
    }
}