cancel
Showing results for 
Search instead for 
Did you mean: 

STM32CubeMonitor-RF: Scripting BLE Tests

connoisseur_de_mimi
Associate III

I want to use STM32CubeMonitor-RF's scripting feature to automate BLE tests, but I'm having troubles right from the start: 

Send(ACI_GAP_CREATE_CONNECTION;0x01D0;0x01D0;0x00;<client address>;0x00;0x0040;0x0040;0x0000;0x015E;0x0015;0x0015)
Wait(500)
Send(ACI_GATT_DISC_ALL_PRIMARY_SERVICES;<connection handle>)

ACI_GATT_DISC_ALL_PRIMARY_SERVICES needs a connection handle, which is only known at runtime, it would need to be extracted from a response to the ACI_GAP_CREATE_CONNECTION command. is this possible, or is it possible to set the handle to a constant value?

3 REPLIES 3
Richard.Chvr
ST Employee

Hello @connoisseur_de_mimi, no possibility to extract handle from response nor to set in a constant value. In most cases, handle does not change in between script executions loop, need to get it value at first execution and use this value in script.

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
connoisseur_de_mimi
Associate III

Unfortunately this seems not to work. Consider this simple script:

# Script recording starts on 11/12/2025 19:25:34
Send(ACI_GAP_CREATE_CONNECTION;0x0004;0x0004;0x00;0x000000000000;0x00;0x0006;0x0006;0x0000;0x000A;0x0000;0x0000)
Wait(500)
Send(ACI_GATT_DISC_ALL_PRIMARY_SERVICES;0x080A)
Wait(1000)
Send(ACI_GAP_TERMINATE;0x080A;0x13)
# Script recording ends on 11/12/2025 19:26:40

The first run is successful: 

SCRIPT REPORT

Script name : myScript2.txt
Test date : 28/01/2026 10:35:20

Verdict : SUCCESS    No error detected

Command                                  | Sent   | ACI status | ACI raw result
ACI_GAP_CREATE_CONNECTION                | OK     | 0x00       | [0x04,0x3E,0x1F,0x0A,0x00,0x0A,0x08,0x00,0x00,0x4E,0x81,0x26,0xE1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0A,0x00,0x00]
ACI_GATT_DISC_ALL_PRIMARY_SERVICES       | OK     | 0x00       | [0x04,0x0F,0x04,0x00,0x01,0x12,0xFD]
ACI_GAP_TERMINATE                        | OK     | 0x00       | [0x04,0x0F,0x04,0x00,0x01,0x93,0xFC]

END of report

runs after that fail: 

SCRIPT REPORT

Script name : myScript2.txt
Test date : 28/01/2026 10:35:25

Verdict : FAILED    Some error have been detected

Command                                  | Sent   | ACI status | ACI raw result
ACI_GAP_CREATE_CONNECTION                | OK     | 0x00       | [0x04,0x3E,0x1F,0x0A,0x00,0x0B,0x08,0x00,0x00,0x4E,0x81,0x26,0xE1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0A,0x00,0x00]
ACI_GATT_DISC_ALL_PRIMARY_SERVICES       | OK     | 0x0C       | [0x04,0x0F,0x04,0x0C,0x01,0x12,0xFD]
ACI_GAP_TERMINATE                        | OK     | 0x00       | [0x04,0x0F,0x04,0x00,0x01,0x93,0xFC]

END of report

unless the connection handle is manually incremented. 

CubeMon-RF log file attached. 

You can use Loop to increment the connection handle

 

Loop (CHandle, 0x080a, 0x0EFF)

Send(ACI_GAP_CREATE_CONNECTION;0x0004;0x0004;0x00;0x000000000000;0x00;0x0006;0x0006;0x0000;0x000A;0x0000;0x0000)
Wait(500)
Send(ACI_GATT_DISC_ALL_PRIMARY_SERVICES;[CHandle])
Wait(1000)
Send(ACI_GAP_TERMINATE;[CHandle];0x13)

Pause("Validate for next loop")

EndLoop

 

I don't know the the exact condition to avoid ConnectionHandle increment on remote device.

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.