diff --git a/bin/oref0-pump-loop.sh b/bin/oref0-pump-loop.sh index b8128cd83..055bf94f7 100755 --- a/bin/oref0-pump-loop.sh +++ b/bin/oref0-pump-loop.sh @@ -657,27 +657,36 @@ function refresh_old_profile { # get-settings report invoke settings/model.json settings/bg_targets_raw.json settings/bg_targets.json settings/insulin_sensitivities_raw.json settings/insulin_sensitivities.json settings/basal_profile.json settings/settings.json settings/carb_ratios.json settings/pumpprofile.json settings/profile.json function get_settings { + SUCCESS=1 if grep -q 12 settings/model.json then # If we have a 512 or 712, then remove the incompatible reports, so the loop will work # On the x12 pumps, these 'reports' are simulated by static json files created during the oref0-setup.sh run. - retry_return check_model 2>&3 >&4 || return 1 - retry_return read_insulin_sensitivities 2>&3 >&4 || return 1 - retry_return read_carb_ratios 2>&3 >&4 || return 1 - retry_return openaps report invoke settings/insulin_sensitivities.json settings/bg_targets.json 2>&3 >&4 || return 1 + retry_return check_model 2>&3 >&4 || SUCCESS=0 + [[ $SUCCESS -eq 1 ]] && retry_return read_insulin_sensitivities 2>&3 >&4 || SUCCESS=0 + [[ $SUCCESS -eq 1 ]] && retry_return read_carb_ratios 2>&3 >&4 || SUCCESS=0 + [[ $SUCCESS -eq 1 ]] && retry_return openaps report invoke settings/insulin_sensitivities.json settings/bg_targets.json 2>&3 >&4 || SUCCESS=0 else # On all other supported pumps, we should be able to get all the data we need from the pump. - retry_return check_model 2>&3 >&4 || return 1 - retry_return read_insulin_sensitivities 2>&3 >&4 || return 1 - retry_return read_carb_ratios 2>&3 >&4 || return 1 - retry_return read_bg_targets 2>&3 >&4 || return 1 - retry_return read_basal_profile 2>&3 >&4 || return 1 - retry_return read_settings 2>&3 >&4 || return 1 - retry_return openaps report invoke settings/insulin_sensitivities.json settings/bg_targets.json 2>&3 >&4 || return 1 + [[ $SUCCESS -eq 1 ]] && retry_return check_model 2>&3 >&4 || SUCCESS=0 + [[ $SUCCESS -eq 1 ]] && retry_return read_insulin_sensitivities 2>&3 >&4 || SUCCESS=0 + [[ $SUCCESS -eq 1 ]] && retry_return read_carb_ratios 2>&3 >&4 || SUCCESS=0 + [[ $SUCCESS -eq 1 ]] && retry_return read_bg_targets 2>&3 >&4 || SUCCESS=0 + [[ $SUCCESS -eq 1 ]] && retry_return read_basal_profile 2>&3 >&4 || SUCCESS=0 + [[ $SUCCESS -eq 1 ]] && retry_return read_settings 2>&3 >&4 || SUCCESS=0 + [[ $SUCCESS -eq 1 ]] && retry_return openaps report invoke settings/insulin_sensitivities.json settings/bg_targets.json 2>&3 >&4 || SUCCESS=0 # NON_X12_ITEMS="settings/bg_targets_raw.json settings/bg_targets.json settings/basal_profile.json settings/settings.json" fi # retry_return openaps report invoke settings/insulin_sensitivities_raw.json settings/insulin_sensitivities.json settings/carb_ratios.json $NON_X12_ITEMS 2>&3 >&4 | tail -1 || return 1 + # If there was a failure, force a full refresh on the next loop + if [[ $SUCCESS -eq 0 ]]; then + echo "pump profile refresh unsuccessful; trying again on next loop" + touch -d "1 hour ago" settings/settings.json + touch -d "1 hour ago" settings/profile.json + return 1 + fi + # generate settings/pumpprofile.json without autotune oref0-get-profile settings/settings.json settings/bg_targets.json settings/insulin_sensitivities.json settings/basal_profile.json preferences.json settings/carb_ratios.json settings/temptargets.json --model=settings/model.json 2>&3 | jq . > settings/pumpprofile.json.new || { echo "Couldn't refresh pumpprofile"; fail "$@"; } if [ -s settings/pumpprofile.json.new ] && jq -e .current_basal settings/pumpprofile.json.new >&4; then diff --git a/tests/tests-in-shell.test.js b/tests/tests-in-shell.test.js index 85d5770ae..848058946 100644 --- a/tests/tests-in-shell.test.js +++ b/tests/tests-in-shell.test.js @@ -22,7 +22,12 @@ describe("shell-script tests", function() { encoding: "UTF-8", }); + //console.error("================="); + //console.error(testFile); + //console.error("================="); //console.error(utilProcess.error); + //console.error(utilProcess.stderr); + //console.error(utilProcess.stdout); should.equal(utilProcess.status, 0, "Bash unit test returned failure: run " + testFile + " manualy for details."); }); });