Bluetooth Service Solicitation in Windows UWP - windows

I am trying to connect to my iPhone and access services such as the battery level and ANCS from windows. I have tried out the Advertisement watcher and query but I feel as though they are really inconsistent. I am just using the code they provided in their updated documentation. I feel as though my results are extremely buggy. Devices show up multiple times and then become unreachable. It's almost as if past devices are never cleared from the cache (this may need to be something I do manually?) upon restarting my UWP in debug x86. I have briefly had success with the advertisement watcher and was even able to initiate pairing. Although when I read the battery level it was still not a number after using the data reader. I noticed that there were some service solicitation properties on the documentation but I could not figure out how to use them. Would these help and if so how could I use them? This might be useful when I try to connect to the ANCS of my iPhone.
Edit 1: After trying out the sample provided by Microsoft, I am still having a similar issue. I am able to see devices and even pair with them but when I click the connect button, it returns that there is a connection failure. In order to advertise to the BLE I am using the LightBlue app on my iPhone to advertise a virtual peripheral with the battery service added. My end goal is to connect to the iPhone directly and access some of its native BLE services and characteristics. I have heard that this can be done with something called service solicitation but have failed to successfully find any real examples of this being put into practice in a UWP (maybe it's not used anymore). I am still pretty new to BLE so I am trying to work out some of my fundamental misunderstandings of how it works so if there is something I am missing please let me know below!
BLE Failing to connect after pairing.
Edit 2: Ok after cleaning and re-building to fix some of my silly mistakes, I can now say that the example project is running as intended from what I can tell. The solution is actually pretty nice and I can see it is much more elegant than my implementation. However, I see that I am running into the same issue as before where the services of my virtual peripheral become undiscoverable after pairing and now result in a "Device Unreachable" exception in scenario 2. It seems as though Windows does not support "Resolvable Random Private Addresses." To elaborate, it does not provide my phone with an Identity Resolving Key (IRK) upon pairing with my iPhone 11 in order to keep track of its address. In order to access certain key characteristics, I need authorization.
Is there any way I can exchange an IRK upon pairing using the custom pairing capability or is there another method to provide authorization in order to access these characteristics on my iPhone? As it is, ANY and ALL GATT services present on the iPhone (virtual peripheral or native OS) become unreachable as soon as I successfully pair with the device. I am hoping it is possible to implement a solution in Windows as if not then communicating meaningful data between modern devices seems impossible with outdated privacy protocols.
I did a little bit of research and it is either the problem above or something to do with my Bluetooth device.
If I were to try to access characteristic without pairing
Edit 3: I have been able to get it to work briefly and it was wonderful. I used the system settings to pair and magically got the prompt on my phone to share notifications. From there, I had authorization/authentication and everything else I wanted to do was a breeze. Unfortunately, this does not seem to be reproducible as I have to randomly pair and unpair while starting and stopping the sample solution to get this prompt. I don't entirely remember what was happening when it popped up, but it does not seem easy to recreate. I thought that pairing would be my solution, but I am now stuck. When I pair with the device, I cannot access any services, but when I am unpaired, I can see all of the services and characteristics I need. However, when trying to subscribe to those characteristics I get "System.Exception: 'The attribute requires authentication before it can be read or written. (Exception from HRESULT: 0x80650005)'." Is there any way for me to request access to the notifications on my iPhone using something in the documentation? I need a reproducible way to request system notification access on my iPhone.

Related

No video feed from M600 Pro with mobile SDK

I'm having trouble getting the video feed working from the M600 Pro. It works fine in the DJI Go App so I know the feed is there, just not in my IOS app. When we initially setup the app up for the M210, we needed to set bandwidth allocation to make it work, wondering if there is something like that needed for the M600 Pro? Has anyone got that working?
Below is my code:
if (product?.model == DJIAircraftModelNameMatrice600Pro) {
DJISDKManager.videoFeeder()?.secondaryVideoFeed.add(self, with: nil)
}
VideoPreviewer.instance().start()
Yes bandwidth could be an issue but also, other aspects of your setup could influence this blockage. Without knowing your entire set-up this is a difficult question to answer since the M600 has a variety of variables. The best thing to do is send a ticket to dev#dji.com with this issue but include - what cameras you are using, outline how you've made the connections, your setup for bandwidth, the reason you are using secondaryVideoFeed vs. Primary and any other details you can think of.

Choose what apps mute all other sounds on VOIP call in Windows

Is it possible for Windows 10 to choose what apps should mute all other sounds when I am on a VOIP call?
I know that Windows does it for Skype and games, but I use mostly SIP protocol programs like Zoiper or Jitsy. When using these, and when I make / receive a call, other sounds are never muted. I am usually listening to music simultaneously from a browser, and its annoying to have to manually lower the volume everytime I have to VOIP. Its even harder because I have to switch virtual desktops also to do it, because I keep work v.desktop away from the rest.
I've searched all over the windows control panel, and also googled around but couldn't find any options for this. Any recommendations?
It is not possible. The app have to make some system call so the OS will recognize it as a VoIP app and reduce the volume for all other apps.
However I don't know on which API call this is relied on.
I hope that somebody will answer this.

DJI Phantom API or hackable procedure

Maybe I have't looked hard enough, but I spent yesterday googling for a bit and found no relevant projects on hacking the DJI Phantom Drone in order to create new coordinating apps. This is besides the app for coordination DJI currently uses for their drone. I'm trying to see if there's a way to communicate with the Drone with a specific protocol in order to accept a set of procedures.
Any help would be awesome,
Thanks.
Great News for you and all us Droneys! DJI has launched their SDK since you asked this question. They released it last November and you can now apply for a license and write your own apps for the Phantom2 Vision+ using their SDK.
Check it out at https://developer.dji.com/
I am already building a project using the SDK - you can follow my progress on my blog / product site. I will also try to update it with good DJI related development links and tips.
This post is old but I think it is good to leave a foot print for others :)
There is this new company called NVdrones, which created a peace of hardware that you can attach to any drone (you need physical access to the flight controller), and once you do that you can use their SDK (Arduino, Java, Android and Javascript) to write your app without the need of hacking, soldering or anything else. It is just plug and play.
Another benefit is that you are not locked with a specific drone (DJI SDK or 3DRobotics SDK), you can use the board on anything you want. Which gives lots of flexibility.
The developer site is http://developers.NVdrones.com
Hope this helps.
This is a great topic!
You could check how to hack your copter here: https://github.com/flyver/Flyver-SDK/wiki/-2.2--How-To:-Flyver-Hack-a-Copter
By opening the drone, taking out the original controller, soldering a few wires and sticking an Android phone to it, you will have the ability to program your Phantom in a modern manner with an open source SDK and application based development. This means that you could add computer vision to it, automation or additional hardware. You could also use smartphones, web and other interactive devices for remote controlling the copter instead of using the standard remote controls.
The Phantom, however, is offcenter balanced due to the fact that most people use gimbal with it. Without the gimbal is a lot less stable from my experiments so you will have to put some extra work in center balancing it.

Send data from WP7 phone to a near by phone via bluetooth or other mechanism

I'd interested in sending data from one WP7 to another WP7 phone so I could create 2 player games. If I understand correctly most WP7 will support bluetooth, but its not in the minimum spec, is this correct? What API's can I use to access the bluetooth, any good examples of this out there?
Unfortunately Microsoft don't provide any access to the bluetooth stack via any documented APIs in this version of the Dev tools.
They don't seem to have any sense of urgency about fixing this (or any of the many other missing features), so I wouldn't expect the situation to change any time soon.

Remote Wipe application in android

Is there any Remote wipe application which will be working on deleting the data in Emulator by sending an SMS from other emulator?? I found some of the free applications in android market on Remote Wipe.. But they are not working..
Please let me know if any of the application is working on Emulator
Thanks in advance
Uday
There is just one remote wipe application I have come across.
I have been trying to write one such application myself but I believe the permissions required are 2nd level and 3rd level permissions (check this link and this link). Thats is the reason I am unsuccessful as yet. I believe that you basically need to sign the package with the same signature as the OEM manufacturer to be able to grant those packages to your device.
If by an stroke of luck you do happen to make one successfully, please let us know the permission you have used to make such a thing possible! =)
Regards
Shouvik
EDIT: Okay I supposed I am wrong. I believe in android 2.2 it is possible to remote wipe your. I have not completely understood how to implement the function or the class yet, I plan to work on it as soon as I can spare some time. :)
Reply:
Well I have been looking at the SDK for some time now, and I can confidently tell you below 2.2, I am pretty sure there is no way I know of to remote wipe your data. I have although read on the mailers list that there is a function that enables a third party client to create a remote wipe application as you may have seen in my post above. I have actually use my own port of android on a device and have just used the brick, but if I do come across any reference that can show how you could achieve what you desire, I would be happy to leave a post here. Regards Shouvik.
Links
http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#wipeData%28int%
also for formatting the SD card I came across a permission that you can request, I guess you follow that you end up at the method.
http://developer.android.com/reference/android/Manifest.permission.html#MOUNT_FORMAT_FILESYSTEMS

Resources