FSC-BT1035 programming user guide
Introduction
Description
This design guide is suitable for engineers to develop FSC-BT1035 series Bluetooth modules, also suitable for BT806、BT802 series modules
Module Default Settings
Name |
FSC-BT1035 |
LE-Name |
FSC-BT1035-LE |
Pin Code |
0000 |
Secure Simple Pairing Mode |
ON |
UART Baudrate |
115200/8/N/1 |
Hardware Description
Pin Diagram
FSC-BT1035 as an example:
Pin Description
Pin |
Pin Name |
Type |
Pin Descriptions |
|---|---|---|---|
4 |
I2S_CLK |
I/O |
I2S BCLK |
5 |
I2S_IN |
I |
I2S DATA IN |
6 |
I2S_OUT |
O |
I2S DATA OUT |
7 |
I2S_WS |
I/O |
I2S SYNC |
8 |
RESET |
I |
External reset input: active Low |
13 |
UART_TX |
O |
UART TX |
14 |
UART_RX |
I |
UART RX |
15 |
UART_CTS |
I/O |
UART CTS |
16 |
UART_RTS |
I/O |
UART RTS(default: PA mute pin) |
17
|
LED0
|
I/O
|
Output square wave in pairing mode,
output high level when bluetooth is connected
|
32 |
GND |
GND |
GND |
33 |
VDD |
VDD |
Power supply for I/O ports, DC 3.3V |
34 |
SYS_CTRL |
I |
Delay 100ms, pull high |
36 |
VDD_IO |
I |
pio supply |
37 |
USB_DP |
USB D+ |
|
38 |
USB_DN |
USB D- |
|
43 |
MIC_LP |
Audio |
MIC0/Line_IN differential L input, positive |
44 |
MIC_LN |
Audio |
MIC0/Line_IN differential L input, negative |
45 |
MIC_BIAS |
Audio |
MIC Power Supplies |
46 |
SPK_RN |
Audio |
Headphone/speaker differential R output, negative |
47 |
SPK_RP |
Audio |
Headphone/speaker differential R output, positive |
48 |
SPK_LN |
Audio |
Headphone/speaker differential L output, negative |
49 |
SPK_LP |
Audio |
Headphone/speaker differential L output, positive |
51
|
EXT_ANT
|
ANT
|
Change the 0 ohm resistance near the antenna,
you can connect an external Bluetooth antenna
|
Hardware Design Notes
The simple test of the module only needs to connect VDD/VDD_IO/VREG_IN/GND/UART_RX/UART_TX to use
After drawing the schematic diagram,
please send it to Feasycom for review,so as to avoid the Bluetooth distance not reaching the best effect
Function Description
Profiles & Features
SPP (Serial Port Profile)
GATTS (Generic Attribute Profile LE-Peripheral role)
GATTC (Generic Attribute Profile LE-Central role)
HFP-HF (Hands-Free Profile)
HFP-AG (Hands-Free-AG Profile)
A2DP-Sink (Advanced Audio Distribution Profile)
A2DP-Source (Advanced Audio Distribution Profile)
AVRCP-Controller (Audio/Video remote controller Profile)
AVRCP-Target (Audio/Video remote controller Profile)
HID-DEVICE (Human Interface Profile)
PBAP (Phonebook Access Profile)
GATT Default service and characteristic
Type |
UUID |
Characteristic |
Description |
Service |
0xFFF0 |
throughput services |
|
Write |
0xFFF2 |
Write,Write Without Response |
app send to module |
Notify |
0xFFF1 |
Notify |
module send to app |
Command Description
Terms
Throughout this specification:
Content between { } is optional
Content behind << represents a COMMAND from Host
Content behind >> represents a RESPONSE/EVENT to Host
Command Format
All commands start with “AT”, end with <CR><LF>
<CR> means “carriage return”, corresponds to hex value 0x0D
<LF> means “line feed”, corresponds to hex value 0x0A
If Command has Parameter, Parameter follows behind ‘=’
If Command has multiple Parameters, Parameter must be separated by ‘,’
If Command has Response, Response starts with <CR><LF>, ends with <CR><LF>
Module will always report command’s execution result by using “OK” for success or “ERROR” for failure
Event Format
All Events start with <CR><LF>, end with <CR><LF>
If Event has Parameter, Parameter follow behind ‘=’
If Event has multiple Parameters, Parameter must be separated by ‘,’
Commands Table
General Commands
AT+HELP - Firmware Function/Command Summary
Command |
AT+HELP |
Response |
<FIRMWARE FUNCTION: appropriate working scenario >
<OTA PATH: latest suitable firmware path on server for upgrade On-The-Air>
<ENABLED PROFILES: LINKS: ON/OFF>
…
…
<COMMAND SUMMARY: DESCRIPTION: PROFILE CATEGORY>
|
Description |
Using help command to get the basic summary information |
AT+VER - Get Firmware Version
Command |
AT+VER |
Response |
+VER=Param1,Param2,Param3 |
|
Module type |
|
Firmware version |
|
Firmware Compile time |
AT+BAUD - Get/Set Uart Baudrate
Command |
AT+BAUD{=Param} |
|
9600/19200/38400/57600/115200(default)/230400/460800/921600 |
Response |
+BAUD=Param |
Description |
Module will change baudrate to target value immediately or after reboot depending on firmware
|
AT+I2SCFG - Get/Set I2S Settings
Command |
AT+I2SCFG{=Param} |
|
A base-10 representation of a bit field, default:0, for each bit |
|
0:disable; 1:enable |
|
0:master; 1:slave |
|
0:FS=48000Hz;1:FS=44100Hz |
|
0:left justified; 1:right justified |
|
0:data 1 bit delay; 1:data no delay |
|
00: bit depth=16bits
01: bit depth=24bits
10: bit depth=32bits
|
Response |
+I2SCFG=Param |
Example:usual configuration and description
1 |
I2S Master; Sample rate=48000Hz; Resolution=16bits; Bit clock= 48000*16*2ch=1.536Mhz |
3 |
I2S Slave; Sample rate=48000Hz; Resolution=16bits; Bit clock= 48000*16*2ch=1.536Mhz |
65 |
I2S Master; Sample rate=48000Hz; Resolution=32bits; Bit clock= 48000*32*2ch=3.072Mhz |
67 |
I2S Slave; Sample rate=48000Hz; Resolution=32bits; Bit clock= 48000*32*2ch=3.072Mhz |
AT+MICGAIN - Get/Set Analog Input Gain
Command |
AT+MICGAIN{=Param} |
|
Microphone input gain (0~15, default:10) |
AT+SPKVOL - Get/Set Analog Output Volume
Command |
AT+SPKVOL{=Param} |
|
audio speaker volume (0~15, default:10) |
AT+REBOOT - Soft Reboot
Command |
AT+REBOOT |
Response |
OK |
Description |
Module release all Bluetooth connections with remote device then reboot |
AT+RESTORE - Restore Factory Settings
Command |
AT+RESTORE |
Response |
OK |
Description |
Module restore all factory settings then reboot |
AT+BTEN - Bluetooth On/Off
Command |
AT+BTEN{=Param} |
|
0-Power off 1-Power on |
AT+PROFILE - Bluetooth Profile Selection
Command |
AT+PROFILE{=Param} |
|
A base-10 representation of a bit field, for each bit: |
|
SPP (Serial Port Profile) |
|
GATT Server (Generic Attribute Profile) |
|
GATT Client (Generic Attribute Profile) |
|
HFP-HF (Hands-Free Profile Handsfree) |
|
HFP-AG (Hands-Free Profile Audio Gateway) |
|
A2DP Sink (Advanced Audio Distribution Profile) |
|
A2DP Source (Advanced Audio Distribution Profile) |
|
AVRCP Controller (Audio/Video remote controller Profile) |
|
AVRCP Target (Audio/Video remote controller Profile) |
|
HID Keyboard (Human Interface Profile) |
|
PBAP Server (Phonebook Access Profile) |
Response |
+PROFILE=Param |
Description |
BT1035、BT806 not support HFP-HF、 A2DP Sink、AVRCP Controller、HID Keyboard、PBAP |
AT+AUTOCONN - Turn On/Off Power On Auto Reconnect
Command |
AT+AUTOCONN{=Param} |
|
(0~15, default:3)
(0) Turn Off
(1-15) Turn on and reconnect times
|
Response |
+AUTOCONN=Param |
Description |
Module will attempt to connect last device after power on if set. |
AT+STAT - Get All Profile State
Command |
AT+STAT |
Response |
+STAT=Param1, Param2, Param3… |
|
DEVSTAT |
|
SPPSTAT |
|
GATTSTAT |
|
HFPSTAT |
|
A2DPSTAT |
|
AVRCPSTAT |
AT+DEVSTAT - Read Device State
Command |
AT+DEVSTAT |
Response |
+DEVSTAT=Param |
|
A base-10 representation of a bit field, for each bit: |
|
0: Power Off; 1: Power On |
|
0: BR/EDR Not Discoverable; 1: BR/EDR Discoverable |
|
0: BLE Not Advertising; 1: BLE Advertising |
|
0: BR/EDR Not Scanning; 1: BR/EDR Scanning |
|
0: BLE Not Scanning; 1: BLE Scanning |
Example:usual combination and description
0 |
Device power off |
1 |
Device power on |
3 |
Device power on, BR/EDR Discoverable |
5 |
Device power on, BR/EDR Not Discoverable, BLE Advertising |
7 |
Device power on, BR/EDR Discoverable, BLE Advertising |
13 |
Device power on, BR/EDR Not Discoverable, BLE Advertising, Scanning nearby BR/EDR devices |
AT+ADDR - Get BR/EDR MAC Address
Command |
AT+ADDR |
Response |
+ADDR=Param |
|
Module’s BR/EDR MAC address (12 Bytes ASCII) |
AT+LEADDR - Get BLE MAC Address
Command |
AT+LEADDR |
Response |
+LEADDR=Param |
|
Module’s LE MAC address (12 Bytes ASCII) |
AT+NAME - Get/Set BR/EDR Local Name
Command |
AT+NAME{=Param1{,Param2}} |
|
BR/EDR local name(1~31 Bytes ASCII) |
|
MAC address suffix(0/1,default:0)
0: Disable suffix
1: Enable suffix “XXXX” (lower 4 bytes of MAC address) after local name
|
Response |
+NAME=Param |
Description |
Write local name if parameter exist, otherwise read current local name |
AT+LENAME - Get/Set BLE Local Name
Command |
AT+LENAME{=Param1{,Param2}} |
|
BLE local name(1~31 Bytes ASCII) |
|
MAC address suffix(0/1,default:0)
0-Disable suffix
1-Enable suffix “XXXX” (lower 4 bytes of MAC address) after local name
|
Response |
+LENAME=Param |
AT+PIN - Get/Set BR/EDR Pin Code
Command |
AT+PIN{=Param} |
|
Pin code(4~15 Bytes ASCII, default:0000) |
Response |
+PIN=Param |
Description |
Pin code only work in legacy pairing mode, see AT+SSP |
AT+COD - Get/Set Device Class
Command |
AT+COD=Param |
|
Class of device(6 bytes ASCII, default:5A020C Handsfree device) |
Response |
+COD=Param |
Related configuration reference: COD.
AT+PAIR - Get/Set BR/EDR/BLE Visibility
Command |
AT+PAIR=Param |
|
Mode(0-1),default:0
0: Leave BR/EDR/BLE discoverable mode (stop advertising/broadcasting)
1: Enter BR/EDR/BLE discoverable mode (start advertising/broadcasting)
|
Description |
Module will always be discoverable if no device connected (BR/EDR or BLE),
and be undiscoverable if connected with remote device, unless received this command
|
AT+SCAN - Scan Nearby Devices
Command |
AT+SCAN=Param1{,Param2}} |
|
scan type(0~2)
0: Stop scan
1: Scan nearby BR/EDR devices
2: Scan nearby BLE devices
|
|
BLE SCAN report type or BR/EDR scan time
BLE Sacn 0: Report like BR/EDR, 1: Report advertising data
BR/EDR Sacn 0 - 255
|
Description |
Format description reference: +SCAN - Scan Result |
AT+PLIST - Get/Delete Paired List
Command |
AT+PLIST{=Param} |
|
(0/1~8/12 Bytes MAC address)
(0) Clear all paired record
(1~8) Clear specific paired record with index
(MAC) Clear specific paired record with MAC address
|
Response1 |
+PLIST=Param1, Param2{,Param3} |
|
(1~8) Paired device’s index |
|
(MAC) Paired device’s MAC address |
|
(UTF8) Paired device’s name |
Response2 |
+PLIST=E End of the paired record |
AT+DSCA - Release All Connections
Command |
AT+DSCA |
Description |
Module release all Bluetooth connections with remote device |
AT+TPMODE - Turn On/Off Throughput Mode
Command |
AT+TPMODE{=Param} |
|
Throughput mode(0~1,default:0) 0: Turn Off 1: Turn On |
Response |
+TPMODE=Param |
Description |
When SPP/GATT profile connected and throughput mode is on,
the AT command will be de-active,
every byte received via physical UART will be sent to air, vice visa
|
AT+AUXCFG - Audio Input Mode Configuration
Command |
AT+AUXCFG{=Param} |
|
mode(0-3,default:0)
0: USB Mode
1: LineIn Mode
2: Spdif Mode
3: I2S Mode
|
Description |
This command is used to configure the input mode of the module,
BT1035、BT806 does not support spdif
|
AT+PRINT - Turn on/off reporting data
Command |
AT+PRINT{=Param} |
|
0-off 1-on 。 default: Open report data |
AT+MUTEPIO - Set PA_MUTE pin
Command |
AT+MUTEPIO{=Param} |
|
PIO(0 ~ 63, default:PIO2) |
AT+LINKKEY - Get Link key
Command |
AT+LINKKEY=Param |
|
MAC address of target device (12 Bytes ASCII) |
Response |
+LINKKEY=Param1,Param2 |
|
MAC address of target device (12 Bytes ASCII) |
|
Device’s link key |
Description |
Get Paired Device’s link key |
AT+RSSI - Get RSSI
Command |
AT+RSSI=Param |
|
MAC address of target device (12 Bytes ASCII) |
Response |
+RSSI=Param1,Param2 |
|
MAC address of target device (12 Bytes ASCII) |
|
Device’s RSSI |
Description |
Get Paired Device’s RSSI |
AT+MUTEDELAY - Get/Set Mute Delay
Command |
AT+MUTEDELAY{=Param} |
|
Mute Delay(0 ~ 60, default:20) Units:50ms |
AT+LINEPIO - Get/Set Analog intput detect PIO
Command |
AT+LINEPIO{=Param} |
|
Analog input detect PIO(0 ~ 63, default:PIO44) |
AT+LINKCFG - Turn On/Off Auto Link
Command |
AT+LINKCFG{=Param1{,Param2}} |
|
0:turn off 1:turn on |
|
0:scan all devices 1: only scan Major Service Class is Rendering or Audio |
Description |
if set, Module will scan nearby devices for 5.12 seconds,
find the one which has best signal strength, then connect to it automatically.
Module is not connected, it will always scan nearby devices
|
Note |
BT1035 use AT+LINKCFG, BT806 use AT+AUTOLINK |
HFP Commands
AT+HFPSTAT - Read HFP State
Command |
AT+HFPSTAT |
Response |
+HFPSTAT=Param |
Description |
Format description reference: +HFPSTAT - HFP State |
AT+HFPCONN - Establish HFP Connection
Command |
AT+HFPCONN{=Param} |
|
MAC address of target device (12 Bytes ASCII) |
Description |
Reconnect to last HFP device if parameter not exist |
AT+HFPDISC - Release HFP Connection
Command |
AT+HFPDISC |
Description |
Release current HFP connection with remote device |
AT+HFPRING - Simulate Incoming Call
Command |
AT+HFPRING{=Param} |
|
Phone number (1~15 Bytes ASCII) |
Description |
Dial specific number if parameter exist, otherwise redial |
AT+HFPANSW - Pick Up Incoming Call
Command |
AT+HFPANSW |
Description |
Pick up an incoming call |
AT+HFPCHUP - Reject/Hung up Call
Command |
AT+HFPCHUP |
Description |
Reject incoming call or hung up outgoing/active call |
AT+HFPAUDIO - Establish/Release Voice Audio
Command |
AT+HFPAUDIO{=Param} |
|
0-Release voice audio connection with remote hfp sink device
1-stablish voice audio connection with remote hfp sink device
|
A2DP/AVRCP Commands
AT+A2DPSTAT - Read A2DP State
Command |
AT+A2DPSTAT |
Response |
+A2DPSTAT=Param |
Description |
Format description reference: +A2DPSTAT - A2DP State |
AT+A2DPCONN - Establish A2DP Connection
Command |
AT+A2DPCONN{=Param} |
|
MAC address of target device (12 Bytes ASCII) |
Description |
Reconnect to last A2DP device if parameter not exist |
AT+A2DPDISC - Release A2DP Connection
Command |
AT+A2DPDISC |
Description |
Release current A2DP connection with remote device |
AT+A2DPCFG - Read/Write A2DP Configuration
Command |
AT+A2DPCFG{=Param} |
|
A base-10 representation of a bit field, for each bit |
|
0: Disable AAC Codec 1: Enable AAC Codec |
|
0: Disable APTX Codec 1: Enable APTX Codec |
|
0: Disable APTX-LL Codec 1: Enable APTX-LL Codec |
|
0: Disable APTX-HD Codec 1: Enable APTX-HD Codec |
|
0: Disable APTX-AD Codec 1: Enable APTX-AD Codec |
|
0: Disable LDAC Codec 1: Enable LDAC Codec |
Description |
BT806 does not support |
AT+A2DPENC - Read A2DP Encoder
Command |
AT+A2DPENC |
Response |
+A2DPENC=Param |
|
BT1035: 1:SBC 2:APTX 3:APTX-HD 4:APTX-LL 5:APTX-AD
BT806: 1:SBC 2:FASTSTREAM 3:APTX 4:APTX-LL
|
AT+A2DPAUDIO - Establish/Release A2DP Audio Connection
Command |
AT+A2DPAUDIO{=Param} |
|
0-Release A2DP audio connection with remote a2dp sink device
1-Establish A2DP audio connection with remote a2dp sink device
|
AT+AVRCPSTAT - Read AVRCP State
Command |
AT+AVRCPSTAT |
Response |
+AVRCPSTAT=Param |
Description |
Format description reference: +AVRCPSTAT - AVRCP State |
AT+AVRCPCONN - Establish AVRCP Connection
Command |
AT+AVRCPCONN{=Param} |
|
MAC address of target device (12 Bytes ASCII) |
Description |
Reconnect to last device if parameter not exist |
AT+AVRCPDISC - Release AVRCP Connection
Command |
AT+AVRCPDISC |
Description |
Release current AVRCP connection with remote device |
SPP Commands
AT+SPPSTAT - Read SPP State
Command |
AT+SPPSTAT |
Response |
+SPPATAT=Param |
Description |
Format description reference: +SPPSTAT - SPP State |
AT+SPPCONN - Establish SPP Connection
Command |
AT+SPPCONN{=Param} |
|
MAC address of target device (12 Bytes ASCII) |
AT+SPPDISC - Release SPP Connection
Command |
AT+SPPDISC |
Description |
Release current SPP connection with remote device |
AT+SPPSEND - Send Data Via SPP
Command |
AT+SPPSEND=Param1,Param2 |
|
Payload length (1~492) |
|
Payload (1~492 Bytes UTF8) |
Description |
If throughput mode is on, this command is de-active |
Note |
BT1035 max payload length only support 236 |
GATT Commands
AT+GATTSTAT - Read GATT State
Command |
AT+GATTSTAT |
Response |
+GATTATAT=Param |
Description |
Format description reference: +GATTSTAT - GATT State |
AT+GATTDISC - Release GATT Connection
Command |
AT+GATTDISC |
Description |
Release current GATT connection with remote device |
AT+GATTCONN - Establish GATT Central Connection
Command |
AT+GATTCONN=Param1{,Param2,Param3,Param4} |
|
MAC address of target device & MAC address type (13 Bytes ASCII) |
|
Service-UUID, Support 16 Bit and 128 Bit(4 Bytes/32 Bytes ASCII) |
|
Write-UUID, Support 16 Bit and 128 Bit(4 Bytes/32 Bytes ASCII) |
|
Notify-UUID, Support 16 Bit and 128 Bit(4 Bytes/32 Bytes ASCII) |
Description |
GATT Client enable is valid |
AT+GATTSEND - Send Data Via GATT
Command |
AT+GATTSEND=Param1,Param2 |
|
Payload length (1~492) |
|
Payload (1~492 Bytes UTF8) |
Description |
If throughput mode is on, this command is de-active |
Note |
BT1035 max payload length only support 236 |
Events Table
General Events
+SCAN - Scan Result
Format |
+SCAN =Param1,Param2,Param3, Param4,Param5,Param6,Param7 |
|
Index |
|
Device address type (0~2)
(0) LE public address
(1) LE random address
(2) BR/EDR address
|
|
MAC address (12 Bytes ASCII) |
|
RSSI (-127 ~ -1) |
|
Size of Param6 if exist |
|
Device Name for BR/EDR devices or advertising data for LE devices |
|
Class of device |
+PAIRED - Pair Result
Format |
+PAIRED=Param |
|
MAC address (12 Bytes ASCII) of current pairing device |
HFP Events
+HFPSTAT - HFP State
Format |
+HFPSTAT=Param |
|
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
(4) Outgoing call
(5) Incoming call
(6) Active call
|
+HFPDEV - HFP Remote Device Information
Format |
+HFPDEV=Param1{,Param2} |
|
(12 Bytes ASCII), Remote MAC address of current HFP connection |
|
(UTF8), Remote device name of current HFP connection |
+HFPAUDIO - HFP Voice Audio State
Format |
+HFPAUDIO=Param |
|
(0) HFP voice audio disconnected, audio input/output routed to remote device
(1) HFP voice audio connected, audio input/output routed to module
|
+HFPBATT - HFP Remote Device Battery Level
Format |
+HFPBATT=Param |
|
(0~9) Battery level of remote device |
+HFPSR - HFP Sample rate
Format |
+HFPSR=Param |
|
Sample rate: 8000/16000/32000 |
A2DP/AVRCP Events
+A2DPSTAT - A2DP State
Format |
+A2DPSTAT=Param |
|
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
(4) Streaming
(5) Paused
|
+A2DPDEV - A2DP Remote Device Information
Format |
+A2DPDEV=Param1{,Param2} |
|
(12 Bytes ASCII), Remote device’s MAC address of current A2DP connection |
|
(UTF8), Remote device’s name of current A2DP connection |
+AVRCPSTAT - AVRCP State
Format |
+AVRCPSTAT=Param |
|
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
|
+PLAYSTAT - Media Player State
Format |
+PLAYSTAT=Param |
|
(0) Stopped
(1) Playing
(2) Paused
(3) Fast Forwarding
(4) Fast Rewinding
|
+CTPLAY - Track Play
Format |
+CTPLAY |
Description |
Receive play command |
+CTPAUSE - Track PAUSE
Format |
+CTPAUSE |
Description |
Receive pause command |
+CTSTOP - Track STOP
Format |
+CTSTOP |
Description |
Receive stop command |
+CTFWD - Track Forward
Format |
+CTSTOP |
Description |
Receive forward command |
+CTBACK - Track Backward
Format |
+CTBACK |
Description |
Receive backward command |
SPP Events
+SPPSTAT - SPP State
Format |
+SPPSTAT=Param |
|
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
|
+SPPDATA - SPP Received Incoming Data
Format |
+SPPDATA=Param1,Param2 |
|
Payload length |
|
Payload |
GATT Events
+GATTSTAT - GATT State
Format |
+GATTSTAT=Param |
|
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
|
+GATTDATA - GATT Received Incoming Data
Format |
+SPPDATA=Param1,Param2 |
|
Payload length |
|
Payload |
Application scenarios
profiles initializing and change parameter
The following figure shows Profile initialization and name modification
MCU change device name CARKIT reference code:
1void change_name(void)
2{
3 uart_send("AT+NAME\r\n");
4 if(uart_read("+NAME",name_buf))
5 {
6 if(memcmp(name_buf,"CARKIT",6))
7 {
8 uart_send("AT+NAME=CARKIT,0\r\n"); //defalut disable MAC address suffix
9 uart_send("AT+NAME\r\n"); // read bt name
10 if(uart_read("+NAME",name_buf))
11 {
12 if(memcmp(name_buf,"CARKIT",6))
13 {
14 //change name fail
15 }
16 else
17 {
18 //change name success
19 }
20 }
21 }
22 }
23}
Note
modify any parameters, it is recommended to query first and then modify the final verification
Source mode connection