# 消息接口定义

MOS Service消息分为3种类型:

  • Request:Client to Server
  • Response: Server to Client
  • Notify: Server to Client

Request 消息的基本结构:

{
    "message": "moss_xxx_req",
    "data": {
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
  • message: 唯一的消息名
  • data:消息参数,具体内容由消息决定
  • sequence:整数,消息序列号,由Client指定,并由Server回传
  • version:消息的版本号,注意,这个版本号只针对这条消息,protocol的版本号由独立的消息返回

Response 消息的基本结构:

{
    "message": "moss_xxx_resp",
    "data": {
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • message: 唯一的消息名
  • data:消息的返回数据,具体内容由消息决定
  • error:错误代码,0代表成功,非0代表失败
  • error-text: 错误消息,可选
  • sequence:整数,消息序列号,由Client指定,并由Server回传
  • version:消息的版本号,注意,这个版本号只针对这条消息,protocol的版本号由独立的消息返回

Notify 消息的基本结构:

{
    "message": "moss_xxx_notify",
    "data": {
    },
    "version": "1.0.0"
}
1
2
3
4
5
6
  • message: 唯一的消息名
  • data:消息数据,具体内容由消息决定
  • version:消息的版本号,注意,这个版本号只针对这条消息,protocol的版本号由独立的消息返回

# Scan

  • moss_scan_req: 质谱扫描请求消息
{
    "message": "moss_scan_req",
    "data": {
        "scan-parameters": {
            "average": 10,
            "timeout": 0,
            "spec_validation_enabled": 1,
            "spec_intensity_threshold_abs": 1000,
            "spec_intensity_threshold_rel": 0.01
        },
        "fpga-scan-func": [
            {
                "Time": 0,
                "Active": 0,
                "DAPI": 0,
                "Source": 0,
                "Detector": 0,
                "Data": 0,
                "Spec_Loc": 0,
                "RF1_Start": 0,
                "RF1_End": 0,
                "RF2_Start": 0,
                "RF2_End": 0,
                "AC1_FRE_Start": 0,
                "AC1_FRE_End": 0,
                "AC1_AMP_Start": 0,
                "AC1_AMP_End": 0,
                "AC2_FRE_Start": 0,
                "AC2_FRE_End": 0,
                "AC2_AMP_Start": 0,
                "AC2_AMP_End": 0,
                "Gate1_Start": 0,
                "Gate1_End": 0,
                "Gate2_Start": 0,
                "Gate2_End": 0,
                "Gate3_Start": 0,
                "Gate3_End": 0,
                "Trap1_Start": 0,
                "Trap1_End": 0,
                "Trap2_Start": 0,
                "Trap2_End": 0,
                "P5KV_Start": 0,
                "P5KV_End": 0,
                "N5KV_Start": 0,
                "N5KV_End": 0,
                "N2KV_Start": 0,
                "N2KV_End": 0,
                "SWIFT1": 0,
                "SWIFT1_Number": 0,
                "SWIFT1_Amp": 0,
                "SWIFT2": 0,
                "SWIFT2_Number": 0,
                "SWIFT2_Amp": 0,
                "Trigger1": 0,
                "Trigger2": 0,
                "Trigger3": 0,
                "Trigger4": 0,
            }
        ]
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  • 数据通过二进制接口返回:
header (2 bytes) - version (2 bytes) - sequence (4 bytes) - type(4 bytes) - length (4 bytes) - data (variant size)
1
  • moss_scan_resp: 质谱扫描完成
{
    "message": "moss_scan_resp",
    "data": {
        "analog-spec-cnt": 1,
        "counting-spec-cnt": 1,
        "invalid-spec-cnt": 0
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12

# SWIFT

  • moss_swift_write_with_params_req:根据参数计算SWIFT并写入FPGA指定位置
{
    "message": "moss_swift_write_with_params_req",
    "data": {
        "swift-freq-start": 10,
        "swift-freq-end": 400,
        "notches": [
            [20, 30],
            [40, 50]
        ],
        "swift-time": 200,
        "swift-loc": 0
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  • moss_swift_write_with_params_resp:
{
    "message": "moss_swift_write_with_params_resp",
    "data": {
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • moss_swift_write_req:直接将SWIFT数据写入指定位置
{
    "message": "moss_swift_write_req",
    "data": {
        "swift-loc": 0,
        "swift-data": [
            32768, 0
        ]
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11

WARNING

moss_swift_write_req 接口会有性能问题,只用于调试。

  • moss_swift_write_resp:
{
    "message": "moss_swift_write_resp",
    "data": {
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • moss_swift_read_req:从指定位置读取SWIFT数据
{
    "message": "moss_swift_read_req",
    "data": {
        "swift-loc": 0,
        "swift-size": 65535
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9

WARNING

moss_swift_read_req 接口会有性能问题,只用于调试。

  • moss_swift_read_resp:
{
    "message": "moss_swift_read_resp",
    "data": {
        "swift-loc": 0,
        "swift-data": [

        ]
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# Parameters

  • moss_parameters_read_req: 读取parameters数据
{
    "message": "moss_parameters_read_req",
    "data": {
        "file": "instrument",
        "key-path": ""
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • moss_parameters_read_resp:
{
    "message": "moss_parameters_read_resp",
    "data": {
        "content": {
        }
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
  • moss_parameters_write_req:
{
    "message": "moss_parameters_write_req",
    "data": {
        "file": "instrument",
        "key-path": "",
        "content": {
        }
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
  • moss_parameters_write_resp:
{
    "message": "moss_parameters_write_resp",
    "data": {
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9

# Device

  • moss_device_start_req: 开始仪器启动流程
{
    "message": "moss_device_start_req",
    "data": {
        "pressure-fail-threshold": 0.3,
        "turbopump-start-time": 90,
        "turbopump-start-pressure-exp": 1.0,
        "hight-voltage-start-time": 300,
        "hight-voltage-start-pressure-exp": -4.0
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12

(考虑参数从device.ini中读取)

  • moss_device_start_resp: 仪器启动完成
{
    "message": "moss_device_start_resp",
    "data": {
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • moss_device_start_progess_notify:
{
    "message": "moss_device_start_progess_notify",
    "data": {
        "progress": 20,
        "text": "Turbo pump start!"
    },
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
  • moss_device_shutdown_req: 开始关机流程
{
    "message": "moss_device_shutdown_req",
    "data": {
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
  • moss_device_shutdown_resp: 仪器关机完成
{
    "message": "moss_device_shutdown_resp",
    "data": {
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • moss_device_shutdown_progess_notify:
{
    "message": "moss_device_shutdown_progess_notify",
    "data": {
        "progress": 20,
        "text": "Checking vacuum status..."
    },
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
  • moss_device_version_req: 获取仪器型号和版本信息
{
    "message": "moss_device_version_req",
    "data": {
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
  • moss_device_version_resp:
{
    "message": "moss_device_version_resp",
    "data": {
        "mos-ver": "1.0.0",
        "fpga-ver": "260000",
        "mcu-ver": "1.2.9",
        "device-model": "C1001",
        "device-sn": "MS15XXXX"
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • moss_device_power_state_req: 获取仪器电源管理信息
{
    "message": "moss_device_power_state_req",
    "data": {
        "power-state-notify": 1
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
  • moss_device_power_state_resp:
{
    "message": "moss_device_power_state_resp",
    "data": {
        "power-state": "POWER_STATE_CHARGING",
        "battery-quant": 90,
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11

Power State

  1. POWER_STATE_CHARGING
  2. POWER_STATE_NO_ADAPTOR
  3. POWER_STATE_NO_BATTERY
  • moss_device_power_state_notify:
{
    "message": "moss_device_power_state_notify",
    "data": {
        "power-state": "POWER_STATE_NO_ADAPTOR",
        "battery-quant": 95,
    },
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
  • moss_device_status_req: 获取仪器状态信息,包括传感器数据,分子泵状态和真空压力等
{
    "message": "moss_device_status_req",
    "data": {
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
  • moss_device_status_resp:
{
    "message": "moss_device_status_resp",
    "data": {
        "device-state": "DEVICE_RUNNING",
        "temperature-base": 36.5,
        "humidity-base": 45,
        "barometer": 1.0,
        "turbo-speed-rpm": 90000,
        "turbo-drive-power": 5,
        "vacuum-pressure-exp": -5.0,
        "mcu-connection": 1
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Device State

  1. DEVICE_INIT
  2. DEVICE_STARTING
  3. DEVICE_RUNNING
  4. DEVICE_STOPPING
  • moss_device_event_notify: 仪器事件通知消息
{
    "message": "moss_device_status_notify",
    "data": {
        "event": "EVENT_KEY_PRESS"
    },
    "version": "1.0.0"
}
1
2
3
4
5
6
7

Event Type

  1. EVENT_KEY_PRESS
  2. EVENT_KEY_LONG_PRESS
  3. EVENT_LID_OPENED
  4. EVENT_LID_CLOSED
  • moss_device_rfid_notify: RFID事件通知消息
{
    "message": "moss_device_rfid_notify",
    "data": {
        "rfid": "CPD-1001"
    },
    "version": "1.0.0"
}
1
2
3
4
5
6
7

# Debug

# Debug Interface - FPGA

FPGA寄存器读取

  • moss_fpga_read_reg_req:
{
    "message": "moss_fpga_read_reg_req",
    "data": {
        "reg-addr": 0x1234,
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
  • moss_fpga_read_reg_resp:
{
    "message": "moss_fpga_read_reg_resp",
    "data": {
        "reg-addr": 0x1234,
        "data": 0
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11

FPGA寄存器写入

  • moss_fpga_write_reg_req:
{
    "message": "moss_fpga_write_reg_req",
    "data": {
        "reg-addr": 0x1234,
        "data": 0
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • moss_fpga_write_reg_resp:
{
    "message": "moss_fpga_write_reg_resp",
    "data": {
        "reg-addr": 0x1234,
        "data": 0
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11

FPGA内存读取

  • moss_fpga_read_sdram_req:
{
    "message": "moss_fpga_read_sdram_req",
    "data": {
        "sdram-addr": 0x12345678,
        "size": 10000
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • moss_fpga_read_sdram_resp:
{
    "message": "moss_fpga_read_sdram_resp",
    "data": {
        "sdram-addr": 0x12345678,
        "size": 10000,
        "data": []
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12

FPGA内存写入

  • moss_fpga_write_sdram_req:
{
    "message": "moss_fpga_write_sdram_req",
    "data": {
        "sdram-addr": 0x12345678,
        "size": 10000,
        "data": []
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
  • moss_fpga_write_sdram_resp:
{
    "message": "moss_fpga_write_sdram_resp",
    "data": {
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9

# Debug Interface - ADC / DAC

获取ADC列表

  • moss_adc_list_req:
{
    "message": "moss_adc_list_req",
    "data": {
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
  • moss_adc_list_resp:
{
    "message": "moss_adc_list_resp",
    "data": {
        "adc-list": [
            "ADC_RF1_AMP", "ADC_RF2_AMP"
        ]
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12

读取ADC数值

  • moss_adc_read_req:
{
    "message": "moss_adc_read_req",
    "data": {
        "adc": "ADC_RF1_AMP"
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
  • moss_adc_read_resp:
{
    "message": "moss_adc_read_resp",
    "data": {
        "adc": "ADC_RF1_AMP",
        "data": 65535,
        "data-converted": 3.0 // optional
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12

获取DAC列表

  • moss_dac_list_req:
{
    "message": "moss_dac_list_req",
    "data": {
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
  • moss_dac_list_resp:
{
    "message": "moss_dac_list_resp",
    "data": {
        "dac-list": [
            "DAC_RF1_AMP", "DAC_RF1_FREQ"
        ]
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12

写入DAC

  • moss_dac_write_req:
{
    "message": "moss_dac_write_req",
    "data": {
        "dac": "DAC_RF1_FREQ",
        "data": 65535
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • moss_dac_write_resp:
{
    "message": "moss_dac_write_resp",
    "data": {
        "dac": "DAC_RF1_FREQ",
        "data": 65535
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11

# Debug Interface - SWITCH

获取开关列表及其状态

  • moss_switch_list_req:
{
    "message": "moss_switch_list_req",
    "data": {
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
  • moss_switch_list_resp:
{
    "message": "moss_switch_list_resp",
    "data": {
        "switches" : [
            {
                "key": "SWITCH_SOURCE",
                "state": 0,
                "type": "FPGA",
                "warning": 0 // 0, 1 - on warning, 2 - off warning, 3 - all warning
            },
            {
                "key": "SWITCH_TURBO",
                "state": 0,
                "type": "MCU",
                "warning": 1
            }
        ]
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

设置开关状态

  • moss_switch_set_req:
{
    "message": "moss_switch_set_req",
    "data": {
        "switch": "SWITCH_SOURCE",
        "state": 1
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
  • moss_switch_set_resp:
{
    "message": "moss_switch_set_resp",
    "data": {
        "switch": "SWITCH_SOURCE",
        "state": 1,
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11

# Debug Interface - MCU Peripherals

获取外部设备列表及其所支持的命令和参数

  • moss_peripheral_list_req:
{
    "message": "moss_peripheral_list_req",
    "data": {
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
  • moss_peripheral_list_resp:
{
    "message": "moss_peripheral_list_resp",
    "data": {
        "peripherals": [
             {
                "name": "SENSOR",
                "commands": [
                    {
                        "key": "GET_SENSOR_MEASUREMENT",
                        "parameters": {
                        },
                        "warning": ""
                    }
                ]
            }
        ]
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

执行外部设备命令

  • moss_peripheral_invoke_command_req:
{
    "message": "moss_peripheral_invoke_command_req",
    "data": {
        "peripheral": "LED",
        "command": "SET_LED_STATUS",
        "params": {
            "value": "01" 
        }
    },
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
  • moss_peripheral_invoke_command_resp:
{
    "message": "moss_peripheral_invoke_command_resp",
    "data": {
        "peripheral": "LED",
        "command": "GET_LED_STATUS",
        "data": {
            "value": "01"
        }
    },
    "error": 0,
    "error-text": "",
    "sequence": 1,
    "version": "1.0.0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14