The Link Manager Protocol
The LMP is part of the Bluetooth Core Protocols. It interfaces to the L2CAP as described by the Host Controller Interface.
I have used the following guidelines as I modelled the interface in VCC:
- All functions in the interface gives rise to one input port and an optional output port.
- The ports corresponding to each function are named [functionname]_in and _out
- Multiple parameters are modelled as structs with each parameter coming in the order described in the HCI documentation
- Single parameters are mapped directly to the ports
- Functions without parameters are given input ports expecting dummy boolean values.
Following is a diagram showing the input and output ports of the VCC symbol:
The corresponding interface file looks as follows (not that I can think of a reason why anyone would care.. ):
/* Written at time: 11/19/00 14:18:05 */
$VERSION 1.0
$INTERFACE Bluetooth/LMP
$PORT $IN 'Integer:1' Exit_Periodic_Inquiry_Mode_in
$PORT $IN '@Bluetooth_Types.LMP_Connection_Handle_t' Master_Link_Key_in
$PORT $IN '@Bluetooth_Types.LMP_Inquiry_command_t' Inquiry_in
$PORT $IN '@Bluetooth_Types.LMP_Connection_Handle_t' Change_Connection_Link_Key_in
$PORT $OUT '@Bluetooth_Types.LMP_Status_BD_ADDR_t' Link_Key_Request_Negative_Reply_out
$PORT $IN '@Bluetooth_Types.LMP_Remote_Name_Request_command_t' Remote_Name_Request_in
$PORT $IN '@Bluetooth_Types.LMP_Add_SCO_Connection_command_t' Add_SCO_Connection_in
$PORT $OUT '@Bluetooth_Types.LMP_Status_BD_ADDR_t' PIN_Code_Request_Negative_Reply_out
$PORT $IN '@Bluetooth_Types.LMP_Connection_Handle_t' Read_Remote_Version_Information_in
$PORT $IN '@Bluetooth_Types.LMP_Connection_Handle_t' Read_Remote_Supported_Features_in
$PORT $OUT 'Integer:8' Periodic_Inquiry_Mode_out
$PORT $OUT 'Integer:8' Inquiry_Cancel_out
$PORT $OUT '@Bluetooth_Types.LMP_Status_BD_ADDR_t' PIN_Code_Request_Reply_out
$PORT $IN '@Bluetooth_Types.LMP_Reject_Connection_Request_command_t' Reject_Connection_Request_in
$PORT $IN '@Bluetooth_Types.LMP_Periodic_Inquiry_Mode_command_t' Periodic_Inquiry_Mode_in
$PORT $IN '@Bluetooth_Types.LMP_BD_ADDR_t' PIN_Code_Request_Negative_Reply_in
$PORT $OUT '@Bluetooth_Types.LMP_Status_BD_ADDR_t' Link_Key_Request_Reply_out
$PORT $IN '@Bluetooth_Types.LMP_Accept_Connection_Request_command_t' Accept_Connection_Request_in
$PORT $IN 'Integer:1' Inquiry_Cancel_in
$PORT $IN '@Bluetooth_Types.LMP_Create_Connection_command_t' Create_Connection_in
$PORT $IN '@Bluetooth_Types.LMP_Connection_Handle_t' Authentication_Requested_in
$PORT $IN '@Bluetooth_Types.LMP_Change_Connection_Packet_Type_command_t' Change_Connection_Packet_Type_in
$PORT $IN '@Bluetooth_Types.LMP_PIN_Code_Request_Reply_command_t' PIN_Code_Request_Reply_in
$PORT $IN '@Bluetooth_Types.LMP_Set_Connection_Encryption_command_t' Set_Connection_Encryption_in
$PORT $IN '@Bluetooth_Types.LMP_BD_ADDR_t' Link_Key_Request_Negative_Reply_in
$PORT $OUT 'Integer:8' Exit_Periodic_Inquiry_Mode_out
$PORT $IN '@Bluetooth_Types.LMP_Link_Key_Request_Reply_command_t' Link_Key_Request_Reply_in
$PORT $IN '@Bluetooth_Types.LMP_Disconnect_command_t' Disconnect_in
$PORT $IN '@Bluetooth_Types.LMP_Connection_Handle_t' Read_Clock_Offset_in
Last update: 26/11/2000 by Morten Bek