Cocos2d Plugin for Razer SDK

I created a Cocos2d Plugin for the Razer SDK. There’s several ways to build Cocos2d (i.e. Visual Studio, Android Studio, and XCode). The Visual Studio build process doesn’t support the AAR format yet, so the plugin uses the JAR format. The Android Studio gradle files do support AAR files.
[Cocos2d Plugin Razer SDK]

PlayFab Live Day 2

PlayFab is doing live all-day webcasts and today is day two. Marco covered a presentation on “Building a Custom Multiplayer Game Server” over the first hour.

Playfab does BAS solutions and server-side scripting. They have plugins for all the game engines.

Windows 10 Upgrade

Today is the last day to upgrade to Windows 10 for free. I’m running Windows 10 on everything else, but my Razer Blade 14″ is running Windows 8. I need to reinstall anyway since I had some old dependencies that were getting in the way of compiling UE4 for Android.

[Razer Blade 14″ drivers]

Plantronics Voyager Legend with sdptool

sdptool records 48:C1:AC:E2:21:A7

Service RecHandle: 0x10000
Service Class ID List:
“PnP Information” (0x1200)

Service Name: Hands-Free unit
Service RecHandle: 0x10001
Service Class ID List:
“Handsfree” (0x111e)
“Generic Audio” (0x1203)
Protocol Descriptor List:
“L2CAP” (0x0100)
“RFCOMM” (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
“Handsfree” (0x111e)
Version: 0x0106

Service Name: Headset
Service RecHandle: 0x10002
Service Class ID List:
“Headset” (0x1108)
“” (0x1131)
“Generic Audio” (0x1203)
Protocol Descriptor List:
“L2CAP” (0x0100)
“RFCOMM” (0x0003)
Channel: 2
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
“Headset” (0x1108)
Version: 0x0102

Service RecHandle: 0x10003
Service Class ID List:
“Audio Sink” (0x110b)
Protocol Descriptor List:
“L2CAP” (0x0100)
PSM: 25
“AVDTP” (0x0019)
uint16: 0x0102
Profile Descriptor List:
“Advanced Audio” (0x110d)
Version: 0x0102

Service RecHandle: 0x10004
Service Class ID List:
“AV Remote” (0x110e)
“AV Remote Controller” (0x110f)
Protocol Descriptor List:
“L2CAP” (0x0100)
PSM: 23
“AVCTP” (0x0017)
uint16: 0x0103
Profile Descriptor List:
“AV Remote” (0x110e)
Version: 0x0104

Service RecHandle: 0x10005
Service Class ID List:
“AV Remote Target” (0x110c)
Protocol Descriptor List:
“L2CAP” (0x0100)
PSM: 23
“AVCTP” (0x0017)
uint16: 0x0103
Profile Descriptor List:
“AV Remote” (0x110e)
Version: 0x0104

Service Name: PBAP Client
Service RecHandle: 0x10006
Service Class ID List:
“Phonebook Access – PCE” (0x112e)
Profile Descriptor List:
“Phonebook Access” (0x1130)
Version: 0x0101

Service Name: PltHeadsetDataService
Service RecHandle: 0x10007
Service Class ID List:
UUID 128: 82972387-294e-4d62-97b5-2668aa35f618
Protocol Descriptor List:
“L2CAP” (0x0100)
“RFCOMM” (0x0003)
Channel: 5
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100

Plantronic Voyager Legend Bluetooth and BlueZ

According to the specifications, Platronics Voyager Legend uses [Phone Book Access Profile (PBAP)]. BlueZ lists [PBAP] as a supported protocol.

python test/test-device list

48:C1:AC:E2:21:A7 PLT_Legend

python test/test-device connect 48:C1:AC:E2:21:A7 PBAP

Name=PLT_Legend
Paired=1
Modalias=bluetooth:v0055p0113d005D
Connected=0
Address=48:C1:AC:E2:21:A7
Alias=PLT_Legend
dbus.Dictionary({dbus.String(u’Name’): dbus.String(u’PLT_Legend’, variant_level=1), dbus.String(u’Paired’): dbus.Boolean(True, variant_level=1), dbus.String(u’Modalias’): dbus.String(u’bluetooth:v0055p0113d005D’, variant_level=1), dbus.String(u’Adapter’): dbus.ObjectPath(‘/org/bluez/hci0′, variant_level=1), dbus.String(u’LegacyPairing’): dbus.Boolean(False, variant_level=1), dbus.String(u’Alias’): dbus.String(u’PLT_Legend’, variant_level=1), dbus.String(u’Connected’): dbus.Boolean(False, variant_level=1), dbus.String(u’UUIDs’): dbus.Array([dbus.String(u’00001108-0000-1000-8000-00805f9b34fb’), dbus.String(u’0000110b-0000-1000-8000-00805f9b34fb’), dbus.String(u’0000110c-0000-1000-8000-00805f9b34fb’), dbus.String(u’0000110e-0000-1000-8000-00805f9b34fb’), dbus.String(u’0000111e-0000-1000-8000-00805f9b34fb’), dbus.String(u’00001200-0000-1000-8000-00805f9b34fb’), dbus.String(u’82972387-294e-4d62-97b5-2668aa35f618′)], signature=dbus.Signature(‘s’), variant_level=1), dbus.String(u’Address’): dbus.String(u’48:C1:AC:E2:21:A7′, variant_level=1), dbus.String(u’Blocked’): dbus.Boolean(False, variant_level=1), dbus.String(u’Class’): dbus.UInt32(2360324L, variant_level=1), dbus.String(u’Trusted’): dbus.Boolean(True, variant_level=1), dbus.String(u’Icon’): dbus.String(u’audio-card’, variant_level=1)}, signature=dbus.Signature(‘sv’))
Traceback (most recent call last):
File “./test-device”, line 117, in
device.ConnectProfile(args[2])
File “/usr/lib/python2.7/dist-packages/dbus/proxies.py”, line 70, in __call__
return self._proxy_method(*args, **keywords)
File “/usr/lib/python2.7/dist-packages/dbus/proxies.py”, line 145, in __call__
**keywords)
File “/usr/lib/python2.7/dist-packages/dbus/connection.py”, line 651, in call_blocking
message, timeout)
dbus.exceptions.DBusException: org.bluez.Error.NotAvailable: Operation currently not available

python test/pbap-client 48:C1:AC:E2:21:A7

Creating Session
Traceback (most recent call last):
File “pbap-client”, line 128, in
session_path = client.CreateSession(sys.argv[1], { “Target”: “PBAP” })
File “/usr/lib/python2.7/dist-packages/dbus/proxies.py”, line 70, in __call__
return self._proxy_method(*args, **keywords)
File “/usr/lib/python2.7/dist-packages/dbus/proxies.py”, line 145, in __call__
**keywords)
File “/usr/lib/python2.7/dist-packages/dbus/connection.py”, line 651, in call_blocking
message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownObject: Method “CreateSession” with signature “sa{ss}” on interface “org.bluez.obex.Client1” doesn’t exist

[Phone Book Access (PBAP) client for Linux (Raspberry Pi)]