コード例 #1
0
	def __init__(self, config, logger, storage):
		self.temperatureReader = TemperatureReader(config['temperature_read_file'], config['base_data_directory'], config['temperature_save_file'], config['temperature_sampling_interval'])
		self.distanceReader = DistanceReader(config['distance_read_file'], config['base_data_directory'], config['distance_save_file'], config['distance_sampling_interval'], config['distance_sample_length'])
		self.pictureReader = PictureReader(config['photo_save_folder'], config['picture_sampling_interval'])
		self.soundReader = SoundReader(config['sound_save_folder'], config['sound_sampling_interval'], config['sound_sample_length'])
		self.soundTime = config['sound_sample_length'];
		
		self.temperatureReader.setLogger(logger)
		self.temperatureReader.setStorage(storage)

		self.distanceReader.setLogger(logger)
		self.distanceReader.setStorage(storage)
		
		self.pictureReader.setLogger(logger)
		self.pictureReader.setStorage(storage)
		
		self.soundReader.setLogger(logger)
		self.soundReader.setStorage(storage)
		
		self.logger = logger
コード例 #2
0
class RecordingManager:
	#uses config map to setup recording threads
	def __init__(self, config, logger, storage):
		self.temperatureReader = TemperatureReader(config['temperature_read_file'], config['base_data_directory'], config['temperature_save_file'], config['temperature_sampling_interval'])
		self.distanceReader = DistanceReader(config['distance_read_file'], config['base_data_directory'], config['distance_save_file'], config['distance_sampling_interval'], config['distance_sample_length'])
		self.pictureReader = PictureReader(config['photo_save_folder'], config['picture_sampling_interval'])
		self.soundReader = SoundReader(config['sound_save_folder'], config['sound_sampling_interval'], config['sound_sample_length'])
		self.soundTime = config['sound_sample_length'];
		
		self.temperatureReader.setLogger(logger)
		self.temperatureReader.setStorage(storage)

		self.distanceReader.setLogger(logger)
		self.distanceReader.setStorage(storage)
		
		self.pictureReader.setLogger(logger)
		self.pictureReader.setStorage(storage)
		
		self.soundReader.setLogger(logger)
		self.soundReader.setStorage(storage)
		
		self.logger = logger
	
	#starts all recording threads
	def startRecording(self):
		self.logger.log("[RecordingManager] starting recording threads")
		self.temperatureReader.startRecording()
		self.distanceReader.startRecording()
		self.pictureReader.startRecording()
		self.soundReader.startRecording()
		self.logger.log("[RecordingManager] threads started")
	
	#requests that all recording threads stop, and waits for all of them to stopshop
	def stopRecording(self):
		self.logger.log("[RecordingManager] stopping recording threads")
		#requesting threads to stop
		self.temperatureReader.stopRecording()
		self.distanceReader.stopRecording()
		self.pictureReader.stopRecording()
		self.soundReader.stopRecording()
		
		self.logger.log("[RecordingManager] waiting for threads to stop...")
		
		#waiting for all threads to stop
		counter = 0
		while self.temperatureReader.isRecording or self.distanceReader.isRecording or self.pictureReader.isRecording or self.soundReader.isRecording:
			counter += 1
			if counter > (self.soundTime + 10):
				#sound thread should have stopped by now if we end up here, because we waited for
				#more seconds than it is supposed to be recording
				logger.log("[RecordingManager] Sound thread did not quit, cannot stop recording")
				return False #stop was unsucessful
			time.sleep(1)
		
		#one more request to stop recording, just to be safe
		self.temperatureReader.stopRecording()
		self.distanceReader.stopRecording()
		self.pictureReader.stopRecording()
		self.soundReader.stopRecording()
		self.logger.log("[RecordingManager] threads stopped")
		return True #stop was sucessfull
	
	#makes all threads quit, used when quitting the application
	def quitThreads(self):
		self.stopRecording()
		self.pictureReader.quit()
		self.soundReader.quit()
		self.temperatureReader.quit()
		self.distancereader.quit()