-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprotocole.c
176 lines (156 loc) · 3.23 KB
/
protocole.c
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
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/**
* \file protocole.c
* \brief Brief
* \details Details
*/
#include "include/HAL.h"
#include "include/globaletypedef.h"
#include "include/protocole.h"
#include "include/PeriphMaster.h"
#include <string.h>
static sPort* comport;
static uchar* data;
static eBool allocated;
static uchar allocatedlen; //taille alloué
/**
* \brief start communication
*
*
* \return nothing
*
* \details choice of com port and param are set in this function
*/void launchCom()
{
#ifdef __DEBUG__
set_color(0,255,0,255);
#endif // __DEBUG__
sParam param;
comport = initCom(I2CSLAVE,ADRESSE,param);
}
/**
* \brief update data
*
* \return nothing
*
* \details flush internal data buffer and update value in struct defined
* in main if com acting this function does nothing
*/void getRefresh()
{
eDataType cmd;
switch (getStatus(comport))
{
uchar lentemp;
case BUSY:
break;
case IDLE :
/* lentemp = getDataLength(comport);
if(!allocated)
{
data = malloc((size_t)lentemp);
len = lentemp;
}
else
{
if (lentemp>len)
{
free(data);
data = malloc((size_t)lentemp);
}
} */
getData(comport);
/* cmd = comport->data.Datatype;
switch (cmd)
{
case PINGI2C:
break;
case GPIOBIT:
break;
case GPIOPORT:
break;
case CURRENTCHANNEL:
break;
} */
}
}
/**
* \brief update data
*
* \return nothing
*
* \details flush internal data buffer and update value in struct defined
* in main if com acting this function does nothing
*/void setRefresh()
{
eDataType cmd;
switch (getStatus(comport))
{
uchar lentemp;
case BUSY:
break;
case IDLE :
/* lentemp = getDataLength(comport);
if(!allocated)
{
data = malloc((size_t)lentemp);
len = lentemp;
}
else
{
if (lentemp>len)
{
free(data);
data = malloc((size_t)lentemp);
}
} */
setData(comport);
/* cmd = comport->data.Datatype;
switch (cmd)
{
case PINGI2C:
break;
case GPIOBIT:
break;
case GPIOPORT:
break;
case CURRENTCHANNEL:
break;
} */
}
}
/**
* \brief compute data
*
* \return nothing
*
* \details Details
*/void compute()
{
uchar channel;
switch(comport->data.DataType)
{
case PINGI2C:
comport->data.pData[0] = ADRESSE;
break;
case GPIOBIT:
setGpioBit(comport->data.pData[0],comport->data.pData[1]);
break;
case GPIOPORT:
break;
case CURRENTCHANNEL: //c'est une lecture
channel = comport->data.pData[0]; //on recupére le reste de la demande
comport->data.pData[0] = system_data.periphcurrent[channel]; //et on met à jour
//le transfert dans le buffer d'emmision est effectuer par interruption cyclique et l'envoie à la demande du master
break;
default:
break;
}
}
/**
* \brief stop com
*
* \return nothing
*
* \details delete dynamic buffer and stop communication
*//*void closeCom()
{
}*/