virtual void ResponseReceived(const VolumeCommand* aCommand) { switch (ResponseCode()) { case ::ResponseCode::VolumeListResult: { // Each line will look something like: // // sdcard /mnt/sdcard 1 // // So for each volume that we get back, we update any volumes that // we have of the same name, or add new ones if they don't exist. nsCWhitespaceTokenizer tokenizer(ResponseStr()); nsDependentCSubstring volName(tokenizer.nextToken()); RefPtr<Volume> vol = VolumeManager::FindAddVolumeByName(volName); vol->HandleVoldResponse(ResponseCode(), tokenizer); break; } case ::ResponseCode::CommandOkay: { // We've received the list of volumes. Now read the Volume.cfg // file to perform customizations, and then tell everybody // that we're ready for business. VolumeManager::DefaultConfig(); VolumeManager::InitConfig(); VolumeManager::Dump("READY"); VolumeManager::SetState(VolumeManager::VOLUMES_READY); break; } } }
virtual void ResponseReceived(const VolumeCommand *aCommand) { switch (ResponseCode()) { case ResponseCode::VolumeListResult: { // Each line will look something like: // // sdcard /mnt/sdcard 1 // // So for each volume that we get back, we update any volumes that // we have of the same name, or add new ones if they don't exist. nsCWhitespaceTokenizer tokenizer(ResponseStr()); nsDependentCSubstring volName(tokenizer.nextToken()); RefPtr<Volume> vol = VolumeManager::FindAddVolumeByName(volName); vol->HandleVoldResponse(ResponseCode(), tokenizer); break; } case ResponseCode::CommandOkay: { // We've received the list of volumes. Tell anybody who // is listening that we're open for business. VolumeManager::SetState(VolumeManager::VOLUMES_READY); break; } } }
QWidget * GPUVolumeReconstructionAPITestPluginInterface::CreateFloatingWidget() { IbisAPI *ibisAPI = this->GetIbisAPI(); Q_ASSERT(ibisAPI); ToolPluginInterface * toolPlugin = ibisAPI->GetToolPluginByName( "GPU_VolumeReconstruction"); if( !toolPlugin ) return 0; GPU_VolumeReconstructionPluginInterface *volumeReconstructorPlugin = GPU_VolumeReconstructionPluginInterface::SafeDownCast( toolPlugin ); Q_ASSERT( volumeReconstructorPlugin ); QList<USAcquisitionObject*> acquisitions; ibisAPI->GetAllUSAcquisitionObjects( acquisitions ); int numberOfAcquisitions = acquisitions.count(); if( numberOfAcquisitions > 0 ) { GPU_VolumeReconstruction *reconstructor = GPU_VolumeReconstruction::New(); reconstructor->SetDebugFlag( false ); for( int i = 0; i < numberOfAcquisitions; i++ ) { USAcquisitionObject * acq = acquisitions[i]; int nbrOfSlices = acq->GetNumberOfSlices(); reconstructor->SetNumberOfSlices( nbrOfSlices ); reconstructor->SetFixedSliceMask( acq->GetMask() ); reconstructor->SetUSSearchRadius( 3 ); reconstructor->SetVolumeSpacing( 1.0 ); reconstructor->SetKernelStdDev( 0.5 ); vtkSmartPointer<vtkMatrix4x4> sliceTransformMatrix = vtkSmartPointer<vtkMatrix4x4>::New() ; vtkSmartPointer<vtkImageData> slice = vtkSmartPointer<vtkImageData>::New(); for(int j = 0; j < nbrOfSlices; j++) { acq->GetFrameData( j, slice, sliceTransformMatrix ); reconstructor->SetFixedSlice(j, slice, sliceTransformMatrix ); } //Construct ITK Matrix corresponding to VTK Local Matrix reconstructor->SetTransform( acq->GetLocalTransform()->GetMatrix() ); reconstructor->start(); reconstructor->wait(); vtkSmartPointer<ImageObject> reconstructedImage = vtkSmartPointer<ImageObject>::New(); if( reconstructedImage->SetItkImage( reconstructor->GetReconstructedImage() ) ) { QString volName("ReconstructedVolume"); volName.append( QString::number( i ) ); reconstructedImage->SetName(volName); ibisAPI->AddObject(reconstructedImage, acq->GetParent()->GetParent() ); ibisAPI->SetCurrentObject( reconstructedImage ); } else QMessageBox::warning( 0, "Error", "Reconstruction failed." ); } reconstructor->Delete(); return 0; } QMessageBox::warning( 0, "Error", "No acquisition in scene." ); return 0; }
//static void VolumeManager::InitConfig() { MOZ_ASSERT(MessageLoop::current() == XRE_GetIOMessageLoop()); // This function uses /system/etc/volume.cfg to add additional volumes // to the Volume Manager. // // This is useful on devices like the Nexus 4, which have no physical sd card // or dedicated partition. // // The format of the volume.cfg file is as follows: // create volume-name mount-point // Blank lines and lines starting with the hash character "#" will be ignored. ScopedCloseFile fp; int n = 0; char line[255]; char *command, *volNamePtr, *mountPointPtr, *save_ptr; const char *filename = "/system/etc/volume.cfg"; if (!(fp = fopen(filename, "r"))) { LOG("Unable to open volume configuration file '%s' - ignoring", filename); return; } while(fgets(line, sizeof(line), fp)) { const char *delim = " \t\n"; n++; if (line[0] == '#') continue; if (!(command = strtok_r(line, delim, &save_ptr))) { // Blank line - ignore continue; } if (!strcmp(command, "create")) { if (!(volNamePtr = strtok_r(nullptr, delim, &save_ptr))) { ERR("No vol_name in %s line %d", filename, n); continue; } if (!(mountPointPtr = strtok_r(nullptr, delim, &save_ptr))) { ERR("No mount point for volume '%s'. %s line %d", volNamePtr, filename, n); continue; } nsCString mountPoint(mountPointPtr); nsCString volName(volNamePtr); RefPtr<Volume> vol = FindAddVolumeByName(volName); vol->SetFakeVolume(mountPoint); } else { ERR("Unrecognized command: '%s'", command); } } }
void VolumeManager::HandleBroadcast(int aResponseCode, nsCString& aResponseLine) { // Format of the line is something like: // // Volume sdcard /mnt/sdcard state changed from 7 (Shared-Unmounted) to 1 (Idle-Unmounted) // // So we parse out the volume name and the state after the string " to " nsCWhitespaceTokenizer tokenizer(aResponseLine); tokenizer.nextToken(); // The word "Volume" nsDependentCSubstring volName(tokenizer.nextToken()); RefPtr<Volume> vol = FindVolumeByName(volName); if (!vol) { return; } vol->HandleVoldResponse(aResponseCode, tokenizer); }
//static void VolumeManager::InitConfig() { MOZ_ASSERT(MessageLoop::current() == XRE_GetIOMessageLoop()); // This function uses /system/etc/volume.cfg to add additional volumes // to the Volume Manager. // // This is useful on devices like the Nexus 4, which have no physical sd card // or dedicated partition. // // The format of the volume.cfg file is as follows: // create volume-name mount-point // configure volume-name preference preference-value // Blank lines and lines starting with the hash character "#" will be ignored. ScopedCloseFile fp; int n = 0; char line[255]; const char *filename = "/system/etc/volume.cfg"; if (!(fp = fopen(filename, "r"))) { LOG("Unable to open volume configuration file '%s' - ignoring", filename); return; } while(fgets(line, sizeof(line), fp)) { n++; if (line[0] == '#') continue; nsCString commandline(line); nsCWhitespaceTokenizer tokenizer(commandline); if (!tokenizer.hasMoreTokens()) { // Blank line - ignore continue; } nsCString command(tokenizer.nextToken()); if (command.EqualsLiteral("create")) { if (!tokenizer.hasMoreTokens()) { ERR("No vol_name in %s line %d", filename, n); continue; } nsCString volName(tokenizer.nextToken()); if (!tokenizer.hasMoreTokens()) { ERR("No mount point for volume '%s'. %s line %d", volName.get(), filename, n); continue; } nsCString mountPoint(tokenizer.nextToken()); RefPtr<Volume> vol = FindAddVolumeByName(volName); vol->SetFakeVolume(mountPoint); continue; } if (command.EqualsLiteral("configure")) { if (!tokenizer.hasMoreTokens()) { ERR("No vol_name in %s line %d", filename, n); continue; } nsCString volName(tokenizer.nextToken()); if (!tokenizer.hasMoreTokens()) { ERR("No configuration name specified for volume '%s'. %s line %d", volName.get(), filename, n); continue; } nsCString configName(tokenizer.nextToken()); if (!tokenizer.hasMoreTokens()) { ERR("No value for configuration name '%s'. %s line %d", configName.get(), filename, n); continue; } nsCString configValue(tokenizer.nextToken()); RefPtr<Volume> vol = FindVolumeByName(volName); if (vol) { vol->SetConfig(configName, configValue); } else { ERR("Invalid volume name '%s'.", volName.get()); } continue; } if (command.EqualsLiteral("ignore")) { // This command is useful to remove volumes which are being tracked by // vold, but for which we have no interest. if (!tokenizer.hasMoreTokens()) { ERR("No vol_name in %s line %d", filename, n); continue; } nsCString volName(tokenizer.nextToken()); RemoveVolumeByName(volName); continue; } ERR("Unrecognized command: '%s'", command.get()); } }