26from timing.common.definitions import kDesignMaster, kDesignOuroboros, kDesignOuroborosSim, kDesignEndpoint, kDesignFanout, kDesignOverlord, kDesignGaia, kDesignBoreas, kDesignKerberos, kDesignChronos, kDesignFanout
27from timing.common.definitions import kBoardNameMap, kCarrierNameMap, kDesignNameMap, IRIGEpoch, TimestampSource, ClockSource, kFreeRun, kInput0, kInput1, kInput2, kInput3, kUpstream, kSoftware
41def design(obj, device):
43 Timing master commands.
45 DEVICE: uhal device identifier
47 lDevice = obj.mConnectionManager.getDevice(str(device))
49 lDevice.setTimeoutPeriod(obj.mTimeout)
51 echo(
'Created device ' + click.style(lDevice.id(), fg=
'blue'))
53 lTopDesign = lDevice.getNode(
'')
55 lBoardInfo = toolbox.readSubNodes(lDevice.getNode(
'io.config'),
False)
58 echo(
"Design '{}' on board '{}' on carrier '{}' with frequency {} MHz".format(
59 style(kDesignNameMap[lBoardInfo[
'design_type'].value()], fg=
'blue'),
60 style(kBoardNameMap[lBoardInfo[
'board_type'].value()], fg=
'blue'),
61 style(kCarrierNameMap[lBoardInfo[
'carrier_type'].value()], fg=
'blue'),
62 style(str(lBoardInfo[
'clock_frequency'].value()/1e6), fg=
'blue')
65 if lBoardInfo[
'board_type'].value()
in kLibrarySupportedBoards
and lBoardInfo[
'design_type'].value()
in kLibrarySupportedDesigns:
66 lVersion = lTopDesign.read_firmware_version()
67 lTopDesign.validate_firmware_version()
70 echo(lDevice.getNode(
'io').get_hardware_info())
72 secho(
"Failed to retrieve hardware information! I2C issue? Initial board reset needed?", fg=
'yellow')
74 secho(
"Error: {}".format(e), fg=
'red')
76 echo(
"FW rev: {}".format(
77 style(format_firmware_version(lVersion), fg=
'cyan'),
81 obj.mTopDesign = lTopDesign
83 obj.mBoardType = lBoardInfo[
'board_type'].value()
84 obj.mCarrierType = lBoardInfo[
'carrier_type'].value()
85 obj.mDesignType = lBoardInfo[
'design_type'].value()
89@design.command('status', short_help="Print master status")
165 lTopDesign = obj.mTopDesign
166 lDesignType = obj.mDesignType
167 lDesignName=kDesignNameMap[lDesignType]
170 if clock_source
is None:
171 if lDesignType
in [kDesignMaster, kDesignBoreas, kDesignOuroboros, kDesignOuroborosSim]:
172 lClockSource=kFreeRun
173 lTimestampSource=kSoftware
174 elif lDesignType
in [kDesignEndpoint, kDesignChronos, kDesignFanout]:
176 elif lDesignType
in [kDesignGaia, kDesignKerberos]:
178 lTimestampSource=kUpstream
180 secho(
"Unable to match a default clock source for design {}.\nConfigure failed!".format(lDesignName), fg=
'red')
183 lClockSource=ClockSource.__members__[clock_source]
185 if ts_source
is None:
186 if lDesignType
in [kDesignMaster, kDesignBoreas, kDesignOuroboros, kDesignOuroborosSim]:
187 lTimestampSource=kSoftware
188 elif lDesignType
in [kDesignGaia, kDesignKerberos]:
189 lTimestampSource=kUpstream
190 elif lDesignType
not in [kDesignEndpoint, kDesignChronos, kDesignFanout]:
191 secho(
"Unable to match a default timestamp source for design {}.\nConfigure failed!".format(lDesignName), fg=
'red')
194 lTimestampSource=TimestampSource.__members__[ts_source]
196 if lDesignType
in [kDesignMaster, kDesignBoreas, kDesignGaia, kDesignKerberos]:
197 if lDesignType == kDesignGaia:
198 if epoch
is not None:
199 lEpoch=IRIGEpoch.__members__[epoch]
200 lTopDesign.configure(lClockSource, lTimestampSource, lEpoch)
202 secho(
"Supply irig option for design Gaia!", fg=
'red')
204 lTopDesign.configure(lClockSource, lTimestampSource)
205 elif lDesignType
in [kDesignEndpoint, kDesignChronos, kDesignFanout]:
206 lTopDesign.configure(lClockSource)
208 secho(
"Configure not supported for design {}.\nConfigure failed!".format(lDesignName), fg=
'red')