1 from __future__
import division, absolute_import
6 from twistedActor
import CommandError
7 from tcc.axis import computeObj, coordConvWithFP
8 from tcc.msg import formatPVT, formatPVTList, formatPxPMRadVel
9 from tcc.parse import getCoordSys, getPVTPairPxPMRadVel
13 _BadCoordSysNameList = (
"mount",
"none")
14 _BadCoordSysNameLCSet = set(csName.lower()
for csName
in _BadCoordSysNameList)
15 _BadCoordSysDescr =
" or ".join(_BadCoordSysNameList)
16 del _BadCoordSysNameList
19 """Implement the convert command
21 @param[in] tccActor tcc actor
22 @param[in] userCmd convert command
24 parsedCmd = userCmd.parsedCmd
25 qualDict = parsedCmd.qualDict
27 currTAI = tcc.base.tai()
31 obj = tcc.base.Obj(tccActor.obj)
33 useGSWavelen = qualDict[
"usegswavelength"].boolValue
34 zeroPM = qualDict[
"zpm"].boolValue
36 fromPVTPair, fromPxPMRadVel =
getPVTPairPxPMRadVel(parsedCmd=parsedCmd, coordName=
"fromcoords", defTAI=currTAI)
37 if fromPVTPair
is None:
38 raise CommandError(
"Must specify from position")
39 convTAI = fromPVTPair[0].t
40 fromCoordSys =
getCoordSys(param=parsedCmd.paramDict[
"fromsys"])
41 if fromCoordSys
is None:
42 raise CommandError(
"Must specify from coordinate system")
43 toCoordSys =
getCoordSys(param=parsedCmd.paramDict[
"tosys"])
44 if toCoordSys
is None:
45 toCoordSys = fromCoordSys
47 if fromCoordSys.getName().lower()
in _BadCoordSysNameLCSet:
48 raise CommandError(
"Invalid fromSys=%r: cannot convert from %s" % (fromCoordSys.getName(), _BadCoordSysDescr))
49 if toCoordSys.getName().lower()
in _BadCoordSysNameLCSet:
50 raise CommandError(
"Invalid toSys=%r: cannot convert to %s" % (toCoordSys.getName(), _BadCoordSysDescr))
52 fromDir = coordConv.PVT(0, 0, convTAI)
58 doRestart = [
True]*tcc.base.NAxes,
60 earth = tccActor.earth,
62 telMod = tccActor.telMod,
63 axeLim = tccActor.axeLim,
68 fromCoordSys = fromCoordSys,
69 fromPVTPair = fromPVTPair,
70 fromPxPMRadVel = fromPxPMRadVel,
72 toCoordSys = toCoordSys,
76 useGSWavelen = useGSWavelen,
78 toFromAng = toDir - fromDir
85 msgStr =
"; ".join(msgStrList)
86 userCmd.setState(userCmd.Done, hubMsg=msgStr)
def getPVTPairPxPMRadVel
Obtain object data from a parsed command, and perform some sanity checks.
def getCoordSys
Obtain a coordinate system from a parsed parameter.
def coordConvWithFP
Convert a coord from one coordinate system to another.
def computeObj
Compute all computed obj fields from user-specified fields except path generator outputs.