aboutsummaryrefslogtreecommitdiff
path: root/src/Mgmt.cpp
diff options
context:
space:
mode:
authorPaul Nettle <nettlep@users.noreply.github.com>2019-01-07 12:08:31 -0600
committerGitHub <noreply@github.com>2019-01-07 12:08:31 -0600
commitcec6f34ed1119ec33c423d55264c1a968ec5e0cb (patch)
tree04bd1432e546cf14ab398042bf5cd63d08737f3c /src/Mgmt.cpp
parentMerge pull request #14 from br101/endian-fix (diff)
parentAdd setting of discoverable mode (diff)
downloadgobbledegook-cec6f34ed1119ec33c423d55264c1a968ec5e0cb.tar.gz
gobbledegook-cec6f34ed1119ec33c423d55264c1a968ec5e0cb.tar.bz2
gobbledegook-cec6f34ed1119ec33c423d55264c1a968ec5e0cb.zip
Merge pull request #13 from br101/disc-fix
Add setting of discoverable mode
Diffstat (limited to 'src/Mgmt.cpp')
-rw-r--r--src/Mgmt.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/Mgmt.cpp b/src/Mgmt.cpp
index e61653e..2b80748 100644
--- a/src/Mgmt.cpp
+++ b/src/Mgmt.cpp
@@ -90,6 +90,35 @@ bool Mgmt::setName(std::string name, std::string shortName)
return true;
}
+// Sets discoverable mode
+// 0x00 disables discoverable
+// 0x01 enables general discoverable
+// 0x02 enables limited discoverable
+// Timeout is the time in seconds. For 0x02, the timeout value is required.
+bool Mgmt::setDiscoverable(uint8_t disc, uint16_t timeout)
+{
+ struct SRequest : HciAdapter::HciHeader
+ {
+ uint8_t disc;
+ uint16_t timeout;
+ } __attribute__((packed));
+
+ SRequest request;
+ request.code = Mgmt::ESetDiscoverableCommand;
+ request.controllerId = controllerIndex;
+ request.dataSize = sizeof(SRequest) - sizeof(HciAdapter::HciHeader);
+ request.disc = disc;
+ request.timeout = timeout;
+
+ if (!HciAdapter::getInstance().sendCommand(request))
+ {
+ Logger::warn(SSTR << " + Failed to set discoverable");
+ return false;
+ }
+
+ return true;
+}
+
// Set a setting state to 'newState'
//
// Many settings are set the same way, this is just a convenience routine to handle them all
@@ -202,4 +231,4 @@ std::string Mgmt::truncateShortName(const std::string &name)
return name.substr(0, kMaxAdvertisingShortNameLength);
}
-}; // namespace ggk \ No newline at end of file
+}; // namespace ggk