#!/bin/sh
#
# Standard startup script for sensor drivers.
#
# NOTE: Script variables are declared/initialized/unset in the rcS script.
#

if ! ver hwcmp AEROFC_V1 OMNIBUS_F4SD
then
	if ! ver hwcmp BITCRAZE_CRAZYFLIE
	then
		# Configure all I2C buses to 100 KHz as they
		# are all external or slow
		# TODO: move this
		pwm_out i2c 1 100000
		pwm_out i2c 2 100000
	fi
fi

###############################################################################
#                           Begin Optional drivers                            #
###############################################################################

if param compare -s SENS_EN_BATT 1
then
	batt_smbus start -X
fi

# Sensors on the PWM interface bank
if param compare -s SENS_EN_LL40LS 1
then
	if pwm_input start
	then
		ll40ls_pwm start
	fi
fi

# External automatic trigger system
if param compare FD_EXT_ATS_EN 1
then
	pwm_input start
fi

# Lidar-Lite on I2C
if param compare -s SENS_EN_LL40LS 2
then
	ll40ls start -X
fi

# mappydot lidar sensor
if param compare -s SENS_EN_MPDT 1
then
	mappydot start -X
fi

# mb12xx sonar sensor
if param greater -s SENS_EN_MB12XX 0
then
	mb12xx start -X
fi

# pga460 sonar sensor
if param greater -s SENS_EN_PGA460 0
then
	pga460 start
fi

# Lightware i2c lidar sensor
if param greater -s SENS_EN_SF1XX 0
then
	sf1xx start -X
fi

# Heater driver for temperature regulated IMUs.
if param compare -s SENS_EN_THERMAL 1
then
	heater start
fi

# Teraranger one tof sensor
if param greater -s SENS_EN_TRANGER 0
then
	teraranger start -X
fi

# Possible external pmw3901 optical flow sensor
if param greater -s SENS_EN_PMW3901 0
then
	pmw3901 -S start
fi

# Possible external paw3902 optical flow sensor
if param greater -s SENS_EN_PAW3902 0
then
	paw3902 -S start
fi

# probe for optional external I2C devices
if param compare SENS_EXT_I2C_PRB 1
then
	# compasses
	ak09916 -X -R 6 -q start # external AK09916 (Here2) is rotated 270 degrees yaw
	hmc5883 -T -X -q start
	ist8308 -X -q start
	ist8310 -X -q start
	lis2mdl -X -q start
	lis3mdl -X -q start
	qmc5883l -X -q start
	rm3100 -X -q start

	# differential pressure sensors
	if [ ${VEHICLE_TYPE} = fw -o ${VEHICLE_TYPE} = vtol ]
	then
		if param compare CBRK_AIRSPD_CHK 0
		then
			sdp3x_airspeed start -X -q
			sdp3x_airspeed start -X -a 0x22 -q

			# Pixhawk 2.1 has a MS5611 on I2C which gets wrongly
			# detected as MS5525 because the chip manufacturer was so
			# clever to assign the same I2C address and skip a WHO_AM_I
			# register.
			if [ $BOARD_FMUV3 = 21 ]
			then
				ms5525_airspeed start -X -b 2 -q
			else
				ms5525_airspeed start -X -q
			fi

			ms4525_airspeed start -X -q

			ets_airspeed start -X -q
		fi
	fi
fi

###############################################################################
#                            End Optional drivers                             #
###############################################################################

sensors start
