@@ -1138,7 +1138,7 @@ - (void) setupAfterConnection {
11381138 {
11391139 [self transitionToState: ControllerStatePauseProgram];
11401140 }
1141- else if (runStatus == NMXRunStatusStopped)
1141+ else
11421142 {
11431143 [self transitionToState: ControllerStateMotorRampingOrSendMotors];
11441144 }
@@ -1912,18 +1912,6 @@ - (void) handleKeyFrameStatusTimer: (NSTimer *) sender {
19121912 {
19131913 NSLog (@" handleKeyframeStatusTimer runStatus: NMXRunStatusPaused" );
19141914 }
1915- else if (runStatus == NMXRunStatusStopped)
1916- {
1917- NSLog (@" handleKeyframeStatusTimer runStatus: NMXRunStatusStopped" );
1918-
1919- [keyframeTimer invalidate ];
1920- keyframeTimer = nil ;
1921-
1922- [self clearFields ];
1923- keepAliveView.hidden = YES ;
1924- [self transitionToState: ControllerStateMotorRampingOrSendMotors];
1925-
1926- }
19271915 else if (runStatus & NMXRunStatusKeepAlive)
19281916 {
19291917 NSLog (@" keep alive" );
@@ -1952,11 +1940,23 @@ - (void) handleKeyFrameStatusTimer: (NSTimer *) sender {
19521940 playhead.frame .size .width ,
19531941 playhead.frame .size .height );
19541942 }
1955- else
1943+ else if (runStatus & NMXRunStatusUnknown)
19561944 {
19571945 NSLog (@" something else" );
19581946 [self killStatusTimerOnDisconnect ];
19591947 }
1948+ else
1949+ {
1950+ NSLog (@" handleKeyframeStatusTimer runStatus: Stopped" );
1951+
1952+ [keyframeTimer invalidate ];
1953+ keyframeTimer = nil ;
1954+
1955+ [self clearFields ];
1956+ keepAliveView.hidden = YES ;
1957+ [self transitionToState: ControllerStateMotorRampingOrSendMotors];
1958+
1959+ }
19601960}
19611961
19621962- (void ) handleStatusTimer : (NSTimer *) sender {
@@ -1968,27 +1968,6 @@ - (void) handleStatusTimer: (NSTimer *) sender {
19681968
19691969 // This state should only happen from the user hitting pause, and we already handle that transition...
19701970 }
1971- else if (runStatus == NMXRunStatusStopped) {
1972- NSLog (@" handleStatusTimer runStatus: NMXRunStatusStopped" );
1973-
1974- // Due to a firmware bug. We want to make sure we are really stopped...
1975-
1976- runStatus = [device mainQueryRunStatus ];
1977-
1978- if (NMXRunStatusStopped == runStatus)
1979- {
1980- [self .statusTimer invalidate ];
1981- self.statusTimer = nil ;
1982-
1983- [self clearFields ];
1984- keepAliveView.hidden = YES ;
1985- [self transitionToState: ControllerStateMotorRampingOrSendMotors];
1986- }
1987- else
1988- {
1989- DDLogWarn (@" Saw a FAKE stopped response" );
1990- }
1991- }
19921971 else if (runStatus & NMXRunStatusDelayTimer) {
19931972
19941973 self.totalRunTime = [device mainQueryTotalRunTime ];
@@ -2185,7 +2164,7 @@ - (void) handleStatusTimer: (NSTimer *) sender {
21852164 }
21862165
21872166 }
2188- else {
2167+ else if (runStatus == NMXRunStatusUnknown) {
21892168 NSLog (@" something else: %i " ,runStatus);
21902169
21912170 [self .statusTimer invalidate ];
@@ -2202,6 +2181,29 @@ - (void) handleStatusTimer: (NSTimer *) sender {
22022181 });
22032182
22042183 }
2184+ else {
2185+ NSLog (@" handleStatusTimer runStatus: Stopped" );
2186+
2187+ // Due to a firmware bug. We want to make sure we are really stopped...
2188+
2189+ runStatus = [device mainQueryRunStatus ];
2190+
2191+ if ((runStatus & NMXRunStatusPaused) == 0 &&
2192+ (runStatus & NMXRunStatusRunning) == 0 )
2193+ {
2194+ [self .statusTimer invalidate ];
2195+ self.statusTimer = nil ;
2196+
2197+ [self clearFields ];
2198+ keepAliveView.hidden = YES ;
2199+ [self transitionToState: ControllerStateMotorRampingOrSendMotors];
2200+ }
2201+ else
2202+ {
2203+ DDLogWarn (@" Saw a FAKE stopped response" );
2204+ }
2205+ }
2206+
22052207}
22062208
22072209- (void ) calculatePingPongReverse
0 commit comments