ARNETWORKAL_Manager_t *ARDISCOVERY_DEVICE_Ble_NewARNetworkAL (ARDISCOVERY_Device_t *device, eARDISCOVERY_ERROR *error, eARNETWORKAL_ERROR *errorAL) { //-- Create a new networlAL adapted to the device. -- eARDISCOVERY_ERROR localError = ARDISCOVERY_OK; eARNETWORKAL_ERROR localErrorAL = ARNETWORKAL_OK; ARNETWORKAL_Manager_t *networkAL = NULL; ARDISCOVERY_DEVICE_BLE_t *specificBLEParam = NULL; // check parameters if ((device == NULL) || (device->specificParameters == NULL) || (device->networkType != ARDISCOVERY_NETWORK_TYPE_BLE)) { localError = ARDISCOVERY_ERROR_BAD_PARAMETER; } // No Else: the checking parameters sets error to ARNETWORK_ERROR_BAD_PARAMETER and stop the processing if (localError == ARDISCOVERY_OK) { // Cast of device->specificParameters specificBLEParam = (ARDISCOVERY_DEVICE_BLE_t *) device->specificParameters; // Create the ARNetworkALManager networkAL = ARNETWORKAL_Manager_New (&localErrorAL); } if ((localError == ARDISCOVERY_OK) && (localErrorAL == ARNETWORKAL_OK)) { // init bleNotificationIDs int bleNotificationIDs[] = { ROLLINGSPIDER_DEVICE_TO_CONTROLLER_NAVDATA_ID, ROLLINGSPIDER_DEVICE_TO_CONTROLLER_EVENT_ID, (ROLLINGSPIDER_CONTROLLER_TO_DEVICE_ACK_ID + (ARNETWORKAL_MANAGER_BLE_ID_MAX / 2)), (ROLLINGSPIDER_CONTROLLER_TO_DEVICE_EMERGENCY_ID + (ARNETWORKAL_MANAGER_BLE_ID_MAX / 2)), }; uint32_t numberOfNotificationID = sizeof(bleNotificationIDs) / sizeof(int); // Initialize the ARNetworkALManager localErrorAL = ARNETWORKAL_Manager_InitBLENetwork(networkAL, specificBLEParam->deviceManager, specificBLEParam->device, 1, bleNotificationIDs, numberOfNotificationID); } // set localError to ARDISCOVERY_ERROR is an error AL is occured if ((localError == ARDISCOVERY_OK) && (localErrorAL != ARNETWORKAL_OK)) { localError = ARDISCOVERY_ERROR; } // return localErrorAL if (errorAL != NULL) { *errorAL = localErrorAL; } // return localError if (error != NULL) { *error = localError; } // delete networkAL if an error occured if ((localError != ARDISCOVERY_OK) && (networkAL != NULL)) { ARDISCOVERY_DEVICE_Ble_DeleteARNetworkAL (device, &networkAL); } return networkAL; }
int ARSTREAM_Reader_TestBenchMain (int argc, char *argv[]) { int retVal = 0; appName = argv[0]; if (argc > 3) { ARSTREAM_ReaderTb_printUsage (); return 1; } char *ip = __IP; char *outPath = NULL; if (argc >= 2) { ip = argv[1]; } if (argc >= 3) { outPath = argv[2]; } ARSAL_PRINT (ARSAL_PRINT_WARNING, __TAG__, "IP = %s", ip); int nbInBuff = 1; ARNETWORK_IOBufferParam_t inParams; ARSTREAM_Reader_InitStreamAckBuffer (&inParams, ACK_BUFFER_ID); int nbOutBuff = 1; ARNETWORK_IOBufferParam_t outParams; ARSTREAM_Reader_InitStreamDataBuffer (&outParams, DATA_BUFFER_ID, ARSTREAM_TB_FRAG_SIZE, ARSTREAM_TB_MAX_NB_FRAG); eARNETWORK_ERROR error; eARNETWORKAL_ERROR specificError = ARNETWORKAL_OK; ARNETWORKAL_Manager_t *osspecificManagerPtr = ARNETWORKAL_Manager_New(&specificError); if(specificError == ARNETWORKAL_OK) { specificError = ARNETWORKAL_Manager_InitWifiNetwork(osspecificManagerPtr, ip, SENDING_PORT, READING_PORT, 1000); } else { ARSAL_PRINT (ARSAL_PRINT_ERROR, __TAG__, "Error during ARNETWORKAL_Manager_New call : %s", ARNETWORKAL_Error_ToString(specificError)); } if(specificError == ARNETWORKAL_OK) { g_Manager = ARNETWORK_Manager_New(osspecificManagerPtr, nbInBuff, &inParams, nbOutBuff, &outParams, READER_PING_DELAY, NULL, NULL, &error); } else { ARSAL_PRINT (ARSAL_PRINT_ERROR, __TAG__, "Error during ARNETWORKAL_Manager_InitWifiNetwork call : %s", ARNETWORKAL_Error_ToString(specificError)); error = ARNETWORK_ERROR; } if ((g_Manager == NULL) || (error != ARNETWORK_OK)) { ARSAL_PRINT (ARSAL_PRINT_ERROR, __TAG__, "Error during ARNETWORK_Manager_New call : %s", ARNETWORK_Error_ToString(error)); return 1; } pthread_t netsend, netread; pthread_create (&netsend, NULL, ARNETWORK_Manager_SendingThreadRun, g_Manager); pthread_create (&netread, NULL, ARNETWORK_Manager_ReceivingThreadRun, g_Manager); retVal = ARSTREAM_ReaderTb_StartStreamTest (g_Manager, outPath); ARNETWORK_Manager_Stop (g_Manager); pthread_join (netread, NULL); pthread_join (netsend, NULL); ARNETWORK_Manager_Delete (&g_Manager); ARNETWORKAL_Manager_CloseWifiNetwork(osspecificManagerPtr); ARNETWORKAL_Manager_Delete(&osspecificManagerPtr); return retVal; }
/** * Fonction qui permet de se connecter au drone Bebop * @params *deviceManager Instance de la structure de données de BD_MANAGER_t. Cette structure est définie dans * test_connexion_1.h */ int startNetwork (BD_MANAGER_t *deviceManager){ /* Initialisation des variables d'erreur */ int failed = 0; eARNETWORKAL_ERROR netAlError = ARNETWORKAL_OK; eARNETWORK_ERROR netError = ARNETWORK_OK; int pingDelay = 0; /* Test du print ARSAL_PRINT_INFO * Imprime les info du drone (nom fichier, heure, fonction, Message écrit par l'utilisateur) * sur la console */ printf("\n"); ARSAL_PRINT(ARSAL_PRINT_INFO, TAG, "- Start ARNetwork"); /* Crée un nouveau manager NETWORKAL * @param: erreur de type eARNETWORKAL_ERROR */ deviceManager->alManager = ARNETWORKAL_Manager_New(&netAlError); printf("Failed: %i\n",failed); /* Initialise le wifi*/ netAlError = ARNETWORKAL_Manager_InitWifiNetwork(deviceManager->alManager, BD_IP_ADDRESS, BD_C2D_PORT, BD_D2C_PORT, 1); if (netAlError != ARNETWORKAL_OK) { printf("ARNETWORKAL_Manager_InitWifiNetwork fail !! \n"); failed = 1; } else printf("ARNETWORKAL_Manager_InitWifiNetwork success !!\n"); /* Créer un manager de network avec (Manager de NetworkAL, nombre de buffer d'entrée, vecteur paramètre d'entrée, * nombre de buufer de sortie, vecteur paramètre de sortie,Delay entre 2 ping, fonction de déconnexion, paramètre * de connexion, erreur) */ if(!failed){ deviceManager->netManager = ARNETWORK_Manager_New(deviceManager->alManager, numC2dParams, c2dParams, numD2cParams, d2cParams, pingDelay, onDisconnectNetwork, deviceManager, &netError); if (netError != ARNETWORK_OK) { failed = 1; } } if(failed) printf("Manager erreur!!\n"); else printf("Manager créer !! \n"); /* Création des threads pour la réception et la transmission * */ if (!failed) { // Create and start Tx and Rx threads. printf("Tx thread !! \n"); if (ARSAL_Thread_Create(&(deviceManager->rxThread), ARNETWORK_Manager_ReceivingThreadRun, deviceManager->netManager) != 0) { ARSAL_PRINT(ARSAL_PRINT_ERROR, TAG, "Creation of Rx thread failed."); failed = 1; } printf("Rx thread!! \n"); if (ARSAL_Thread_Create(&(deviceManager->txThread), ARNETWORK_Manager_SendingThreadRun, deviceManager->netManager) != 0) { ARSAL_PRINT(ARSAL_PRINT_ERROR, TAG, "Creation of Tx thread failed."); failed = 1; } } return failed; }