aboutsummaryrefslogtreecommitdiff
path: root/src/Mgmt.cpp
diff options
context:
space:
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