Migrate all the D-Bus calls to GDBus. - #14

Open
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus
Open

Migrate all the D-Bus calls to GDBus.#14
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus

Conversation

@tommie-lie

Copy link
Copy Markdown

Disclaimer: This pull-request does not "fix" an "issue" but is rather a proposal and is a 1:1 migration. I plan on expanding on that idea, creating proper DBusProxy subclasses, somehow resect the requirement for a non-user-controlled mainloop and thus improve the integratability of gatt-python for my own projects. If you think this migration is rubbish, just close the pull-request ;-)

--

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.

As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.

This also effectively removes the python-dbus dependency.

@tommie-lie
tommie-lieforce-pushed the gdbus branch 2 times, most recently from 9468b3c to 8252600CompareNovember 4, 2017 14:03
@larsblumberg

Copy link
Copy Markdown
Contributor

I'm the original author of this library and I find your PR very promising. As it is removing the dependency of dbus and using GDBus instead, I consider this PR a good step forward.
Unfortunately I don't have suitable hardware to test your PR as I'm not working with team Senic at the moment. Maybe someone from @getsenic can give the PR a try? It should make their build process slightly simpler.

@mtiutiu

mtiutiu commented Nov 10, 2017

Copy link
Copy Markdown

@tommie-lie This is really great. Tested your PR using real hardware and I fixed some issues - seems all well now with some minor exceptions but not critical for the applications. I created another PR on your fork(I created a PR for this PR basically 😄 ).

@larsblumberg@tommie-lie
What was tested:

  1. Discovery - works
  2. Connecting - works
  3. Notifications - works

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.
As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.
This also effectively removes the python-dbus dependency.
@tommie-lie

Copy link
Copy Markdown
Author

Sorry for having been silent for so long, but I had some quite busy weeks and did not work on my Bluetooth pet project.

I'm a bit puzzled as to why my code ever worked with the issues found by @mtiutiu but they are fixed now and I found some other placed where the error-handling was wrong. I also rebased the commit to the latest master (and adapted the new DeviceManager.remove_all_devices method).

@mtiutiu I sincerely apologize for not giving credit to you in the git history but I found it rather hard to integrate your PR (see there for more info). Please let me know if you are okay with this or if I should add you to the commit message.

@mtiutiu

Copy link
Copy Markdown

@tommie-lie You can merge your changes I don't need any credits for this. I'm glad I could be of help.

@larsblumberg

Copy link
Copy Markdown
Contributor

@TheMeaningfulEngineer Where you guys able to test this PR? It should make your build process easier as it makes the necessity for the dbus lib obsolete.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey @larsblumberg
given the current load, and that it's a feature improvement I'd say somewhere in March.

And thanks @tommie-lie and @mtiutiu, sorry for not being very responsive at the moment.

@larsblumberg

Copy link
Copy Markdown
Contributor

While I wouldn't consider the dbus replacement a feature (from the user perspective) I understand that you got more important things to do in the moment. I'm looking forward to seeing those changes implemented at some point as it eases the overall build process, not only for the Senic Hub.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey peeps,
got a chance to test the PR with our current stack.
Unfortunately it broke it and I can't spend the time atm to debug it,
will check it out in the soonest available time slot.

Where it fails is on the wrapper library that abstracts the gatt and allows
us to think in terms of functionalities of the device.
@larsblumberg
Do feel free to rephrase, that how I understood the stack :)

 File "/home/root/nuimo-linux-python/nuimo/nuimo.py", line 38, in start_discovery super().start_discovery(service_uuids=Controller.SERVICE_UUIDS) File "/home/root/gatt-python/gatt/gatt_linux.py", line 142, in start_discovery self._adapter.SetDiscoveryFilter('(a{sv})', discovery_filter) File "/usr/lib/python3.5/site-packages/gi/overrides/Gio.py", line 157, in __call__ arg_variant = GLib.Variant(signature, tuple(args)) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 243, in __new__ (v, rest_format, _) = creator._create(format_string, [value]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 132, in _create return self._create_tuple(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 167, in _create_tuple (v, format, _) = self._create(format, args[0][i:]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 135, in _create return self._create_dict(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 194, in _create_dict (val_v, rest_format, _) = self._create(rest_format, [v]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 126, in _create v = constructor(args[0]) TypeError: argument value: Expected GLib.Variant, but got list

@Snevzor

Copy link
Copy Markdown

@mtiutiu could you please elaborate on what issues were fixed for you?

@mtiutiu

Copy link
Copy Markdown

@Snevzor I'm sorry but this thing is too old for me now to remember all the details. The initial problem was due to some incompatible methods signature and/or class constructors. But to be honest I don't remember which and the "why". This PR cleaned those up and made my custom application a bit more stable. Initially I had to do some hacks to overcome some related issues - sorry I can't remember those either.

I'm sorry for not being too helpful here but I really don't remember the details and I don't have the time and luxury to search in my old messy code for that application (although it seems to work even now as it is 😄 )

@Snevzor

Copy link
Copy Markdown

@mtiutiu no worries! Thanks for responding anyhow.

@larsblumberg

Copy link
Copy Markdown
Contributor

I would like to continue the work on this PR.

@mtiutiu Is your PR to this PR already included?

@mtiutiu

Copy link
Copy Markdown

@larsblumberg
As far as I know it should but @tommie-lie knows better as he worked more on it.

@rngtng

Copy link
Copy Markdown

Any updates on this? I’d love to see this merged and especially removing the dependency. Gave me headaches. Anything I can help with?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@tommie-lie@larsblumberg@mtiutiu@TheMeaningfulEngineer@Snevzor@rngtng
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Migrate all the D-Bus calls to GDBus. - #14

Open
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus
Open

Migrate all the D-Bus calls to GDBus.#14
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus

Conversation

@tommie-lie

Copy link
Copy Markdown

Disclaimer: This pull-request does not "fix" an "issue" but is rather a proposal and is a 1:1 migration. I plan on expanding on that idea, creating proper DBusProxy subclasses, somehow resect the requirement for a non-user-controlled mainloop and thus improve the integratability of gatt-python for my own projects. If you think this migration is rubbish, just close the pull-request ;-)

--

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.

As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.

This also effectively removes the python-dbus dependency.

@tommie-lie
tommie-lieforce-pushed the gdbus branch 2 times, most recently from 9468b3c to 8252600CompareNovember 4, 2017 14:03
@larsblumberg

Copy link
Copy Markdown
Contributor

I'm the original author of this library and I find your PR very promising. As it is removing the dependency of dbus and using GDBus instead, I consider this PR a good step forward.
Unfortunately I don't have suitable hardware to test your PR as I'm not working with team Senic at the moment. Maybe someone from @getsenic can give the PR a try? It should make their build process slightly simpler.

@mtiutiu

mtiutiu commented Nov 10, 2017

Copy link
Copy Markdown

@tommie-lie This is really great. Tested your PR using real hardware and I fixed some issues - seems all well now with some minor exceptions but not critical for the applications. I created another PR on your fork(I created a PR for this PR basically 😄 ).

@larsblumberg@tommie-lie
What was tested:

  1. Discovery - works
  2. Connecting - works
  3. Notifications - works

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.
As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.
This also effectively removes the python-dbus dependency.
@tommie-lie

Copy link
Copy Markdown
Author

Sorry for having been silent for so long, but I had some quite busy weeks and did not work on my Bluetooth pet project.

I'm a bit puzzled as to why my code ever worked with the issues found by @mtiutiu but they are fixed now and I found some other placed where the error-handling was wrong. I also rebased the commit to the latest master (and adapted the new DeviceManager.remove_all_devices method).

@mtiutiu I sincerely apologize for not giving credit to you in the git history but I found it rather hard to integrate your PR (see there for more info). Please let me know if you are okay with this or if I should add you to the commit message.

@mtiutiu

Copy link
Copy Markdown

@tommie-lie You can merge your changes I don't need any credits for this. I'm glad I could be of help.

@larsblumberg

Copy link
Copy Markdown
Contributor

@TheMeaningfulEngineer Where you guys able to test this PR? It should make your build process easier as it makes the necessity for the dbus lib obsolete.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey @larsblumberg
given the current load, and that it's a feature improvement I'd say somewhere in March.

And thanks @tommie-lie and @mtiutiu, sorry for not being very responsive at the moment.

@larsblumberg

Copy link
Copy Markdown
Contributor

While I wouldn't consider the dbus replacement a feature (from the user perspective) I understand that you got more important things to do in the moment. I'm looking forward to seeing those changes implemented at some point as it eases the overall build process, not only for the Senic Hub.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey peeps,
got a chance to test the PR with our current stack.
Unfortunately it broke it and I can't spend the time atm to debug it,
will check it out in the soonest available time slot.

Where it fails is on the wrapper library that abstracts the gatt and allows
us to think in terms of functionalities of the device.
@larsblumberg
Do feel free to rephrase, that how I understood the stack :)

 File "/home/root/nuimo-linux-python/nuimo/nuimo.py", line 38, in start_discovery super().start_discovery(service_uuids=Controller.SERVICE_UUIDS) File "/home/root/gatt-python/gatt/gatt_linux.py", line 142, in start_discovery self._adapter.SetDiscoveryFilter('(a{sv})', discovery_filter) File "/usr/lib/python3.5/site-packages/gi/overrides/Gio.py", line 157, in __call__ arg_variant = GLib.Variant(signature, tuple(args)) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 243, in __new__ (v, rest_format, _) = creator._create(format_string, [value]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 132, in _create return self._create_tuple(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 167, in _create_tuple (v, format, _) = self._create(format, args[0][i:]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 135, in _create return self._create_dict(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 194, in _create_dict (val_v, rest_format, _) = self._create(rest_format, [v]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 126, in _create v = constructor(args[0]) TypeError: argument value: Expected GLib.Variant, but got list

@Snevzor

Copy link
Copy Markdown

@mtiutiu could you please elaborate on what issues were fixed for you?

@mtiutiu

Copy link
Copy Markdown

@Snevzor I'm sorry but this thing is too old for me now to remember all the details. The initial problem was due to some incompatible methods signature and/or class constructors. But to be honest I don't remember which and the "why". This PR cleaned those up and made my custom application a bit more stable. Initially I had to do some hacks to overcome some related issues - sorry I can't remember those either.

I'm sorry for not being too helpful here but I really don't remember the details and I don't have the time and luxury to search in my old messy code for that application (although it seems to work even now as it is 😄 )

@Snevzor

Copy link
Copy Markdown

@mtiutiu no worries! Thanks for responding anyhow.

@larsblumberg

Copy link
Copy Markdown
Contributor

I would like to continue the work on this PR.

@mtiutiu Is your PR to this PR already included?

@mtiutiu

Copy link
Copy Markdown

@larsblumberg
As far as I know it should but @tommie-lie knows better as he worked more on it.

@rngtng

Copy link
Copy Markdown

Any updates on this? I’d love to see this merged and especially removing the dependency. Gave me headaches. Anything I can help with?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@tommie-lie@larsblumberg@mtiutiu@TheMeaningfulEngineer@Snevzor@rngtng
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Migrate all the D-Bus calls to GDBus. - #14

Open
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus
Open

Migrate all the D-Bus calls to GDBus.#14
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus

Conversation

@tommie-lie

Copy link
Copy Markdown

Disclaimer: This pull-request does not "fix" an "issue" but is rather a proposal and is a 1:1 migration. I plan on expanding on that idea, creating proper DBusProxy subclasses, somehow resect the requirement for a non-user-controlled mainloop and thus improve the integratability of gatt-python for my own projects. If you think this migration is rubbish, just close the pull-request ;-)

--

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.

As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.

This also effectively removes the python-dbus dependency.

@tommie-lie
tommie-lieforce-pushed the gdbus branch 2 times, most recently from 9468b3c to 8252600CompareNovember 4, 2017 14:03
@larsblumberg

Copy link
Copy Markdown
Contributor

I'm the original author of this library and I find your PR very promising. As it is removing the dependency of dbus and using GDBus instead, I consider this PR a good step forward.
Unfortunately I don't have suitable hardware to test your PR as I'm not working with team Senic at the moment. Maybe someone from @getsenic can give the PR a try? It should make their build process slightly simpler.

@mtiutiu

mtiutiu commented Nov 10, 2017

Copy link
Copy Markdown

@tommie-lie This is really great. Tested your PR using real hardware and I fixed some issues - seems all well now with some minor exceptions but not critical for the applications. I created another PR on your fork(I created a PR for this PR basically 😄 ).

@larsblumberg@tommie-lie
What was tested:

  1. Discovery - works
  2. Connecting - works
  3. Notifications - works

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.
As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.
This also effectively removes the python-dbus dependency.
@tommie-lie

Copy link
Copy Markdown
Author

Sorry for having been silent for so long, but I had some quite busy weeks and did not work on my Bluetooth pet project.

I'm a bit puzzled as to why my code ever worked with the issues found by @mtiutiu but they are fixed now and I found some other placed where the error-handling was wrong. I also rebased the commit to the latest master (and adapted the new DeviceManager.remove_all_devices method).

@mtiutiu I sincerely apologize for not giving credit to you in the git history but I found it rather hard to integrate your PR (see there for more info). Please let me know if you are okay with this or if I should add you to the commit message.

@mtiutiu

Copy link
Copy Markdown

@tommie-lie You can merge your changes I don't need any credits for this. I'm glad I could be of help.

@larsblumberg

Copy link
Copy Markdown
Contributor

@TheMeaningfulEngineer Where you guys able to test this PR? It should make your build process easier as it makes the necessity for the dbus lib obsolete.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey @larsblumberg
given the current load, and that it's a feature improvement I'd say somewhere in March.

And thanks @tommie-lie and @mtiutiu, sorry for not being very responsive at the moment.

@larsblumberg

Copy link
Copy Markdown
Contributor

While I wouldn't consider the dbus replacement a feature (from the user perspective) I understand that you got more important things to do in the moment. I'm looking forward to seeing those changes implemented at some point as it eases the overall build process, not only for the Senic Hub.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey peeps,
got a chance to test the PR with our current stack.
Unfortunately it broke it and I can't spend the time atm to debug it,
will check it out in the soonest available time slot.

Where it fails is on the wrapper library that abstracts the gatt and allows
us to think in terms of functionalities of the device.
@larsblumberg
Do feel free to rephrase, that how I understood the stack :)

 File "/home/root/nuimo-linux-python/nuimo/nuimo.py", line 38, in start_discovery super().start_discovery(service_uuids=Controller.SERVICE_UUIDS) File "/home/root/gatt-python/gatt/gatt_linux.py", line 142, in start_discovery self._adapter.SetDiscoveryFilter('(a{sv})', discovery_filter) File "/usr/lib/python3.5/site-packages/gi/overrides/Gio.py", line 157, in __call__ arg_variant = GLib.Variant(signature, tuple(args)) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 243, in __new__ (v, rest_format, _) = creator._create(format_string, [value]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 132, in _create return self._create_tuple(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 167, in _create_tuple (v, format, _) = self._create(format, args[0][i:]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 135, in _create return self._create_dict(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 194, in _create_dict (val_v, rest_format, _) = self._create(rest_format, [v]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 126, in _create v = constructor(args[0]) TypeError: argument value: Expected GLib.Variant, but got list

@Snevzor

Copy link
Copy Markdown

@mtiutiu could you please elaborate on what issues were fixed for you?

@mtiutiu

Copy link
Copy Markdown

@Snevzor I'm sorry but this thing is too old for me now to remember all the details. The initial problem was due to some incompatible methods signature and/or class constructors. But to be honest I don't remember which and the "why". This PR cleaned those up and made my custom application a bit more stable. Initially I had to do some hacks to overcome some related issues - sorry I can't remember those either.

I'm sorry for not being too helpful here but I really don't remember the details and I don't have the time and luxury to search in my old messy code for that application (although it seems to work even now as it is 😄 )

@Snevzor

Copy link
Copy Markdown

@mtiutiu no worries! Thanks for responding anyhow.

@larsblumberg

Copy link
Copy Markdown
Contributor

I would like to continue the work on this PR.

@mtiutiu Is your PR to this PR already included?

@mtiutiu

Copy link
Copy Markdown

@larsblumberg
As far as I know it should but @tommie-lie knows better as he worked more on it.

@rngtng

Copy link
Copy Markdown

Any updates on this? I’d love to see this merged and especially removing the dependency. Gave me headaches. Anything I can help with?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@tommie-lie@larsblumberg@mtiutiu@TheMeaningfulEngineer@Snevzor@rngtng
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Migrate all the D-Bus calls to GDBus. - #14

Open
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus
Open

Migrate all the D-Bus calls to GDBus.#14
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus

Conversation

@tommie-lie

Copy link
Copy Markdown

Disclaimer: This pull-request does not "fix" an "issue" but is rather a proposal and is a 1:1 migration. I plan on expanding on that idea, creating proper DBusProxy subclasses, somehow resect the requirement for a non-user-controlled mainloop and thus improve the integratability of gatt-python for my own projects. If you think this migration is rubbish, just close the pull-request ;-)

--

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.

As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.

This also effectively removes the python-dbus dependency.

@tommie-lie
tommie-lieforce-pushed the gdbus branch 2 times, most recently from 9468b3c to 8252600CompareNovember 4, 2017 14:03
@larsblumberg

Copy link
Copy Markdown
Contributor

I'm the original author of this library and I find your PR very promising. As it is removing the dependency of dbus and using GDBus instead, I consider this PR a good step forward.
Unfortunately I don't have suitable hardware to test your PR as I'm not working with team Senic at the moment. Maybe someone from @getsenic can give the PR a try? It should make their build process slightly simpler.

@mtiutiu

mtiutiu commented Nov 10, 2017

Copy link
Copy Markdown

@tommie-lie This is really great. Tested your PR using real hardware and I fixed some issues - seems all well now with some minor exceptions but not critical for the applications. I created another PR on your fork(I created a PR for this PR basically 😄 ).

@larsblumberg@tommie-lie
What was tested:

  1. Discovery - works
  2. Connecting - works
  3. Notifications - works

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.
As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.
This also effectively removes the python-dbus dependency.
@tommie-lie

Copy link
Copy Markdown
Author

Sorry for having been silent for so long, but I had some quite busy weeks and did not work on my Bluetooth pet project.

I'm a bit puzzled as to why my code ever worked with the issues found by @mtiutiu but they are fixed now and I found some other placed where the error-handling was wrong. I also rebased the commit to the latest master (and adapted the new DeviceManager.remove_all_devices method).

@mtiutiu I sincerely apologize for not giving credit to you in the git history but I found it rather hard to integrate your PR (see there for more info). Please let me know if you are okay with this or if I should add you to the commit message.

@mtiutiu

Copy link
Copy Markdown

@tommie-lie You can merge your changes I don't need any credits for this. I'm glad I could be of help.

@larsblumberg

Copy link
Copy Markdown
Contributor

@TheMeaningfulEngineer Where you guys able to test this PR? It should make your build process easier as it makes the necessity for the dbus lib obsolete.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey @larsblumberg
given the current load, and that it's a feature improvement I'd say somewhere in March.

And thanks @tommie-lie and @mtiutiu, sorry for not being very responsive at the moment.

@larsblumberg

Copy link
Copy Markdown
Contributor

While I wouldn't consider the dbus replacement a feature (from the user perspective) I understand that you got more important things to do in the moment. I'm looking forward to seeing those changes implemented at some point as it eases the overall build process, not only for the Senic Hub.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey peeps,
got a chance to test the PR with our current stack.
Unfortunately it broke it and I can't spend the time atm to debug it,
will check it out in the soonest available time slot.

Where it fails is on the wrapper library that abstracts the gatt and allows
us to think in terms of functionalities of the device.
@larsblumberg
Do feel free to rephrase, that how I understood the stack :)

 File "/home/root/nuimo-linux-python/nuimo/nuimo.py", line 38, in start_discovery super().start_discovery(service_uuids=Controller.SERVICE_UUIDS) File "/home/root/gatt-python/gatt/gatt_linux.py", line 142, in start_discovery self._adapter.SetDiscoveryFilter('(a{sv})', discovery_filter) File "/usr/lib/python3.5/site-packages/gi/overrides/Gio.py", line 157, in __call__ arg_variant = GLib.Variant(signature, tuple(args)) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 243, in __new__ (v, rest_format, _) = creator._create(format_string, [value]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 132, in _create return self._create_tuple(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 167, in _create_tuple (v, format, _) = self._create(format, args[0][i:]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 135, in _create return self._create_dict(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 194, in _create_dict (val_v, rest_format, _) = self._create(rest_format, [v]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 126, in _create v = constructor(args[0]) TypeError: argument value: Expected GLib.Variant, but got list

@Snevzor

Copy link
Copy Markdown

@mtiutiu could you please elaborate on what issues were fixed for you?

@mtiutiu

Copy link
Copy Markdown

@Snevzor I'm sorry but this thing is too old for me now to remember all the details. The initial problem was due to some incompatible methods signature and/or class constructors. But to be honest I don't remember which and the "why". This PR cleaned those up and made my custom application a bit more stable. Initially I had to do some hacks to overcome some related issues - sorry I can't remember those either.

I'm sorry for not being too helpful here but I really don't remember the details and I don't have the time and luxury to search in my old messy code for that application (although it seems to work even now as it is 😄 )

@Snevzor

Copy link
Copy Markdown

@mtiutiu no worries! Thanks for responding anyhow.

@larsblumberg

Copy link
Copy Markdown
Contributor

I would like to continue the work on this PR.

@mtiutiu Is your PR to this PR already included?

@mtiutiu

Copy link
Copy Markdown

@larsblumberg
As far as I know it should but @tommie-lie knows better as he worked more on it.

@rngtng

Copy link
Copy Markdown

Any updates on this? I’d love to see this merged and especially removing the dependency. Gave me headaches. Anything I can help with?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@tommie-lie@larsblumberg@mtiutiu@TheMeaningfulEngineer@Snevzor@rngtng
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Migrate all the D-Bus calls to GDBus. - #14

Open
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus
Open

Migrate all the D-Bus calls to GDBus.#14
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus

Conversation

@tommie-lie

Copy link
Copy Markdown

Disclaimer: This pull-request does not "fix" an "issue" but is rather a proposal and is a 1:1 migration. I plan on expanding on that idea, creating proper DBusProxy subclasses, somehow resect the requirement for a non-user-controlled mainloop and thus improve the integratability of gatt-python for my own projects. If you think this migration is rubbish, just close the pull-request ;-)

--

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.

As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.

This also effectively removes the python-dbus dependency.

@tommie-lie
tommie-lieforce-pushed the gdbus branch 2 times, most recently from 9468b3c to 8252600CompareNovember 4, 2017 14:03
@larsblumberg

Copy link
Copy Markdown
Contributor

I'm the original author of this library and I find your PR very promising. As it is removing the dependency of dbus and using GDBus instead, I consider this PR a good step forward.
Unfortunately I don't have suitable hardware to test your PR as I'm not working with team Senic at the moment. Maybe someone from @getsenic can give the PR a try? It should make their build process slightly simpler.

@mtiutiu

mtiutiu commented Nov 10, 2017

Copy link
Copy Markdown

@tommie-lie This is really great. Tested your PR using real hardware and I fixed some issues - seems all well now with some minor exceptions but not critical for the applications. I created another PR on your fork(I created a PR for this PR basically 😄 ).

@larsblumberg@tommie-lie
What was tested:

  1. Discovery - works
  2. Connecting - works
  3. Notifications - works

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.
As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.
This also effectively removes the python-dbus dependency.
@tommie-lie

Copy link
Copy Markdown
Author

Sorry for having been silent for so long, but I had some quite busy weeks and did not work on my Bluetooth pet project.

I'm a bit puzzled as to why my code ever worked with the issues found by @mtiutiu but they are fixed now and I found some other placed where the error-handling was wrong. I also rebased the commit to the latest master (and adapted the new DeviceManager.remove_all_devices method).

@mtiutiu I sincerely apologize for not giving credit to you in the git history but I found it rather hard to integrate your PR (see there for more info). Please let me know if you are okay with this or if I should add you to the commit message.

@mtiutiu

Copy link
Copy Markdown

@tommie-lie You can merge your changes I don't need any credits for this. I'm glad I could be of help.

@larsblumberg

Copy link
Copy Markdown
Contributor

@TheMeaningfulEngineer Where you guys able to test this PR? It should make your build process easier as it makes the necessity for the dbus lib obsolete.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey @larsblumberg
given the current load, and that it's a feature improvement I'd say somewhere in March.

And thanks @tommie-lie and @mtiutiu, sorry for not being very responsive at the moment.

@larsblumberg

Copy link
Copy Markdown
Contributor

While I wouldn't consider the dbus replacement a feature (from the user perspective) I understand that you got more important things to do in the moment. I'm looking forward to seeing those changes implemented at some point as it eases the overall build process, not only for the Senic Hub.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey peeps,
got a chance to test the PR with our current stack.
Unfortunately it broke it and I can't spend the time atm to debug it,
will check it out in the soonest available time slot.

Where it fails is on the wrapper library that abstracts the gatt and allows
us to think in terms of functionalities of the device.
@larsblumberg
Do feel free to rephrase, that how I understood the stack :)

 File "/home/root/nuimo-linux-python/nuimo/nuimo.py", line 38, in start_discovery super().start_discovery(service_uuids=Controller.SERVICE_UUIDS) File "/home/root/gatt-python/gatt/gatt_linux.py", line 142, in start_discovery self._adapter.SetDiscoveryFilter('(a{sv})', discovery_filter) File "/usr/lib/python3.5/site-packages/gi/overrides/Gio.py", line 157, in __call__ arg_variant = GLib.Variant(signature, tuple(args)) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 243, in __new__ (v, rest_format, _) = creator._create(format_string, [value]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 132, in _create return self._create_tuple(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 167, in _create_tuple (v, format, _) = self._create(format, args[0][i:]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 135, in _create return self._create_dict(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 194, in _create_dict (val_v, rest_format, _) = self._create(rest_format, [v]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 126, in _create v = constructor(args[0]) TypeError: argument value: Expected GLib.Variant, but got list

@Snevzor

Copy link
Copy Markdown

@mtiutiu could you please elaborate on what issues were fixed for you?

@mtiutiu

Copy link
Copy Markdown

@Snevzor I'm sorry but this thing is too old for me now to remember all the details. The initial problem was due to some incompatible methods signature and/or class constructors. But to be honest I don't remember which and the "why". This PR cleaned those up and made my custom application a bit more stable. Initially I had to do some hacks to overcome some related issues - sorry I can't remember those either.

I'm sorry for not being too helpful here but I really don't remember the details and I don't have the time and luxury to search in my old messy code for that application (although it seems to work even now as it is 😄 )

@Snevzor

Copy link
Copy Markdown

@mtiutiu no worries! Thanks for responding anyhow.

@larsblumberg

Copy link
Copy Markdown
Contributor

I would like to continue the work on this PR.

@mtiutiu Is your PR to this PR already included?

@mtiutiu

Copy link
Copy Markdown

@larsblumberg
As far as I know it should but @tommie-lie knows better as he worked more on it.

@rngtng

Copy link
Copy Markdown

Any updates on this? I’d love to see this merged and especially removing the dependency. Gave me headaches. Anything I can help with?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@tommie-lie@larsblumberg@mtiutiu@TheMeaningfulEngineer@Snevzor@rngtng
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Migrate all the D-Bus calls to GDBus. - #14

Open
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus
Open

Migrate all the D-Bus calls to GDBus.#14
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus

Conversation

@tommie-lie

Copy link
Copy Markdown

Disclaimer: This pull-request does not "fix" an "issue" but is rather a proposal and is a 1:1 migration. I plan on expanding on that idea, creating proper DBusProxy subclasses, somehow resect the requirement for a non-user-controlled mainloop and thus improve the integratability of gatt-python for my own projects. If you think this migration is rubbish, just close the pull-request ;-)

--

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.

As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.

This also effectively removes the python-dbus dependency.

@tommie-lie
tommie-lieforce-pushed the gdbus branch 2 times, most recently from 9468b3c to 8252600CompareNovember 4, 2017 14:03
@larsblumberg

Copy link
Copy Markdown
Contributor

I'm the original author of this library and I find your PR very promising. As it is removing the dependency of dbus and using GDBus instead, I consider this PR a good step forward.
Unfortunately I don't have suitable hardware to test your PR as I'm not working with team Senic at the moment. Maybe someone from @getsenic can give the PR a try? It should make their build process slightly simpler.

@mtiutiu

mtiutiu commented Nov 10, 2017

Copy link
Copy Markdown

@tommie-lie This is really great. Tested your PR using real hardware and I fixed some issues - seems all well now with some minor exceptions but not critical for the applications. I created another PR on your fork(I created a PR for this PR basically 😄 ).

@larsblumberg@tommie-lie
What was tested:

  1. Discovery - works
  2. Connecting - works
  3. Notifications - works

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.
As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.
This also effectively removes the python-dbus dependency.
@tommie-lie

Copy link
Copy Markdown
Author

Sorry for having been silent for so long, but I had some quite busy weeks and did not work on my Bluetooth pet project.

I'm a bit puzzled as to why my code ever worked with the issues found by @mtiutiu but they are fixed now and I found some other placed where the error-handling was wrong. I also rebased the commit to the latest master (and adapted the new DeviceManager.remove_all_devices method).

@mtiutiu I sincerely apologize for not giving credit to you in the git history but I found it rather hard to integrate your PR (see there for more info). Please let me know if you are okay with this or if I should add you to the commit message.

@mtiutiu

Copy link
Copy Markdown

@tommie-lie You can merge your changes I don't need any credits for this. I'm glad I could be of help.

@larsblumberg

Copy link
Copy Markdown
Contributor

@TheMeaningfulEngineer Where you guys able to test this PR? It should make your build process easier as it makes the necessity for the dbus lib obsolete.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey @larsblumberg
given the current load, and that it's a feature improvement I'd say somewhere in March.

And thanks @tommie-lie and @mtiutiu, sorry for not being very responsive at the moment.

@larsblumberg

Copy link
Copy Markdown
Contributor

While I wouldn't consider the dbus replacement a feature (from the user perspective) I understand that you got more important things to do in the moment. I'm looking forward to seeing those changes implemented at some point as it eases the overall build process, not only for the Senic Hub.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey peeps,
got a chance to test the PR with our current stack.
Unfortunately it broke it and I can't spend the time atm to debug it,
will check it out in the soonest available time slot.

Where it fails is on the wrapper library that abstracts the gatt and allows
us to think in terms of functionalities of the device.
@larsblumberg
Do feel free to rephrase, that how I understood the stack :)

 File "/home/root/nuimo-linux-python/nuimo/nuimo.py", line 38, in start_discovery super().start_discovery(service_uuids=Controller.SERVICE_UUIDS) File "/home/root/gatt-python/gatt/gatt_linux.py", line 142, in start_discovery self._adapter.SetDiscoveryFilter('(a{sv})', discovery_filter) File "/usr/lib/python3.5/site-packages/gi/overrides/Gio.py", line 157, in __call__ arg_variant = GLib.Variant(signature, tuple(args)) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 243, in __new__ (v, rest_format, _) = creator._create(format_string, [value]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 132, in _create return self._create_tuple(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 167, in _create_tuple (v, format, _) = self._create(format, args[0][i:]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 135, in _create return self._create_dict(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 194, in _create_dict (val_v, rest_format, _) = self._create(rest_format, [v]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 126, in _create v = constructor(args[0]) TypeError: argument value: Expected GLib.Variant, but got list

@Snevzor

Copy link
Copy Markdown

@mtiutiu could you please elaborate on what issues were fixed for you?

@mtiutiu

Copy link
Copy Markdown

@Snevzor I'm sorry but this thing is too old for me now to remember all the details. The initial problem was due to some incompatible methods signature and/or class constructors. But to be honest I don't remember which and the "why". This PR cleaned those up and made my custom application a bit more stable. Initially I had to do some hacks to overcome some related issues - sorry I can't remember those either.

I'm sorry for not being too helpful here but I really don't remember the details and I don't have the time and luxury to search in my old messy code for that application (although it seems to work even now as it is 😄 )

@Snevzor

Copy link
Copy Markdown

@mtiutiu no worries! Thanks for responding anyhow.

@larsblumberg

Copy link
Copy Markdown
Contributor

I would like to continue the work on this PR.

@mtiutiu Is your PR to this PR already included?

@mtiutiu

Copy link
Copy Markdown

@larsblumberg
As far as I know it should but @tommie-lie knows better as he worked more on it.

@rngtng

Copy link
Copy Markdown

Any updates on this? I’d love to see this merged and especially removing the dependency. Gave me headaches. Anything I can help with?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@tommie-lie@larsblumberg@mtiutiu@TheMeaningfulEngineer@Snevzor@rngtng
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Migrate all the D-Bus calls to GDBus. - #14

Open
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus
Open

Migrate all the D-Bus calls to GDBus.#14
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus

Conversation

@tommie-lie

Copy link
Copy Markdown

Disclaimer: This pull-request does not "fix" an "issue" but is rather a proposal and is a 1:1 migration. I plan on expanding on that idea, creating proper DBusProxy subclasses, somehow resect the requirement for a non-user-controlled mainloop and thus improve the integratability of gatt-python for my own projects. If you think this migration is rubbish, just close the pull-request ;-)

--

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.

As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.

This also effectively removes the python-dbus dependency.

@tommie-lie
tommie-lieforce-pushed the gdbus branch 2 times, most recently from 9468b3c to 8252600CompareNovember 4, 2017 14:03
@larsblumberg

Copy link
Copy Markdown
Contributor

I'm the original author of this library and I find your PR very promising. As it is removing the dependency of dbus and using GDBus instead, I consider this PR a good step forward.
Unfortunately I don't have suitable hardware to test your PR as I'm not working with team Senic at the moment. Maybe someone from @getsenic can give the PR a try? It should make their build process slightly simpler.

@mtiutiu

mtiutiu commented Nov 10, 2017

Copy link
Copy Markdown

@tommie-lie This is really great. Tested your PR using real hardware and I fixed some issues - seems all well now with some minor exceptions but not critical for the applications. I created another PR on your fork(I created a PR for this PR basically 😄 ).

@larsblumberg@tommie-lie
What was tested:

  1. Discovery - works
  2. Connecting - works
  3. Notifications - works

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.
As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.
This also effectively removes the python-dbus dependency.
@tommie-lie

Copy link
Copy Markdown
Author

Sorry for having been silent for so long, but I had some quite busy weeks and did not work on my Bluetooth pet project.

I'm a bit puzzled as to why my code ever worked with the issues found by @mtiutiu but they are fixed now and I found some other placed where the error-handling was wrong. I also rebased the commit to the latest master (and adapted the new DeviceManager.remove_all_devices method).

@mtiutiu I sincerely apologize for not giving credit to you in the git history but I found it rather hard to integrate your PR (see there for more info). Please let me know if you are okay with this or if I should add you to the commit message.

@mtiutiu

Copy link
Copy Markdown

@tommie-lie You can merge your changes I don't need any credits for this. I'm glad I could be of help.

@larsblumberg

Copy link
Copy Markdown
Contributor

@TheMeaningfulEngineer Where you guys able to test this PR? It should make your build process easier as it makes the necessity for the dbus lib obsolete.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey @larsblumberg
given the current load, and that it's a feature improvement I'd say somewhere in March.

And thanks @tommie-lie and @mtiutiu, sorry for not being very responsive at the moment.

@larsblumberg

Copy link
Copy Markdown
Contributor

While I wouldn't consider the dbus replacement a feature (from the user perspective) I understand that you got more important things to do in the moment. I'm looking forward to seeing those changes implemented at some point as it eases the overall build process, not only for the Senic Hub.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey peeps,
got a chance to test the PR with our current stack.
Unfortunately it broke it and I can't spend the time atm to debug it,
will check it out in the soonest available time slot.

Where it fails is on the wrapper library that abstracts the gatt and allows
us to think in terms of functionalities of the device.
@larsblumberg
Do feel free to rephrase, that how I understood the stack :)

 File "/home/root/nuimo-linux-python/nuimo/nuimo.py", line 38, in start_discovery super().start_discovery(service_uuids=Controller.SERVICE_UUIDS) File "/home/root/gatt-python/gatt/gatt_linux.py", line 142, in start_discovery self._adapter.SetDiscoveryFilter('(a{sv})', discovery_filter) File "/usr/lib/python3.5/site-packages/gi/overrides/Gio.py", line 157, in __call__ arg_variant = GLib.Variant(signature, tuple(args)) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 243, in __new__ (v, rest_format, _) = creator._create(format_string, [value]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 132, in _create return self._create_tuple(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 167, in _create_tuple (v, format, _) = self._create(format, args[0][i:]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 135, in _create return self._create_dict(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 194, in _create_dict (val_v, rest_format, _) = self._create(rest_format, [v]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 126, in _create v = constructor(args[0]) TypeError: argument value: Expected GLib.Variant, but got list

@Snevzor

Copy link
Copy Markdown

@mtiutiu could you please elaborate on what issues were fixed for you?

@mtiutiu

Copy link
Copy Markdown

@Snevzor I'm sorry but this thing is too old for me now to remember all the details. The initial problem was due to some incompatible methods signature and/or class constructors. But to be honest I don't remember which and the "why". This PR cleaned those up and made my custom application a bit more stable. Initially I had to do some hacks to overcome some related issues - sorry I can't remember those either.

I'm sorry for not being too helpful here but I really don't remember the details and I don't have the time and luxury to search in my old messy code for that application (although it seems to work even now as it is 😄 )

@Snevzor

Copy link
Copy Markdown

@mtiutiu no worries! Thanks for responding anyhow.

@larsblumberg

Copy link
Copy Markdown
Contributor

I would like to continue the work on this PR.

@mtiutiu Is your PR to this PR already included?

@mtiutiu

Copy link
Copy Markdown

@larsblumberg
As far as I know it should but @tommie-lie knows better as he worked more on it.

@rngtng

Copy link
Copy Markdown

Any updates on this? I’d love to see this merged and especially removing the dependency. Gave me headaches. Anything I can help with?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@tommie-lie@larsblumberg@mtiutiu@TheMeaningfulEngineer@Snevzor@rngtng
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Migrate all the D-Bus calls to GDBus. - #14

Open
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus
Open

Migrate all the D-Bus calls to GDBus.#14
tommie-lie wants to merge 1 commit into
getsenic:masterfrom
tommie-lie:gdbus

Conversation

@tommie-lie

Copy link
Copy Markdown

Disclaimer: This pull-request does not "fix" an "issue" but is rather a proposal and is a 1:1 migration. I plan on expanding on that idea, creating proper DBusProxy subclasses, somehow resect the requirement for a non-user-controlled mainloop and thus improve the integratability of gatt-python for my own projects. If you think this migration is rubbish, just close the pull-request ;-)

--

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.

As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.

This also effectively removes the python-dbus dependency.

@tommie-lie
tommie-lieforce-pushed the gdbus branch 2 times, most recently from 9468b3c to 8252600CompareNovember 4, 2017 14:03
@larsblumberg

Copy link
Copy Markdown
Contributor

I'm the original author of this library and I find your PR very promising. As it is removing the dependency of dbus and using GDBus instead, I consider this PR a good step forward.
Unfortunately I don't have suitable hardware to test your PR as I'm not working with team Senic at the moment. Maybe someone from @getsenic can give the PR a try? It should make their build process slightly simpler.

@mtiutiu

mtiutiu commented Nov 10, 2017

Copy link
Copy Markdown

@tommie-lie This is really great. Tested your PR using real hardware and I fixed some issues - seems all well now with some minor exceptions but not critical for the applications. I created another PR on your fork(I created a PR for this PR basically 😄 ).

@larsblumberg@tommie-lie
What was tested:

  1. Discovery - works
  2. Connecting - works
  3. Notifications - works

Given that the python-dbus interface only receives fixes and is considered by
its author and maintainer as un-pythonic and is not recommended by him, it seems
more logical to use another, more recommendable interface.
As gatt-python already makes use of PyGI and GLib, it makes sense to use GDBus which
comes as a part of GLib.
This also effectively removes the python-dbus dependency.
@tommie-lie

Copy link
Copy Markdown
Author

Sorry for having been silent for so long, but I had some quite busy weeks and did not work on my Bluetooth pet project.

I'm a bit puzzled as to why my code ever worked with the issues found by @mtiutiu but they are fixed now and I found some other placed where the error-handling was wrong. I also rebased the commit to the latest master (and adapted the new DeviceManager.remove_all_devices method).

@mtiutiu I sincerely apologize for not giving credit to you in the git history but I found it rather hard to integrate your PR (see there for more info). Please let me know if you are okay with this or if I should add you to the commit message.

@mtiutiu

Copy link
Copy Markdown

@tommie-lie You can merge your changes I don't need any credits for this. I'm glad I could be of help.

@larsblumberg

Copy link
Copy Markdown
Contributor

@TheMeaningfulEngineer Where you guys able to test this PR? It should make your build process easier as it makes the necessity for the dbus lib obsolete.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey @larsblumberg
given the current load, and that it's a feature improvement I'd say somewhere in March.

And thanks @tommie-lie and @mtiutiu, sorry for not being very responsive at the moment.

@larsblumberg

Copy link
Copy Markdown
Contributor

While I wouldn't consider the dbus replacement a feature (from the user perspective) I understand that you got more important things to do in the moment. I'm looking forward to seeing those changes implemented at some point as it eases the overall build process, not only for the Senic Hub.

@TheMeaningfulEngineer

Copy link
Copy Markdown

Hey peeps,
got a chance to test the PR with our current stack.
Unfortunately it broke it and I can't spend the time atm to debug it,
will check it out in the soonest available time slot.

Where it fails is on the wrapper library that abstracts the gatt and allows
us to think in terms of functionalities of the device.
@larsblumberg
Do feel free to rephrase, that how I understood the stack :)

 File "/home/root/nuimo-linux-python/nuimo/nuimo.py", line 38, in start_discovery super().start_discovery(service_uuids=Controller.SERVICE_UUIDS) File "/home/root/gatt-python/gatt/gatt_linux.py", line 142, in start_discovery self._adapter.SetDiscoveryFilter('(a{sv})', discovery_filter) File "/usr/lib/python3.5/site-packages/gi/overrides/Gio.py", line 157, in __call__ arg_variant = GLib.Variant(signature, tuple(args)) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 243, in __new__ (v, rest_format, _) = creator._create(format_string, [value]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 132, in _create return self._create_tuple(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 167, in _create_tuple (v, format, _) = self._create(format, args[0][i:]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 135, in _create return self._create_dict(format, args) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 194, in _create_dict (val_v, rest_format, _) = self._create(rest_format, [v]) File "/usr/lib/python3.5/site-packages/gi/overrides/GLib.py", line 126, in _create v = constructor(args[0]) TypeError: argument value: Expected GLib.Variant, but got list

@Snevzor

Copy link
Copy Markdown

@mtiutiu could you please elaborate on what issues were fixed for you?

@mtiutiu

Copy link
Copy Markdown

@Snevzor I'm sorry but this thing is too old for me now to remember all the details. The initial problem was due to some incompatible methods signature and/or class constructors. But to be honest I don't remember which and the "why". This PR cleaned those up and made my custom application a bit more stable. Initially I had to do some hacks to overcome some related issues - sorry I can't remember those either.

I'm sorry for not being too helpful here but I really don't remember the details and I don't have the time and luxury to search in my old messy code for that application (although it seems to work even now as it is 😄 )

@Snevzor

Copy link
Copy Markdown

@mtiutiu no worries! Thanks for responding anyhow.

@larsblumberg

Copy link
Copy Markdown
Contributor

I would like to continue the work on this PR.

@mtiutiu Is your PR to this PR already included?

@mtiutiu

Copy link
Copy Markdown

@larsblumberg
As far as I know it should but @tommie-lie knows better as he worked more on it.

@rngtng

Copy link
Copy Markdown

Any updates on this? I’d love to see this merged and especially removing the dependency. Gave me headaches. Anything I can help with?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@tommie-lie@larsblumberg@mtiutiu@TheMeaningfulEngineer@Snevzor@rngtng