|
//-----------------------------------------------------------------------------
// ex_scan.vpl
// This example starts scanning for BLE advertising and prints out all
// advertising data that contains the Complete Local Name.
//
//-----------------------------------------------------------------------------
INCLUDE rtcu.inc
// Uncomment math.inc to add math library support.
//INCLUDE math.inc
// Input variables that can be configured via the configuration dialog (These are global)
VAR_INPUT
END_VAR;
// Output variables that can be configured via the configuration dialog (These are global)
VAR_OUTPUT
END_VAR;
// These are the global variables of the program
VAR
END_VAR;
// Callback for showing the name of the device
FUNCTION CALLBACK cbAdvName;
VAR_INPUT
mac : STRING;
ev_type : UINT;
adv_type : USINT;
data : PTR;
len : INT;
rssi : SINT;
arg : DINT;
END_VAR;
VAR
str : STRING;
END_VAR;
str:=strFromMemory(src:=data, len:=len);
// Show MAC, name and RSSI
DebugFmt(message:=mac+" (\1): "+str, v1:=rssi);
END_FUNCTION;
PROGRAM ex_scan;
// These are the local variables of the program block
VAR
rc : INT;
END_VAR;
// The next code will only be executed once after the program starts
// Enable BT
rc := blePower(power:=ON);
DebugFmt(message:="blePower: \1", v1:=rc);
// Register callback for advertising data type 16#09, Complete Local Name
rc := bleRegisterAdvData(cb_Adv:=@cbAdvName, adv_type := 16#09);
DebugFmt(message:="BleRegisterAdvData: \1", v1:=rc);
// Start listening
rc := bleObserverStart(
scan_type:=1,// Active
filter_policy := 0//Accept all
);
DebugFmt(message:="bleObserverStart: \1", v1:=rc);
BEGIN
// Code from this point until END will be executed repeatedly
Sleep(delay:=10000);
END;
END_PROGRAM;
|