> For the complete documentation index, see [llms.txt](https://srs.gitbook.io/srs-json-protocol-reference/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://srs.gitbook.io/srs-json-protocol-reference/srs-json-protocol-reference.md).

# SRS JSON Protocol Reference

## 1. 개요

### 1.1 목적

이 문서의 목적은 다음과 같다.

* 이 문서는 스마트레이더시스템(이하 'SRS')에서 개발되는 Radar Module과 UI 사이에서 원활한 데이터 교환이 이루어 질 수 있도록 API연동에 관한 내용을 정의한다.

### 1.2 용어 및 약어(Abbreviations) 정의

<table><thead><tr><th width="270">용어/약어</th><th>정의</th></tr></thead><tbody><tr><td>JSON</td><td>JavaScript Object Notation</td></tr><tr><td>UI</td><td>User Interface</td></tr><tr><td></td><td></td></tr></tbody></table>

***

### 1.3 통신 환경에 따른 추가 제어 문자

원활한 데이터 송/수신을 위하여 데이터  손실에 취약한 UART 환경에서 JSON 메시지 시작(Prefix)과 끝( Suffix)에 아래 문자열을 추가하여 메시지를 구분한다.<br>

* 시작 문자열:&#x20;

```
<!@SRS>
```

* 종료 문자열:

```
<SRS@!>
```

## 2. API 프로토콜 형식

이 문서에서 사용하는 API의 형식은 다음과 같다.

### 2.1 데이터 형식

[JSON ( JavaScript Object Notation )](https://www.json.org/json-ko.html)

### 2.2  기본 형식:

* 각 object의 key값은 소문자(little-case)로만 작성한다.
* 공통으로 사용되는 "cmd", "type"는 필수 항목이며, 뒤에 따르는 "payload" 항목은 메시지 타입과 요청/응답에 따라 포함 여부가 결정된다.

```json
{
   "cmd":"command_name",
   "type":"type_of_message",
   "payload":{
      "key1":"foo",
      "key2":930516,
      "key3":true
   }
}
```

#### 2.2.1 메시지 이름 (cmd)

메시지 이름은 모듈과 UI간 패킷을 구분하기 위하여 중복되지 않는 유일한 이름을 사용한다.

단, 아래의 경우 예외로 한다.

* 요청메시지(REQ)에 의한 응답메시지(RESP)는  양방향(Two-way)의  쌍(Pair)구조로 이루어진 메시지
* 알림메시지(NOTI)를 활성화 시키는 목적의 요청(REQ)/응답(RESP)와 이에 활성화된 알림메시지

#### 2.2.2 메시지 유형 (type)

메시지 유형에는 요청(Request)와 응답(Response)를 구분하기 위하여 아래의 type를 정의한다.

메시지 유형 문자열은 모두 대문자(upper-case)를 사용한다.

| Type | Description                                                 |
| ---- | ----------------------------------------------------------- |
| REQ  | 요청 메시지 (Request)                                            |
| RESP | 응답 메시지 (Response)                                           |
| NOTI | <p>알림  메시지 (Notification)<br>\* one-way (no need reply)</p> |

#### 2.2.3 메시지 페이로드 (payload)

페이로드에는 각 메시지에 필요한 데이터를 나열한다.

자료형은 json 형식이 지원하는 아래 5가지를 사용한다.

* 수(Number)
* 문자열(String)
* 참/거짓(Boolean)
* 배열(Array)
* 객체(Object)

오버헤드(over head)를 줄이기 위해 payload 하위 object의 depth는 최대 5개까지로 한다.

## 3. API 메시지

### 3.1 센서 감지 결과

Radar Module의 전원이 인가되어, 정상 작동이 가능한 상태가 되면, 아래의 레이더 센서 감지 결과를 1초주기마다 알림 메시지로 전달한다.&#x20;

#### 3.1.1 Notification

<table><thead><tr><th width="215">Parameter</th><th width="100">Type</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>"SensingResult"</td></tr><tr><td>type</td><td>string</td><td>"NOTI"</td></tr><tr><td>payload</td><td>object</td><td></td></tr><tr><td>presence</td><td>Boolean</td><td>재실 감지 상태. 감지:true, 미감지:false</td></tr><tr><td>distance</td><td>Numeric</td><td>감지된 거리 (unit: cm)</td></tr><tr><td>power</td><td>Numeric</td><td>reflected power (unit: dB)</td></tr><tr><td>doppler</td><td>Numeric</td><td>단위시간동안  이동거리(unit:  cm/s)</td></tr></tbody></table>

#### 3.1.2 Example

* Notification (Module -> UI)

```json
{
   "cmd":"SensingResult",
   "type":"NOTI",
   "payload":{
      "presence":true,
      "distance":210.01,
      "power":12.0,
      "doppler":90.02
   }
}
```

### 3.2 모듈 상태 조회

Radar Module의 기본 정보와 조회 시점의 상태 값 등을 호출한다.

#### 3.2.1 Request

<table><thead><tr><th width="237">Parameter</th><th width="92">Type</th><th width="109">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"ModuleInfo"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr></tbody></table>

#### 3.2.2 Response

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"ModuleInfo"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>model</td><td>string</td><td>Y</td><td>Model name of module</td></tr><tr><td>version</td><td>object</td><td>Y</td><td>version group</td></tr><tr><td>  hw</td><td>string</td><td>Y</td><td>hardware version</td></tr><tr><td>  sw</td><td>string</td><td>Y</td><td>software version</td></tr></tbody></table>

#### 3.2.3 Example

* Request (UI -> Module)

```json
{
   "cmd":"ModuleInfo",
   "type":"REQ"
}
```

* Response (Module -> UI)

```json
{
   "cmd":"ModuleInfo",
   "type":"RESP",
   "payload":{
      "model":"RM60-LAC",
      "version":{
         "hw":"3.0.1",
         "sw":"1.0.0"
      }
   }
}
```

### 3.3 레이더  설정조회(TBD)

Radar Module의 Radar 설정 상태를 호출한다.

#### 3.3.1 Request

<table><thead><tr><th width="237">Parameter</th><th width="92">Type</th><th width="109">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"RadarConfig"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr></tbody></table>

<table><thead><tr><th width="242">Parameter</th><th width="98">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"RadarConfig"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>antennas</td><td>object</td><td>Y</td><td>Antenna object</td></tr><tr><td>  tx</td><td>Numeric</td><td>Y</td><td>Number of transmission antennas</td></tr><tr><td>  rx</td><td>Numeric</td><td>Y</td><td>Number of receiving antennas</td></tr><tr><td>gain</td><td>object</td><td>Y</td><td>gain object</td></tr><tr><td>  tx</td><td>Numeric</td><td>Y</td><td>Transmit Antenna Gain (dB)</td></tr><tr><td>  rx</td><td>Numeric</td><td>Y</td><td>Receive Antenna Gain (dB)</td></tr><tr><td>frequence</td><td>object</td><td>Y</td><td></td></tr><tr><td>  start_freq</td><td>Numeric</td><td>Y</td><td>Start Frequency (GHz)</td></tr><tr><td>  max_bandwidth</td><td>Numeric</td><td>Y</td><td>Maximum Bandwidth  (MHz)</td></tr><tr><td>tx_power</td><td>Numeric</td><td>N</td><td>Transmit Power (dBm)</td></tr><tr><td>range</td><td>object</td><td>Y</td><td></td></tr><tr><td>  maximum_range</td><td>Numeric</td><td>Y</td><td>Maximum Range (meteric)</td></tr><tr><td>  bin_resolution</td><td>Numeric</td><td>Y</td><td>Range Bin Resolution (meteric)</td></tr></tbody></table>

#### 3.3.3 Example

* Request (UI -> Module)

```json
{
   "cmd":"RadarConfig",
   "type":"REQ"
}
```

* Response(Module -> UI)

```json
{
   "cmd":"RadarConfig",
   "type":"RESP",
   "payload":{
      "antennas":{
         "tx":1,
         "rx":1
      },
      "gain":{
         "tx":10.0,
         "rx":10.0
      },
      "frequence":{
         "start_freq":61.0201,
         "max_bandwidth":460.5
      }
   }
}
```

### 3.4 최대 감지 거리 설정(TBD)

재실 감지 알고리즘의 최대 거리를 설정한다. 범위는 0.65m \~ 5.0m이다.

#### 3.4.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="109">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"SetMaxRange"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  value</td><td>Numeric</td><td>Y</td><td>Max range (meteric)</td></tr></tbody></table>

#### 3.4.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"SetMaxRange"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  result</td><td>Numeric</td><td>Y</td><td>0(zero) on success, other codes on failure.</td></tr></tbody></table>

### 3.5 Macro 민감도(Sensitivity) 설정(TBD)

재실감지 여부는 샘플링된  반사파의 신호 세기가 임계값(Threshold) 설정에 따라 판단되며, 설정값이 높을 수록 민감도가 높아집니다.

#### 3.5.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="109">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"SetMacroThreshold"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>   value</td><td>Numeric</td><td>Y</td><td>Sets macro threshold for presence algorithm. Range &#x3C;0.01-2.0></td></tr></tbody></table>

#### 3.5.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"SetMacroThreshold"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  result</td><td>Numeric</td><td>Y</td><td>0(zero) on success, other codes on failure.</td></tr></tbody></table>

### 3.6 Micro 민감도(Sensitivity) 설정(TBD)

#### 3.6.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="109">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"SetMicroThreshold"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  value</td><td>Numeric</td><td>Y</td><td>Sets micro threshold for presence algorithm. Range &#x3C;0.2-50.0></td></tr></tbody></table>

#### 3.6.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"SetMicroThreshold"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  result</td><td>Numeric</td><td>Y</td><td>0(zero) on success, other codes on failure.</td></tr></tbody></table>

### 3.7 대역 필터 (Band-pass filter) 설정(TBD)

대역필터(Band-pass filter)의 사용 유무를 설정합니다.

#### 3.7.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="109">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"set_bandpass_filter"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  value</td><td>Numeric</td><td>Y</td><td>disable: 0, enable: 1</td></tr></tbody></table>

#### 3.7.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"set_bandpass_filter"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  result</td><td>Numeric</td><td>Y</td><td>0(zero) on success, other codes on failure.</td></tr></tbody></table>

### 3.8 LQC모드(TBD)

LQC (Line Quality Control) 생산 및 품질 테스트에 필요한 LQC 모드로 진입하거나 해제합니다.

#### 3.8.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="109">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"set_lqc_mode"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  value</td><td>Numeric</td><td>Y</td><td>on: 1, off: 0</td></tr></tbody></table>

#### 3.8.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"set_lqc_mode"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  result</td><td>Numeric</td><td>Y</td><td>0(zero) on success, other codes on failure.</td></tr></tbody></table>

### 3.9 Rawdata Stream On/Off

Radar 센서로부터의 입력되는 Rawdata(ADC Normalization) Stream을 On/Off한다.

#### 3.9.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="103">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"rawdata_stream"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  value</td><td>Numeric</td><td>Y</td><td>on: 1, off: 0</td></tr></tbody></table>

#### 3.9.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"rawdata_stream"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  result</td><td>Numeric</td><td>Y</td><td>0(zero) on success, other codes on failure.</td></tr></tbody></table>

### 3.10 Rawdata Stream

Radar 센서로부터의 입력되는 Rawdata를 단위시간 마다 Stream한다.\
[#id-3.9-rawdata-stream-on-off](#id-3.9-rawdata-stream-on-off "mention") 메시지로 활성화가 되어야 한다.

#### 3.10.1 Notification

<table><thead><tr><th width="215">Parameter</th><th width="100">Type</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>"RawData"</td></tr><tr><td>type</td><td>string</td><td>"NOTI"</td></tr><tr><td>payload</td><td>object</td><td></td></tr><tr><td> values</td><td>array</td><td>4-bytes Floating Point</td></tr></tbody></table>

#### 3.10.2 Example

* Notification (Module -> UI)

```json
{
   "cmd":"RawData",
   "type":"NOTI",
   "values":[
      0.123,
      0.124,
      0.1235,
      0.1234,
      0.1233,
      "..."
   ]
}
```

### 3.11 Range Bin Data Stream On/Off

계산된  Range Bin의 Macro/Micro Data Stream을 On/Off한다.

#### 3.11.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="103">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"bindata_stream"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  value</td><td>Numeric</td><td>Y</td><td>on: 1, off: 0</td></tr></tbody></table>

#### 3.11.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"bindata_stream"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  result</td><td>Numeric</td><td>Y</td><td>0(zero) on success, other codes on failure.</td></tr></tbody></table>

### 3.12 Range Bin Data Stream

계산된  Range Bin의 Macro/Micro Data Stream한다.

Macro/Micro bin data를 Origin값과 Factor적용된 값으로 총 4개의 메시지가 각각 NOTI 타입으로 전송된다.

[#id-3.11-range-bin-data-stream-on-off](#id-3.11-range-bin-data-stream-on-off "mention")  메시지로 활성화가 되어야 한다.

#### 3.12.1 Notification

<table><thead><tr><th width="215">Parameter</th><th width="100">Type</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>"MacroBinValueMaxOrg"<br>"MacroBinValueMaxFactor"<br>"MicroBinValueMaxOrg"<br>"MicroBinValueMaxFactor"</td></tr><tr><td>type</td><td>string</td><td>"NOTI"</td></tr><tr><td>payload</td><td>object</td><td></td></tr><tr><td> values</td><td>array</td><td>4-bytes Floating Point</td></tr></tbody></table>

#### 3.12.2 Example

* Notification (Module -> UI)

```json
{
   "cmd":"RawData",
   "type":"NOTI",
   "values":[
      0.123,
      0.124,
      0.1235,
      0.1234,
      0.1233,
      "..."
   ]
}
```

### 3.13  Read All Radar Registers

Radar 센서의 전체 레지스터(Register)의 값을 조회한다. \
\*. BGT60UTRxxAiP 기준으로  레지스터 어드레스는 총 40개이다.

#### 3.13.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="103">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"read_all_registers"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr></tbody></table>

#### 3.13.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"read_all_registers"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  values</td><td>string</td><td>Y</td><td>register value (HexString)<br>eg. <br>["0x25000033", "0x210000F3", ...]</td></tr></tbody></table>

### 3.14  Write All Radar Registers

Radar 센서의 전체 레지스터(Register)의 값을 기록한다. \
\*. BGT60UTRxxAiP 기준으로  레지스터 어드레스는 총 40개이다.

#### 3.14.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="103">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"write_all_registers"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  values</td><td>array</td><td>Y</td><td>register value (HexString)<br>eg. <br>["0x25000033", "0x210000F3", ...]</td></tr></tbody></table>

#### 3.14.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"write_all_registers"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  result</td><td>Numeric</td><td>Y</td><td>0(zero) on success, other codes on failure.</td></tr></tbody></table>

### 3.15  Read Radar Register

Radar 센서의 특정 레지스터(Register)의 값을 조회한다.&#x20;

#### 3.15.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="103">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"read_register"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>    address</td><td>Numeric</td><td>Y</td><td>register offset address<br>*Only the upper 7 bits are valid.<br>eg. 24hex -> 36dec</td></tr></tbody></table>

#### 3.15.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"read_register"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  value</td><td>string</td><td>Y</td><td>register value (HexString)<br>eg. "0x25000033"</td></tr></tbody></table>

### 3.16  Write Radar Registers

Radar 센서의 전체 레지스터(Register)의 값을 기록한다.&#x20;

#### 3.16.1 Request (UI -> Module)

<table><thead><tr><th width="237">Parameter</th><th width="95">Type</th><th width="103">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"write_register"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"REQ"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  value</td><td>string</td><td>Y</td><td>register value (HexString)<br>eg. "0x25000033"</td></tr></tbody></table>

#### 3.16.2 Response (Module -> UI)

<table><thead><tr><th width="242">Parameter</th><th width="84">Type</th><th width="112">Required</th><th>Description</th></tr></thead><tbody><tr><td>cmd</td><td>string</td><td>Y</td><td>"write_register"</td></tr><tr><td>type</td><td>string</td><td>Y</td><td>"RESP"</td></tr><tr><td>payload</td><td>object</td><td>Y</td><td></td></tr><tr><td>  result</td><td>Numeric</td><td>Y</td><td>0(zero) on success, other codes on failure.</td></tr></tbody></table>

#### 3.16.3 Example

* Request (UI -> Module)

```json
{
   "cmd":"write_register",
   "type":"REQ",
   "payload":{
      "value":"0x25000032"
   }
}
```
