int ardiscoveryConnect (BD_MANAGER_t *deviceManager) { int failed = 0; ARSAL_PRINT(ARSAL_PRINT_INFO, TAG, "- ARDiscovery Connection"); eARDISCOVERY_ERROR err = ARDISCOVERY_OK; printf("Je suis avant le ARDISCOVERY_CONNECTION\n"); ARDISCOVERY_Connection_ConnectionData_t *discoveryData = ARDISCOVERY_Connection_New (ARDISCOVERY_Connection_SendJsonCallback, ARDISCOVERY_Connection_ReceiveJsonCallback, deviceManager, &err); if (discoveryData == NULL || err != ARDISCOVERY_OK) { ARSAL_PRINT(ARSAL_PRINT_ERROR, TAG, "Error while creating discoveryData : %s", ARDISCOVERY_Error_ToString(err)); failed = 1; } if (!failed) { eARDISCOVERY_ERROR err = ARDISCOVERY_Connection_ControllerConnection(discoveryData, BD_DISCOVERY_PORT, BD_IP_ADDRESS); printf("ARDISCOVERY_CONNECTION_CONTROLLERCONNECTION créé\n"); if (err != ARDISCOVERY_OK) { printf("Il y a une erreur\n"); ARSAL_PRINT(ARSAL_PRINT_ERROR, TAG, "Error while opening discovery connection : %s", ARDISCOVERY_Error_ToString(err)); failed = 1; } } ARDISCOVERY_Connection_Delete(&discoveryData); return failed; }
ARDISCOVERY_Connection_ConnectionData_t* ARDISCOVERY_Connection_New (ARDISCOVERY_Connection_SendJsonCallback_t sendJsonCallback, ARDISCOVERY_Connection_ReceiveJsonCallback_t receiveJsonCallback, void *customData, eARDISCOVERY_ERROR *error) { /* - Create and initialize connection data - */ ARDISCOVERY_Connection_ConnectionData_t *connectionData = NULL; eARDISCOVERY_ERROR localError = ARDISCOVERY_OK; /* Check parameter */ if ((sendJsonCallback == NULL) || (receiveJsonCallback == NULL)) { localError = ARDISCOVERY_ERROR_BAD_PARAMETER; } if (localError == ARDISCOVERY_OK) { connectionData = malloc(sizeof(ARDISCOVERY_Connection_ConnectionData_t)); if (connectionData != NULL) { /* Initialize connectionData */ connectionData->txData.buffer = NULL; connectionData->txData.size = 0; connectionData->rxData.buffer = NULL; connectionData->rxData.size = 0; connectionData->isAlive = 0; ARSAL_Sem_Init (&(connectionData->runningSem), 0, 1); connectionData->sendJsoncallback = sendJsonCallback; connectionData->receiveJsoncallback = receiveJsonCallback; connectionData->customData = customData; connectionData->socket = -1; memset(&(connectionData->address), 0, sizeof(connectionData->address)); connectionData->abortPipe[0] = -1; connectionData->abortPipe[1] = -1; } else { localError = ARDISCOVERY_ERROR_ALLOC; } } /* Allocate reception buffer */ if (localError == ARDISCOVERY_OK) { connectionData->rxData.buffer = (uint8_t *) malloc (sizeof(uint8_t) * ARDISCOVERY_CONNECTION_RX_BUFFER_SIZE); if (connectionData->rxData.buffer != NULL) { connectionData->rxData.size = 0; } else { localError = ARDISCOVERY_ERROR_ALLOC; } } /* Allocate transmission buffer */ if (localError == ARDISCOVERY_OK) { connectionData->txData.buffer = (uint8_t *) malloc(sizeof(uint8_t) * ARDISCOVERY_CONNECTION_TX_BUFFER_SIZE); if (connectionData->txData.buffer != NULL) { connectionData->txData.size = 0; } else { localError = ARDISCOVERY_ERROR_ALLOC; } } /* initialize the abortPipe */ if (localError == ARDISCOVERY_OK) { if (pipe(connectionData->abortPipe) != 0) { localError = ARDISCOVERY_ERROR_PIPE_INIT; } } /* Delete connection data if an error occurred */ if (localError != ARDISCOVERY_OK) { ARDISCOVERY_Connection_Delete (&connectionData); } /* return error */ if (error != NULL) { *error = localError; } return connectionData; }