}
void wl_direct_connect_timeout_cb(uint8_t app_id, const RawAddress& address) {
+ on_connection_timed_out(app_id, address);
+
// TODO: this would free the timer, from within the timer callback, which is
// bad.
direct_connect_remove(app_id, address);
extern bool direct_connect_remove(tAPP_ID app_id, const RawAddress& address);
extern void dump(int fd);
+
+/* This callback will be executed when direct connect attempt fails due to
+ * timeout. It must be implemented by users of connection_manager */
+extern void on_connection_timed_out(uint8_t app_id, const RawAddress& address);
+
} // namespace connection_manager
return true;
}
+namespace connection_manager {
+void on_connection_timed_out(uint8_t app_id, const RawAddress& address) {
+ gatt_le_connect_cback(L2CAP_ATT_CID, address, false, 0xff, BT_TRANSPORT_LE);
+}
+} // namespace connection_manager
+
/** This callback function is called by L2CAP to indicate that the ATT fixed
* channel for LE is connected (conn = true)/disconnected (conn = false).
*/
MOCK_METHOD0(WhiteListClear, void());
MOCK_METHOD0(SetLeConnectionModeToFast, bool());
MOCK_METHOD0(SetLeConnectionModeToSlow, void());
+ MOCK_METHOD2(OnConnectionTimedOut, void(uint8_t, const RawAddress&));
};
std::unique_ptr<WhiteListMock> localWhiteListMock;
}
};
+void on_connection_timed_out(uint8_t app_id, const RawAddress& address) {
+ localWhiteListMock->OnConnectionTimedOut(app_id, address);
+}
+
/** Verify that app can add a device to white list, it is returned as interested
* app, and then can remove the device later. */
TEST_F(BleConnectionManager, test_background_connection_add_remove) {
EXPECT_CALL(*localWhiteListMock, SetLeConnectionModeToSlow()).Times(1);
EXPECT_CALL(*localWhiteListMock, WhiteListRemove(_)).Times(1);
+ EXPECT_CALL(*localWhiteListMock, OnConnectionTimedOut(CLIENT1, address1)).Times(1);
EXPECT_CALL(*AlarmMock::Get(), AlarmFree(_)).Times(1);
// simulate timeout seconds passed, alarm executing