Examples - BLE Scanner (LX)

Top  Previous  Next

//-----------------------------------------------------------------------------
// 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;