Newer
Older
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
#include "Contact.h"
// Header code defined in the model
void __userImplemented__Contact__initt(){
init_sensor();
}
int __userImplemented__Contact__checkContact(){
return checkContact();
}
// End of header code defined in the model
#define STATE__START__STATE 0
#define STATE__CHECK_CONTACT 1
#define STATE__choice__0 2
#define STATE__hsP 3
#define STATE__STOP__STATE 4
int Contact__checkContact() {
traceFunctionCall("Contact", "checkContact", "-");
return __userImplemented__Contact__checkContact();
}
void Contact__initt() {
traceFunctionCall("Contact", "initt", "-");
__userImplemented__Contact__initt();
}
void *mainFunc__Contact(void *arg){
int contact = 0;
int hasBeenPushed = 0;
int tmp = 0;
int __currentState = STATE__START__STATE;
__attribute__((unused)) request __req0;
__attribute__((unused))int *__params0[2];
__attribute__((unused)) request __req1;
__attribute__((unused))int *__params1[2];
__attribute__((unused))setOfRequests __list;
__attribute__((unused))pthread_cond_t __myCond;
__attribute__((unused))request *__returnRequest;
char * __myname = (char *)arg;
pthread_cond_init(&__myCond, NULL);
fillListOfRequests(&__list, __myname, &__myCond, &__mainMutex);
//printf("my name = %s\n", __myname);
/* Main loop on states */
while(__currentState != STATE__STOP__STATE) {
switch(__currentState) {
case STATE__START__STATE:
traceStateEntering(__myname, "__StartState");
Contact__initt();
__currentState = STATE__CHECK_CONTACT;
break;
case STATE__CHECK_CONTACT:
traceStateEntering(__myname, "CHECK_CONTACT");
makeNewRequest(&__req0, 2662, RECEIVE_SYNC_REQUEST, 0, 0, 0, 0, __params0);
__req0.syncChannel = &__Controller_ready_to_receive_cont__Contact_ready_to_receive;
addRequestToList(&__list, &__req0);
makeNewRequest(&__req1, 2684, IMMEDIATE, 0, 0, 0, 0, __params1);
addRequestToList(&__list, &__req1);
if (nbOfRequests(&__list) == 0) {
debug2Msg(__myname, "No possible request");
__currentState = STATE__STOP__STATE;
break;
}
__returnRequest = executeListOfRequests(&__list);
clearListOfRequests(&__list);
traceRequest(__myname, __returnRequest);
if (__returnRequest == &__req0) {
contact = Contact__checkContact();
traceVariableModification("Contact", "contact", contact,0);
__params0[0] = &contact;
__params0[1] = &hasBeenPushed;
makeNewRequest(&__req0, 2663, SEND_SYNC_REQUEST, 0, 0, 0, 2, __params0);
__req0.syncChannel = &__Controller_receiveContact__Contact_sendContact;
__returnRequest = executeOneRequest(&__list, &__req0);
clearListOfRequests(&__list);
traceRequest(__myname, __returnRequest);
hasBeenPushed = 0;
traceVariableModification("Contact", "hasBeenPushed", hasBeenPushed,0);
__currentState = STATE__CHECK_CONTACT;
}
else if (__returnRequest == &__req1) {
tmp = Contact__checkContact();
traceVariableModification("Contact", "tmp", tmp,0);
__currentState = STATE__choice__0;
}
break;
case STATE__choice__0:
traceStateEntering(__myname, "choice__0");
if (!(tmp == 1)) {
makeNewRequest(&__req0, 2668, IMMEDIATE, 0, 0, 0, 0, __params0);
addRequestToList(&__list, &__req0);
}
if (tmp == 1) {
makeNewRequest(&__req1, 2669, IMMEDIATE, 0, 0, 0, 0, __params1);
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
addRequestToList(&__list, &__req1);
}
if (nbOfRequests(&__list) == 0) {
debug2Msg(__myname, "No possible request");
__currentState = STATE__STOP__STATE;
break;
}
__returnRequest = executeListOfRequests(&__list);
clearListOfRequests(&__list);
traceRequest(__myname, __returnRequest);
if (__returnRequest == &__req0) {
__currentState = STATE__CHECK_CONTACT;
}
else if (__returnRequest == &__req1) {
__currentState = STATE__hsP;
}
break;
case STATE__hsP:
traceStateEntering(__myname, "hsP");
hasBeenPushed = 1;
traceVariableModification("Contact", "hasBeenPushed", hasBeenPushed,0);
__currentState = STATE__CHECK_CONTACT;
break;
}
}
//printf("Exiting = %s\n", __myname);
return NULL;
}