summaryrefslogtreecommitdiff
path: root/src/profile.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2013-06-20 13:32:05 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2013-06-24 15:14:04 +0300
commit1259936bba08e48e48e77965348d7367002c9e44 (patch)
tree6be63f30ca989b8e5a5cb4b3010ee82b26b9c3a0 /src/profile.c
parentb6e8a47778cea901d60368e871f4b18bbf6c7f8b (diff)
downloadbluez-1259936bba08e48e48e77965348d7367002c9e44.tar.gz
core: Add mode option to external profile default configuration
Some external profiles, FTP and OPP, require a different L2CAP mode such as ERTM to interoperate properly.
Diffstat (limited to 'src/profile.c')
-rw-r--r--src/profile.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/profile.c b/src/profile.c
index 9f98d6527..c74581157 100644
--- a/src/profile.c
+++ b/src/profile.c
@@ -562,6 +562,7 @@ struct ext_profile {
guint id;
+ BtIOMode mode;
BtIOSecLevel sec_level;
bool authorize;
@@ -1260,6 +1261,7 @@ static uint32_t ext_start_servers(struct ext_profile *ext,
io = bt_io_listen(connect, confirm, l2cap, NULL, &err,
BT_IO_OPT_SOURCE_BDADDR,
adapter_get_address(adapter),
+ BT_IO_OPT_MODE, ext->mode,
BT_IO_OPT_PSM, psm,
BT_IO_OPT_SEC_LEVEL, ext->sec_level,
BT_IO_OPT_INVALID);
@@ -1891,6 +1893,7 @@ static struct default_settings {
const char *remote_uuid;
int channel;
int psm;
+ BtIOMode mode;
BtIOSecLevel sec_level;
bool authorize;
bool auto_connect;
@@ -1942,6 +1945,7 @@ static struct default_settings {
.name = "Object Push",
.channel = OPP_DEFAULT_CHANNEL,
.psm = BTD_PROFILE_PSM_AUTO,
+ .mode = BT_IO_MODE_ERTM,
.sec_level = BT_IO_SEC_LOW,
.authorize = false,
.get_record = get_opp_record,
@@ -1951,6 +1955,7 @@ static struct default_settings {
.name = "File Transfer",
.channel = FTP_DEFAULT_CHANNEL,
.psm = BTD_PROFILE_PSM_AUTO,
+ .mode = BT_IO_MODE_ERTM,
.get_record = get_ftp_record,
.version = 0x0102,
}, {
@@ -1991,6 +1996,7 @@ static void ext_set_defaults(struct ext_profile *ext)
{
unsigned int i;
+ ext->mode = BT_IO_MODE_BASIC;
ext->sec_level = BT_IO_SEC_MEDIUM;
ext->authorize = true;
ext->enable_client = true;
@@ -2020,6 +2026,9 @@ static void ext_set_defaults(struct ext_profile *ext)
if (settings->sec_level)
ext->sec_level = settings->sec_level;
+ if (settings->mode)
+ ext->mode = settings->mode;
+
if (settings->auto_connect)
ext->p.auto_connect = true;