145 |
145 |
146 /*****************************************************************************/ |
146 /*****************************************************************************/ |
147 |
147 |
148 /** Process received data. |
148 /** Process received data. |
149 */ |
149 */ |
150 unsigned int ec_datagram_pair_process( |
150 uint16_t ec_datagram_pair_process( |
151 ec_datagram_pair_t *pair /**< Datagram pair. */ |
151 ec_datagram_pair_t *pair, /**< Datagram pair. */ |
|
152 uint16_t wc_sum[EC_NUM_DEVICES] /**< Working counter sums. */ |
152 ) |
153 ) |
153 { |
154 { |
154 unsigned int dev_idx, wc_sum = 0; |
155 unsigned int dev_idx; |
|
156 uint16_t pair_wc = 0; |
155 |
157 |
156 for (dev_idx = 0; dev_idx < EC_NUM_DEVICES; dev_idx++) { |
158 for (dev_idx = 0; dev_idx < EC_NUM_DEVICES; dev_idx++) { |
157 ec_datagram_t *datagram = &pair->datagrams[dev_idx]; |
159 ec_datagram_t *datagram = &pair->datagrams[dev_idx]; |
158 |
160 |
159 ec_datagram_output_stats(datagram); |
161 ec_datagram_output_stats(datagram); |
160 |
162 |
161 if (datagram->state == EC_DATAGRAM_RECEIVED) { |
163 if (datagram->state == EC_DATAGRAM_RECEIVED) { |
162 wc_sum += datagram->working_counter; |
164 pair_wc += datagram->working_counter; |
|
165 wc_sum[dev_idx] += datagram->working_counter; |
163 } |
166 } |
164 } |
167 } |
165 |
168 |
166 return wc_sum; |
169 return pair_wc; |
167 } |
170 } |
168 |
171 |
169 /*****************************************************************************/ |
172 /*****************************************************************************/ |
170 |
|
171 /** Process received data. |
|
172 */ |
|
173 int ec_datagram_pair_data_changed( |
|
174 const ec_datagram_pair_t *pair, |
|
175 size_t offset, |
|
176 size_t size, |
|
177 ec_device_index_t dev_idx |
|
178 ) |
|
179 { |
|
180 uint8_t *sent = pair->send_buffer + offset; |
|
181 uint8_t *recv = pair->datagrams[dev_idx].data + offset; |
|
182 size_t i; |
|
183 |
|
184 for (i = 0; i < size; i++) { |
|
185 if (recv[i] != sent[i]) { |
|
186 return 1; |
|
187 } |
|
188 } |
|
189 |
|
190 return 0; |
|
191 } |
|
192 |
|
193 /*****************************************************************************/ |
|