MCPcopy Create free account
hub / github.com/EIPStackGroup/OpENer / GetInputOnlyConnection

Function GetInputOnlyConnection

source/src/cip/appcontype.c:224–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

222}
223
224CipConnectionObject *GetInputOnlyConnection(
225 const CipConnectionObject *const RESTRICT connection_object,
226 EipUint16 *const extended_error) {
227
228 for (size_t i = 0; i < OPENER_CIP_NUM_INPUT_ONLY_CONNS; ++i) {
229 if (g_input_only_connections[i].output_assembly
230 == connection_object->consumed_path.instance_id) { /* we have the same output assembly */
231 if (g_input_only_connections[i].input_assembly
232 != connection_object->produced_path.instance_id) {
233 *extended_error =
234 kConnectionManagerExtendedStatusCodeInvalidProducingApplicationPath;
235 break;
236 }
237 if (g_input_only_connections[i].config_assembly
238 != connection_object->configuration_path.instance_id) {
239 *extended_error =
240 kConnectionManagerExtendedStatusCodeInconsistentApplicationPathCombo;
241 break;
242 }
243
244 for (size_t j = 0; j < OPENER_CIP_NUM_INPUT_ONLY_CONNS_PER_CON_PATH;
245 ++j) {
246 if (kConnectionObjectStateTimedOut
247 == ConnectionObjectGetState(&(g_input_only_connections[i].
248 connection_data[j]) )
249 && ConnectionObjectEqualOriginator(connection_object,
250 &(g_input_only_connections[i].
251 connection_data[j]) ) )
252 {
253 g_input_only_connections[i].connection_data[j].
254 connection_close_function(
255 &g_input_only_connections[i].connection_data[j]);
256 return &(g_input_only_connections[i].connection_data[j]);
257 }
258 }
259
260 for (size_t j = 0; j < OPENER_CIP_NUM_INPUT_ONLY_CONNS_PER_CON_PATH;
261 ++j) {
262 if (kConnectionObjectStateNonExistent
263 == ConnectionObjectGetState(&(g_input_only_connections[i].
264 connection_data[j]) ) ) {
265 return &(g_input_only_connections[i].connection_data[j]);
266 }
267 }
268 *extended_error =
269 kConnectionManagerExtendedStatusCodeTargetObjectOutOfConnections;
270 break;
271 }
272 }
273 return NULL;
274}
275
276CipConnectionObject *GetListenOnlyConnection(
277 const CipConnectionObject *const RESTRICT connection_object,

Callers 1

Calls 2

ConnectionObjectGetStateFunction · 0.85

Tested by

no test coverage detected