Home AMX User Forum AMXForums Archive Threads AMX Hardware

NI Masters new firmware v.2.32.148

New Features:
"Added Timeline loop count in Interpreter to handle consecutive zero length timeline events."
Explain what benefit from it?

What means in syslog "Timeline Loopcnt = 10"?
On what this parameter influences?

Comments

  • DHawthorneDHawthorne Posts: 4,584
    Yuriy wrote:
    New Features:
    "Added Timeline loop count in Interpreter to handle consecutive zero length timeline events."
    Explain what benefit from it?

    What means in syslog "Timeline Loopcnt = 10"?
    On what this parameter influences?
    Probably there was a problem with them stepping on each other. Consecutive zero-length events would in effect be concurrent. So it's possible only the first fired and this is a bug fix to make sure they all do.
  • In the previous version of firmware, we fixed a problem caused by having 0 length timelines, or timelines that tie up so much master time that new input is ignored - this effectively would make the master lockup: it wouldn't even communicate unless you disabled the program and reboot.

    This fix was accomplished by having the master check for new input at each 0 time of a timeline, i.e. when the timeline event is supposed to fire.

    Soon after we released the firmware with this fix we found that if a program has a lot of timelines firing about the same time, all this checking for new input will cause another lockup problem.
    So in the v3.12.332 and v1.32.148 firmware the "0 timeline new input check" only checks for new input each 10th time, and you can adjust this with a terminal/telnet command.
  • YuriyYuriy Posts: 20
    Excuse for my bad English.
    I had problems with controllers NI-X000 with the firmware below v.2.32.138.
    They sometimes lockup. I have traced, that lockup always occured at the moment of execution of a timeline. My programs a maximum two timelines execution simultaneously usually have. One for a feedback with panels, another for execution macros (switch on proj, turn on receiver, select input etc.) The timeline for a feedback is execution constantly with an interval of 0,5 second. The timeline for a macros is started from button event. In time execution of this line the controller sometimes lockup. I have rewrite a code with use of the nested waits and all perfectly works. But I like timelines for code more convenient for programming. I used the version of firmware v.2.32.138 and have found out, that problems have remained.
    Now I shall test the new firmware and very much I hope that all will be good!
  • You will still have problems if your timelines are trying to process too much data at once - they just won't be so catastrophic as a system lockup.

    If you you don't want to make your timeline time longer, you might want to try using TIMELINE.REPETITION with a repeating timeline:

    TIMELINE_EVENT[1]
    {
    SWITCH (TIMELINE.REPETITION)
    {
    CASE 1:
    {
    }
    CASE 2:
    {
    }
    CASE 3:
    {
    }
    }
    }
  • YuriyYuriy Posts: 20
    Yes, I so do. Piece of my code:

    TIMELINE_EVENT[tlSourceSelect]
    {
    IF (TIMELINE.Repetition < 9)
    SEND_LEVEL dvCP,1,nLevelVals[TIMELINE.Repetition + 1]
    SWITCH (TIMELINE.Repetition + 1)
    {
    CASE 1:
    {
    SEND_COMMAND vdvKRAMER, "'PASSTHRU=L 48B7',$0D"
    SEND_COMMAND dvRES, "'SP',RES_PWR_ON"
    ON[dvRES,RES_VOL_DN]
    }
    CASE 2:
    {
    SEND_COMMAND vdvKRAMER, "'INPUT=',ITOA(nKramerInput)"
    IF (nSource < SRS_CD)
    SEND_COMMAND vdvScreen, "'SCREEN=1'"
    ELSE
    SEND_COMMAND vdvScreen, "'SCREEN=0'"
    }
    CASE 3:
    {
    OFF[dvRES,RES_VOL_DN]
    SWITCH (nSource)
    {
    CASE SRS_DVD:
    SEND_COMMAND dvRES, "'SP',RES_DVD"
    CASE SRS_DSS:
    SEND_COMMAND dvRES, "'SP',RES_DTV_CBL"
    CASE SRS_VCR:
    SEND_COMMAND dvRES, "'SP',RES_VCR1"
    CASE SRS_CD:
    SEND_COMMAND dvRES, "'SP',RES_DVD"
    CASE SRS_TUN:
    SEND_COMMAND dvRES, "'SP',RES_TUN"
    }
    }
    CASE 4:
    {
    IF (nSource = SRS_VCR)
    SEND_COMMAND dvVCR, "'SP',VCR_CH1"
    }
    CASE 5:
    {
    IF (nSource < SRS_CD)
    SEND_COMMAND vdvLIFT, "'SCREEN=1'"
    ELSE
    SEND_COMMAND vdvLIFT, "'SCREEN=0'"
    SEND_COMMAND dvRES, "'SP',RES_STEREO"
    }
    CASE 8:
    {
    SEND_COMMAND vdvKRAMER, "'INPUT=',ITOA(nKramerInput)"
    }
    CASE 10:
    {
    SEND_COMMAND vdvPROJ, "'STATUS?'"
    SEND_COMMAND dvCP,"'@PPK-SourceSelectWait'"
    SEND_COMMAND dvCP,"'PAGE-',cJumpPage"
    OFF[nSelectMacros]
    IF (TIMELINE_ACTIVE(tlSourceSelect))
    TIMELINE_KILL(tlSourceSelect)
    }
    }
    }
Sign In or Register to comment.