订阅消息(PUB-SUB模式) ======================= 任务状态 -------- **功能:** 在任务计算的阶段变更时,由测控推送任务实时状态信息。 **Operation**:固定为bytes:``task_status``。 **推送消息格式:** - **MsgType** (``String``): [不可空] 消息类型,固定为 ``TaskStatus``。 - **SN** (``Uint32_t``): [不可空] 消息序列ID。 - **TaskId** (``String``): [不可空] 任务ID。 - **TaskStatus** (``Uint32_t``): [不可空] 任务状态,参考任务状态定义。 **示例:** .. code-block:: json { "MsgType":"TaskStatus", "SN":0, "TaskId":"11D919FA044846F3B4DF453A827AE901", "TaskStatus":3 } 芯片配置信息更新标志 -------------------- **功能:** 在芯片参数变更后,测控一体机推送消息,告知司南可以通过 Router-Dealer 模式发送获取请求查询最新芯片配置信息。 **Operation**:固定为bytes:``chip_update``。 **推送消息格式:** - **UpdateFlag** (``Bool``): [不可空] 更新标识。 - **LastUpdateTime** (``Uint64_t``): [不可空] 最后更新时间。 **示例:** .. code-block:: json { "UpdateFlag":true, "LastUpdateTime": 1705307288685 } 芯片资源状态 ------------ **功能:** 在测控一体机计算任务时,在多线程模式下,只要芯片资源发生了改变(锁住、释放),测控服务就会推送线程详细数据至司南(各个测控服务线程的 qubit 使用情况);QPilot 可以只关注每个线程(t0, t1, t2...)的 use_bits 字段。 **Operation**:固定为bytes:``probe``。 **推送消息格式:** - **core_thread.t0** (``Object``): [不可空] 测控服务的线程名。 - **core_thread.t0.use_bits** (``String数组``): [不可空] 当前线程所有比特。 **示例:** .. code-block:: json { "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", "use_bits": ["q56", "q18", "q68", "q69", "q6", "q2", "q67"] }, "t1": { "status": "ready", "use_bits": [] }, "t2": { "status": "ready", "use_bits": [] }, "t3": { "status": "waiting", "thread_id": "t3", "task_id": "650a6e6e197b42e9aeaad6d0", "start_time": 1695182446.8370538, "user": "admin3", "use_bits": ["q59", "q30", "q50", "q33", "q47", "q19", "q38"] }, "t4": { "status": "ready", "use_bits": [] } } } 自动校准开始信息 ---------------- **功能:** 在测控一体机进行自动校准时,会推送校准比特信息至司南,此时间段内校准中比特不可用。 **Operation**:固定为bytes:``calibration_start``。 **推送消息格式:** - **qubits** (``String数组``): [不可空] 校准后的单比特信息。 - **couplers** (``String数组``): [不可空] 耦合器。 - **pairs** (``String数组``): [不可空] 校准后的比特对信息。 - **discriminators** (``String数组``): [不可空] 鉴别器。 - **point_label** (``Int``): [不可空] 用于表示当前校准作用于哪个标签。 **示例:** .. code-block:: json { "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数组``): [不可空] 鉴别器。 **示例:** .. code-block:: json { "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``): [不可空] 时间戳。 **示例:** .. code-block:: json { "ProtectFlag":true, "DurativeTime":10, "LastTime":1705307288685 }