package com.dronecontrol.perceptual; import com.google.inject.Inject; import com.dronecontrol.perceptual.components.DetectionComponent; import com.dronecontrol.perceptual.components.GestureComponent; import com.dronecontrol.perceptual.components.PictureComponent; import com.dronecontrol.perceptual.data.DetectionType; import com.dronecontrol.perceptual.data.body.BodyPart; import com.dronecontrol.perceptual.injection.Context; import com.dronecontrol.perceptual.listeners.DetectionListener; import com.dronecontrol.perceptual.listeners.GestureListener; import com.dronecontrol.perceptual.listeners.PictureListener; import intel.pcsdk.PXCUPipelineJNI; import org.apache.log4j.Logger; public class PerceptualController { private final Logger logger = Logger.getLogger(PerceptualController.class); private final PerceptualPipeline pipeline; private final CamProcessor camProcessor; private final PictureComponent pictureComponent; private final DetectionComponent detectionComponent; private final GestureComponent gestureComponent; public static PerceptualController buildPerceptualController() { return Context.getBean(PerceptualController.class); } @Inject public PerceptualController(PerceptualPipeline pipeline, CamProcessor listener, PictureComponent pictureComponent, DetectionComponent detectionComponent, GestureComponent gestureComponent) { this.pipeline = pipeline; this.camProcessor = listener; this.pictureComponent = pictureComponent; this.detectionComponent = detectionComponent; this.gestureComponent = gestureComponent; } public void connect() { logger.info("Connecting to intel perceptual programming creative controller"); pipeline.Init(PXCUPipelineJNI.GESTURE | PXCUPipelineJNI.COLOR_VGA); logger.info("Connection successfully established!"); startCamProcessorThread(); } public void startCamProcessorThread() { new Thread(camProcessor).start(); } public void disconnect() { camProcessor.stop(); } public void addPictureListener(PictureListener listener) { pictureComponent.addPictureListener(listener); } public void removePictureListener(PictureListener listener) { pictureComponent.removePictureListener(listener); } public void addGestureListener(GestureListener listener) { gestureComponent.addGestureListener(listener); } public void removeGestureListener(GestureListener listener) { gestureComponent.removeGestureListener(listener); } public <T extends BodyPart> void addDetectionListener(DetectionType<T> detectionType, DetectionListener<T> listener) { detectionComponent.addDetectionListener(detectionType, listener); } public <T extends BodyPart> void removeDetectionListener(DetectionType<T> detectionType, DetectionListener<T> listener) { detectionComponent.removeDetectionListener(detectionType, listener); } }