Elysium/Demo_C/Common/prg_bt.c

143 lines
4.6 KiB
C

//=============================================================================
// Helper functions for the programs which use Bluetooth.
//
// Disclaimer - Exclusion of Liability
//
// This software is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. It can be used and modified by anyone
// free of any license obligations or authoring rights.
//=============================================================================
#include "ROBO_TX_PRG.H"
static char str[128];
/*-----------------------------------------------------------------------------
* Function Name : BtCommandStatusToString
*
* Converts the status of the executed Bluetooth command to a string.
*-----------------------------------------------------------------------------*/
static char * BtCommandStatusToString
(
enum bt_commands_e command,
CHAR8 command_status
)
{
char * str = "";
switch (command_status)
{
case BT_SUCCESS: // Successful end of command
switch (command)
{
case CMD_CONNECT:
str = "Connected";
break;
case CMD_DISCONNECT:
str = "Disconnected";
break;
case CMD_START_LISTEN:
str = "Started listening";
break;
case CMD_STOP_LISTEN:
str = "Stopped listening";
break;
case CMD_START_RECEIVE:
str = "Started receiving";
break;
case CMD_STOP_RECEIVE:
str = "Stopped receiving";
break;
case CMD_SEND:
str = "Message sent";
break;
default:
break;
}
break;
case BT_CON_EXIST:
str = "Already connected";
break;
case BT_CON_SETUP:
str = "Establishing of connection is ongoing";
break;
case BT_SWITCHED_OFF:
str = "Cannot connect/listen, Bluetooth is set to off";
break;
case BT_ALL_CHAN_BUSY:
str = "Cannot connect, no more free Bluetooth channels";
break;
case BT_NOT_ROBOTX:
str = "Cannot connect/listen, device is not a ROBO TX Controller";
break;
case BT_CON_TIMEOUT:
str = "Cannot connect, timeout, no device with such a BT address";
break;
case BT_CON_INVALID:
str = "Connection does not exist";
break;
case BT_CON_RELEASE:
str = "Disconnecting is ongoing";
break;
case BT_LISTEN_ACTIVE:
str = "Listen is already active";
break;
case BT_RECEIVE_ACTIVE:
str = "Receive is already active";
break;
case BT_CON_INDICATION:
str = "Passive connection establishment (incoming connection)";
break;
case BT_DISCON_INDICATION:
str = "Passive disconnection (initiated by remote end)";
break;
case BT_MSG_INDICATION:
str = "Received data (incoming message)";
break;
case BT_CHANNEL_BUSY:
str = "BT channel is busy";
break;
case BT_BTADDR_BUSY:
str = "BT address is already used by another channel";
break;
case BT_NO_LISTEN_ACTIVE:
str = "Cannot connect, no active listen on remote end";
break;
default:
break;
}
return str;
}
/*-----------------------------------------------------------------------------
* Function Name : BtDisplayCommandStatus
*
* Converts the status of the executed Bluetooth command to a string
* and displays this string on the display of a ROBO TX Controller.
*-----------------------------------------------------------------------------*/
BOOL32 BtDisplayCommandStatus
(
TA * p_ta,
UCHAR8 * bt_address,
UINT32 channel,
enum bt_commands_e command,
CHAR8 command_status
)
{
BOOL32 rc = FALSE;
char bt_addr_str[BT_ADDR_STR_LEN + 1];
if (!p_ta->hook_table.IsDisplayBeingRefreshed(p_ta)) // wait until display is refreshed
{
p_ta->hook_table.sprintf(str, "Ch %u, %s\n%s", channel,
p_ta->hook_table.BtAddrToStr(bt_address, bt_addr_str),
BtCommandStatusToString(command, command_status));
p_ta->hook_table.DisplayMsg(p_ta, str);
rc = TRUE;
}
return rc;
}