X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/e55f33866334615e705ff68c0f3bea8e5b1b9b8b..57fe6b4fb97668eb15c4fa56095c0abd746d6c99:/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.c?ds=sidebyside diff --git a/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.c b/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.c index df9f663e3..e74d37749 100644 --- a/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.c +++ b/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.c @@ -36,6 +36,14 @@ #include "BluetoothHost.h" +/** Bluetooth configuration structure. This structure configures the bluetooth stack's user alterable settings. */ +Bluetooth_Device_t Bluetooth_DeviceConfiguration = + { + Class: (DEVICE_CLASS_SERVICE_CAPTURING | DEVICE_CLASS_MAJOR_COMPUTER | DEVICE_CLASS_MINOR_COMPUTER_PALM), + PINCode: "0000", + Name: "LUFA Bluetooth Demo" + }; + /** Main program entry point. This routine configures the hardware required by the application, then * enters a loop to run the application tasks in sequence. */ @@ -46,6 +54,7 @@ int main(void) puts_P(PSTR(ESC_FG_CYAN "Bluetooth Host Demo running.\r\n" ESC_FG_WHITE)); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); + sei(); for (;;) { @@ -196,18 +205,27 @@ void Bluetooth_Host_Task(void) } } +/** Bluetooth stack callback event for when the Bluetooth stack has fully initialized using the attached + * Bluetooth dongle. + */ +void Bluetooth_StackInitialized(void) +{ + printf_P(PSTR("Stack initialized with local address %02X:%02X:%02X:%02X:%02X:%02X.\r\n"), + Bluetooth_State.LocalBDADDR[5], Bluetooth_State.LocalBDADDR[4], Bluetooth_State.LocalBDADDR[3], + Bluetooth_State.LocalBDADDR[2], Bluetooth_State.LocalBDADDR[1], Bluetooth_State.LocalBDADDR[0]); +} + /** Bluetooth stack callback event for a Bluetooth connection request. When this callback fires, the * user application must indicate if the connection is to be allowed or rejected. * - * \param RemoteAddress Bluetooth address of the remote device attempting the connection + * \param[in] RemoteAddress Bluetooth address of the remote device attempting the connection * * \return Boolean true to accept the connection, false to reject it */ -bool Bluetooth_ConnectionRequest(uint8_t* RemoteAddress) +bool Bluetooth_ConnectionRequest(const uint8_t* RemoteAddress) { - printf_P(PSTR("Connection Request from Device %02X:%02X:%02X:%02X:%02X:%02X\r\n"), - RemoteAddress[5], RemoteAddress[4], - RemoteAddress[3], RemoteAddress[2], + printf_P(PSTR("Connection Request from Device %02X:%02X:%02X:%02X:%02X:%02X.\r\n"), + RemoteAddress[5], RemoteAddress[4], RemoteAddress[3], RemoteAddress[2], RemoteAddress[1], RemoteAddress[0]); /* Always accept connections from remote devices */ @@ -219,7 +237,7 @@ bool Bluetooth_ConnectionRequest(uint8_t* RemoteAddress) */ void Bluetooth_ConnectionComplete(void) { - printf_P(PSTR("Connection Complete to Device %02X:%02X:%02X:%02X:%02X:%02X\r\n"), + printf_P(PSTR("Connection Complete to Device %02X:%02X:%02X:%02X:%02X:%02X.\r\n"), Bluetooth_Connection.RemoteAddress[5], Bluetooth_Connection.RemoteAddress[4], Bluetooth_Connection.RemoteAddress[3], Bluetooth_Connection.RemoteAddress[2], Bluetooth_Connection.RemoteAddress[1], Bluetooth_Connection.RemoteAddress[0]); @@ -232,26 +250,40 @@ void Bluetooth_ConnectionComplete(void) */ void Bluetooth_DisconnectionComplete(void) { - printf_P(PSTR("Disconnection Complete to Device %02X:%02X:%02X:%02X:%02X:%02X\r\n"), + printf_P(PSTR("Disconnection Complete to Device %02X:%02X:%02X:%02X:%02X:%02X.\r\n"), Bluetooth_Connection.RemoteAddress[5], Bluetooth_Connection.RemoteAddress[4], Bluetooth_Connection.RemoteAddress[3], Bluetooth_Connection.RemoteAddress[2], Bluetooth_Connection.RemoteAddress[1], Bluetooth_Connection.RemoteAddress[0]); } +/** Bluetooth stack callback event for a Bluetooth ACL Channel connection request. When is callback fires, + * the user application must indicate if the channel connection should be rejected or not, based on the + * protocol (PSM) value of the requested channel. + * + * \param PSM Protocol PSM value for the requested channel + * + * \return Boolean true to accept the channel connection request, false to reject it + */ +bool Bluetooth_ChannelConnectionRequest(const uint16_t PSM) +{ + /* Always accept channel connection requests regardless of PSM */ + return true; +} + /** Bluetooth stack callback event for a non-signal ACL packet reception. This callback fires once a connection * to a remote Bluetooth device has been made, and the remote device has sent a non-signalling ACL packet. * - * \param Data Pointer to a buffer where the received data is stored - * \param DataLen Length of the packet data, in bytes - * \param Channel Bluetooth ACL data channel information structure for the packet's destination channel + * \param[in] Data Pointer to a buffer where the received data is stored + * \param[in] DataLen Length of the packet data, in bytes + * \param[in] Channel Bluetooth ACL data channel information structure for the packet's destination channel */ -void Bluetooth_PacketReceived(void* Data, uint16_t DataLen, Bluetooth_Channel_t* Channel) +void Bluetooth_PacketReceived(void* Data, uint16_t DataLen, Bluetooth_Channel_t* const Channel) { switch (Channel->PSM) { case CHANNEL_PSM_SDP: /* Service Discovery Protocol packet */ - ServiceDiscovery_ProcessPacket(Data, DataLen, Channel); + ServiceDiscovery_ProcessPacket(Data, Channel); break; default: /* Unknown Protocol packet */