--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
Description=TDS Provider
[Service]
-Type=dbus
User=network_fw
Group=network_fw
-BusName=org.tizen.tds.provider
SmackProcessLabel=System
ExecStart=/usr/bin/tds-provider
-Capabilities=cap_net_raw,cap_sys_rawio=i
-SecureBits=keep-caps
+KillMode=process
Release: 1
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
-Source1: tds-provider.service
+Source1: %{name}.service
+Source2: %{name}.manifest
BuildRequires: cmake
BuildRequires: pkgconfig(dlog)
%prep
%setup -q
-cp -a %{SOURCE1} .
+cp -a %{SOURCE1} %{SOURCE2} .
%build
%make_install
mkdir -p %{buildroot}%{_unitdir}
+mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants
cp tds-provider.service %{buildroot}%{_unitdir}/tds-provider.service
+#ln -s tds-provider.service %{buildroot}%{_unitdir}/multi-user.target.wants/tds-provider.service
%post
/sbin/ldconfig
%postun -p /sbin/ldconfig
%files
+%manifest %{name}.manifest
%license LICENSE
%defattr(-, root, root)
%{_bindir}/tds-provider
%{_unitdir}/tds-provider.service
+#%{_unitdir}/multi-user.target.wants/tds-provider.service
bool _tds_bloom_filter_contain_string(const uint8_t *inFilterPtr, size_t inFilterLen, const char *inStr, size_t inLen)
{
- uint64_t hash = siphash24(inStr, inLen, (char *)kTDSSipHashKey); // param sequence check
+ uint64_t hash = siphash24(inStr, inLen, (char *)kTDSSipHashKey);
return _tds_bloom_filter_contain_hash(inFilterPtr, inFilterLen, hash);
}
return TDS_ERROR_INTERNAL;
}
- TDS_INFO("Create Bloom Filter with 'provider' Operation");
+ TDS_INFO("Create Bloom Filter with 'provider %s' Operation", transport_state ? "ON" : "OFF");
_tds_bloom_filter_add_string(transport_data, sizeof(transport_data),
TDS_BLOOM_FILTER_OPERATION_STR_PROVIDER, strlen(TDS_BLOOM_FILTER_OPERATION_STR_PROVIDER));
/* TODO: actually, below strings are not required. need to check that keep or not */
static void __tds_aware_wifi_deactivated(wifi_manager_error_e result, void *user_data)
{
- int ret;
-
if (result != WIFI_MANAGER_ERROR_NONE)
TDS_ERR("WiFi De-Activation Failed. result: %d", result);
else
TDS_INFO("WiFi De-Activated Successfully");
-
- ret = wifi_manager_deinitialize(wifi);
- if (ret != WIFI_MANAGER_ERROR_NONE)
- TDS_ERR("wifi_manager_deinitialize() failed. ret: %d(%s)", ret, get_error_message(ret));
- wifi = NULL;
}
int _tds_aware_init()
int ret;
TDS_DBG("Enter");
+ if (!g_aware_enabled)
+ return TDS_ERROR_NONE;
+
ret = wifi_aware_disable();
if (ret != WIFI_AWARE_ERROR_NONE)
TDS_ERR("wifi_aware_disable() failed. ret: %d(%s)", ret, get_error_message(ret));
if (ret != WIFI_MANAGER_ERROR_NONE)
TDS_ERR("wifi_manager_deactivate() failed. ret: %d(%s)", ret, get_error_message(ret));
+ ret = wifi_manager_deinitialize(wifi);
+ if (ret != WIFI_MANAGER_ERROR_NONE)
+ TDS_ERR("wifi_manager_deinitialize() failed. ret: %d(%s)", ret, get_error_message(ret));
+
+ wifi = NULL;
g_aware_enabled = FALSE;
return TDS_ERROR_NONE;
}
return TDS_ERROR_NONE;
}
+static gboolean __tds_service_reset_timer_cb(void *data)
+{
+ TDS_INFO("Reset TDS Service");
+ _tds_advertiser_disable();
+ _tds_advertiser_enable(TDS_TRANSPORT_STATE_OFF);
+ _tds_scanner_enable();
+ return FALSE;
+}
+
int _tds_service_handle_transport_block(bt_tds_transport_block_list_s *info)
{
int i;
TDS_BLOOM_FILTER_OPERATION_STR_BROWSE, strlen(TDS_BLOOM_FILTER_OPERATION_STR_BROWSE)) == TRUE) {
TDS_INFO("Bloom Filter Operation 'browse' contained in Transport Block!!");
_tds_advertiser_enable(TDS_TRANSPORT_STATE_ON);
- _tds_scanner_disable();
/* Start NAN Service Discovery */
_tds_aware_init();
- _tds_advertiser_disable(); /* TODO: need to adjust adv stop timing */
+ g_timeout_add(20000, __tds_service_reset_timer_cb, NULL);
} else {
TDS_INFO("Unknown Operation");
}
if (_tds_bloom_filter_contain_string((unsigned char *)info->data[i]->data, info->data[i]->length,
g_local_address, strlen(g_local_address)) == TRUE) {
TDS_INFO("Address Matched");
- _tds_advertiser_disable();
- _tds_scanner_disable();
/* Start NAN Service Discovery */
_tds_aware_init();
} else {