Follow us on twitch!

To try out something new i've created an account on twitch for my kids and me to stream the games we're currently playing on the switch and phone like Rocket League, Animal Crossing, Minecraft, Mario, Pokemon Go  etc. It's without any pretention being professional streamers, just for fun! Follow us on http://www.twitch.tv/elcobouma

 

MvvmCross Upgrades ARGHHHHHHHHH

A while back (that's more then 6 years), I started to make the Arena Online games with MvvmCross to be able to support the Windows Phone and Android platform. To keep up with the framework during the years, I had to change some things now and then. Not very big deals, but there was never pressure to do them. So about a year ago the games were still on MvvmCross 4 without a problem, still compiling against the latest required Android SDK's required for publishing in the Play store. But then that one night, i still remember :-), the messages came. Apps crashed on startup when being compiled with the latest Android 10 SDK. To compile against Android 10, your app requires at least MvvmCross 6.......The deadline is November 2020.......

So long story short......I'm migrating the apps to MvvmCross 6.4.1. First from 4 to 5, the biggest thing is the migration of all the libraries and PCL's to .Net Standard. And then from 5 to 6 where the navigation seems to be the biggest change... But as always stay cool and take the migration step by step. :-) 

Keep you posted!

 

"Hacking" a Bluetooth dartboard

From the date on I created Dutch Darts Revelation, which is more then 20 years ago, I always had the wish to connect it to a real dartboard. With the availability of some relatively cheap electronic bluetooth dartboards, it was time to see if this wish could come true. Last month i bought a Smartness Arcadia 4.0 dartboard and started my journey to "hack" the bluetooth protocol. 

Smartness Arcadia 4.0

Somehow when doing things for fun, i always grab visual studio and some Microsoft examples to get started. For this task, without any bluetooth knowledge, i downloaded the Bluetooth LE example solution to see how it works from here https://docs.microsoft.com/en-us/samples/microsoft/windows-universal-samples/bluetoothle/ It proved to be a good start for trying out something like this.

I just started the example and in the first step the app looks for nearby bluetooth devices. A device called "Smartness1" looked like a good candidate.

Then with Bluetooth LE you ask the device for available services and for every service you can ask for available characteristics of the service. See that as some kind of sub-services.

The Smartness1 has 7 Services, i choose the SimpleKeyService as most promising looking candidate.

The SimpleKeyService has one characteristic (subservice) and that is the SimpleKeyState.  I choose to subscribe to value changes for that characteristic.

So now the app is waiting for some kind of input from the board and the moment is there to see if anything happens when you press a number on the board. To do that put a breakpoint in the Scenario2_Client.xaml.cs in the  FormatValueByPresentation(IBuffer buffer, GattPresentationFormat format) method on the if (data!=null) line. If anything comes in this way the breakpoint should be hit.

Then i pressed the 16 on the board.....and yes!!!!! We got an incoming byte..also with value 16...this is too easy 😊 


When pressing other parts of the board it seems the board gives a different number for every part of the board that is pressed. The upper part of the singles are from 0-20 then the lower part of the singles have 20-40. The doubles have 40-60 and the triples have 60-80. Then for the bull 81, double bull 82 and the next button 101. Here is some code which might explain better how i quickly decoded the byte value into something meaningful:

 

     switch (data[0])
                {
                    case 82: return data[0]+" Double Bull";
                    case 81: return data[0] + " Single Bull";
                    case 101: return data[0] + " Next";
                    default:
                        if (data[0] <= 20)
                        {
                            return data[0] + " Single (Upper)" + data[0];
                        }
                        else if (data[0] <= 40 && data[0] > 20)
                        {
                            return data[0] + " Single (Lower)" + (data[0]-20);
                        }
                        else if(data[0]<=60 && data[0] > 40)
                        {
                            return data[0] + " Double " + (data[0] - 40);
                        }
                        else if (data[0] <= 80 && data[0] > 60)
                        {
                            return data[0] + " Triple " + (data[0] - 60);
                        }
                        else
                        {
                            return "Unknown "+data[0];
                        }
                        break;
                }

So voila, there you have it. The idea is to create a game/trainer in the line of "Dutch Darts Revelation", that runs on windows, and can connect to multiple electronic dartboards. Ofcourse every board will have its own protocol but we'll see. I'll give some more info screens and videos of the app development and its features in a later post. 

Hope you like this one! KCFLIWSD !

Regards,

GMR

 

Privacy Policy

 

Personal information

This application does not collect or transmit any user’s personally identifiable information. No personal information is used, stored, secured or disclosed by services this application works with.

Technical information

Limited technical information is sent (such as IP addresses included in the HTTP calls the application makes) but none of that is used or stored. The deviceid is used as part of the authentication process and to track potential abuse using multiple devices to play the same turn.

Third parties

If the app makes use of third party services, their usage of information is excluded from this privacy policy. You will be clearly made aware of the third parties involved in the app and we will ensure the very minimal set of data is set to those third parties.

Report violations or get more information

If you would like to report any violations of this policy or get more information on any app, please contact us at admin@e-bouma.com