btHandlePairRequest (Function)

Top  Previous  Next

Architecture:

NX32L

Device support:

NX-200, NX-400, NX-900

Firmware version:

1.10.00

 


 

This function is used to read the information about a pairing request.

Based on this information and the device address provided by btWaitEvent, it must be decided if the pairing should be approved and btSendPairResponse should be called with the result.

 

 

Input:

None.

 

Output:

passkey : DINT

The 6-digit passkey to confirm. It must typically be compared with the one shown on the remote device. This can e.g. be done by showing it on the display or by sending an SMS. If enough security is applied at other levels(e.g. password on higher level protocols), this value can also be ignored and all devices can be accepted.

 

Returns: INT

1

-

_BT_OK


Success

0

-

_BT_ERR_NOT_SUPPORTED


The API is not supported.

-1

-

_BT_ERR_NOT_OPEN


The adapter is not powered(see btPower).

-9

-

_BT_ERR_NODATA


The request is not valid. No pair request event is pending or it has expired.

 

 

Declaration:

FUNCTION btHandlePairRequest : INT;
VAR_INPUT
  passkey  : ACCESS DINT;
END_VAR;

 

Example:

...
THREAD_BLOCK btThread
VAR
  rc      : INT;
  address : STRING;
  ch      : SINT;
  pass    : DINT;
END_VAR;
  WHILE TRUE DO
     //
    rc := btWaitEvent(timeout:=10000, dev := address);
    IF rc <> _BT_ERR_TIMEOUT THEN
        DebugFmt(message:="event \1: "+address, v1:=rc);
        CASE rc OF
        _BT_EVENT_INCOMING:
          rc := btHandleSerialPortIncomingConnection(ch := ch, port := port);
          DebugFmt(message:="btHandleSerialPortIncomingConnection(\2) : \1, \3", v1:=rc, v2:=ch, v3:=port);
        _BT_EVENT_DEV_FOUND:
          DebugFmt(message:="Found "+address);
        _BT_EVENT_DEV_LOST:
          DebugFmt(message:="Lost "+address);
        _BT_EVENT_PAIR_REQ:
          DebugFmt(message:="Requested confirm for "+address);
          rc := btHandlePairRequest(passkey:=pass);
          DebugFmt(message:="Pass: \4, \1", v1:=rc, v4:=pass);
          rc := guiShowMessage(message:="Is the pairing code "+dintToStr(v:=pass)+" correct?", type := 2, timeout := 20);
          DebugFmt(message:="guiShowMessage: \1", v1:=rc);
           // Accept if "Yes" was pressed
          rc := btSendPairResponse(accept:=(rc = 3));
          DebugFmt(message:="btSendPairResponse: \1", v1:=rc);
        ELSE
          DebugFmt(message:="unknown event: \1", v1:=rc);
        END_CASE;
        btEventDone();
    END_IF;
 
  END_WHILE;
END_THREAD_BLOCK;
...