GET_LAST: New Firmware
jjames
AMX Sustaining Engineer
Okay, who's going to test this out? Per the newest firmware release today:
I can see the temptation to run out and upgrade your firmware just so you can do this - but someone's gotta test this out before I jump on board. Specifically - what happens when one user is ramping the volume, and another panel comes in and ramps as well? Or one panel is setting a preset, and then someone else comes in and goes to set a preset that calls a function - which value gets passed to the function? To me, this was one of the GET_LAST's biggest drawback, and because of it - in my code there are VERY few HOLD events.
I can't test as I'm without a master. Anxious for the results.
AMX Firmware wrote:Fixed I2C communications issue for RS232/485 communication errors
Fixed Java based logging to ensure consistent log output
Added security profile configuration
Fixed HTTPS interface to be more reliable
Fixed GET_LAST so it works within a HOLD event for both dev array and channel array
I can see the temptation to run out and upgrade your firmware just so you can do this - but someone's gotta test this out before I jump on board. Specifically - what happens when one user is ramping the volume, and another panel comes in and ramps as well? Or one panel is setting a preset, and then someone else comes in and goes to set a preset that calls a function - which value gets passed to the function? To me, this was one of the GET_LAST's biggest drawback, and because of it - in my code there are VERY few HOLD events.
I can't test as I'm without a master. Anxious for the results.
Comments
-
To me, this was one of the GET_LAST's biggest drawback, and because of it - in my code there are VERY few HOLD events.
Very cool. I knew if I was lazy enough this problem would just go away without me ever having to do anything but upgrade firmware.
Thank goodness they also fixed that 7th IR port that refuses to light up during the startup light show. That's been pissing me off for months.
Paul -
This is huge. For some reason I thought this bug was one of those things that could never get fixed. Yay! (Hope it works!)
-
I'm curious to know what they've done. GET_LAST has always work inside a hold you just couldn't trust what the get last would return since it's a system wide function and as soon as someone hits a button on any TP that pointer will change to that button channel.
So do they store the GET_LAST value in a hold in a var specifically for that event table? If this is what they do, do they also create an array to hold the GET_LAST value for every TP that is declared for that event table? If it's just a single "HOLD" var for each event table I'm not sure if that's a good enough solution.
So does GET_LAST in a hold just return the last channel to trigger an event for that event table or does it return the last channel to trigger an event for a specific TP in that event table? If the event table is created for 6 TP's can we have 6 simultaneous HOLDs? -
I'm curious to know what they've done. GET_LAST has always work inside a hold you just couldn't trust what the get last would return since it's a system wide function and as soon as someone hits a button on any TP that pointer will change to that button channel.
So do they store the GET_LAST value in a hold in a var specifically for that event table? If this is what they do, do they also create an array to hold the GET_LAST value for every TP that is declared for that event table? If it's just a single "HOLD" var for each event table I'm not sure if that's a good enough solution.
So does GET_LAST in a hold just return the last channel to trigger an event for that event table or does it return the last channel to trigger an event for a specific TP in that event table? If the event table is created for 6 TP's can we have 6 simultaneous HOLDs?
Instead of acting on the HOLD with the previous PUSH data, they are holding off the event generation until the HOLD parameters are met. That would be how I figure it. -
Sounds like a very reasonable solution and makes sense.DHawthorne wrote: »Instead of acting on the HOLD with the previous PUSH data, they are holding off the event generation until the HOLD parameters are met. That would be how I figure it. -
DHawthorne wrote:
But by the time the hold parameters are met the GET_LAST value may have already been changed. I would think upon each push that channel value is stored and cleared upon release. Then if the hold reaches it's "hold value" it acts upon this stored value. Possible using a stored value for each TP in that event table which would allow multiple holds to operate at the same time using a single HOLD in a button event.they are holding off the event generation until the HOLD parameters are met.
This is basically I do my holds presently. In the PUSH based on the GET_LAST TP index and GET_LAST channel index I add that last channel number to the TP's index position of a nDevHOLDArray. I clear it upon the release, again by use of the GET_LAST TP index and then in the hold if at least one array postion has a value I'll loop through the array and act on the channel number contained there in for each index position if it holds a value other than 0. -
DHawthorne wrote:
But by the time the hold parameters are met the GET_LAST value may have already been changed. I would think upon each push that channel value is stored and cleared upon release. Then if the hold reaches it's "hold value" it acts upon this stored value. Possible using a stored value for each TP in that event table which would allow multiple holds to operate at the same time using a single HOLD in a button event.
This is basically I do my holds presently. In the PUSH based on the GET_LAST TP index and GET_LAST channel index I add that last channel number to the TP's index position of a nDevHOLDArray. I clear it upon the release, again by use of the GET_LAST TP index and then in the hold if at least one array postion has a value I'll loop through the array and act on the channel number contained there in for each index position if it holds a value other than 0.
But that's what I'm saying ... the event itself doesn't actually fire until the parameters are met. No stored value at all. That's why it required a firmware update, the hardware has to be able to know what the HOLD timer is to do this. -
DHawthorne wrote: »But that's what I'm saying ... the event itself doesn't actually fire until the parameters are met. No stored value at all. That's why it required a firmware update, the hardware has to be able to know what the HOLD timer is to do this.
Perhaps, I'm not understanding something here. This is how I expect to do this under the new firmware.button_event[TP1,button_array] { push: { stack_var button_id button_id=get_last(button_array) // do some amazing stuff } release: { stack_var button_id button_id=get_last(button_array) // do some amazing stuff } hold[20,repeat]: { stack_var button_id button_id=get_last(button_array) // do some amazing stuff } } // end button_event
I'm not sure what the issue is. A hold event is just another event. In the scheme of things, it's no different from an push or a release. Isn't the stack_var remade each time the particular event fires? So, even on a repeat, it's just made anew each time. isn't this so? A hold occurs because you haven't let go of the button yet. You should still have that info available, even if you hold it for a long long time. The hardware isn't what creates the hold event. It's the software on the master knowing that it hasn't seen a release from device X yet. Isn't this so? -
ericmedley wrote:
The problem is the GET_LAST is a system wide function and doesn't return last channel that is fired for a particular event table but the last channel that is fired for any and all event tables. So in the .2 second HOLD wait time if anything else in the entire system is pushed when that hold executes that's the channel value that GET_LAST will return not the one that was pushed & being held.Perhaps, I'm not understanding something here. -
This is the last method I used for hold events. Although is isn't really all that likely that multiple panels would require a hold at the same time this method I used allows that ability. This also allows the hold times to trigger based of individual count values held for each TP.
I'd be interested to know if this new GET_LAST modification allows the same functionality w/o all the extra code or is it just a change in the GET_LAST scope from global to local?
This example is just a 3 second hold to set a TPs permissions. It uses the repeat just to allow a counter to control event triggering for each TP that may hold. Again not very likely but.....BUTTON_EVENT[dvTP_TiVoArry,0] { PUSH: { STACK_VAR INTEGER nBtn ; STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nTiVoIndx ; nBtn = BUTTON.INPUT.CHANNEL ; nTPIndx = GET_LAST(dvTP_TiVoArry) ; nTiVoIndx = nTiVoActiveTPArry[nTPIndx] ; SELECT { /// ACTIVE(nBtn > 93 && nBtn < 98)://PERMISSIONS BUTTONS {//TIVO_CONTROL_OK = 0 ;TIVO_CONTROL_VIEW_ONLY = 1 ;TIVO_CONTROL_TEMP_LOCK = 2 ;TIVO_CONTROL_PERM_LOCK = 3 ; if(nTiVoUserAccess[nTiVoIndx][TIVO_TP_INCHARGE] == nTPIndx)//only allow TP w/ control authority to modify!! { TO[dvTP_TiVoArry[nTPIndx],nBtn] ; nTPHoldArry[nTPIndx][TIVO_HOLDBTN_INDXPOS] = nBtn ; nHoldActive ++ ; } } HOLD[5,REPEAT]://if time changed the count below must change also { if(nHoldActive)//prevent running for buttons other than button which use holds in case they're held anyway. { STACK_VAR INTEGER i ; nHoldActive = 0 ;//reset for recount for(i = 1 ; i <= TIVO_NUM_TPs ; i ++) { if(nTPHoldArry[i][TIVO_HOLDBTN_INDXPOS]) { nHoldActive ++ ;//recount current holds, ensures an accurate count. nTPHoldArry[i][TIVO_HOLDCNT_INDXPOS] ++ ; if(nTPHoldArry[i][TIVO_HOLDCNT_INDXPOS] > 5)//3 seconds (change if hold time change) { nTiVoUserAccess[nTiVoActiveTPArry[i]][TIVO_TP_PERMISSIONS] = nTPHoldArry[i][TIVO_HOLDBTN_INDXPOS] - 94 ; nTPHoldArry[i][TIVO_HOLDBTN_INDXPOS] = 0 ;//STOPS FROM REPEATING IF HOLD CONTINUES nTPHoldArry[i][TIVO_HOLDCNT_INDXPOS] = 0 ; nHoldActive -- ; } } } } } RELEASE: { STACK_VAR INTEGER nBtn ; STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nTiVoIndx ; nBtn = BUTTON.INPUT.CHANNEL ; nTPIndx = GET_LAST(dvTP_TiVoArry) ; nTiVoIndx = nTiVoActiveTPArry[nTPIndx] ; fnTiVo_DeBug("fnDEV_TO_STRING(dvTP_TiVoArry[nTPIndx]),', RELEASED_CHANNEL-',itoa(nBtn), ', Control of TiVo ',ITOA(nTiVoIndx),'. >-Line-<',ITOA(__LINE__),'>',CRLF",0) ; if(nTiVoIndx) { if(nBtn > 93 && nBtn < 98)//PERMISSION LEVELS { if(nTPHoldArry[nTPIndx][TIVO_HOLDBTN_INDXPOS])//RESETS TO 0 IF NOT A FULL HOLD TIME, OTHERWISE ALREADY SET TO 0 {//occurs when the button isn't held for the full duration nTPHoldArry[nTPIndx][TIVO_HOLDBTN_INDXPOS] = 0 ; nTPHoldArry[nTPIndx][TIVO_HOLDCNT_INDXPOS] = 0 ; if(nHoldActive)//just to prevent rollover to 65535 { nHoldActive -- ; } } else//button was held for the full duration so do feedback { //fnTiVo_DoPermissionFB(nTiVoIndx) ; } fnTiVo_DoPermissionFB(nTiVoIndx) ;
Now if I don't have to go through this anymore I'll be very happy. -
ericmedley wrote:
The problem is the GET_LAST is a system wide function and doesn't return last channel that is fired for a particular event table but the last channel that is fired for any and all event tables. So in the .2 second HOLD wait time if anything else in the entire system is pushed when that hold executes that's the channel value that GET_LAST will return not the one that was pushed & being held.
Okay, now I see. I knew that too. I don't know what my confusion was. Oh well.
Perhaps they need a Get_Last_This_Button_Event() keyword.
-
ericmedley wrote: »Okay, now I see. I knew that too. I don't know what my confusion was. Oh well.
Perhaps they need a Get_Last_This_Button_Event() keyword.
Isn't that what this firmware change does? -
Hedberg wrote:
Well that's what we're assuming, that it in essence went from global to local in scope. Now is that one per event table or possibly what it should be is one per TP associated with an event table? It would be nice to know.Isn't that what this firmware change does?
Most of the time I think 1 per event table would be sufficient but there are times when multiple TPs/users will be on the same device page pushing different buttons at the same time so one users get_last shouldn't affect another user.
Hopefully one of those smart fellas from AMX will shed us some light.
-
Works Great!
Test Code:DEFINE_DEVICE dvTP1_Test_1 = 10001:6:0 ; dvTP2_Test_1 = 10002:6:0 ; dvTP3_Test_1 = 10003:6:0 ; dvTP4_Test_1 = 10004:6:0 ; dvTP1_Test_2 = 10001:7:0 ; dvTP2_Test_2 = 10002:7:0 ; dvTP3_Test_2 = 10003:7:0 ; dvTP4_Test_2 = 10004:7:0 ; dvTP1_Test_3 = 10001:8:0 ; dvTP2_Test_3 = 10002:8:0 ; dvTP3_Test_3 = 10003:8:0 ; dvTP4_Test_3 = 10004:8:0 ; DEFINE_VARIABLE VOLATILE INTEGER nHold_BtnArry[] = {1,2,3,4,5,6,7,8,9,10} VOLATILE DEV dvTP_TestArry_1[] = {dvTP1_Test_1,dvTP2_Test_1,dvTP3_Test_1,dvTP4_Test_1} VOLATILE DEV dvTP_TestArry_2[] = {dvTP1_Test_2,dvTP2_Test_2,dvTP3_Test_2,dvTP4_Test_2} VOLATILE DEV dvTP_TestArry_3[] = {dvTP1_Test_3,dvTP2_Test_3,dvTP3_Test_3,dvTP4_Test_3} DEFINE_EVENT // BUTTON_EVENT[dvTP_TestArry_1,nHold_BtnArry] { PUSH: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_1) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'PUSH TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx)") ; } HOLD[6,REPEAT]: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_1) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'HOLD TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx)") ; } RELEASE: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_1) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'RELEASE TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx)") ; } } BUTTON_EVENT[dvTP_TestArry_2,nHold_BtnArry] { PUSH: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_2) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'PUSH TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx)") ; } HOLD[2,REPEAT]: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_2) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'HOLD TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx)") ; } RELEASE: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_2) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'RELEASE TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx)") ; } } BUTTON_EVENT[dvTP_TestArry_3,nHold_BtnArry] { PUSH: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_3) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'PUSH TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx)") ; } HOLD[4,REPEAT]: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_3) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'HOLD TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx)") ; } RELEASE: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_3) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'RELEASE TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx)") ; } } DEFINE_PROGRAM if(nRunHoldTest1) { CANCEL_WAIT 'RUN_TEST_1' ; CANCEL_WAIT 'END_TEST_1' ; DO_PUSH_TIMED(dvTP_TestArry_1[1],nHold_BtnArry[1],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_1' { DO_PUSH_TIMED(dvTP_TestArry_1[2],nHold_BtnArry[2],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_1' { DO_PUSH_TIMED(dvTP_TestArry_1[3],nHold_BtnArry[3],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_1' { DO_PUSH_TIMED(dvTP_TestArry_1[4],nHold_BtnArry[4],DO_PUSH_TIMED_INFINITE) ; } } } WAIT 100 'END_TEST_1' { DO_RELEASE(dvTP_TestArry_1[1],nHold_BtnArry[1]) ; DO_RELEASE(dvTP_TestArry_1[2],nHold_BtnArry[2]) ; DO_RELEASE(dvTP_TestArry_1[3],nHold_BtnArry[3]) ; DO_RELEASE(dvTP_TestArry_1[4],nHold_BtnArry[4]) ; } nRunHoldTest1 = 0 ; } if(nRunHoldTest2) { CANCEL_WAIT 'RUN_TEST_2' ; CANCEL_WAIT 'END_TEST_2' ; DO_PUSH_TIMED(dvTP_TestArry_2[1],nHold_BtnArry[1],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_2' { DO_PUSH_TIMED(dvTP_TestArry_2[2],nHold_BtnArry[2],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_2' { DO_PUSH_TIMED(dvTP_TestArry_2[3],nHold_BtnArry[3],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_2' { DO_PUSH_TIMED(dvTP_TestArry_2[4],nHold_BtnArry[4],DO_PUSH_TIMED_INFINITE) ; } } } WAIT 100 'END_TEST_2' { DO_RELEASE(dvTP_TestArry_2[1],nHold_BtnArry[1]) ; DO_RELEASE(dvTP_TestArry_2[2],nHold_BtnArry[2]) ; DO_RELEASE(dvTP_TestArry_2[3],nHold_BtnArry[3]) ; DO_RELEASE(dvTP_TestArry_2[4],nHold_BtnArry[4]) ; } nRunHoldTest2 = 0 ; } if(nRunHoldTest3) { CANCEL_WAIT 'RUN_TEST_3' ; CANCEL_WAIT 'END_TEST_3' ; DO_PUSH_TIMED(dvTP_TestArry_3[1],nHold_BtnArry[1],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_3' { DO_PUSH_TIMED(dvTP_TestArry_3[2],nHold_BtnArry[2],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_3' { DO_PUSH_TIMED(dvTP_TestArry_3[3],nHold_BtnArry[3],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_3' { DO_PUSH_TIMED(dvTP_TestArry_3[4],nHold_BtnArry[4],DO_PUSH_TIMED_INFINITE) ; } } } WAIT 100 'END_TEST_3' { DO_RELEASE(dvTP_TestArry_3[1],nHold_BtnArry[1]) ; DO_RELEASE(dvTP_TestArry_3[2],nHold_BtnArry[2]) ; DO_RELEASE(dvTP_TestArry_3[3],nHold_BtnArry[3]) ; DO_RELEASE(dvTP_TestArry_3[4],nHold_BtnArry[4]) ; } nRunHoldTest3 = 0 ; } if(nRunHoldTest4) { CANCEL_WAIT 'RUN_TEST_4' ; CANCEL_WAIT 'END_TEST_4' ; DO_PUSH_TIMED(dvTP_TestArry_1[1],nHold_BtnArry[1],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_4' { DO_PUSH_TIMED(dvTP_TestArry_2[2],nHold_BtnArry[2],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_4' { DO_PUSH_TIMED(dvTP_TestArry_3[3],nHold_BtnArry[3],DO_PUSH_TIMED_INFINITE) ; WAIT 20 'RUN_TEST_4' { DO_PUSH_TIMED(dvTP_TestArry_1[4],nHold_BtnArry[4],DO_PUSH_TIMED_INFINITE) ; } } } WAIT 100 'END_TEST_4' { DO_RELEASE(dvTP_TestArry_1[1],nHold_BtnArry[1]) ; DO_RELEASE(dvTP_TestArry_2[2],nHold_BtnArry[2]) ; DO_RELEASE(dvTP_TestArry_3[3],nHold_BtnArry[3]) ; DO_RELEASE(dvTP_TestArry_1[4],nHold_BtnArry[4]) ; } nRunHoldTest4 = 0 ; }
When I set the variable in debug to run the code I should get index returns of 1 for TP 10001, 2 for 10002, 3 for 10003 & 4 for 10004.
Test 1 which ran just test 1:Line 1 (17:58:49):: Get_Last Test: PUSH TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 2 (17:58:50):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 3 (17:58:51):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 4 (17:58:51):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 5 (17:58:51):: Get_Last Test: PUSH TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 6 (17:58:52):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 7 (17:58:52):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 8 (17:58:52):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 9 (17:58:53):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 10 (17:58:53):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 11 (17:58:53):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 12 (17:58:53):: Get_Last Test: PUSH TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 13 (17:58:54):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 14 (17:58:54):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 15 (17:58:54):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 16 (17:58:54):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 17 (17:58:54):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 18 (17:58:55):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 19 (17:58:55):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 20 (17:58:55):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 21 (17:58:55):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 22 (17:58:55):: Get_Last Test: PUSH TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 23 (17:58:55):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 24 (17:58:56):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 25 (17:58:56):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 26 (17:58:56):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 27 (17:58:56):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 28 (17:58:56):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 29 (17:58:56):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 30 (17:58:57):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 31 (17:58:57):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 32 (17:58:57):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 33 (17:58:57):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 34 (17:58:57):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 35 (17:58:57):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 36 (17:58:57):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 37 (17:58:58):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 38 (17:58:58):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 39 (17:58:58):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 40 (17:58:58):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 41 (17:58:58):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 42 (17:58:58):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 43 (17:58:58):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 44 (17:58:59):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 45 (17:58:59):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 46 (17:58:59):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 47 (17:58:59):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 48 (17:58:59):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 49 (17:58:59):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 50 (17:58:59):: Get_Last Test: RELEASE TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 51 (17:58:59):: Get_Last Test: RELEASE TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 52 (17:58:59):: Get_Last Test: RELEASE TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 53 (17:58:59):: Get_Last Test: RELEASE TP:10004:6:2, TP Index: 4, Btn Index: 4
Works great!
Run Test 1 & 2 at the same time:Line 1 (18:09:05):: Get_Last Test: PUSH TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 2 (18:09:05):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 3 (18:09:05):: Get_Last Test: PUSH TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 4 (18:09:05):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 5 (18:09:06):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 6 (18:09:06):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 7 (18:09:06):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 8 (18:09:06):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 9 (18:09:06):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 10 (18:09:06):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 11 (18:09:06):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 12 (18:09:07):: Get_Last Test: PUSH TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 13 (18:09:07):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 14 (18:09:07):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 15 (18:09:07):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 16 (18:09:07):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 17 (18:09:07):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 18 (18:09:07):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 19 (18:09:07):: Get_Last Test: PUSH TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 20 (18:09:07):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 21 (18:09:07):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 22 (18:09:08):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 23 (18:09:08):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 24 (18:09:08):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 25 (18:09:08):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 26 (18:09:08):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 27 (18:09:08):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 28 (18:09:08):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 29 (18:09:08):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 30 (18:09:08):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 31 (18:09:08):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 32 (18:09:08):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 33 (18:09:08):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 34 (18:09:08):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 35 (18:09:08):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 36 (18:09:09):: Get_Last Test: PUSH TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 37 (18:09:09):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 38 (18:09:09):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 39 (18:09:09):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 40 (18:09:09):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 41 (18:09:09):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 42 (18:09:09):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 43 (18:09:09):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 44 (18:09:09):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 45 (18:09:09):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 46 (18:09:09):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 47 (18:09:09):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 48 (18:09:09):: Get_Last Test: PUSH TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 49 (18:09:09):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 50 (18:09:09):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 51 (18:09:09):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 52 (18:09:09):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 53 (18:09:10):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 54 (18:09:10):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 55 (18:09:10):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 56 (18:09:10):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 57 (18:09:10):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 58 (18:09:10):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 59 (18:09:10):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 60 (18:09:10):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 61 (18:09:10):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 62 (18:09:10):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 63 (18:09:10):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 64 (18:09:10):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 65 (18:09:10):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 66 (18:09:10):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 67 (18:09:10):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 68 (18:09:10):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 69 (18:09:10):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 70 (18:09:10):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 71 (18:09:10):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 72 (18:09:10):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 73 (18:09:11):: Get_Last Test: PUSH TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 74 (18:09:11):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 75 (18:09:11):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 76 (18:09:11):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 77 (18:09:11):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 78 (18:09:11):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 79 (18:09:11):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 80 (18:09:11):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 81 (18:09:11):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 82 (18:09:11):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 83 (18:09:11):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 84 (18:09:11):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 85 (18:09:11):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 86 (18:09:11):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 87 (18:09:11):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 88 (18:09:11):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 89 (18:09:11):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 90 (18:09:11):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 91 (18:09:11):: Get_Last Test: PUSH TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 92 (18:09:11):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 93 (18:09:11):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 94 (18:09:11):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 95 (18:09:11):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 96 (18:09:11):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 97 (18:09:12):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 98 (18:09:12):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 99 (18:09:12):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 100 (18:09:12):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 101 (18:09:12):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 102 (18:09:12):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 103 (18:09:12):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 104 (18:09:12):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 105 (18:09:12):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 106 (18:09:12):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 107 (18:09:12):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 108 (18:09:12):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 109 (18:09:12):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 110 (18:09:12):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 111 (18:09:12):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 112 (18:09:12):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 113 (18:09:12):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 114 (18:09:12):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 115 (18:09:12):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 116 (18:09:12):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 117 (18:09:12):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 118 (18:09:13):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 119 (18:09:13):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 120 (18:09:13):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 121 (18:09:13):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 122 (18:09:13):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 123 (18:09:13):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 124 (18:09:13):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 125 (18:09:13):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 126 (18:09:13):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 127 (18:09:13):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 128 (18:09:13):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 129 (18:09:13):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 130 (18:09:13):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 131 (18:09:13):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 132 (18:09:13):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 133 (18:09:13):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 134 (18:09:13):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 135 (18:09:13):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 136 (18:09:13):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 137 (18:09:13):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 138 (18:09:13):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 139 (18:09:13):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 140 (18:09:13):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 141 (18:09:13):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 142 (18:09:13):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 143 (18:09:13):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 144 (18:09:13):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 145 (18:09:14):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 146 (18:09:14):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 147 (18:09:14):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 148 (18:09:14):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 149 (18:09:14):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 150 (18:09:14):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 151 (18:09:14):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 152 (18:09:14):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 153 (18:09:14):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 154 (18:09:14):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 155 (18:09:14):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 156 (18:09:14):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 157 (18:09:14):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 158 (18:09:14):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 159 (18:09:14):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 160 (18:09:14):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 161 (18:09:14):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 162 (18:09:14):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 163 (18:09:14):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 164 (18:09:14):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 165 (18:09:14):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 166 (18:09:14):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 167 (18:09:14):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 168 (18:09:14):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 169 (18:09:14):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 170 (18:09:14):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 171 (18:09:14):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 172 (18:09:15):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 173 (18:09:15):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 174 (18:09:15):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 175 (18:09:15):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 176 (18:09:15):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 177 (18:09:15):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 178 (18:09:15):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 179 (18:09:15):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 180 (18:09:15):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 181 (18:09:15):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 182 (18:09:15):: Get_Last Test: RELEASE TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 183 (18:09:15):: Get_Last Test: RELEASE TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 184 (18:09:15):: Get_Last Test: RELEASE TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 185 (18:09:15):: Get_Last Test: RELEASE TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 186 (18:09:15):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 187 (18:09:15):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 188 (18:09:15):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 189 (18:09:15):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 190 (18:09:15):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 191 (18:09:15):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 192 (18:09:15):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 193 (18:09:15):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 194 (18:09:15):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 195 (18:09:15):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 196 (18:09:15):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 197 (18:09:15):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 198 (18:09:15):: Get_Last Test: RELEASE TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 199 (18:09:15):: Get_Last Test: RELEASE TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 200 (18:09:15):: Get_Last Test: RELEASE TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 201 (18:09:15):: Get_Last Test: RELEASE TP:10004:7:2, TP Index: 4, Btn Index: 4
Let's run all 4 tests:Line 1 (18:10:22):: Get_Last Test: PUSH TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 2 (18:10:22):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 3 (18:10:23):: Get_Last Test: PUSH TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 4 (18:10:23):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 5 (18:10:23):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 6 (18:10:23):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 7 (18:10:23):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 8 (18:10:23):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 9 (18:10:24):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 10 (18:10:24):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 11 (18:10:24):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 12 (18:10:24):: Get_Last Test: PUSH TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 13 (18:10:24):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 14 (18:10:24):: Get_Last Test: PUSH TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 15 (18:10:24):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 16 (18:10:24):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 17 (18:10:24):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 18 (18:10:24):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 19 (18:10:25):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 20 (18:10:25):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 21 (18:10:25):: Get_Last Test: PUSH TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 22 (18:10:25):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 23 (18:10:25):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 24 (18:10:25):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 25 (18:10:25):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 26 (18:10:25):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 27 (18:10:25):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 28 (18:10:25):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 29 (18:10:25):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 30 (18:10:25):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 31 (18:10:25):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 32 (18:10:25):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 33 (18:10:25):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 34 (18:10:25):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 35 (18:10:26):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 36 (18:10:26):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 37 (18:10:26):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 38 (18:10:26):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 39 (18:10:26):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 40 (18:10:26):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 41 (18:10:26):: Get_Last Test: PUSH TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 42 (18:10:26):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 43 (18:10:26):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 44 (18:10:26):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 45 (18:10:26):: Get_Last Test: PUSH TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 46 (18:10:26):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 47 (18:10:26):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 48 (18:10:26):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 49 (18:10:26):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 50 (18:10:26):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 51 (18:10:26):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 52 (18:10:27):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 53 (18:10:27):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 54 (18:10:27):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 55 (18:10:27):: Get_Last Test: PUSH TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 56 (18:10:27):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 57 (18:10:27):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 58 (18:10:27):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 59 (18:10:27):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 60 (18:10:27):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 61 (18:10:27):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 62 (18:10:27):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 63 (18:10:27):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 64 (18:10:27):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 65 (18:10:27):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 66 (18:10:27):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 67 (18:10:27):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 68 (18:10:27):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 69 (18:10:27):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 70 (18:10:27):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 71 (18:10:27):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 72 (18:10:27):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 73 (18:10:27):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 74 (18:10:27):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 75 (18:10:27):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 76 (18:10:27):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 77 (18:10:27):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 78 (18:10:27):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 79 (18:10:28):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 80 (18:10:28):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 81 (18:10:28):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 82 (18:10:28):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 83 (18:10:28):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 84 (18:10:28):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 85 (18:10:28):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 86 (18:10:28):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 87 (18:10:28):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 88 (18:10:28):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 89 (18:10:28):: Get_Last Test: PUSH TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 90 (18:10:28):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 91 (18:10:28):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 92 (18:10:28):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 93 (18:10:28):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 94 (18:10:28):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 95 (18:10:28):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 96 (18:10:28):: Get_Last Test: PUSH TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 97 (18:10:28):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 98 (18:10:28):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 99 (18:10:28):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 100 (18:10:28):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 101 (18:10:28):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 102 (18:10:28):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 103 (18:10:28):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 104 (18:10:29):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 105 (18:10:29):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 106 (18:10:29):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 107 (18:10:29):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 108 (18:10:29):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 109 (18:10:29):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 110 (18:10:29):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 111 (18:10:29):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 112 (18:10:29):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 113 (18:10:29):: Get_Last Test: PUSH TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 114 (18:10:29):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 115 (18:10:29):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 116 (18:10:29):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 117 (18:10:29):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 118 (18:10:29):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 119 (18:10:29):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 120 (18:10:29):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 121 (18:10:29):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 122 (18:10:29):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 123 (18:10:29):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 124 (18:10:29):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 125 (18:10:29):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 126 (18:10:29):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 127 (18:10:29):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 128 (18:10:29):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 129 (18:10:29):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 130 (18:10:29):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 131 (18:10:29):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 132 (18:10:29):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 133 (18:10:29):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 134 (18:10:29):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 135 (18:10:29):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 136 (18:10:29):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 137 (18:10:29):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 138 (18:10:29):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 139 (18:10:30):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 140 (18:10:30):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 141 (18:10:30):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 142 (18:10:30):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 143 (18:10:30):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 144 (18:10:30):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 145 (18:10:30):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 146 (18:10:30):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 147 (18:10:30):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 148 (18:10:30):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 149 (18:10:30):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 150 (18:10:30):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 151 (18:10:30):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 152 (18:10:30):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 153 (18:10:30):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 154 (18:10:30):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 155 (18:10:30):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 156 (18:10:30):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 157 (18:10:30):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 158 (18:10:30):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 159 (18:10:30):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 160 (18:10:30):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 161 (18:10:30):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 162 (18:10:30):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 163 (18:10:30):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 164 (18:10:30):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 165 (18:10:30):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 166 (18:10:30):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 167 (18:10:30):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 168 (18:10:30):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 169 (18:10:30):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 170 (18:10:30):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 171 (18:10:30):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 172 (18:10:30):: Get_Last Test: PUSH TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 173 (18:10:30):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 174 (18:10:30):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 175 (18:10:31):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 176 (18:10:31):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 177 (18:10:31):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 178 (18:10:31):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 179 (18:10:31):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 180 (18:10:31):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 181 (18:10:31):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 182 (18:10:31):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 183 (18:10:31):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 184 (18:10:31):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 185 (18:10:31):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 186 (18:10:31):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 187 (18:10:31):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 188 (18:10:31):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 189 (18:10:31):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 190 (18:10:31):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 191 (18:10:31):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 192 (18:10:31):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 193 (18:10:31):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 194 (18:10:31):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 195 (18:10:31):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 196 (18:10:31):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 197 (18:10:31):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 198 (18:10:32):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 199 (18:10:32):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 200 (18:10:32):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 201 (18:10:32):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 202 (18:10:32):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 203 (18:10:32):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 204 (18:10:32):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 205 (18:10:32):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 206 (18:10:32):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 207 (18:10:32):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 208 (18:10:32):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 209 (18:10:32):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 210 (18:10:32):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 211 (18:10:32):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 212 (18:10:32):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 213 (18:10:32):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 214 (18:10:32):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 215 (18:10:32):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 216 (18:10:32):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 217 (18:10:32):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 218 (18:10:32):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 219 (18:10:32):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 220 (18:10:32):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 221 (18:10:32):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 222 (18:10:32):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 223 (18:10:32):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 224 (18:10:32):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 225 (18:10:32):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 226 (18:10:32):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 227 (18:10:32):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 228 (18:10:32):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 229 (18:10:32):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 230 (18:10:32):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 231 (18:10:32):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 232 (18:10:32):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 233 (18:10:32):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 234 (18:10:32):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 235 (18:10:32):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 236 (18:10:32):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 237 (18:10:32):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 238 (18:10:32):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 239 (18:10:32):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 240 (18:10:32):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 241 (18:10:32):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 242 (18:10:33):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 243 (18:10:33):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 244 (18:10:33):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 245 (18:10:33):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 246 (18:10:33):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 247 (18:10:33):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 248 (18:10:33):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 249 (18:10:33):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 250 (18:10:33):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 251 (18:10:33):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 252 (18:10:33):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 253 (18:10:33):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 254 (18:10:33):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 255 (18:10:33):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 256 (18:10:33):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 257 (18:10:33):: Get_Last Test: RELEASE TP:10001:6:2, TP Index: 1, Btn Index: 1 Line 258 (18:10:33):: Get_Last Test: RELEASE TP:10002:6:2, TP Index: 2, Btn Index: 2 Line 259 (18:10:33):: Get_Last Test: RELEASE TP:10003:6:2, TP Index: 3, Btn Index: 3 Line 260 (18:10:33):: Get_Last Test: RELEASE TP:10004:6:2, TP Index: 4, Btn Index: 4 Line 261 (18:10:33):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 262 (18:10:33):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 263 (18:10:33):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 264 (18:10:33):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 265 (18:10:33):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 266 (18:10:33):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 267 (18:10:33):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 268 (18:10:33):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 269 (18:10:33):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 270 (18:10:33):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 271 (18:10:33):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 272 (18:10:33):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 273 (18:10:33):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 274 (18:10:33):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 275 (18:10:33):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 276 (18:10:33):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 277 (18:10:33):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 278 (18:10:34):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 279 (18:10:34):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 280 (18:10:34):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 281 (18:10:34):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 282 (18:10:34):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 283 (18:10:34):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 284 (18:10:34):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 285 (18:10:34):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 286 (18:10:34):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 287 (18:10:34):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 288 (18:10:34):: Get_Last Test: RELEASE TP:10001:7:2, TP Index: 1, Btn Index: 1 Line 289 (18:10:34):: Get_Last Test: RELEASE TP:10002:7:2, TP Index: 2, Btn Index: 2 Line 290 (18:10:34):: Get_Last Test: RELEASE TP:10003:7:2, TP Index: 3, Btn Index: 3 Line 291 (18:10:34):: Get_Last Test: RELEASE TP:10004:7:2, TP Index: 4, Btn Index: 4 Line 292 (18:10:34):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 293 (18:10:34):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 294 (18:10:34):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 295 (18:10:34):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 296 (18:10:34):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 297 (18:10:34):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 298 (18:10:34):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 299 (18:10:34):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 300 (18:10:35):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 301 (18:10:35):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 302 (18:10:35):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 303 (18:10:35):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 304 (18:10:35):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 305 (18:10:35):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 306 (18:10:35):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 307 (18:10:35):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 308 (18:10:35):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4 Line 309 (18:10:35):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 310 (18:10:35):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 311 (18:10:35):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 312 (18:10:35):: Get_Last Test: RELEASE TP:10001:8:2, TP Index: 1, Btn Index: 1 Line 313 (18:10:35):: Get_Last Test: RELEASE TP:10002:8:2, TP Index: 2, Btn Index: 2 Line 314 (18:10:35):: Get_Last Test: RELEASE TP:10003:8:2, TP Index: 3, Btn Index: 3 Line 315 (18:10:35):: Get_Last Test: RELEASE TP:10004:8:2, TP Index: 4, Btn Index: 4
As you can see it works freakin great! Tracks the last pushed or currently held button for each TP in an event table, while all are running at the same time. Multiple holds in each event table and multiple holds in several event tables.
I can't imagine there being any issues using this now in a hold.
Good job guys!!!!!!!!!!




This deserves 5 smiley faces. -
That is a beautiful thing
-
I'll definitely need to try this out next week, and test to my liking. Your results look good & promising - but this is one of those things that I need to test thoroughly before completely jumping on board, after all, we're talking about major code changes and ditching parts of code.
Looks good though - this could be a very nice thing! -
I'll definitely need to try this out next week, and test to my liking. Your results look good & promising - but this is one of those things that I need to test thoroughly before completely jumping on board, after all, we're talking about major code changes and ditching parts of code.
Looks good though - this could be a very nice thing!
Yeah, me too. To me this sounds like a 'going forward' type thing. Not an 'updating the old stuff all at once' thing. -
Looking at the test results and realizing I used BUTTON.INPUT.DEVICE in the hold to determine which TP was executing the hold that was currently firing made me wonder. I wouldn't think the the B.I.C. would return the correct TP since that is also a global value that contains the last B.I.C. value for the last TP that issued an event. Makes me think they completely restructured how the holds work and the holds are processed elsewhere in code and fire off just like a DO_PUSH but maybe instead a secret command DO_HOLD (so it runs the hold code) and now actually creates an event like a push or release so that GET_LAST is actually getting the last event that fired and so is B.I.D. So they didn't change the way GET_LAST works in a hold they changed the way the HOLD works and it's now an event driven player like PUSH & RELEASE as opposed to the "WAIT" driven method it was.
Does that make any sense? -
vining, could you do something like so?
DEFINE_DEVICE dvTP1 = 10001:01:00 dvTP2 = 10002:01:00 DEFINE_CONSTANT DEV dv_TP[]= { dvTP1 ,dvTP2 } INTEGER nVOL_BTNS[]= { 24 ,25 ,26 } DEFINE_VARIABLE INTEGER nVOLUME_LEVEL[2] = {50,50}; BUTTON_EVENT[dv_TP,nVOL_BTNS] { PUSH: { STACK_VAR INTEGER nPNL; STACK_VAR INTEGER nIND; nPNL = GET_LAST(dv_TP); nIND = GET_LAST(nVOL_BTNS); SEND_STRING 0, "'PUSH: PANEL (',ITOA(nPNL),') - BUTTON (',ITOA(nIND),')'"; } HOLD[2,REPEAT] { STACK_VAR INTEGER nPNL; STACK_VAR INTEGER nIND; nPNL = GET_LAST(dv_TP); nIND = GET_LAST(nVOL_BTNS); SWITCH(nIND) { CASE 1:{nVOLUME_LEVEL[nPNL]++;} CASE 2:{nVOLUME_LEVEL[nPNL]--} } SEND_STRING 0,"'PANEL = ',ITOA(nPNL),' - BUTTON = ',ITOA(nIND)"; SEND_STRING 0,"'PANEL ',ITOA(nPNL),' VOLUME = ',ITOA(nVOLUME_LEVEL[nPNL])"; SEND_STRING 0,"' PANEL ',ITOA(1),' VOLUME = ',ITOA(nVOLUME_LEVEL[1])"; SEND_STRING 0,"' PANEL ',ITOA(2),' VOLUME = ',ITOA(nVOLUME_LEVEL[2])"; } }Obviously untested, but the idea is to see if the correct variables are incremented & decremented. In order to see - have one panel go up, the other go down. -
I'll take a look see & run it when I get back.
-
DEFINE_VARIABLE VOLATILE INTEGER nRunHoldTest1 = 0 ; VOLATILE INTEGER nRunHoldTest2 = 0 ; VOLATILE INTEGER nRunHoldTest3 = 0 ; VOLATILE INTEGER nHold_BtnArry[] = {1,2,3,4,5,6,7,8,9,10} VOLATILE INTEGER nTest1_Value[] = {1100,2100,3100,4100} VOLATILE INTEGER nTest2_Value[] = {1200,2200,3200,4200} VOLATILE INTEGER nTest3_Value[] = {1300,2300,3300,4300} DEFINE_EVENT // BUTTON_EVENT[dvTP_TestArry_1,nHold_BtnArry] { PUSH: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_1) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'PUSH TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx),', Value: ',itoa(nTest1_Value[nTPIndx])") ; } HOLD[5,REPEAT]: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; LOCAL_VAR INTEGER nTestCount[4] ; LOCAL_VAR INTEGER nDirection[4] ; nTPIndx = GET_LAST(dvTP_TestArry_1) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'HOLD TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx),', Value: ',itoa(nTest1_Value[nTPIndx])") ; if(nTestCount[nTPIndx] < 10 && !nDirection[nTPIndx]) { nTestCount[nTPIndx]++ ; nTest1_Value[nTPIndx]++ ; } else if(nTestCount[nTPIndx]) { nDirection[nTPIndx] = 1 ; nTestCount[nTPIndx]-- ; nTest1_Value[nTPIndx]-- ; if(!nTestCount[nTPIndx]) { nDirection[nTPIndx] = 0 ; } } } RELEASE: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_1) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'RELEASE TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx),', Value: ',itoa(nTest1_Value[nTPIndx])") ; } } BUTTON_EVENT[dvTP_TestArry_2,nHold_BtnArry] { PUSH: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_2) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'PUSH TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx),', Value: ',itoa(nTest2_Value[nTPIndx])") ; } HOLD[5,REPEAT]: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; LOCAL_VAR INTEGER nTestCount[4] ; LOCAL_VAR INTEGER nDirection[4] ; nTPIndx = GET_LAST(dvTP_TestArry_2) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'HOLD TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx),', Value: ',itoa(nTest2_Value[nTPIndx])") ; if(nTestCount[nTPIndx] < 10 && !nDirection[nTPIndx]) { nTestCount[nTPIndx]++ ; nTest2_Value[nTPIndx]++ ; } else if(nTestCount[nTPIndx]) { nDirection[nTPIndx] = 1 ; nTestCount[nTPIndx]-- ; nTest2_Value[nTPIndx]-- ; if(!nTestCount[nTPIndx]) { nDirection[nTPIndx] = 0 ; } } } RELEASE: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_2) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'RELEASE TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx),', Value: ',itoa(nTest2_Value[nTPIndx])") ; nTest3_Value[nTPIndx]++ ; } } BUTTON_EVENT[dvTP_TestArry_3,nHold_BtnArry] { PUSH: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; LOCAL_VAR INTEGER nDirection ; nTPIndx = GET_LAST(dvTP_TestArry_3) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'PUSH TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx),', Value: ',itoa(nTest3_Value[nTPIndx])") ; } HOLD[5,REPEAT]: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; LOCAL_VAR INTEGER nTestCount[4] ; LOCAL_VAR INTEGER nDirection[4] ; nTPIndx = GET_LAST(dvTP_TestArry_3) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'HOLD TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx),', Value: ',itoa(nTest3_Value[nTPIndx])") ; if(nTestCount[nTPIndx] < 10 && !nDirection[nTPIndx]) { nTestCount[nTPIndx]++ ; nTest3_Value[nTPIndx]++ ; } else if(nTestCount[nTPIndx]) { nDirection[nTPIndx] = 1 ; nTestCount[nTPIndx]-- ; nTest3_Value[nTPIndx]-- ; if(!nTestCount[nTPIndx]) { nDirection[nTPIndx] = 0 ; } } } RELEASE: { STACK_VAR INTEGER nTPIndx ; STACK_VAR INTEGER nBtnIndx ; nTPIndx = GET_LAST(dvTP_TestArry_3) ; nBtnIndx = GET_LAST(nHold_BtnArry) ; fnGetLastDeBug("'RELEASE TP:',fnDEV_TO_STRING(BUTTON.INPUT.DEVICE),', TP Index: ',itoa(nTPIndx),', Btn Index: ',itoa(nBtnIndx),', Value: ',itoa(nTest3_Value[nTPIndx])") ; } } DEFINE_PROGRAM if(nRunHoldTest1) { CANCEL_WAIT 'RUN_TEST_1' ; CANCEL_WAIT 'END_TEST_1' ; DO_PUSH_TIMED(dvTP_TestArry_1[1],nHold_BtnArry[1],DO_PUSH_TIMED_INFINITE) ; WAIT 10 'RUN_TEST_1' { DO_PUSH_TIMED(dvTP_TestArry_1[2],nHold_BtnArry[2],DO_PUSH_TIMED_INFINITE) ; WAIT 10 'RUN_TEST_1' { DO_PUSH_TIMED(dvTP_TestArry_1[3],nHold_BtnArry[3],DO_PUSH_TIMED_INFINITE) ; WAIT 10 'RUN_TEST_1' { DO_PUSH_TIMED(dvTP_TestArry_1[4],nHold_BtnArry[4],DO_PUSH_TIMED_INFINITE) ; } } } WAIT 100 'END_TEST_1' { DO_RELEASE(dvTP_TestArry_1[1],nHold_BtnArry[1]) ; DO_RELEASE(dvTP_TestArry_1[2],nHold_BtnArry[2]) ; DO_RELEASE(dvTP_TestArry_1[3],nHold_BtnArry[3]) ; DO_RELEASE(dvTP_TestArry_1[4],nHold_BtnArry[4]) ; } nRunHoldTest1 = 0 ; } if(nRunHoldTest2) { CANCEL_WAIT 'RUN_TEST_2' ; CANCEL_WAIT 'END_TEST_2' ; DO_PUSH_TIMED(dvTP_TestArry_2[1],nHold_BtnArry[1],DO_PUSH_TIMED_INFINITE) ; WAIT 10 'RUN_TEST_2' { DO_PUSH_TIMED(dvTP_TestArry_2[2],nHold_BtnArry[2],DO_PUSH_TIMED_INFINITE) ; WAIT 10 'RUN_TEST_2' { DO_PUSH_TIMED(dvTP_TestArry_2[3],nHold_BtnArry[3],DO_PUSH_TIMED_INFINITE) ; WAIT 10 'RUN_TEST_2' { DO_PUSH_TIMED(dvTP_TestArry_2[4],nHold_BtnArry[4],DO_PUSH_TIMED_INFINITE) ; } } } WAIT 100 'END_TEST_2' { DO_RELEASE(dvTP_TestArry_2[1],nHold_BtnArry[1]) ; DO_RELEASE(dvTP_TestArry_2[2],nHold_BtnArry[2]) ; DO_RELEASE(dvTP_TestArry_2[3],nHold_BtnArry[3]) ; DO_RELEASE(dvTP_TestArry_2[4],nHold_BtnArry[4]) ; } nRunHoldTest2 = 0 ; } if(nRunHoldTest3) { CANCEL_WAIT 'RUN_TEST_3' ; CANCEL_WAIT 'END_TEST_3' ; DO_PUSH_TIMED(dvTP_TestArry_3[1],nHold_BtnArry[1],DO_PUSH_TIMED_INFINITE) ; WAIT 10 'RUN_TEST_3' { DO_PUSH_TIMED(dvTP_TestArry_3[2],nHold_BtnArry[2],DO_PUSH_TIMED_INFINITE) ; WAIT 10 'RUN_TEST_3' { DO_PUSH_TIMED(dvTP_TestArry_3[3],nHold_BtnArry[3],DO_PUSH_TIMED_INFINITE) ; WAIT 10 'RUN_TEST_3' { DO_PUSH_TIMED(dvTP_TestArry_3[4],nHold_BtnArry[4],DO_PUSH_TIMED_INFINITE) ; } } } WAIT 100 'END_TEST_3' { DO_RELEASE(dvTP_TestArry_3[1],nHold_BtnArry[1]) ; DO_RELEASE(dvTP_TestArry_3[2],nHold_BtnArry[2]) ; DO_RELEASE(dvTP_TestArry_3[3],nHold_BtnArry[3]) ; DO_RELEASE(dvTP_TestArry_3[4],nHold_BtnArry[4]) ; } nRunHoldTest3 = 0 ; }
Results when running test 1:Line 1 (16:16:59):: Get_Last Test: PUSH TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1100 Line 2 (16:16:59):: Get_Last Test: PUSH TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2100 Line 3 (16:16:59):: Get_Last Test: PUSH TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3100 Line 4 (16:16:59):: Get_Last Test: PUSH TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4100 Line 5 (16:16:59):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1100 Line 6 (16:16:59):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2100 Line 7 (16:17:00):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3100 Line 8 (16:17:00):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4100 Line 9 (16:17:00):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1101 Line 10 (16:17:00):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2101 Line 11 (16:17:00):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3101 Line 12 (16:17:00):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4101 Line 13 (16:17:00):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1102 Line 14 (16:17:00):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2102 Line 15 (16:17:01):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3102 Line 16 (16:17:01):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4102 Line 17 (16:17:01):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1103 Line 18 (16:17:01):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2103 Line 19 (16:17:01):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3103 Line 20 (16:17:01):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4103 Line 21 (16:17:01):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1104 Line 22 (16:17:01):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2104 Line 23 (16:17:02):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3104 Line 24 (16:17:02):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4104 Line 25 (16:17:02):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1105 Line 26 (16:17:02):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2105 Line 27 (16:17:02):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3105 Line 28 (16:17:02):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4105 Line 29 (16:17:02):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1106 Line 30 (16:17:02):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2106 Line 31 (16:17:03):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3106 Line 32 (16:17:03):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4106 Line 33 (16:17:03):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1107 Line 34 (16:17:03):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2107 Line 35 (16:17:03):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3107 Line 36 (16:17:03):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4107 Line 37 (16:17:03):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1108 Line 38 (16:17:03):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2108 Line 39 (16:17:04):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3108 Line 40 (16:17:04):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4108 Line 41 (16:17:04):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1109 Line 42 (16:17:04):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2109 Line 43 (16:17:04):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3109 Line 44 (16:17:04):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4109 Line 45 (16:17:04):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1110 Line 46 (16:17:04):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2110 Line 47 (16:17:05):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3110 Line 48 (16:17:05):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4110 Line 49 (16:17:05):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1109 Line 50 (16:17:05):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2109 Line 51 (16:17:05):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3109 Line 52 (16:17:05):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4109 Line 53 (16:17:05):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1108 Line 54 (16:17:05):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2108 Line 55 (16:17:06):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3108 Line 56 (16:17:06):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4108 Line 57 (16:17:06):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1107 Line 58 (16:17:06):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2107 Line 59 (16:17:06):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3107 Line 60 (16:17:06):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4107 Line 61 (16:17:06):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1106 Line 62 (16:17:06):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2106 Line 63 (16:17:07):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3106 Line 64 (16:17:07):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4106 Line 65 (16:17:07):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1105 Line 66 (16:17:07):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2105 Line 67 (16:17:07):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3105 Line 68 (16:17:07):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4105 Line 69 (16:17:07):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1104 Line 70 (16:17:07):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2104 Line 71 (16:17:08):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3104 Line 72 (16:17:08):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4104 Line 73 (16:17:08):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1103 Line 74 (16:17:08):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2103 Line 75 (16:17:08):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3103 Line 76 (16:17:08):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4103 Line 77 (16:17:08):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1102 Line 78 (16:17:08):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2102 Line 79 (16:17:09):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3102 Line 80 (16:17:09):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4102 Line 81 (16:17:09):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1101 Line 82 (16:17:09):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2101 Line 83 (16:17:09):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3101 Line 84 (16:17:09):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4101 Line 85 (16:17:09):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1100 Line 86 (16:17:09):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2100 Line 87 (16:17:10):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3100 Line 88 (16:17:10):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4100 Line 89 (16:17:10):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1101 Line 90 (16:17:10):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2101 Line 91 (16:17:10):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3101 Line 92 (16:17:10):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4101 Line 93 (16:17:10):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1102 Line 94 (16:17:10):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2102 Line 95 (16:17:11):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3102 Line 96 (16:17:11):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4102 Line 97 (16:17:11):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1103 Line 98 (16:17:11):: Get_Last Test: RELEASE TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1104 Line 99 (16:17:11):: Get_Last Test: RELEASE TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2103 Line 100 (16:17:11):: Get_Last Test: RELEASE TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3103 Line 101 (16:17:11):: Get_Last Test: RELEASE TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4103
Running the 3 test at the same time:Line 1 (16:32:52):: Get_Last Test: PUSH TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1100 Line 2 (16:32:52):: Get_Last Test: PUSH TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2100 Line 3 (16:32:52):: Get_Last Test: PUSH TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3100 Line 4 (16:32:52):: Get_Last Test: PUSH TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4100 Line 5 (16:32:52):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1100 Line 6 (16:32:52):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2100 Line 7 (16:32:52):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3100 Line 8 (16:32:53):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4100 Line 9 (16:32:53):: Get_Last Test: PUSH TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1200 Line 10 (16:32:53):: Get_Last Test: PUSH TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2200 Line 11 (16:32:53):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1101 Line 12 (16:32:53):: Get_Last Test: PUSH TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3200 Line 13 (16:32:53):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2101 Line 14 (16:32:53):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3101 Line 15 (16:32:53):: Get_Last Test: PUSH TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4200 Line 16 (16:32:53):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4101 Line 17 (16:32:53):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1200 Line 18 (16:32:53):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2200 Line 19 (16:32:53):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1102 Line 20 (16:32:53):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3200 Line 21 (16:32:53):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2102 Line 22 (16:32:53):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3102 Line 23 (16:32:54):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4200 Line 24 (16:32:54):: Get_Last Test: PUSH TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1300 Line 25 (16:32:54):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4102 Line 26 (16:32:54):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1201 Line 27 (16:32:54):: Get_Last Test: PUSH TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2300 Line 28 (16:32:54):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2201 Line 29 (16:32:54):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1103 Line 30 (16:32:54):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3201 Line 31 (16:32:54):: Get_Last Test: PUSH TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3300 Line 32 (16:32:54):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2103 Line 33 (16:32:54):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3103 Line 34 (16:32:54):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4201 Line 35 (16:32:54):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4103 Line 36 (16:32:54):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1300 Line 37 (16:32:54):: Get_Last Test: PUSH TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4300 Line 38 (16:32:54):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1202 Line 39 (16:32:54):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2202 Line 40 (16:32:54):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1104 Line 41 (16:32:54):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2300 Line 42 (16:32:54):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3202 Line 43 (16:32:54):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3300 Line 44 (16:32:54):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2104 Line 45 (16:32:55):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3104 Line 46 (16:32:55):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4104 Line 47 (16:32:55):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4202 Line 48 (16:32:55):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1301 Line 49 (16:32:55):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4300 Line 50 (16:32:55):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1203 Line 51 (16:32:55):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1105 Line 52 (16:32:55):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2203 Line 53 (16:32:55):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2301 Line 54 (16:32:55):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2105 Line 55 (16:32:55):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3203 Line 56 (16:32:55):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3301 Line 57 (16:32:55):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3105 Line 58 (16:32:55):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4203 Line 59 (16:32:55):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1302 Line 60 (16:32:55):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4105 Line 61 (16:32:55):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4301 Line 62 (16:32:55):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1204 Line 63 (16:32:55):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2302 Line 64 (16:32:55):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2204 Line 65 (16:32:55):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1106 Line 66 (16:32:55):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2106 Line 67 (16:32:55):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3204 Line 68 (16:32:55):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3302 Line 69 (16:32:55):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3106 Line 70 (16:32:56):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4106 Line 71 (16:32:56):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4204 Line 72 (16:32:56):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1303 Line 73 (16:32:56):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4302 Line 74 (16:32:56):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1205 Line 75 (16:32:56):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1107 Line 76 (16:32:56):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2205 Line 77 (16:32:56):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2303 Line 78 (16:32:56):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3205 Line 79 (16:32:56):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3303 Line 80 (16:32:56):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2107 Line 81 (16:32:56):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3107 Line 82 (16:32:56):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4107 Line 83 (16:32:56):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4205 Line 84 (16:32:56):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1304 Line 85 (16:32:56):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4303 Line 86 (16:32:56):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1206 Line 87 (16:32:56):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1108 Line 88 (16:32:56):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2206 Line 89 (16:32:56):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3206 Line 90 (16:32:56):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2304 Line 91 (16:32:56):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3304 Line 92 (16:32:56):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2108 Line 93 (16:32:57):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3108 Line 94 (16:32:57):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4206 Line 95 (16:32:57):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1305 Line 96 (16:32:57):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4108 Line 97 (16:32:57):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4304 Line 98 (16:32:57):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1207 Line 99 (16:32:57):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2207 Line 100 (16:32:57):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2305 Line 101 (16:32:57):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1109 Line 102 (16:32:57):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2109 Line 103 (16:32:57):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3207 Line 104 (16:32:57):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3305 Line 105 (16:32:57):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3109 Line 106 (16:32:57):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4109 Line 107 (16:32:57):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4207 Line 108 (16:32:57):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1306 Line 109 (16:32:57):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4305 Line 110 (16:32:57):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1208 Line 111 (16:32:57):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1110 Line 112 (16:32:57):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2208 Line 113 (16:32:57):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3208 Line 114 (16:32:57):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2306 Line 115 (16:32:57):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3306 Line 116 (16:32:57):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2110 Line 117 (16:32:58):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3110 Line 118 (16:32:58):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4208 Line 119 (16:32:58):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1307 Line 120 (16:32:58):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4110 Line 121 (16:32:58):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4306 Line 122 (16:32:58):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1209 Line 123 (16:32:58):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2209 Line 124 (16:32:58):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2307 Line 125 (16:32:58):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1109 Line 126 (16:32:58):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2109 Line 127 (16:32:58):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3209 Line 128 (16:32:58):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3307 Line 129 (16:32:58):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3109 Line 130 (16:32:58):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4109 Line 131 (16:32:58):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4209 Line 132 (16:32:58):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1308 Line 133 (16:32:58):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4307 Line 134 (16:32:58):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1210 Line 135 (16:32:58):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1108 Line 136 (16:32:58):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2210 Line 137 (16:32:58):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2308 Line 138 (16:32:58):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3210 Line 139 (16:32:58):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3308 Line 140 (16:32:58):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2108 Line 141 (16:32:59):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3108 Line 142 (16:32:59):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4210 Line 143 (16:32:59):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1309 Line 144 (16:32:59):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4108 Line 145 (16:32:59):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4308 Line 146 (16:32:59):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1209 Line 147 (16:32:59):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2309 Line 148 (16:32:59):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1107 Line 149 (16:32:59):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2209 Line 150 (16:32:59):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2107 Line 151 (16:32:59):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3209 Line 152 (16:32:59):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3309 Line 153 (16:32:59):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3107 Line 154 (16:32:59):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4107 Line 155 (16:32:59):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4209 Line 156 (16:32:59):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1310 Line 157 (16:32:59):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4309 Line 158 (16:32:59):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1208 Line 159 (16:32:59):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1106 Line 160 (16:32:59):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2208 Line 161 (16:32:59):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3208 Line 162 (16:32:59):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2310 Line 163 (16:32:59):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2106 Line 164 (16:32:59):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3310 Line 165 (16:33:00):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3106 Line 166 (16:33:00):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4106 Line 167 (16:33:00):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4208 Line 168 (16:33:00):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1309 Line 169 (16:33:00):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4310 Line 170 (16:33:00):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1207 Line 171 (16:33:00):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1105 Line 172 (16:33:00):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2207 Line 173 (16:33:00):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3207 Line 174 (16:33:00):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2309 Line 175 (16:33:00):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2105 Line 176 (16:33:00):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3309 Line 177 (16:33:00):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3105 Line 178 (16:33:00):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4105 Line 179 (16:33:00):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4207 Line 180 (16:33:00):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1308 Line 181 (16:33:00):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4309 Line 182 (16:33:00):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1206 Line 183 (16:33:00):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1104 Line 184 (16:33:00):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2206 Line 185 (16:33:00):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3206 Line 186 (16:33:00):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2308 Line 187 (16:33:00):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3308 Line 188 (16:33:00):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2104 Line 189 (16:33:01):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3104 Line 190 (16:33:01):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4104 Line 191 (16:33:01):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4206 Line 192 (16:33:01):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1307 Line 193 (16:33:01):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4308 Line 194 (16:33:01):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1205 Line 195 (16:33:01):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1103 Line 196 (16:33:01):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2205 Line 197 (16:33:01):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3205 Line 198 (16:33:01):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2307 Line 199 (16:33:01):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3307 Line 200 (16:33:01):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2103 Line 201 (16:33:01):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3103 Line 202 (16:33:01):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4205 Line 203 (16:33:01):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4103 Line 204 (16:33:01):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1306 Line 205 (16:33:01):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4307 Line 206 (16:33:01):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1204 Line 207 (16:33:01):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2204 Line 208 (16:33:01):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2306 Line 209 (16:33:01):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1102 Line 210 (16:33:01):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2102 Line 211 (16:33:01):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3204 Line 212 (16:33:01):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3306 Line 213 (16:33:01):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3102 Line 214 (16:33:02):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4102 Line 215 (16:33:02):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4204 Line 216 (16:33:02):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1305 Line 217 (16:33:02):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4306 Line 218 (16:33:02):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1203 Line 219 (16:33:02):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1101 Line 220 (16:33:02):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2203 Line 221 (16:33:02):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2305 Line 222 (16:33:02):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3203 Line 223 (16:33:02):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2101 Line 224 (16:33:02):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3305 Line 225 (16:33:02):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3101 Line 226 (16:33:02):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4101 Line 227 (16:33:02):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4203 Line 228 (16:33:02):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1304 Line 229 (16:33:02):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4305 Line 230 (16:33:02):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1202 Line 231 (16:33:02):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1100 Line 232 (16:33:02):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2202 Line 233 (16:33:02):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3202 Line 234 (16:33:02):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2304 Line 235 (16:33:02):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3304 Line 236 (16:33:02):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2100 Line 237 (16:33:03):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3100 Line 238 (16:33:03):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4100 Line 239 (16:33:03):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4202 Line 240 (16:33:03):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1303 Line 241 (16:33:03):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4304 Line 242 (16:33:03):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1201 Line 243 (16:33:03):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1101 Line 244 (16:33:03):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2201 Line 245 (16:33:03):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3201 Line 246 (16:33:03):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2303 Line 247 (16:33:03):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2101 Line 248 (16:33:03):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3303 Line 249 (16:33:03):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3101 Line 250 (16:33:03):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4101 Line 251 (16:33:03):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4201 Line 252 (16:33:03):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1302 Line 253 (16:33:03):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4303 Line 254 (16:33:03):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1200 Line 255 (16:33:03):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1102 Line 256 (16:33:03):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2200 Line 257 (16:33:03):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3200 Line 258 (16:33:03):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2302 Line 259 (16:33:03):: Get_Last Test: HOLD TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2102 Line 260 (16:33:03):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3302 Line 261 (16:33:04):: Get_Last Test: HOLD TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3102 Line 262 (16:33:04):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4200 Line 263 (16:33:04):: Get_Last Test: HOLD TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4102 Line 264 (16:33:04):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1301 Line 265 (16:33:04):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4302 Line 266 (16:33:04):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1201 Line 267 (16:33:04):: Get_Last Test: HOLD TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1103 Line 268 (16:33:04):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2201 Line 269 (16:33:04):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2301 Line 270 (16:33:04):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3201 Line 271 (16:33:04):: Get_Last Test: RELEASE TP:10001:6:2, TP Index: 1, Btn Index: 1, Value: 1104 Line 272 (16:33:04):: Get_Last Test: RELEASE TP:10002:6:2, TP Index: 2, Btn Index: 2, Value: 2103 Line 273 (16:33:04):: Get_Last Test: RELEASE TP:10003:6:2, TP Index: 3, Btn Index: 3, Value: 3103 Line 274 (16:33:04):: Get_Last Test: HOLD TP:10003:8:2, TP Index: 3, Btn Index: 3, Value: 3301 Line 275 (16:33:04):: Get_Last Test: RELEASE TP:10004:6:2, TP Index: 4, Btn Index: 4, Value: 4103 Line 276 (16:33:04):: Get_Last Test: HOLD TP:10001:7:2, TP Index: 1, Btn Index: 1, Value: 1202 Line 277 (16:33:04):: Get_Last Test: HOLD TP:10004:7:2, TP Index: 4, Btn Index: 4, Value: 4201 Line 278 (16:33:04):: Get_Last Test: HOLD TP:10001:8:2, TP Index: 1, Btn Index: 1, Value: 1300 Line 279 (16:33:04):: Get_Last Test: HOLD TP:10004:8:2, TP Index: 4, Btn Index: 4, Value: 4301 Line 280 (16:33:04):: Get_Last Test: HOLD TP:10002:8:2, TP Index: 2, Btn Index: 2, Value: 2300 Line 281 (16:33:04):: Get_Last Test: HOLD TP:10002:7:2, TP Index: 2, Btn Index: 2, Value: 2202 Line 282 (16:33:04):: Get_Last Test: HOLD TP:10003:7:2, TP Index: 3, Btn Index: 3, Value: 3202
VALUE KEY:_____
TP 10001 = 1xxx
TP 10002 = 2xxx
TP 10003 = 3xxx
TP 10004 = 4xxx
TEST 1 = x1xx
TEST 2 = x2xx
TEST 3 = x3xx
TEST 4 = x4xx
VALUES = xx?? (where ?? = some value) -
Thumbs up!
Okay, after a long day - I've finally put this to test. One of the reasons why I abandoned HOLD statements in code (unless it was for a single panel only) was the fact that if one panel was HOLDing, and another panel came in - the GET_LAST values were of that of the last panel that entered.
There was a work around posted here: http://www.amxforums.com/showpost.php?p=39440&postcount=23, this worked perfectly and perhaps would be considered a "more elegant" approach. Because it worked, this has been the approach I've taken over the past several years.
Before this firmware, the following code would choke.BUTTON_EVENT[dv_TP,nVOLUME_BTNS] { PUSH: { STACK_VAR INTEGER nPNL STACK_VAR INTEGER nAV_Zone STACK_VAR INTEGER nIND; nIND = GET_LAST(nVOLUME_BTNS); nPNL = GET_LAST(dv_TP) nAV_Zone = nPNL_AV[nPNL] // ASSIGN CURRENT AV ZONE IF (nAV_ZONE_SOURCE[nAV_Zone] AND (AudioZone[nAV_Zone].Ramp == 0)) { AudioZone[nAV_Zone].Ramp = nIND ON[BUTTON.INPUT] fnADJUST_VOLUME(nAV_Zone,AudioZone[nAV_Zone].Ramp) SWITCH(nIND) { CASE 1:SEND_STRING 0,"'Zone = ',ITOA(nAV_Zone),' :: Volume Up'"; CASE 2:SEND_STRING 0,"'Zone = ',ITOA(nAV_Zone),' :: Volume Down'"; CASE 3:SEND_STRING 0,"'Zone = ',ITOA(nAV_Zone),' :: Volume Mute'"; } } } HOLD[2,REPEAT]: { STACK_VAR INTEGER nPNL STACK_VAR INTEGER nIND; STACK_VAR INTEGER nAV_Zone nIND = GET_LAST(nVOLUME_BTNS); nPNL = GET_LAST(dv_TP) nAV_Zone = nPNL_AV[nPNL] // ASSIGN CURRENT AV ZONE IF(BUTTON.HOLDTIME > 5) { IF(nIND != 3) { fnADJUST_VOLUME(nAV_Zone,AudioZone[nAV_Zone].Ramp) SWITCH(nIND) { CASE 1:SEND_STRING 0,"'Zone = ',ITOA(nAV_Zone),' :: Volume Up'"; CASE 2:SEND_STRING 0,"'Zone = ',ITOA(nAV_Zone),' :: Volume Down'"; } } } } RELEASE: { STACK_VAR INTEGER nPNL STACK_VAR INTEGER nIND; STACK_VAR INTEGER nAV_Zone nIND = GET_LAST(nVOLUME_BTNS); nPNL = GET_LAST(dv_TP) nAV_Zone = nPNL_AV[nPNL] // ASSIGN CURRENT AV ZONE AudioZone[nAV_Zone].Ramp = 0; OFF[BUTTON.INPUT]; } }
However, now it works perfectly. Here are the results when two panels start to HOLD (panel one volumes up, panel two volumes down.) This snippet here shows that it works with two panels from one array and two different buttons from another array.
Note: Tested on an NI-700Line 1 (21:09:53.481):: Zone = 14 :: Volume Down Line 2 (21:09:53.681):: Zone = 14 :: Volume Down Line 3 (21:09:53.883):: Zone = 14 :: Volume Down Line 4 (21:09:54.082):: Zone = 14 :: Volume Down Line 5 (21:09:54.283):: Zone = 14 :: Volume Down Line 6 (21:10:00.556):: Zone = 40 :: Volume Up Line 7 (21:10:00.749):: Zone = 40 :: Volume Up Line 8 (21:10:00.949):: Zone = 40 :: Volume Up Line 9 (21:10:01.150):: Zone = 40 :: Volume Up Line 10 (21:10:01.350):: Zone = 40 :: Volume Up Line 11 (21:10:04.073):: Zone = 14 :: Volume Down Line 12 (21:10:04.275):: Zone = 14 :: Volume Down Line 13 (21:10:04.474):: Zone = 14 :: Volume Down Line 14 (21:10:04.675):: Zone = 14 :: Volume Down Line 15 (21:10:04.735):: Zone = 40 :: Volume Up Line 16 (21:10:04.875):: Zone = 14 :: Volume Down Line 17 (21:10:04.942):: Zone = 40 :: Volume Up Line 18 (21:10:05.076):: Zone = 14 :: Volume Down Line 19 (21:10:05.143):: Zone = 40 :: Volume Up Line 20 (21:10:05.276):: Zone = 14 :: Volume Down Line 21 (21:10:05.327):: Zone = 40 :: Volume Up Line 22 (21:10:05.477):: Zone = 14 :: Volume Down Line 23 (21:10:05.527):: Zone = 40 :: Volume Up Line 24 (21:10:05.677):: Zone = 14 :: Volume Down Line 25 (21:10:05.728):: Zone = 40 :: Volume Up Line 26 (21:10:05.878):: Zone = 14 :: Volume Down Line 27 (21:10:05.930):: Zone = 40 :: Volume Up Line 28 (21:10:06.078):: Zone = 14 :: Volume Down Line 29 (21:10:06.129):: Zone = 40 :: Volume Up Line 30 (21:10:06.279):: Zone = 14 :: Volume Down Line 31 (21:10:06.329):: Zone = 40 :: Volume Up Line 32 (21:10:06.479):: Zone = 14 :: Volume Down Line 33 (21:10:06.530):: Zone = 40 :: Volume Up Line 34 (21:10:06.680):: Zone = 14 :: Volume Down Line 35 (21:10:06.731):: Zone = 40 :: Volume Up Line 36 (21:10:06.880):: Zone = 14 :: Volume Down Line 37 (21:10:06.931):: Zone = 40 :: Volume Up Line 38 (21:10:07.081):: Zone = 14 :: Volume Down Line 39 (21:10:07.133):: Zone = 40 :: Volume Up Line 40 (21:10:07.281):: Zone = 14 :: Volume Down Line 41 (21:10:07.332):: Zone = 40 :: Volume Up Line 42 (21:10:07.482):: Zone = 14 :: Volume Down Line 43 (21:10:07.532):: Zone = 40 :: Volume Up Line 44 (21:10:07.682):: Zone = 14 :: Volume Down Line 45 (21:10:07.733):: Zone = 40 :: Volume Up Line 46 (21:10:07.883):: Zone = 14 :: Volume Down
On line one, panel 2 volumed down alone. On line six, panel 1 volumed up alone. On line 11, panel 2 volumed down until line 15 when panel 1 joined going in the opposite direction.
This works how I expected GET_LAST to work in a HOLD, though never has until now. I plan on using this in my upcoming "very large" job. I of course will have a backup plan should this not work for whatever reason, but I do not expect having to call up "Plan B."
Kudos goes to the firmware engineers at AMX. I have not tested any other "fixes" or "features" of this new firmware, so it might be a little early to say it's perfect - but this alone has me sold until (hopefully not) a "show stopper" is found (highly unlikely.)
Next up: GET_LAST for a TIMELINE_EVENT.
-
Nice to see it put to the test and pass. I have always used get_last in all my code with holds. I only realized that it didn't work quite right while doing a large project where each panel could control every source. Fortunately it wasn't a significant enough bug for a client to notice but its good to know that upgrading to the new firmware will clear this up at last. Someone at AMX is listening

Paul -
Listening? Uh, what did you say? Just kidding. This one has always bugged me too. Glad we could help.
-
Listening? Uh, what did you say? Just kidding. This one has always bugged me too. Glad we could help.
Now if you could just change the way ip_server_open works that would make my day. Currently after a connection is made the port goes offline and stays offline and needs to be reopened. All the normal server sockets I know stay open and listening until they are closed programmtically. For some reason AMX server sockets operate differently and are closed automatically after a read is done from the socket.
Paul -
Cheers Amx and all you guys for testing this out, now I shouldnt have any problems in the multiple Metreau KP system I am doing, where 95% of the buttons are on a hold to prevent accidental switching or linking etc.
-
Now if you could just change the way ip_server_open works that would make my day. Currently after a connection is made the port goes offline and stays offline and needs to be reopened. All the normal server sockets I know stay open and listening until they are closed programmtically. For some reason AMX server sockets operate differently and are closed automatically after a read is done from the socket.
Paul
Sorry, late getting to this thread. The GET_LAST for HOLD issue was solved in the FW by retaining a snapshot of the GET_LAST indexes from the push event inside the constructs keeping track of each extended push (i.e. hold) so that when the HOLD duration triggers, the original indexes are available for retrieval by the GET_LAST call.
And on the side note regarding IP_SERVER_OPEN, yes, I would agree that NetLinx Server sockets don't work like server sockets in other languages. But given the single threaded architecture of NetLinx and its D:P:S centric communication methods the existing APIs seemed the most logical approach to providing Server Socket functionality to a user group that might not be the most versed in network programming. The approach was taken that each IP_SERVER_OPEN and the D:P:S associated with it represents a "potential" connection by a client. Until that connection is made, an IP_SERVER_CLOSE on the D:P:S will close the servers socket. But once a client socket accept occurs in the underlying firmware, the client socket is then tied to the D:P:S leaving no ties to the original server socket...so it must be closed. If it was not closed and something happened on the underlying server socket, there would be no way to relay this back to the NetLinx application (ONERROR) since the D:P:S is now tied to the client socket. This approach still allows multiple "potential" connections on the same IP port by calling IP_SERVER_OPEN with different D:P:S's using the same IP port, thereby allowing 'x' simultaneous connections. But it does require the user oversee the management of "potential" connections and their D:P:S's directly. (opening, closing, etc) -
shane-a-roo wrote: »But given the single threaded architecture of NetLinx and its D:P:S centric communication methods the existing APIs seemed the most logical approach to providing Server Socket functionality to a user group that might not be the most versed in network programming.
Thanks for the insight. Yes with one thread, a multi-threaded server isn't really possible. Is writing server code in Duet any better than Netlinx? I wonder if Java's socket functionality would help with this kind of issue.
Paul -
Yes, Server sockets works normal in Duet. Most standard Java Server code blocks will work in the Duet implementation of server sockets.
-
ipssheldon wrote: »Yes, Server sockets works normal in Duet. Most standard Java Server code blocks will work in the Duet implementation of server sockets.
Cool, thanks I will check that out.
Paul
Categories
- All Categories
- 2.5K AMX General Discussion
- 922 AMX Technical Discussion
- 514 AMX Hardware
- 502 AMX Control Products
- 3 AMX Video Distribution Products
- 9 AMX Networked AV (SVSI) Products
- AMX Workspace & Collaboration Products
- 3.4K AMX Software
- 151 AMX Resource Management Suite Software
- 386 AMX Design Tools
- 2.4K NetLinx Studio
- 135 Duet/Cafe Duet
- 248 NetLinx Modules & Duet Modules
- 57 AMX RPM Forum
- 228 MODPEDIA - The Public Repository of Modules for Everyone
- 943 AMX Specialty Forums
- 2.6K AMXForums Archive
- 2.6K AMXForums Archive Threads
- 1.5K AMX Hardware
- 432 AMX Applications and Solutions
- 249 Residential Forum
- 182 Tips and Tricks
- 146 AMX Website/Forums
