btHandleSerialPortIncomingConnection (Function)

Top  Previous  Next

Architecture:

NX32L

Device support:

NX-200, NX-400, NX-900

Firmware version:

1.10.00

 


 

This function handles an incoming Serial Port connection from a remote device.

It is used to handle event 1 (_BT_EVENT_INCOMING) from btWaitEvent.

 

Input:

None.

 

Output:

ch : SINT

The channel the device is connecting to.

 

port : SINT

The port number to use with serOpen.

 

Returns: INT

1

-

_BT_OK


The connection to the port has been established.

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 connection is not valid. The other device may have disconnected again.

 

 

 

Declaration:

FUNCTION btHandleSerialPortIncomingConnection : INT;
VAR_INPUT
  ch      : ACCESS SINT;
  port    : ACCESS SINT;
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;
...