aboutsummaryrefslogblamecommitdiff
path: root/ROMFS/px4fmu_common/init.d/rc.interface
blob: 7a424970f68a102bb16f15f38ab117991d392c88 (plain) (tree)
1
2
3
4
5
6
7
8
9
10




                                       
                                             
 
                                       

         
                         
         
 
                                                   


                                        
 
                                                          
                                                     
            

                                                                  
            
 






                                                                     
 

                                       
                                             
            
                                               
          
 
                                         
            
                                              
          
 

                                             
                                                            
            
                                                           
                                    
          

                        
    

                             
                                            
                                    
          



                                                
                               





                                          
                                                         
                  
 




                                                      
                                                                 


                                       
                                                       


                                       
                                                       

                  




                                                     
  
 
                                      
                         
    


                        
 
                               
                                           
 
                                                        
            
                                                                         
            
 
                                                        
                    
                                                                         

                  
 



                                                          





                                                                                    


                                            
































                                                                                                    
          
  
                
#!nsh
#
# Script to configure control interface
#

set SDCARD_MIXERS_PATH /fs/microsd/etc/mixers

if [ $MIXER != none -a $MIXER != skip ]
then
	#
	# Load main mixer
	#

	if [ $MIXER_AUX == none -a $USE_IO == yes ]
	then
		set MIXER_AUX $MIXER.aux
	fi

	# Use the mixer file from the SD-card if it exists
	if [ -f $SDCARD_MIXERS_PATH/$MIXER.main.mix ]
	then
		set MIXER_FILE $SDCARD_MIXERS_PATH/$MIXER.main.mix
	# Try out the old convention, for backward compatibility
	else

		if [ -f $SDCARD_MIXERS_PATH/$MIXER.mix ]
		then
			set MIXER_FILE $SDCARD_MIXERS_PATH/$MIXER.mix
		else
			set MIXER_FILE /etc/mixers/$MIXER.main.mix
		fi
	fi

	if [ $OUTPUT_MODE == mkblctrl ]
	then
		set OUTPUT_DEV /dev/mkblctrl0
	else
		set OUTPUT_DEV /dev/pwm_output0
	fi

	if [ $OUTPUT_MODE == uavcan_esc ]
	then
		set OUTPUT_DEV /dev/uavcan/esc
	fi

	if mixer load $OUTPUT_DEV $MIXER_FILE
	then
		echo "[i] Mixer: $MIXER_FILE on $OUTPUT_DEV"
	else
		echo "[i] Error loading mixer: $MIXER_FILE"
		tone_alarm $TUNE_ERR
	fi

	unset MIXER_FILE
else
	if [ $MIXER != skip ]
	then
		echo "[i] Mixer not defined"
		tone_alarm $TUNE_ERR
	fi
fi

if [ $OUTPUT_MODE == fmu -o $OUTPUT_MODE == io ]
then
	if [ $PWM_OUT != none ]
	then
		#
		# Set PWM output frequency
		#
		if [ $PWM_RATE != none ]
		then
			pwm rate -c $PWM_OUT -r $PWM_RATE
		fi

		#
		# Set disarmed, min and max PWM values
		#
		if [ $PWM_DISARMED != none ]
		then
			pwm disarmed -c $PWM_OUT -p $PWM_DISARMED
		fi
		if [ $PWM_MIN != none ]
		then
			pwm min -c $PWM_OUT -p $PWM_MIN
		fi
		if [ $PWM_MAX != none ]
		then
			pwm max -c $PWM_OUT -p $PWM_MAX
		fi
	fi

	if [ $FAILSAFE != none ]
	then
		pwm failsafe -d $OUTPUT_DEV $FAILSAFE
	fi
fi

# check if should load secondary mixer
if [ $MIXER_AUX != none ]
then
	#
	# Load aux mixer
	#

	set MIXER_AUX_FILE none
	set OUTPUT_AUX_DEV /dev/pwm_output1

	if [ -f $SDCARD_MIXERS_PATH/$MIXER_AUX.aux.mix ]
	then
		set MIXER_AUX_FILE $SDCARD_MIXERS_PATH/$MIXER_AUX.aux.mix
	else

		if [ -f /etc/mixers/$MIXER_AUX.aux.mix ]
		then
			set MIXER_AUX_FILE /etc/mixers/$MIXER_AUX.aux.mix
		fi
	fi

	if [ $MIXER_AUX_FILE != none -a $FMU_MODE == pwm ]
	then
		if fmu mode_pwm
		then
			if mixer load $OUTPUT_AUX_DEV $MIXER_AUX_FILE
			then
				echo "[i] Mixer: $MIXER_AUX_FILE on $OUTPUT_AUX_DEV"
			else
				echo "[i] Error loading mixer: $MIXER_AUX_FILE"
			fi
		else
			tone_alarm $TUNE_ERR
		fi

		if [ $PWM_AUX_OUT != none ]
		then
			#
			# Set PWM_AUX output frequency
			#
			if [ $PWM_AUX_RATE != none ]
			then
				pwm rate -c $PWM_AUX_OUT -r $PWM_AUX_RATE -d $OUTPUT_AUX_DEV
			fi

			#
			# Set disarmed, min and max PWM_AUX values
			#
			if [ $PWM_AUX_DISARMED != none ]
			then
				pwm disarmed -c $PWM_AUX_OUT -p $PWM_AUX_DISARMED -d $OUTPUT_AUX_DEV
			fi
			if [ $PWM_AUX_MIN != none ]
			then
				pwm min -c $PWM_AUX_OUT -p $PWM_AUX_MIN -d $OUTPUT_AUX_DEV
			fi
			if [ $PWM_AUX_MAX != none ]
			then
				pwm max -c $PWM_AUX_OUT -p $PWM_AUX_MAX -d $OUTPUT_AUX_DEV
			fi
		fi

		if [ $FAILSAFE_AUX != none ]
		then
			pwm failsafe -d $OUTPUT_AUX_DEV $FAILSAFE
		fi

	fi
fi
unset OUTPUT_DEV