{"action":"closed","issue":{"url":"https://api.github.com/repos/WebBluetoothCG/web-bluetooth/issues/24","labels_url":"https://api.github.com/repos/WebBluetoothCG/web-bluetooth/issues/24/labels{/name}","comments_url":"https://api.github.com/repos/WebBluetoothCG/web-bluetooth/issues/24/comments","events_url":"https://api.github.com/repos/WebBluetoothCG/web-bluetooth/issues/24/events","html_url":"https://github.com/WebBluetoothCG/web-bluetooth/issues/24","id":40365068,"number":24,"title":"Blacklisting various services, characteristics, and descriptors.","user":{"login":"armansito","id":6933700,"avatar_url":"https://avatars.githubusercontent.com/u/6933700?v=3","gravatar_id":"","url":"https://api.github.com/users/armansito","html_url":"https://github.com/armansito","followers_url":"https://api.github.com/users/armansito/followers","following_url":"https://api.github.com/users/armansito/following{/other_user}","gists_url":"https://api.github.com/users/armansito/gists{/gist_id}","starred_url":"https://api.github.com/users/armansito/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/armansito/subscriptions","organizations_url":"https://api.github.com/users/armansito/orgs","repos_url":"https://api.github.com/users/armansito/repos","events_url":"https://api.github.com/users/armansito/events{/privacy}","received_events_url":"https://api.github.com/users/armansito/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/WebBluetoothCG/web-bluetooth/labels/needs%20wording","name":"needs wording","color":"009800"},{"url":"https://api.github.com/repos/WebBluetoothCG/web-bluetooth/labels/v1","name":"v1","color":"e11d21"}],"state":"closed","locked":false,"assignee":{"login":"armansito","id":6933700,"avatar_url":"https://avatars.githubusercontent.com/u/6933700?v=3","gravatar_id":"","url":"https://api.github.com/users/armansito","html_url":"https://github.com/armansito","followers_url":"https://api.github.com/users/armansito/followers","following_url":"https://api.github.com/users/armansito/following{/other_user}","gists_url":"https://api.github.com/users/armansito/gists{/gist_id}","starred_url":"https://api.github.com/users/armansito/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/armansito/subscriptions","organizations_url":"https://api.github.com/users/armansito/orgs","repos_url":"https://api.github.com/users/armansito/repos","events_url":"https://api.github.com/users/armansito/events{/privacy}","received_events_url":"https://api.github.com/users/armansito/received_events","type":"User","site_admin":false},"milestone":null,"comments":6,"created_at":"2014-08-15T17:01:54Z","updated_at":"2015-07-28T21:11:59Z","closed_at":"2015-07-28T21:11:59Z","body":"The reason for having the BluetoothGattCharacteristic.startNotifications|stopNotifications methods in the first place is to prevent apps from directly writing to the Client Characteristic Configuration (CCC below) descriptor (which is used to enable/disable notifications and indications from the characteristic). This raises the following two points:\r\n\r\n- BluetoothGattDescriptor.writeValue should NOT allow writing to the CCC descriptor directly to prevent one application from disabling notifications/indications while another application is interested in them. Either that or the (CCC) descriptor perhaps shouldn't ever be exposed.\r\n- It should be made clear to the implementation side that startNotifications and stopNotifications internally needs to keep a reference count of notification \"sessions\" of sort to manage the value of the CCC descriptor."}}