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:

_images/BT1035_pin_map.png

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

AT+Command{=Param1{,Param2{,Param3…}}}<CR><LF>
  • 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

Example:Read module’s BR/EDR local name
<< AT+NAME
>> +NAME=FSC-BT1035XXXX
>> OK

Example:Pick up an incoming call when no call incoming actually
<< AT+HFPANSW
>> ERROR

Event Format

<CR><LF>+Indication{=Param1{,Param2{,Param3…}}}<CR><LF>
  • 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 ‘,’

Example: Received “1234567890” from mobile phone via SPP profile
>> +SPPDATA=10,1234567890

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

Param1

Module type

Param2

Firmware version

Param3

Firmware Compile time

Example:
<< AT+VER
>> +VER=BT1035,V2.6.1,20220922
>> OK

AT+BAUD - Get/Set Uart Baudrate

Command

AT+BAUD{=Param}

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
Example:Read module’s baudrate
<< AT+BAUD
>> +BAUD=115200
>> OK

<< AT+BAUD=921600
>> OK
Module switch baudrate to 921600 immediately, host change baudrate as well, query module’s name at new baudrate
<< AT+NAME
>> +NAME=FSC-BT1035-1F26
>> OK

AT+I2SCFG - Get/Set I2S Settings

Command

AT+I2SCFG{=Param}

Param

A base-10 representation of a bit field, default:0, for each bit

BIT[0]

0:disable; 1:enable

BIT[1]

0:master; 1:slave

BIT[2]

0:FS=48000Hz;1:FS=44100Hz

BIT[3]

0:left justified; 1:right justified

BIT[4]

0:data 1 bit delay; 1:data no delay

BIT[5-6]

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}

Param

Microphone input gain (0~15, default:10)

AT+SPKVOL - Get/Set Analog Output Volume

Command

AT+SPKVOL{=Param}

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}

Param

0-Power off 1-Power on

AT+PROFILE - Bluetooth Profile Selection

Command

AT+PROFILE{=Param}

Param

A base-10 representation of a bit field, for each bit:

BIT[0]

SPP (Serial Port Profile)

BIT[1]

GATT Server (Generic Attribute Profile)

BIT[2]

GATT Client (Generic Attribute Profile)

BIT[3]

HFP-HF (Hands-Free Profile Handsfree)

BIT[4]

HFP-AG (Hands-Free Profile Audio Gateway)

BIT[5]

A2DP Sink (Advanced Audio Distribution Profile)

BIT[6]

A2DP Source (Advanced Audio Distribution Profile)

BIT[7]

AVRCP Controller (Audio/Video remote controller Profile)

BIT[8]

AVRCP Target (Audio/Video remote controller Profile)

BIT[9]

HID Keyboard (Human Interface Profile)

BIT[10]

PBAP Server (Phonebook Access Profile)

Response

+PROFILE=Param

Description

BT1035、BT806 not support HFP-HF、 A2DP Sink、AVRCP Controller、HID Keyboard、PBAP

Example:Read current profile selection
<< AT+PROFILE
>> +PROFILE=341
Example:Enable SPP, GATT Server, HFP Source, A2DP Source profile, disable the others
<< AT+PROFILE=83
>> OK

AT+AUTOCONN - Turn On/Off Power On Auto Reconnect

Command

AT+AUTOCONN{=Param}

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…

Param1

DEVSTAT

Param2

SPPSTAT

Param3

GATTSTAT

Param4

HFPSTAT

Param5

A2DPSTAT

Param6

AVRCPSTAT

AT+DEVSTAT - Read Device State

Command

AT+DEVSTAT

Response

+DEVSTAT=Param

Param

A base-10 representation of a bit field, for each bit:

BIT[0]

0: Power Off; 1: Power On

BIT[1]

0: BR/EDR Not Discoverable; 1: BR/EDR Discoverable

BIT[2]

0: BLE Not Advertising; 1: BLE Advertising

BIT[3]

0: BR/EDR Not Scanning; 1: BR/EDR Scanning

BIT[4]

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

Param

Module’s BR/EDR MAC address (12 Bytes ASCII)

Example:
<< AT+ADDR
>> +ADDR=DC0D30010203
>> OK

AT+LEADDR - Get BLE MAC Address

Command

AT+LEADDR

Response

+LEADDR=Param

Param

Module’s LE MAC address (12 Bytes ASCII)

AT+NAME - Get/Set BR/EDR Local Name

Command

AT+NAME{=Param1{,Param2}}

Param1

BR/EDR local name(1~31 Bytes ASCII)

Param2

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

Example:Read current BR/EDR local name
<< AT+NAME
>> +NAME=FSC-BT1035XXXX
>> OK

Example:Change module’s BR/EDR local name to “ABC”,and disable suffix
<< AT+NAME=ABC,0
>> OK

Example:Change module’s BR/EDR local name to “ABC” and enable suffix
<< AT+NAME=ABC,1
>> OK

AT+LENAME - Get/Set BLE Local Name

Command

AT+LENAME{=Param1{,Param2}}

Param1

BLE local name(1~31 Bytes ASCII)

Param2

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}

Param

Pin code(4~15 Bytes ASCII, default:0000)

Response

+PIN=Param

Description

Pin code only work in legacy pairing mode, see AT+SSP

Example:Read module’s pin code
<< AT+PIN
>> +PIN=0000
>> OK

Example: Change module’s pin code to “1234”
<< AT+PIN=1234
>> OK

AT+COD - Get/Set Device Class

Command

AT+COD=Param

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

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}}

Param1

scan type(0~2)
0: Stop scan
1: Scan nearby BR/EDR devices
2: Scan nearby BLE devices

Param2

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}

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}

Param1

(1~8) Paired device’s index

Param2

(MAC) Paired device’s MAC address

Param3

(UTF8) Paired device’s name

Response2

+PLIST=E End of the paired record

Example:Read module’s paired record
<< AT+PLIST
>> +PLIST=1,1C5CF226D773, iPhone12
+PLIST=2, A0BC30075421, Samsung S8
+PLIST=E
>> OK

Example:Clear module’s paired record
<< AT+PLIST=0
>> OK

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}

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}

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
Example:Set LineIn mode input
<< AT+AUXCFG=1
>> OK

AT+PRINT - Turn on/off reporting data

Command

AT+PRINT{=Param}

Param

0-off 1-on 。 default: Open report data

AT+MUTEPIO - Set PA_MUTE pin

Command

AT+MUTEPIO{=Param}

Param

PIO(0 ~ 63, default:PIO2)

AT+RSSI - Get RSSI

Command

AT+RSSI=Param

Param

MAC address of target device (12 Bytes ASCII)

Response

+RSSI=Param1,Param2

Param1

MAC address of target device (12 Bytes ASCII)

Param2

Device’s RSSI

Description

Get Paired Device’s RSSI

AT+MUTEDELAY - Get/Set Mute Delay

Command

AT+MUTEDELAY{=Param}

Param

Mute Delay(0 ~ 60, default:20) Units:50ms

AT+LINEPIO - Get/Set Analog intput detect PIO

Command

AT+LINEPIO{=Param}

Param

Analog input detect PIO(0 ~ 63, default:PIO44)

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}

Param

MAC address of target device (12 Bytes ASCII)

Description

Reconnect to last HFP device if parameter not exist

Example:Connect to last HFP device
<< AT+HFPCONN
>> OK
Example:Connect to specific HFP device with MAC address
<< AT+HFPCONN=1C5CF226D773
>> OK

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}

Param

Phone number (1~15 Bytes ASCII)

Description

Dial specific number if parameter exist, otherwise redial

Example:Redial
<< AT+HFPRING
>> OK
Example:Simulate Incoming Call number “075527924639”
<< AT+HFPRING=075527924639
>> OK

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}

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}

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}

Param

A base-10 representation of a bit field, for each bit

BIT[0]

0: Disable AAC Codec 1: Enable AAC Codec

BIT[1]

0: Disable APTX Codec 1: Enable APTX Codec

BIT[2]

0: Disable APTX-LL Codec 1: Enable APTX-LL Codec

BIT[3]

0: Disable APTX-HD Codec 1: Enable APTX-HD Codec

BIT[4]

0: Disable APTX-AD Codec 1: Enable APTX-AD Codec

BIT[5]

0: Disable LDAC Codec 1: Enable LDAC Codec

Description

BT806 does not support

Example:Read current A2DP configuration
<< AT+A2DPCFG
>> +A2DPCFG=0
>> OK
Example::Set A2DP configuration to: Only enable AAC Codec
<< AT+A2DPCFG=1
>> OK

AT+A2DPENC - Read A2DP Encoder

Command

AT+A2DPENC

Response

+A2DPENC=Param

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}

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}

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}

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

Param1

Payload length (1~492)

Param2

Payload (1~492 Bytes UTF8)

Description

If throughput mode is on, this command is de-active

Note

BT1035 max payload length only support 236

Example: Send data “1234567890” to remote device via SPP
<< AT+SPPSEND=10,1234567890
>> OK

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}

Param1

MAC address of target device & MAC address type (13 Bytes ASCII)

Param2

Service-UUID, Support 16 Bit and 128 Bit(4 Bytes/32 Bytes ASCII)

Param3

Write-UUID, Support 16 Bit and 128 Bit(4 Bytes/32 Bytes ASCII)

Param4

Notify-UUID, Support 16 Bit and 128 Bit(4 Bytes/32 Bytes ASCII)

Description

GATT Client enable is valid

Example: Specified remote device service connections
<< AT+GATTCONN=123456ABCDEF0,FFF0,FFF2,FFF1
>> OK

AT+GATTSEND - Send Data Via GATT

Command

AT+GATTSEND=Param1,Param2

Param1

Payload length (1~492)

Param2

Payload (1~492 Bytes UTF8)

Description

If throughput mode is on, this command is de-active

Note

BT1035 max payload length only support 236

Example: Send data “1234567890” to remote device via GATT
<< AT+GATTSEND=10,1234567890
>> OK

Events Table

General Events

+SCAN - Scan Result

Format

+SCAN =Param1,Param2,Param3, Param4,Param5,Param6,Param7

Param1

Index

Param2

Device address type (0~2)
(0) LE public address
(1) LE random address
(2) BR/EDR address

Param3

MAC address (12 Bytes ASCII)

Param4

RSSI (-127 ~ -1)

Param5

Size of Param6 if exist

Param6

Device Name for BR/EDR devices or advertising data for LE devices

Param7

Class of device

Example: Scan BR/EDR nearby devices
<< AT+SCAN=1
>> OK
>> +SCAN=1,2,DC0D30000057,-42,11,FSC-BT1026C,240408
>> +SCAN=2,2,DC0D30000012,-70,16,FSC-BT1006A-0012,240404
>> +SCAN=3,2,DC0D300011B9,-70,14,222qqqqqqqqqqq,240404
>> +SCAN=E

+PAIRED - Pair Result

Format

+PAIRED=Param

Param

MAC address (12 Bytes ASCII) of current pairing device

HFP Events

+HFPSTAT - HFP State

Format

+HFPSTAT=Param

Param1

(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}

Param1

(12 Bytes ASCII), Remote MAC address of current HFP connection

Param2

(UTF8), Remote device name of current HFP connection

Example: HFP connect success with device
>> +HFPDEV=1C5CF226D774, iPhone

+HFPAUDIO - HFP Voice Audio State

Format

+HFPAUDIO=Param

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

Param

(0~9) Battery level of remote device

+HFPSR - HFP Sample rate

Format

+HFPSR=Param

Param

Sample rate: 8000/16000/32000

A2DP/AVRCP Events

+A2DPSTAT - A2DP State

Format

+A2DPSTAT=Param

Param

(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
(4) Streaming
(5) Paused

+A2DPDEV - A2DP Remote Device Information

Format

+A2DPDEV=Param1{,Param2}

Param1

(12 Bytes ASCII), Remote device’s MAC address of current A2DP connection

Param2

(UTF8), Remote device’s name of current A2DP connection

+AVRCPSTAT - AVRCP State

Format

+AVRCPSTAT=Param

Param

(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected

+PLAYSTAT - Media Player State

Format

+PLAYSTAT=Param

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

Param

(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected

+SPPDATA - SPP Received Incoming Data

Format

+SPPDATA=Param1,Param2

Param1

Payload length

Param2

Payload

Example: Received data “1234567890” from remote device via SPP
<< +SPPDATA=10,1234567890

GATT Events

+GATTSTAT - GATT State

Format

+GATTSTAT=Param

Param

(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected

+GATTDATA - GATT Received Incoming Data

Format

+SPPDATA=Param1,Param2

Param1

Payload length

Param2

Payload

Example: Received data “1234567890” from remote device via GATT
<< +GATTDATA=10,1234567890

Application scenarios

profiles initializing and change parameter

The following figure shows Profile initialization and name modification

@startuml
hide footbox
skinparam sequenceMessageAlign center

box  #LightBlue
participant Host as host
participant Blueware as bt
end box

rnote over host, bt: Profile initialization

bt -> host: +SPPSTAT=1
bt -> host: +GATTSTAT=1
bt -> host: +A2DPSTAT=1
bt -> host: +AVRCPSTAT=1
bt -> host: +HFPSTAT=1
bt -> host: +VER=FSC-BT1035,V6.0.1,20210922
bt -> host: +DEVSTAT=1
rnote over host, bt: send AT+PAIR=1, enter discoverable
host -> bt: AT+PAIR=1
bt -> host: +DEVSTAT=7 (enter discoverable,phone can find and spp/gatt connect to us)

rnote over host, bt: change name to "CARKIT",disable suffix. and verify readback
host -> bt: AT+NAME
bt -> host: AT+NAME=FSC-BT1035
host -> bt: AT+NAME=CARKIT,0
bt -> host: OK
host -> bt: AT+NAME
bt -> host: +NAME=CARKIT

@enduml

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

@startuml
hide footbox
skinparam sequenceMessageAlign center

box  #LightBlue
participant Host as host
participant Blueware as bt
end box

rnote over host, bt: Profile initialization

bt -> host: +SPPSTAT=1
bt -> host: ...
bt -> host: +DEVSTAT=1

rnote over host, bt: scan nearby devices
host -> bt: AT+SCAN=1
bt -> host: +SCAN=1,2,DC0D30000057,-42,11,FSC-BT1026C,240408
bt -> host: +SCAN=2,2,DC0D30000012,-70,16,FSC-BT1006A-0012,240404
bt -> host: +SCAN=E

host -> bt: AT+A2DPCONN=DC0D30000057 (connect FSC-BT1026C)
bt -> host: OK
bt -> host: +A2DPSTAT=2
bt -> host: +A2DPSTAT=3 (A2DP connected)
bt -> host: +A2DPDEV=DC0D30000057,FSC-BT1026C
bt -> host: +HFPSTAT=3 (HFP connected)
bt -> host: +AVRCPSTAT=3 (AVRCP connected)
bt -> host: +A2DPENC=1 (sbc encoder)
bt -> host: +A2DPSTAT=4 (auto enter A2DP Streaming)

rnote over host, bt: stop Streaming
host -> bt: AT+A2DPAUDIO=0
bt -> host: +A2DPSTAT=5 (A2DP pause)

rnote over host, bt: Establish hfp audio
host -> bt: AT+HFPAUDIO=1
bt -> host: +HFPSTAT=4
bt -> host: +HFPAUDIO=1
bt -> host: +HFPSTAT=6
bt -> host: +HFPSR=16000 (Sample rate : 16000)

rnote over host, bt: Release hfp audio
host -> bt: AT+HFPAUDIO=0
bt -> host: +HFPSTAT=3
bt -> host: +HFPAUDIO=0

@enduml

Appendix

Download PDF Document

Download PDF Document