This file is indexed.

/usr/include/enki/interactions/Microphone.h is in libenki-dev 1:1.6.0-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*
    Enki - a fast 2D robot simulator
    Copyright (C) 1999-2016 Stephane Magnenat <stephane at magnenat dot net>
    Copyright (C) 2004-2005 Markus Waibel <markus dot waibel at epfl dot ch>
    Copyright (c) 2004-2005 Antoine Beyeler <abeyeler at ab-ware dot com>
    Copyright (C) 2005-2006 Laboratory of Intelligent Systems, EPFL, Lausanne
    Copyright (C) 2006-2008 Laboratory of Robotics Systems, EPFL, Lausanne
    See AUTHORS for details

    This program is free software; the authors of any publication 
    arising from research using this software are asked to add the 
    following reference:
    Enki - a fast 2D robot simulator
    http://home.gna.org/enki
    Stephane Magnenat <stephane at magnenat dot net>,
    Markus Waibel <markus dot waibel at epfl dot ch>
    Laboratory of Intelligent Systems, EPFL, Lausanne.

    You can redistribute this program and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#ifndef __ENKI_MICROPHONE_H
#define __ENKI_MICROPHONE_H

#include <enki/PhysicalEngine.h>
#include <enki/Interaction.h>
#include "ActiveSoundSource.h"

#include <valarray>

/*!	\file Microphone.h
  \brief Header of the generic infrared sensor
*/

namespace Enki
{
	//! A function for manipulating acquired sound, normally to model saturation, distance decreasing or frequency response
	typedef double (*MicrophoneResponseModel)(double, double);

	//! A generic sound sensor/microphone
	/*! \ingroup interaction */
	class Microphone : public LocalInteraction
	{
	protected:
		//! Robot/object with the microphone
		PhysicalObject *owner;
		//! Absolute position in the world, updated on init()
		Vector micAbsPos;
		//! Relative position of mic on object
		Vector micRelPos;
		//! Microphone frequency response model
		MicrophoneResponseModel micModel;
		//! Actual detection range
		double range;
		//! No of frequency channels distinguished in input
		unsigned noOfChannels;
		//! microphone input signal (array of size noOfChannels)
		double* acquiredSound;
		
	public: 
		//! Constructor
		//! e.g.: Microphone(this, Vector(0.5, 0.5), 5, micStepModel, 20);
		//! meaning: the mic is (0.5, 0.5) away from robot center, can hear sounds up to
		//! 5 units away, uses a step model to detect sounds and can distinguish 20 frequencies
		Microphone(Robot *owner, Vector micRelPos, double range, 
				   MicrophoneResponseModel micModel, unsigned channels);
		//! Destructor
		~Microphone(void);
		//! Reset distance values, called every w->step()
		void init();
		//! Check for local interactions with other physical objects
		virtual void objectStep(double dt, PhysicalObject *po, World *w);
		//! Reset sound buffer to 0 after one time-step in experiment
		void resetSound(void);
		//! Return frequencies of input sound
		double* getAcquiredSound(void);
		//! Find frequency with maximum intensity
		void getMaxChannel(double *intensity, int *channel);
		//! Get absolute position of microphone
		Vector getMicAbsPos();
	};

	//! A generic sound sensor/microphone
	/*! \ingroup interaction */
	class FourWayMic : public LocalInteraction
	{
	protected:
		//! Robot/object with the microphone
		PhysicalObject *owner;
		//! Absolute position in the world, updated on init()
		Vector allMicAbsPos[4];
		//! Distance of the mics from centre of object
		double micDist;
		//! Microphone frequency response model
		MicrophoneResponseModel micModel;
		//! Actual detection range
		double range;
		//! No of frequency channels distinguished in input
		unsigned noOfChannels;
		//! Microphone input signal (array of size noOfChannels for 4 mics)
		double* acquiredSound[4];
		
	public: 
		//! Constructor
		//! e.g.: FourWayMic(this, 0.5, 5, micStepModel, 20);
		//! meaning: each of the 4 mics is 0.5 away from robot center, can hear sounds up to
		//! 5 units away, uses a step model to detect sounds and can distinguish 20 frequencies
		FourWayMic(Robot *owner, double micDist, double range, 
				   MicrophoneResponseModel micModel, unsigned channels);
		//! Destructor
		~FourWayMic(void);
		//! Reset distance values, called every w->step()
		void init();
		//! Check for local interactions with other physical objects
		virtual void objectStep(double dt, PhysicalObject *po, World *w);
		//! Reset sound buffer to 0 after one time-step in experiment
		void resetSound(void);
		//! Return frequencies of input sound
		double* getAcquiredSound(unsigned micNo);
		//! Find frequency with maximum intensity
		void getMaxChannel(unsigned micNo, double *intensity, int *channel);
		//! Get absolute position of microphone
		Vector getMicAbsPos(unsigned micNo);
	};
}

#endif