Skip to content

Commit af4ae9d

Browse files
committed
Merge branch 'feature/run-timed'
2 parents 4300d7d + 54f71f9 commit af4ae9d

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

src/main/kotlin/org/strykeforce/thirdcoast/talon/RunTalonsCommand.kt

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package org.strykeforce.thirdcoast.talon
22

3-
import com.ctre.phoenix.motorcontrol.ControlMode.*
3+
import com.ctre.phoenix.motorcontrol.ControlMode.MotionMagic
4+
import com.ctre.phoenix.motorcontrol.ControlMode.Position
5+
import edu.wpi.first.wpilibj.Timer
6+
import mu.KotlinLogging
47
import net.consensys.cava.toml.TomlTable
58
import org.jline.reader.EndOfFileException
69
import org.koin.standalone.inject
7-
import org.strykeforce.thirdcoast.*
810
import org.strykeforce.thirdcoast.command.AbstractCommand
911
import org.strykeforce.thirdcoast.command.Command
1012
import org.strykeforce.thirdcoast.command.prompt
11-
import org.strykeforce.thirdcoast.command.toMenu
1213
import org.strykeforce.thirdcoast.device.TalonService
14+
import org.strykeforce.thirdcoast.warn
15+
16+
private val logger = KotlinLogging.logger {}
1317

1418
class RunTalonsCommand(
1519
parent: Command?,
@@ -24,16 +28,30 @@ class RunTalonsCommand(
2428

2529
while (!done) {
2630
try {
27-
val line = reader.readLine(prompt()).trim()
31+
val line = reader.readLine(prompt())
2832
if (line.isEmpty()) throw EndOfFileException()
29-
val setpoint = line.toDouble()
33+
val setpoints = line.split(',')
34+
val setpoint = setpoints[0].toDouble()
35+
val duration = if (setpoints.size > 1) setpoints[1].toDouble() else 0.0
36+
3037
talonService.active.forEach { it.set(talonService.controlMode, setpoint) }
38+
39+
if (duration > 0.0 && (talonService.controlMode == MotionMagic || talonService.controlMode == Position)) {
40+
terminal.warn("specifying a duration in closed-loop position mode not allowed")
41+
done = true
42+
}
43+
44+
if (duration > 0.0) {
45+
logger.debug { "run duration = $duration seconds" }
46+
Timer.delay(duration)
47+
logger.debug { "run duration expired, setting output = 0.0" }
48+
talonService.active.forEach { it.set(talonService.controlMode, 0.0) }
49+
}
3150
} catch (e: Exception) {
3251
done = true
3352
}
3453
}
3554

3655
return super.execute()
3756
}
38-
3957
}

0 commit comments

Comments
 (0)