root / logic / trunk / src / logics / conditions.c @ 42
History | View | Annotate | Download (2.83 KB)
1 | 36 | Janez1 | #include "conditions.h" |
---|---|---|---|
2 | 40 | Janez1 | #include <stdio.h> |
3 | 36 | Janez1 | |
4 | 40 | Janez1 | int evaluateAdditionalConditions(cond_lst *cl, device *dev)
|
5 | 36 | Janez1 | { |
6 | 40 | Janez1 | int result = -1; |
7 | int local_result = -1; |
||
8 | cond_lst *leaf; |
||
9 | device *testDev; |
||
10 | |||
11 | //printf("dev %s\n",dev->id);
|
||
12 | if(cl->OPERATOR_TYPE == TOP_NODE)
|
||
13 | if(!cl->sub_lst) // no additional conditions |
||
14 | return 1; |
||
15 | else{}
|
||
16 | //printf("Evaluating operator %d\n", cl->OPERATOR_TYPE);
|
||
17 | while(cl->sub_lst)
|
||
18 | 36 | Janez1 | { |
19 | 40 | Janez1 | if(!cl->sub_lst->sub_lst) //leaf |
20 | 36 | Janez1 | { |
21 | 40 | Janez1 | //printf("Found leaf with opr %d\n", cl->sub_lst->OPERATOR_TYPE);
|
22 | //todo glej cez cel sub - nivo
|
||
23 | if(result==-1) //got first leaf element |
||
24 | { |
||
25 | //printf("got FIRST LEAF element with opr %d and device name %s\n", cl->sub_lst->OPERATOR_TYPE, cl->sub_lst->dev);
|
||
26 | if(0==strcmp(cl->sub_lst->dev,"time")) |
||
27 | result = evalOperators(cl->sub_lst->OPERATOR_TYPE, getLocalFormattedTime(), cl->sub_lst->value); |
||
28 | else
|
||
29 | result = evalOperators(cl->sub_lst->OPERATOR_TYPE, (*getDevice(dev, cl->sub_lst->dev)).buf, cl->sub_lst->value); |
||
30 | } |
||
31 | else
|
||
32 | { |
||
33 | //printf("got LEAF element with opr %d\n", cl->sub_lst->OPERATOR_TYPE);
|
||
34 | if(0==strcmp(cl->sub_lst->dev,"time")) |
||
35 | local_result = evalOperators(cl->sub_lst->OPERATOR_TYPE, getLocalFormattedTime(), cl->sub_lst->value); |
||
36 | else
|
||
37 | local_result = evalOperators(cl->sub_lst->OPERATOR_TYPE, (*getDevice(dev, cl->sub_lst->dev)).buf, cl->sub_lst->value); |
||
38 | result = evalOperators(cl->OPERATOR_TYPE, result, local_result); |
||
39 | } |
||
40 | 36 | Janez1 | } |
41 | 40 | Janez1 | else //not leaf |
42 | { |
||
43 | //printf("Found child with opr %d\n", cl->sub_lst->OPERATOR_TYPE);
|
||
44 | if(result==-1) //got first child element |
||
45 | { |
||
46 | //printf("got FIRST CHILD element with opr %d\n", cl->sub_lst->OPERATOR_TYPE);
|
||
47 | result = evaluateAdditionalConditions(cl->sub_lst, dev); |
||
48 | } |
||
49 | else
|
||
50 | { |
||
51 | //printf("got CHILD element with opr %d\n", cl->sub_lst->OPERATOR_TYPE);
|
||
52 | result = evaluateAdditionalConditions(cl->sub_lst, dev); |
||
53 | result = evalOperators(cl->OPERATOR_TYPE, result, local_result); |
||
54 | } |
||
55 | } |
||
56 | cl->sub_lst=cl->sub_lst->nxt_lst; |
||
57 | 36 | Janez1 | } |
58 | 40 | Janez1 | return result;
|
59 | 36 | Janez1 | } |
60 | |||
61 | 40 | Janez1 | // TODO check this one again
|
62 | float getNewWeightedMeasurement(float oldval, float newval, float alpha) |
||
63 | { |
||
64 | printf("getNewWeightedMeasurement(float oldval, float newval, float alpha)\n");
|
||
65 | printf("=== buffer %f, device buffer %f, alpha %f\n", oldval, newval, alpha);
|
||
66 | printf("%f\n",oldval*alpha+newval*(1-alpha)); |
||
67 | return oldval*alpha+newval*(1-alpha); |
||
68 | } |
||
69 | 36 | Janez1 | /*TODO morda dodaj preverbo pravilnosti conditionov (kot podatkov v strukturi)*/ |