Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't run determineCommandToUse() if already run #4027

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -302,16 +302,17 @@ CT=() # Camera Type array - what to display in whiptail

get_connected_cameras()
{
local CMD CC MSG NUM_RPI=0 NUM_ZWO=0
local CMD CMD_RET CC MSG NUM_RPI=0 NUM_ZWO=0

# true == ignore errors. ${CMD} will be "" if no command found.
CMD="$( determineCommandToUse "false" "" "true" 2> /dev/null )"
CMD_RET=$? # return of 2 means no command was found
setup_rpi_supported_cameras "${CMD}" # Will create full file is CMD == ""

# RPi format: RPi \t camera_number \t camera_sensor [\t optional_other_stuff]
# ZWO format: ZWO \t camera_number \t camera_model
# "true" == ignore errors
get_connected_cameras_info "true" > "${CONNECTED_CAMERAS_INFO}" 2>/dev/null
get_connected_cameras_info --cmd "${CMD}" "true" > "${CONNECTED_CAMERAS_INFO}" 2>/dev/null

# Get the RPi connected cameras, if any.
CC=""
Expand Down Expand Up @@ -357,7 +358,12 @@ get_connected_cameras()
whiptail --title "${TITLE}" --msgbox "${MSG}" 12 "${WT_WIDTH}" 3>&1 1>&2 2>&3

MSG="No connected cameras were detected."
display_msg --log error "${MSG}"
local MSG2=""
if [[ ${CMD_RET} -eq 2 ]]; then
MSG2="No command to take RPi images was found"
MSG2+=" - make sure 'libcamera-apps' is installed if you have an RPi camera."
fi
display_msg --log error "${MSG}" "${MSG2}"
exit_installation 1 "${STATUS_NO_CAMERA}" ""
fi

Expand Down Expand Up @@ -540,6 +546,7 @@ do_save_camera_capabilities()
MSG="No camera was found; one must be connected and working for the installation to succeed.\n"
MSG+="After connecting your camera, re-run the installation."
whiptail --title "${TITLE}" --msgbox "${MSG}" 12 "${WT_WIDTH}" 3>&1 1>&2 2>&3

display_msg --log error "No camera detected - installation aborted."
[[ -s ${TMP} ]] && display_msg --log error "$( < "${TMP}" )"
exit_with_image 1 "${STATUS_ERROR}" "No camera detected"
Expand Down Expand Up @@ -3518,8 +3525,8 @@ install_installer_dependencies()
{
sudo apt-get update && run_aptGet gawk jq dialog
} > "${TMP}" 2>&1
check_success $? "gawk,jq installation failed" "${TMP}" "${DEBUG}" ||
exit_with_image 1 "${STATUS_ERROR}" "gawk,jq install failed."
check_success $? "gawk,jq,dialog installation failed" "${TMP}" "${DEBUG}" ||
exit_with_image 1 "${STATUS_ERROR}" "gawk,jq,dialog install failed."

STATUS_VARIABLES+=( "${FUNCNAME[0]}='true'\n" )
}
Expand Down Expand Up @@ -3901,4 +3908,4 @@ else
fi

display_msg progress "\nEnjoy Allsky!\n"
exit_installation 0 "${STATUS_OK}" ""
exit_installation 0 "${STATUS_OK}" ""
23 changes: 19 additions & 4 deletions scripts/functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ function determineCommandToUse()
local PREFIX="${2}" # Only used if calling doExit().
local IGNORE_ERRORS="${3:-false}" # True if just checking

local CRET RET MSG EXIT_MSG
local CRET RET MSG EXIT_MSG CMD_FOUND="false"

# If libcamera is installed and works, use it.
# If it's not installed, or IS installed but doesn't work (the user may not have it configured),
Expand All @@ -203,7 +203,9 @@ function determineCommandToUse()
CRET=$?
fi
if [[ ${CRET} -eq 0 ]]; then
# Found the command - see if it works.
CMD_FOUND="true" # one of the commands were found.

# Found a command - see if it works.
"${CMD_TO_USE_}" --timeout 1 --nopreview > /dev/null 2>&1
RET=$?
if [[ ${RET} -eq 137 ]]; then
Expand All @@ -230,9 +232,15 @@ function determineCommandToUse()
fi
fi

return 1
if [[ ${CMD_FOUND} == "true" ]]; then
return 1
else
return 2 # no command was found
fi
fi

CMD_FOUND="true" # some command was found.

# On Buster, raspistill sometimes hangs if no camera is found,
# so work around that.
if ! timeout 4 "${CMD_TO_USE_}" --timeout 1 --nopreview > /dev/null 2>&1 ; then
Expand Down Expand Up @@ -261,14 +269,21 @@ function determineCommandToUse()
# Prepend each line with the CAMERA_TYPE.
function get_connected_cameras_info()
{
local RUN_dCTU="true" # determine Command To Use
if [[ ${1} == "--cmd" ]]; then
RUN_dCTU="false"
CMD_TO_USE_="${2}"
shift 2
fi
local IGNORE_ERRORS="${1:-false}"

####### Check for RPi
# Tab-separated output will be:
# RPi camera_number camera_sensor
# for each camera found.
# camera_sensor will be one word.
if [[ -z ${CMD_TO_USE_} ]]; then
# Only run determineCommandToUse() if it wasn't already run.
if [[ -z ${CMD_TO_USE_} && ${RUN_dCTU} == "true" ]]; then
determineCommandToUse "false" "" "${IGNORE_ERRORS}" > /dev/null
fi
if [[ -n ${CMD_TO_USE_} ]]; then
Expand Down
Loading