BM71 GAP Peripheral Demo (Making Connections)
Objective
This lab exercise will have you configure, then explore, Generic Access Profile (GAP) discovery and connection procedures on a BM71 configured as a GAP Peripheral, using a BM-71 PICtail™ board.
You will:
- Configure key static module configuration settings using the User Interface (UI) Configuration Tool (Device Name, Pinout, Operation mode, Default ADV & SCAN_RSP packet payload data and interval, LED0, etc…)
- Dynamically trigger GAP Discovery modes and procedures via BM71 OP codes using the Manual Pattern Test Tool
- Interact with the board using a smartphone app
Reference Materials
Hardware Tools
- BM71 PICtail
- Android Smartphone (Lab tested with BLU Advance 5.0).
- OS version 4.4 or higher
- BT 4.0 or higher hardware
- Apple Smartphone
- OS version 5 or later
- BT 4.0 or higher hardware
Software Tools
- User Interface (UI) Configuration Tool
- Manual Pattern Test Tool
- Smart Discover App (iOS)
- Smart Discover App (Android)
Connection Diagram
Manual Pattern Flow Chart
For this example, the BM71 is configured to operate in Manual Pattern mode (i.e., a Generic Bluetooth® Low Energy (BLE) Link Controller). The following flow chart depicts the operation:
Procedure
Peripheral Configuration
Place the Module in Test Mode
After connecting the PICtail to your PC using the supplied USB cable, place the module in Test mode by setting SW7 in the ON position, then press SW5 (Reset) to reset the module. Also, ensure the jumpers are all set as shown:
Launch the UI Configuration Tool
Open the BLEDK3 UI Configuration Tool and load the default BM71 configuration file: IS1871SF_102_BLEDK3_UI v100.132(BM71) default.txt
Select Edit and ensure that the BLEDK radio button is checked and that BM71 is the device selected under the Main Feature window. Then press OK.
System Setup Tab
Change Device Name
In the Device Information pane, set the Name Fragment to lab2p-XXXX where XXXX is the last four digits of the BM71 MAC address. This identifier will become the GAP Service Device Name characteristic, as well as the Local Name identifier during advertising.
Disable UART_RX_IND
Scroll down to the Uart Setting pane, then select Disable from the UART RX_IND pull-down as shown.
When enabled, this feature places the module into a Lower Power Operating mode, shutting off its UART RX operation. The host MCU needs to drive this pin low for at least 3 ms before sending the next packet to the module, as shown.
Configure Manual Pattern (BLE GATT) Operation Mode
In the Operation Mode Setting pane, select Manual Pattern for Operation Pattern as shown.
Click OK on the pop-up dialog box that follows.
Click Next to proceed to the next tab.
System Setup2 Tab
General Purpose Input/Output (GPIO) Configuration
In the GPIO Configuration pane, ensure the GPIO pin radio button settings are left at default settings as shown below.
Click Next to proceed to the next tab.
LE Mode Setup Tab
ADV Packet Interval
In the LE Advertising Setting pane, set the ADV packet interval, referred to here as LE Fast Advertising Interval, to 100 ms by writing "0x00A0" in the field as shown below.
Leave the remaining parameters as-is.
ADV Packet Payload
In the Advertising Data Setting pane, ensure that Complete Device Name and Flag are checked and included in the payload. (The GAP Device Name characteristic will automatically be included in the ADV packet as the Local Name.)
SCAN_RSP Packet Payload
In the Scan Response Data Setting pane, ensure that Tx Power is enabled for the payload.
The remainder of the settings are left at their defaults.
Write Settings
Press Finish.
To program these settings into the BM71 module, click on Write, select the COM port you are using, and press Write again.
On the window that pops up, click Yes and lastly, OK as shown above.
Close the UI Configuration Tool.
GAP Discovery and Connection
Discovery means:
- Put the Peripheral in General Discoverable mode (start Advertising).
- Trigger the Central to initiate the General Discovery Procedure (Scanning).
Connection means:
- Central runs a general Connection Establishment Procedure (scan/select a peripheral based on certain criteria, then initiate a direct connection establishment procedure).
Place the Module in Application Mode
Move dip-switch SW7 to the OFF position (1) and reset the module by pressing SW5 (button immediately above dip-switch).
Launch the Manual Pattern Test Tool
Open the Manual Pattern Test Tool, and connect to the COM port associated with the board.
Command and Response
Verify the connection by sending a Read Local Information packet. Select 0x01: Read Local Information for Opcode in the Common tab.
If the COM port connection was successful, you will see results similar to the following Log View and Local Information panes:
Analysis of the “Read Local Information” (0x01) Command Packet
Analysis of the “Read Local Information” (0x01) Event Packet
Mode of Operation
Verify the BM71 state/mode of operation by sending a Read BLEDK3 Status packet. Select 0x03: Read BLEDK3 Status for Opcode in the Common tab.
The module should be on Idle mode.
Advertising Overview (BM71)
Set Advertising Data
On BM71, the ADV interval, as well as ADV_IND and SCAN_RSP payload data can be set statically (using the UI Configuration Tool) and dynamically (via command op-codes/packets).
Since we’ve set an appropriate ADV_IND Interval, as well as ADV_IND and SCAN_RSP payload data using the UI Configuration Tool (steps 7 thru 9 above), we will not need to update them dynamically via the Manual Pattern evaluation tool below.
If you need to update ADV and SCAN_RSP payload data dynamically, select the ADV / SR Data tab and set advertising and scan response data payload. Then, pressing Update will issue GAP Command Opcode 0x11 (Write_Adv_Data) to update the payload data sent during Advertising (Standby) mode:
If you need to update ADV Interval dynamically, GAP op-code 0x13 (Set_Adv_Parameter) may be used to dynamically alter the ADV interval:
Put the BM71 Peripheral in General Discoverable Mode
Begin Advertising
In the GAP tab, select 0x1C: (Set Adv Enable) for Opcode. Select 0x01: (Enter Standby Mode) for Standby mode. Finally, press Send as shown:
You should see the following indicators of success:
BT Status will show "0x03: Standby Mode"
Blue LED (P2_0/LED) will blink once every three seconds (default setting - configurable via UI Config Tool):
You should also see the peripheral’s Local Name displayed in the Smart Discover App, along with RSSI and ADV Interval (Android):
Connect to the BM71 Peripheral Using SmartDiscover App
In the scan list, select the BM71 device you wish to connect to by tapping on it.
You will see the following indicators of success:
BT Status will show "0x0C: BLE Connected Mode" and LE Connection Information (provided by the Central) is also provided.
Blue LED (P2_0/LED) will blink twice every 1.5 seconds (default setting -configurable via UI Config Tool):
In SmartDiscover, the default services will have been enumerated, and the ADV and SCAN_RSP data displayed for the device:
Disconnect from the BM71 Peripheral Using SmartDiscover App
In the SmartDiscover app, disconnect from the device by tapping DISCONNECT.
You should see the following indicators of success:
BT Status will show "0x09 Idle Mode":
Blue LED (P2_0/LED) will stop blinking:
Conclusions
A GAP Peripheral device needs to be set up:
- ADV payload data
- SCAN_RSP payload data
- Advertising interval
- BM71 parameters may be modified statically or dynamically:
- Statically: Using the UI Configuration Tool, or via Direct-write to configuration non-volatile memory.
- Dynamically: Via op-codes/packets send to the module