订阅消息(PUB-SUB模式)¶
任务状态¶
功能: 在任务计算的阶段变更时,由测控推送任务实时状态信息。
Operation:固定为bytes:task_status。
推送消息格式:
MsgType (
String): [不可空] 消息类型,固定为TaskStatus。SN (
Uint32_t): [不可空] 心跳消息序列号。TaskId (
String): [不可空] 任务ID。TaskStatus (
Uint32_t): [不可空] 任务状态,参考任务状态定义。
示例:
{
"MsgType":"TaskStatus",
"SN":0,
"TaskId":"11D919FA044846F3B4DF453A827AE901",
"TaskStatus":3
}
芯片配置信息更新标志¶
功能: 在芯片参数变更后,测控一体机推送消息,告知司南可以通过 Router-Dealer 模式发送获取请求查询最新芯片配置信息。
Operation:固定为bytes:chip_update。
推送消息格式:
UpdateFlag (
Bool): [不可空] 更新标识。LastUpdateTime (
Uint64_t): [不可空] 最后更新时间。
示例:
{
"UpdateFlag":true,
"LastUpdateTime": 1705307288685
}
芯片资源状态¶
功能: 在测控一体机计算任务时,在多线程模式下,只要芯片资源发生了改变(锁住、释放),测控服务就会推送线程详细数据至司南(各个测控服务线程的 qubit 使用情况);QPilot 可以只关注每个线程(t0, t1, t2…)的 use_bits 字段。
Operation:固定为bytes:probe。
推送消息格式:
core_thread.t0 (
Object): [不可空] 测控服务的线程名。core_thread.t0.use_bits (
String数组): [不可空] 当前线程所有比特。
示例:
{
"inst_status": 1,
"linked": 1,
"timestamp": 1695182448.7963016,
"scheduler": {
"status": "InitialState",
"queue_len": 3
},
"core_status": {
"empty_thread": 3,
"pause_read": 0,
"thread_num": 5
},
"core_thread": {
"t0": {
"status": "waiting",
"thread_id": "t0",
"task_id": "650a6e6f197b42e9aeaad6d6",
"start_time": 1695182447.5371444,
"user": "admin3",
"env_bits": [
"<c45-46||0>",
"<q62||0>",
"<c40-46||0>",
"<q59||1>"],
"use_bits": [
"q56",
"q18",
"q68",
"q69",
"q6",
"q2",
"q67"]
},
"t1": {
"status": "ready",
"task_id": null,
"start_time": null,
"user": null,
"env_bits": [],
"use_bits": []
},
"t2": {
"status": "ready",
"task_id": null,
"start_time": null,
"user": null,
"env_bits": [],
"use_bits": []
},
"t3": {
"status": "waiting",
"thread_id": "t3",
"task_id": "650a6e6e197b42e9aeaad6d0",
"start_time": 1695182446.8370538,
"user": "admin3",
"env_bits": [
"<q56||1>",
"<c45-46||2>",
"<q62||2>",
"<c40-46||2>",
"<c56-57||2>",
"<c43-44||2>",
"<c44-45||2>"
],
"use_bits": [
"q59",
"q30",
"q50",
"q33",
"q47",
"q19",
"q38"
]
},
"t4": {
"status": "ready",
"task_id": null,
"start_time": null,
"user": null,
"env_bits": [],
"use_bits": []
}
}
}
自动校准开始信息¶
功能: 在测控一体机进行自动校准时,会推送校准比特信息至司南,此时间段内校准中比特不可用。
Operation:固定为bytes:calibration_start。
推送消息格式:
qubits (
String数组): [不可空] 校准后的单比特信息。couplers (
String数组): [不可空] 耦合器。pairs (
String数组): [不可空] 校准后的比特对信息。discriminators (
String数组): [不可空] 鉴别器。point_label (
Int): [不可空] 用于表示当前校准作用于哪个标签。
示例:
{
"config_flag": false,
"qubits":["q0", "q1", "q2", "q3"],
"couplers":["c0-1", "c11-12", "c2-3"],
"pairs": ["q0q1", "q2q3"],
"discriminators":["q0_01.bin", "q1_01.bin", "q2_01.bin", "q3_01.bin"],
"point_label": 2
}
自动校准结束信息¶
功能: 完成校准后会推送完成消息至司南,比特恢复可用。
Operation:固定为bytes:calibration_done。
推送消息格式:
qubits (
String数组): [不可空] 校准后的单比特信息。couplers (
String数组): [不可空] 耦合器。pairs (
String数组): [不可空] 校准后的比特对信息。discriminators (
String数组): [不可空] 鉴别器。
示例:
{
"qubits":["q0", "q1", "q2", "q3"],
"couplers":["c0-1", "c11-12", "c2-3"],
"pairs": ["q0q1", "q2q3"],
"discriminators":["q0", "q1", "q2", "q3"],
"config_flag":true,
"point_label": 2
}
芯片维护信息¶
功能: 接收芯片维护开始和结束信息,实现司南自动暂停。如果维护时间超过2个小时,则司南向云平台推送维护下线通知;如果维护时间不超过2小时,则只有司南暂停,云平台正常上线。
Operation:固定为bytes:chip_protect。
推送消息格式:
ProtectFlag (
Bool): [不可空] 维护标志。true 为维护开始,false 维护结束。DurativeTime (
Uint64_t): [不可空] 维护持续时间(单位:分钟)。LastTime (
Uint64_t): [不可空] 时间戳。
示例:
{
"ProtectFlag":true,
"DurativeTime":10,
"LastTime":1705307288685
}