{"action":"created","issue":{"url":"https://api.github.com/repos/zephyrproject-rtos/zephyr/issues/7659","repository_url":"https://api.github.com/repos/zephyrproject-rtos/zephyr","labels_url":"https://api.github.com/repos/zephyrproject-rtos/zephyr/issues/7659/labels{/name}","comments_url":"https://api.github.com/repos/zephyrproject-rtos/zephyr/issues/7659/comments","events_url":"https://api.github.com/repos/zephyrproject-rtos/zephyr/issues/7659/events","html_url":"https://github.com/zephyrproject-rtos/zephyr/issues/7659","id":324374475,"node_id":"MDU6SXNzdWUzMjQzNzQ0NzU=","number":7659,"title":"Application callback on PDU transmission complete","user":{"login":"carlescufi","id":12450381,"node_id":"MDQ6VXNlcjEyNDUwMzgx","avatar_url":"https://avatars3.githubusercontent.com/u/12450381?v=4","gravatar_id":"","url":"https://api.github.com/users/carlescufi","html_url":"https://github.com/carlescufi","followers_url":"https://api.github.com/users/carlescufi/followers","following_url":"https://api.github.com/users/carlescufi/following{/other_user}","gists_url":"https://api.github.com/users/carlescufi/gists{/gist_id}","starred_url":"https://api.github.com/users/carlescufi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carlescufi/subscriptions","organizations_url":"https://api.github.com/users/carlescufi/orgs","repos_url":"https://api.github.com/users/carlescufi/repos","events_url":"https://api.github.com/users/carlescufi/events{/privacy}","received_events_url":"https://api.github.com/users/carlescufi/received_events","type":"User","site_admin":false},"labels":[{"id":700751342,"node_id":"MDU6TGFiZWw3MDA3NTEzNDI=","url":"https://api.github.com/repos/zephyrproject-rtos/zephyr/labels/area:%20Bluetooth","name":"area: Bluetooth","color":"ededed","default":false},{"id":604498101,"node_id":"MDU6TGFiZWw2MDQ0OTgxMDE=","url":"https://api.github.com/repos/zephyrproject-rtos/zephyr/labels/feature","name":"feature","color":"0052cc","default":false}],"state":"open","locked":false,"assignee":{"login":"jhedberg","id":1032570,"node_id":"MDQ6VXNlcjEwMzI1NzA=","avatar_url":"https://avatars0.githubusercontent.com/u/1032570?v=4","gravatar_id":"","url":"https://api.github.com/users/jhedberg","html_url":"https://github.com/jhedberg","followers_url":"https://api.github.com/users/jhedberg/followers","following_url":"https://api.github.com/users/jhedberg/following{/other_user}","gists_url":"https://api.github.com/users/jhedberg/gists{/gist_id}","starred_url":"https://api.github.com/users/jhedberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jhedberg/subscriptions","organizations_url":"https://api.github.com/users/jhedberg/orgs","repos_url":"https://api.github.com/users/jhedberg/repos","events_url":"https://api.github.com/users/jhedberg/events{/privacy}","received_events_url":"https://api.github.com/users/jhedberg/received_events","type":"User","site_admin":false},"assignees":[{"login":"jhedberg","id":1032570,"node_id":"MDQ6VXNlcjEwMzI1NzA=","avatar_url":"https://avatars0.githubusercontent.com/u/1032570?v=4","gravatar_id":"","url":"https://api.github.com/users/jhedberg","html_url":"https://github.com/jhedberg","followers_url":"https://api.github.com/users/jhedberg/followers","following_url":"https://api.github.com/users/jhedberg/following{/other_user}","gists_url":"https://api.github.com/users/jhedberg/gists{/gist_id}","starred_url":"https://api.github.com/users/jhedberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jhedberg/subscriptions","organizations_url":"https://api.github.com/users/jhedberg/orgs","repos_url":"https://api.github.com/users/jhedberg/repos","events_url":"https://api.github.com/users/jhedberg/events{/privacy}","received_events_url":"https://api.github.com/users/jhedberg/received_events","type":"User","site_admin":false},{"login":"Vudentz","id":2156363,"node_id":"MDQ6VXNlcjIxNTYzNjM=","avatar_url":"https://avatars0.githubusercontent.com/u/2156363?v=4","gravatar_id":"","url":"https://api.github.com/users/Vudentz","html_url":"https://github.com/Vudentz","followers_url":"https://api.github.com/users/Vudentz/followers","following_url":"https://api.github.com/users/Vudentz/following{/other_user}","gists_url":"https://api.github.com/users/Vudentz/gists{/gist_id}","starred_url":"https://api.github.com/users/Vudentz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Vudentz/subscriptions","organizations_url":"https://api.github.com/users/Vudentz/orgs","repos_url":"https://api.github.com/users/Vudentz/repos","events_url":"https://api.github.com/users/Vudentz/events{/privacy}","received_events_url":"https://api.github.com/users/Vudentz/received_events","type":"User","site_admin":false},{"login":"carlescufi","id":12450381,"node_id":"MDQ6VXNlcjEyNDUwMzgx","avatar_url":"https://avatars3.githubusercontent.com/u/12450381?v=4","gravatar_id":"","url":"https://api.github.com/users/carlescufi","html_url":"https://github.com/carlescufi","followers_url":"https://api.github.com/users/carlescufi/followers","following_url":"https://api.github.com/users/carlescufi/following{/other_user}","gists_url":"https://api.github.com/users/carlescufi/gists{/gist_id}","starred_url":"https://api.github.com/users/carlescufi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carlescufi/subscriptions","organizations_url":"https://api.github.com/users/carlescufi/orgs","repos_url":"https://api.github.com/users/carlescufi/repos","events_url":"https://api.github.com/users/carlescufi/events{/privacy}","received_events_url":"https://api.github.com/users/carlescufi/received_events","type":"User","site_admin":false}],"milestone":null,"comments":7,"created_at":"2018-05-18T11:32:33Z","updated_at":"2018-09-07T14:50:00Z","closed_at":null,"author_association":"MEMBER","body":"A callback that notifies the application that a PDU (L2CAP or ATT) has been successfully transmitted to the peer. It would essentially follow the flow of HCI Number of Completed Packets with additional counting to make sure a single callback per PDU is issued."},"comment":{"url":"https://api.github.com/repos/zephyrproject-rtos/zephyr/issues/comments/419463833","html_url":"https://github.com/zephyrproject-rtos/zephyr/issues/7659#issuecomment-419463833","issue_url":"https://api.github.com/repos/zephyrproject-rtos/zephyr/issues/7659","id":419463833,"node_id":"MDEyOklzc3VlQ29tbWVudDQxOTQ2MzgzMw==","user":{"login":"pdunaj","id":2377013,"node_id":"MDQ6VXNlcjIzNzcwMTM=","avatar_url":"https://avatars0.githubusercontent.com/u/2377013?v=4","gravatar_id":"","url":"https://api.github.com/users/pdunaj","html_url":"https://github.com/pdunaj","followers_url":"https://api.github.com/users/pdunaj/followers","following_url":"https://api.github.com/users/pdunaj/following{/other_user}","gists_url":"https://api.github.com/users/pdunaj/gists{/gist_id}","starred_url":"https://api.github.com/users/pdunaj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pdunaj/subscriptions","organizations_url":"https://api.github.com/users/pdunaj/orgs","repos_url":"https://api.github.com/users/pdunaj/repos","events_url":"https://api.github.com/users/pdunaj/events{/privacy}","received_events_url":"https://api.github.com/users/pdunaj/received_events","type":"User","site_admin":false},"created_at":"2018-09-07T14:50:00Z","updated_at":"2018-09-07T14:50:00Z","author_association":"COLLABORATOR","body":"Now about the use case. To create a responsive HID device:\r\n- we need to be able to create a round robin of notifications,\r\n- we also cannot allow more then one notification to be in the transmission buffer.\r\n\r\nWith current infrastructure we could create a thread that sends the notifications and pass data to it to be sent. This way we would be able to perform round robin as we would control the flow. There are however two problems here.\r\n- First, we will block on a second notifications being sent. Imagine data creation module creates and sends packet1 (accepted), then immediately packet2 (this will block). After packet1 is sent, packet2 is accepted and creator blocks on packet3. And so on. Note that in this case data producer is always 1 interval late (pipeline is always 2 elements - one being sent and one that is blocked).\r\n- Second, we need a thread to block, and this requires RAM for stack and complicates the design.\r\n\r\nWith callback we race with the next interval to create data but data is always fresh. Also as we are notified no thread is be needed and RAM is spared."}}
{"actor":{"display_login":"pdunaj"}}