Jump to content
Sign in to follow this  
The Artful Dodger

I don't Understand this Checklist Behavior!

Recommended Posts

I am working on my C208B checklist and the Item I came to was EIS - Check Parameters. So after speaking the item, I say pause, and I want the CL to pause - when I have checked everything, I intended to hit the key I have set up to toggle the pause and then it was to confirm the check was made. However, it only immediately confirms completion - I don't understand why. Here's the lines:

;
:EIS
;
[*Check|Repeat|Pause*](@C208B:Engine Indicating System - Normal)
(L:AaoClConfirm) 1 == if{ (GOTO:EIS_Complete) }
(L:AaoClConfirm) 2 == if{ (@C208B:I say again) (GOTO:EIS) }
(L:AaoClConfirm) 3 == if{ (AAO_CL_PAUSE_TOGGLE) }
;
:EIS_Complete
(@C208B:Engine Indicating System Confirmed - Normal)
;

What am I doing wrong? 

Share this post


Link to post
Share on other sites
1 hour ago, The Artful Dodger said:

(AAO_CL_PAUSE_TOGGLE)

does not work this way, it will not just interrupt script execution. As I wrote in your other thread, this command is not meant to be used this way. It is a toggle to be bound to a button, and it prevents the checklist from processing the next checklist item = the next set of [..]

1 hour ago, The Artful Dodger said:

Here's the lines:

I don't understand the reasoning behind this code. What is the purpose of "Pause"? The checklist system will wait anyway until you say something. If you don't want it to repeat the SPEAK query, you can change the timeout value for the repeat by altering this LVar: (L:AaoClRepeatMs). Initially it is 10000 milliseconds = 10 seconds. Issuing for example "1000000 (>L:AaoClRepeatMs)" will change that timeout to 1000 seconds, making "Pause" obsolete.


LORBY-SI

Share this post


Link to post
Share on other sites

Maybe adding a GOTO after the pause-toggle could help, jumping to a label on the next line. That could break it out of the execution loop and the pause has an effect then. Not sure.


LORBY-SI

Share this post


Link to post
Share on other sites
9 hours ago, Lorby_SI said:

it will not just interrupt script execution

I will change that behavior in the next version of AAO, so it will "jump out" of the current checklist item. AAO 4.20 is due to be released with MSFS SU15.


LORBY-SI

Share this post


Link to post
Share on other sites

I am more confused than ever now, especially with regard to your comment above that it will "jump out of the current checklist item". When I run the code above and say "pause", the code immediately executes the next line of code (I presume it "executes the label next" ) . Are you telling me the code "knows" that the last line of code above is "part" of the current checklist item? I ask because the next line of code will be just another label.

Share this post


Link to post
Share on other sites
2 hours ago, The Artful Dodger said:

Are you telling me

I am telling you that what you are trying to do will not work with (AAO_CL_PAUSE_TOGGLE), because the command was not made with your use case in mind. Nobody ever did this before.

2 hours ago, The Artful Dodger said:

the last line of code above is "part" of the current checklist item?

Yes. Checklist items are only the [...] parts. What code is between them is just processed in one go. 

It may be possible to trick the logic into kind of do what you want, but there is no guarantee that it will work.

;
:EIS
;
[*Check|Repeat|Pause*](@C208B:Engine Indicating System - Normal)
(L:AaoClConfirm) 1 == if{ (GOTO:EIS_Complete) }
(L:AaoClConfirm) 2 == if{ (@C208B:I say again) (GOTO:EIS) }
(L:AaoClConfirm) 3 == if{ (AAO_CL_PAUSE_TOGGLE) (GOTO:EIS_Complete) }
;
:EIS_Complete
(@C208B:Engine Indicating System Confirmed - Normal)
;
Edited by Lorby_SI

LORBY-SI

Share this post


Link to post
Share on other sites

I am concerned with your definition of a checklist item and here's why. 

:Fuel_Condition_Lever
;
[*Check|Repeat*](@C208B:Fuel Condition Lever - Cutoff)
(L:AaoClConfirm) 1 == if{ (GOTO:Condition_Check) }
(L:AaoClConfirm) 2 == if{ (@C208B:I say again) (GOTO:Fuel_Condition_Lever) }
;
:Condition_Check
(IE:FUEL_1_Condition_Lever) 2 != if{ (@C208B:I  say  again) (GOTO:Fuel_Condition_Lever) } els{ (@C208B:Fuel Condition Lever Confirmed - Cutoff) }
;
;
;
:Flaps

The way I have written these checklist items (and I've written quite a few in the last day or two) is the above example - and all of them are similar. The "Fuel_Condition_Lever" item runs from the initial label until just before the "Flaps" label. What would you describe the "Condition_Check" and it's follow-on statement? It has no [...] parts yet it is very much a part of the "Fuel_Condition_Lever" item.

So, I guess my problem is that, even though you call it a "pause", I don't think of it as a pause. By my definition, a true pause would simply stop in place and, once the flag was toggled back, execution would continue from there as if the pause had not happened. I still don't understand what yours does but in my mind it isn't a pause. I also realize it's not up to me - it's your software and I have to adjust to how it's written! I just wish you had called it something else! Because that's why I am having such a problem with it!

Share this post


Link to post
Share on other sites

By the way, I tried your suggestion "(L:AaoClConfirm) 3 == if{ (AAO_CL_PAUSE_TOGGLE) (GOTO:EIS_Complete) }" and it worked exactly like I intended it to! Now I have a working model for similar situations!

And, just as an aside - my late wife and I heard more times than we could count that something we suggested or complained about was "the very first time we've heard that" - I guess we just did things that were (are) unexpected! I appreciate that you didn't give up on me though!!

Share this post


Link to post
Share on other sites
34 minutes ago, The Artful Dodger said:

So, I guess my problem is that, even though you call it a "pause", I don't think of it as a pause. By my definition, a true pause would simply stop in place and, once the flag was toggled back, execution would continue from there as if the pause had not happened. I still don't understand what yours does but in my mind it isn't a pause. I also realize it's not up to me - it's your software and I have to adjust to how it's written! I just wish you had called it something else! Because that's why I am having such a problem with it!

Correct. And again: this command is not meant to be used like this. It does not work the way you think that it should work, because that is not the use case.

It is called AAO_CL_PAUSE_TOGGLE, because, when used properly = assigned to a button, it will prevent the checklist system from advancing to the next item, denoted by the square brackets. I don't know how else to explain it. Every line beginning with [] is a checklist item, that is how the system works. It shouldn't have jumps and control flow in it, because it is relatively static. What you are trying to do is more a CONVERSATION style script file. But those work differently in other ways.

In the AAO CHECKLIST, having Repeat or Pause in the code makes no sense (to me). The system already provides those mechanics without the necessity of any gotos etc. Every checklist item will be repeated automatically after a timeout period. And you can pause the system with an external command at those points where a pause makes sense (=before you are asked the next thing)

 

Edited by Lorby_SI

LORBY-SI

Share this post


Link to post
Share on other sites
2 minutes ago, The Artful Dodger said:

When I am done with it, I will give you a copy of it which you can do with what you will - throw away, use as an "advanced" audible checklist, or whatever.

Thank you, but I have no time left for flying.

If you want to share it with other simmers, I suggest the Avsim library or flightsim.to 


LORBY-SI

Share this post


Link to post
Share on other sites
4 minutes ago, The Artful Dodger said:

I was more thinking of your AAO manual.

Again thank you, but that is a no again. I am very sorry, but this is not how the programmer (me) inteded the checklist system to be used. Way too complicated to implement and to maintain. IMHO.

Edited by Lorby_SI

LORBY-SI

Share this post


Link to post
Share on other sites

I meant as an example - AAO works just fine for me just as it is - I just didn't program it correctly. But if someone wants a checklist like mine but thinks it's too complicated to try, you would have an example to show in your manual. Nothing for you to maintain.

Share this post


Link to post
Share on other sites
5 hours ago, The Artful Dodger said:

Nothing for you to maintain.

That is incorrect. When it is in the manual I would have to explain and support it.

Just for the sake of the argument, consider the default use case for the checklist:

1. You create three voice commands in AAO (= button assignments where the "Device" is set to "Voice")
"check" is assigned to "AAO_CL_CHECKED"
"pause" is assigned to "AAO_CL_PAUSE_TOGGLE"
"stop" is assigned to "AAO_CL_STOP"
(instead of or in addition to the voice commands you can assign the AAO_CL_ to physical buttons. Then you have a choice how you want to react to the checklist query)

2. Your checklist would then look like this:
 

...
[](@C208B:Engine Indicating System - Normal)
(@C208B:Engine Indicating System Confirmed - Normal)
:Fuel_Condition_Lever
[](@C208B:Fuel Condition Lever - Cutoff)
(IE:FUEL_1_Condition_Lever) 2 != if{ (@C208B:I say again) (GOTO:Fuel_Condition_Lever) } els{ (@C208B:Fuel Condition Lever Confirmed - Cutoff) }
...

What will happen is this:

  • AAO says "Engine Indicating System - Normal"
  • If you don't say "check" within 10 seconds, AAO will repeat the call
    (both the length of the timeout and what happens upon the repeat can be configured)
  • If you continue to remain silent, the checklist will be terminated eventually (can also be configured)
  • If you do say "check", then the checklist will advance to the next item
  • Same story with the next item. But this time, as in your code, when you say "check", but the desired condition is not met, the item is repeated.
     
  • If you say "pause" at any time, the checklist system will be halted, until you say "pause" again. 
  • if you say "stop" at any time, the checklist ends.


Please consider the examples that I've provided on the axisandohs.com website. There is even one where the checklist system is run as a web page (=you can operate the checklist on your tablet or phone)

To round this up, the CONVERSATION type script file is much more powerful. There are AAO testers who have built their own crew simulation with those (similar to Fs2Crew/MultiCrewExperience and the like)

Edited by Lorby_SI

LORBY-SI

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Tom Allensworth,
    Founder of AVSIM Online


  • Flight Simulation's Premier Resource!

    AVSIM is a free service to the flight simulation community. AVSIM is staffed completely by volunteers and all funds donated to AVSIM go directly back to supporting the community. Your donation here helps to pay our bandwidth costs, emergency funding, and other general costs that crop up from time to time. Thank you for your support!

    Click here for more information and to see all donations year to date.
×
×
  • Create New...