Hi Sergey,
In respond to your questions:
1. You can get numpad key press events after each key press from the DeviceListener key press events.
2. The P240 does not support the Cyrillic symbols at this time.
Hope this helps.
Wei Chu
Hi Sergey,
In respond to your questions:
1. You can get numpad key press events after each key press from the DeviceListener key press events.
2. The P240 does not support the Cyrillic symbols at this time.
Hope this helps.
Wei Chu
Hi,
We have a problem with the installation of Spokes_RT.msi in a particular situation.
The problem occurs when our installer program (made with NSIS) executes Spokes_RT.msi in a standard user account without admin rights.
I have attached two logs files. The first one, installOk.zip, shows an installation that was properly done with the command:
C:\Users\test\Desktop>msiexec /i "Spokes.2.8_RT.msi" /passive /L*V "installOk.log"
The second one, installFailed.zip, shows the installation that failed. The msi is called by our installer program like this:
ExecWait '"msiexec" /i "$TEMP\Spokes.2.8_RT.msi" /passive /L*V "C:\installFailed.log"' $0
Before that, the execution level has been raised with "RequestExecutionLevel admin"
Eventually in this last situation, the installation fails, Spokes does not appear in the installed programs.
However, the process PlantronicsURE.exe is started and is running as Admin.
Any help welcome!
Cheers
Staffan
Information about the logs: The standard user is "test" and the administrator is "Admin"
I forgot to mention that our installer program is executing other MSI without problem.
Hi Staffan,
This is beyond the scope of PDC so I had to reach out to our installation expert for help. Here is his response and I quote:
"I’m not sure they controlled their test case properly. The installFailed,log indicates that it was run on a
computer which already had spokes installed (at line 50):
MSI (s) (28:88) [15:04:49:658]: Product registered: entering maintenance mode"
Wei Chu
I am having an issue when the station is turned on, where the SpokesWrapper returns the following trace:
2/22/2014 12:49:57 PM IsSpokesComSessionManagerClassRegistered: About to look see if Spokes SessionManager is in registry
2/22/2014 12:49:57 PM IsSpokesComSessionManagerClassRegistered: About to check if Spokes is installed, Major Version = 2.x
2/22/2014 12:49:58 PM AttachDevice: Spokes: AttachedEventHandler to device events
2/22/2014 12:49:58 PM UpdateOtherDeviceCapabilities: INFO: Did not find product in DeviceCapabilities.csv or DeviceCapabilities.csv not present for device:
2/22/2014 12:49:58 PM UpdateOtherDeviceCapabilities: Bluetooth Adapter
2/22/2014 12:49:58 PM UpdateOtherDeviceCapabilities: INFO: Will assume minimum capabilities, unless overridden by hard-coded capabilities in UpdateOtherDeviceCapabilities function.
2/22/2014 12:49:58 PM RegisterForProximity: Spokes: About to register for proximity.
2/22/2014 12:50:08 PM RegisterForProximity: Spokes: Completed request to register for proximity.
2/22/2014 12:50:27 PM GetInitialDonnedStatus: Spokes: Last donned state was: HeadsetState_Unknown
2/22/2014 12:50:37 PM GetInitialMuteStatus: Spokes: Last mute state was: False
2/22/2014 12:50:37 PM RequestAllSerialNumbers: Spokes: About to request serial numbers.
2/22/2014 12:50:37 PM RequestSingleSerialNumber: Spokes: About to request serial number for: Base
2/22/2014 12:51:21 PM RequestSingleSerialNumber: Spokes: About to request serial number for: Headset
2/22/2014 12:52:27 PM AttachDevice: Spokes: AttachedEventHandler to device
At this point I stopped the process and physically removed the bluetooth adapter and re-inserted it. The log that I then get is:
2/22/2014 12:55:48 PM IsSpokesComSessionManagerClassRegistered: About to look see if Spokes SessionManager is in registry
2/22/2014 12:55:48 PM IsSpokesComSessionManagerClassRegistered: About to check if Spokes is installed, Major Version = 2.x
2/22/2014 12:55:49 PM AttachDevice: Spokes: AttachedEventHandler to device events
2/22/2014 12:55:49 PM UpdateOtherDeviceCapabilities: INFO: Did not find product in DeviceCapabilities.csv or DeviceCapabilities.csv not present for device:
2/22/2014 12:55:49 PM UpdateOtherDeviceCapabilities: Plantronics BT300
2/22/2014 12:55:49 PM UpdateOtherDeviceCapabilities: INFO: Will assume minimum capabilities, unless overridden by hard-coded capabilities in UpdateOtherDeviceCapabilities function.
2/22/2014 12:55:49 PM RegisterForProximity: Spokes: About to register for proximity.
2/22/2014 12:55:49 PM RegisterForProximity: Spokes: Completed request to register for proximity.
2/22/2014 12:55:50 PM GetInitialDonnedStatus: Spokes: Last donned state was: HeadsetState_Don
2/22/2014 12:55:50 PM m_deviceListenerEvents_HandlerMethods: Spokes: Received Spokes Event: HeadsetStateChange=ProximityEnabled
2/22/2014 12:55:50 PM GetInitialMuteStatus: Spokes: Last mute state was: False
2/22/2014 12:55:50 PM RequestAllSerialNumbers: Spokes: About to request serial numbers.
2/22/2014 12:55:50 PM RequestSingleSerialNumber: Spokes: About to request serial number for: Base
2/22/2014 12:55:50 PM m_sessionComManager_CallStateChanged: Spokes: call state event = id=0 state=MobileCallEnded source=
2/22/2014 12:55:50 PM m_deviceListenerEvents_HandlerMethods: Spokes: Received Spokes Event: HeadsetStateChange=ProximityUnknown
2/22/2014 12:55:50 PM m_sessionComManager_CallStateChanged: Spokes: Mobile Calling activity ended.id=0 state=MobileCallEnded source=
2/22/2014 12:55:50 PM RequestSingleSerialNumber: Spokes: About to request serial number for: Headset
2/22/2014 12:55:50 PM DeviceListener_BaseStateChanged: BaseStateChanged: SerialNumber
2/22/2014 12:55:50 PM ReadSerialNumber: Spokes: About to read out serial number for: Base
2/22/2014 12:55:50 PM ReadSerialNumber: FAILED TO READ SERIAL from BaseStateChanged: SerialNumber event / m_hostCommandExt.GetSerialNumber_2(DeviceType.DeviceType_Base, serialbuf);
2/22/2014 12:55:50 PM m_deviceListenerEvents_HandlerMethods: Spokes: Received Spokes Event: HeadsetStateChange=SerialNumber
2/22/2014 12:55:50 PM m_deviceListenerEvents_HandlerMethods: HeadsetStateChanged: SerialNumber
2/22/2014 12:55:50 PM ReadSerialNumber: Spokes: About to read out serial number for: Headset
2/22/2014 12:55:50 PM ReadSerialNumber: FAILED TO READ SERIAL from HeadsetStateChanged: SerialNumber event / m_hostCommandExt.GetSerialNumber_2(DeviceType.DeviceType_Headset, serialbuf);
2/22/2014 12:55:50 PM m_deviceListenerEvents_HandlerMethods: Spokes: Received Spokes Event: HeadsetStateChange=BatteryLevel
2/22/2014 12:55:50 PM m_deviceListenerEvents_HandlerMethods: HeadsetStateChanged: BatteryLevel
2/22/2014 12:55:50 PM m_deviceListenerEvents_HandlerMethods: Spokes: Received Spokes Event: HeadsetStateChange=UnDocked
2/22/2014 12:55:50 PM AttachDevice: Spokes: AttachedEventHandler to device
2/22/2014 12:55:52 PM m_deviceListenerEvents_HandlerMethods: Spokes: Received Spokes Event: HeadsetStateChange=Near
I have updated the headset/bluetooth with what is on the website and am using the latest SpokesWrapper. What else can I try? This only happens when the computer is turned on, but it is going to be a bit of a pain for the users to have to do on a daily basis.
Thank you
Spokes is definitely not installed on the computer, otherwise I would see it in the installed programs.
Furthermore, after the failed installation with our installer, I can run Spokes_RT.msi and Spokes will be installed correctly.
My impresssion is that something goes wrong when Spokes_RT.msi is executed by the MSIS script.
Is there a way I can provide you more logging information about the installation ?
Cheers
Staffan
Brent,
With Spokes 3.x SDK there are two ways a .NET managed application can interface with the Spokes SDK
1. Via the COM Server hosted in Spokes engine and basically this will involve .NET<->COM Interop<->COM<->Native SDK. This will result in deployment of the Spokes engine.
2. Build a PInvoke wrapper on top of the Spokes native SDK and this will result in what you are looking for.
T.Ramesh.
I have tried a simple NSIS snippet executing Spokes_RT.msi in a standard user account and I have the same problem as mentionned above.
I have put the following script into a .nsi file and compile it with MakeNSISW:
;begin
Name "nsTest"
OutFile "nsTest.exe"
ShowInstDetails show
Section "Silent msiexec"
ExecWait '"msiexec" /i "C:\Spokes.2.8_RT.msi" /passive /L*V "C:\installFailed.log"'
SectionEnd
;end
The compiler can be downloaded at http://nsis.sourceforge.net/Download
Cheers
Staffan
Hi Staffan,
This sounds like a problem that needs to be raised through our corporate support channels. Would you be able to give our support number a call? They would be the best team to track this down for you and provide an answer. You can find our contact info on our corporate web page at this link. --> Plantroincs Support
Sorry we could not help with this issue, but the folks at the above link should be able to help.
Thanks!
Greg.
Could you please confirm whether Spokes_RT.msi can or cannot be executed from an NSIS script using a Windows account without admin rights ?
It is important for us to know if we have to rework our installer currently written in NSIS.
Thanks
Staffan
Hi Wei Chu
1. BaseButtonPressed event for every pressed numpad key is called only after Dial key press. Is there a way to get this event just after numpad key press?
2. When will it support Cyrillic symbols?
Is it possible to work with P240 as with simple USB device (set every pixel of dot-matrix display from PC, receive every key press event for all phone keys, etc.)?
Sergey
Hi Staffan,
I am testing this out for you now...
Will post results shortly!
Thanks,
Lewis.
Hi Staffan,
I have done some testing with NSIS today on a Windows 7 64 bit machine.
My results suggest there may be an issue with our "COM Service" API with NSIS installer on a Standard user account.
Here is the NSIS script I was using:
OutFile smartlocksuite.exe InstallDir $PROGRAMFILES\SmartLockSuite RequestExecutionLevel admin Section UserInfo::getAccountType Pop $0 StrCmp $0 "Admin" +3 MessageBox MB_OK "not admin: $0" Return MessageBox MB_OK "is admin" SetOutPath $INSTDIR SectionEnd ; These are the programs that are needed by SmartLock. Section -Prerequisites SetOutPath $INSTDIR\Prerequisites MessageBox MB_YESNO "Install the Minimal Spokes 2.8 Runtime?" /SD IDYES IDNO endSpokesInstall File "..\Prerequisites\Spokes_RT.msi" ExecWait '"msiexec" /i "$INSTDIR\Prerequisites\Spokes_RT.msi"' endSpokesInstall: MessageBox MB_YESNO "Install SmartLock?" /SD IDYES IDNO endSmartLockInstall File "..\Prerequisites\smartlocksetup.exe" ExecWait "$INSTDIR\Prerequisites\smartlocksetup.exe" Goto endSmartLockInstall endSmartLockInstall: SectionEnd
This NSIS script is created from snippits I found online. Basically I have created an NSIS installer that features Spokes_RT.msi, our minimal Spokes 2.8 runtime, and smartlocksetup.exe, a demo program that integrates to Spokes using the Spokes "COM Service" API.
I have tested both with and without RequestExecutionLevel admin in the script. Either way the NSIS installer requested an admin password (perhaps it defaults to requiring admin). It then proceeded to install the 2 programs as the elevated user I specified (Lew).
I was logged into Windows 7 as a "Standard" user. Following install of the NSIS installer the 2 programs were showing as running (shown in elevated taskmgr):
- PlantronicsURE.exe Process User Name was: Lew Process Security Permissions were: SYSTEM
- SmartLock.exe Process User Name was: Lew Process Security Permissions were: SYSTEM
However, my Spokes-integrated app (SmartLock.exe) failed to attach to Spokes COM Service (which is an out-of-proc COM Service hosted by PlantronicsURE.exe).
As Standard user I ran regedit to look for the registry key that allows connection to Spokes COM Service:
HKEY_CLASSES_ROOT\Plantronics.UC.Common.SessionComManager
I could not find it! However, if I run an elevated regedit instance, I can find it.
So following install both Spokes_RT.msi and my app (SmartLock) were installed, however when running my app as Standard user it could not connect to Spokes COM Service - I believe because it cannot see the COM interface in registry.
If I log into system as the Administrator user (Lew) then I run my app, it correctly spawned an instance of PlantronicsURE.exe and connected to it and I was able to user Spokes features.
Final test: I removed all the software, then as Standard user I installed without NSIS:
- Spokes_RT.msi
- My app (SmartLock)
This installed of Spokes_RT I can see the above registry key for COM Service. When I started my app it connected to Spokes straight away.
Conclusion: Something is happening when Spokes_RT.msi is wrapped in NSIS that is causing the Plantronics HKEY_CLASSES_ROOT reg keys to not be available by the Standard user account that ran the NSIS installer.
Suggestions: Could you user install Spokes separately? For example, the user or user's IT department could download and deploy Spokes from www.plantronics.com/software
Let me know your thoughts and if you have any further ideas to modify NSIS behaviour (avoid default elevation?)
Thanks,
Lewis
Hi Staffan,
One other thing I should mention is that Spoke_RT.msi once installed will not show anything in Start Menu programs. It installs just a minimal runtime (PlantronicsURE.exe) in C:\Program Files (x86)\Plantronics\PlantronicsURE as well as some Assemblies in C:\Windows\Assembly and Plantronics COM interfaces / COM type libraries in the registry.
We also have another MSI and MSM minimal runtime package option, more details here: Merge modules and installer options for Plantronics Spokes integrations.
Finally we have the "full" Spokes software from www.plantronics.com/software which does add various additional programs to the Start Menu for the management of Plantronics devices.
Let us know if you have further questions
Thanks!
Lewis.
Hi,
Some users are complaining of the mute on/off feedback tones of the C310.
Browsing plantronics.device.common.tlh I could found
virtual HRESULT __stdcall put_MuteToneVolume (/*[in]*/ enum VolumeLevel pRetVal ) = 0;
I suppose that is the method I should use, passing VolumeLevel_Off in.
Seems to be part of IDeviceSettings, that is not covered in the Spokes SDK documentation
Could anyone kindly post a C++ snippet that I could add to SpokesSDKCOMSample to work with that interface and use that method ?
Best Regards,
Julio.
Hi Julio,
You are looking at the right command, but this feature is only supported in a few devices such as Savi xxx. Unfortunately, the C310 is not one of them.
Sorry about that.
Wei Chu
Hi Sergey,
1. If you are not already in a call, there is no way to get a button pressed event until the talk key is pressed. The restriction is in the firmware design so there is no work around.
But if you are already in a call, then you will get an event for a num key press and you can do a getKey command to see what key got pressed.
2. There is no immediate plan to add Cyrillic symbol support. The fastest way to get a feature included in a Plantronics product is to air your desire to our marketing folks. They are always listening to customer input to understand market needs.
The P240 IS a simple USB device but the dot matrix display and key press events are controlled by the firmware, There is no way to work around the firmware.
Wei Chu
All:
I am going to put this item on hold, as our development is being done with a Voyager Pro UC, which I understand has been removed from service. We will be getting the Legends any day now and I will retest.
Thanks ... BTW I love the unit ....
Very sad... No real replacement for P210-M...
Anyway, thank you for your help!
Sergey.
Hi Jose,
Please let us know what result you get with the Voyager Legend UC.
Also, if you get this issue you could compare the result you get with the contents of the Plantronics Control Panel, part of full Spokes from www.plantronics.com/software, About Tab, as that will show further information about the device - it's name, product ID, firmware versions etc. - let us know what you see.
I see from your trace it initially shows as: Bluetooth Adapter, then when you replug shows as BT300 (the latter is the correct device name).
You could also test your device after rebooting with one of the Plantronics core sample apps that does not use SpokesWrapper, for example: SpokesSDKCOMNETSample
And see if that sample app also has difficulty in registering with the device's events after reboot.
The other thing you could try is use a tool called USBDeview.exe to fully uninstall drivers for these USB devices, so that when you replug Windows will install a fresh copy.
By the way, SpokesWrapper comes with a file called DeviceCapabilities.csv. Add that file to you Visual Studio project, and set as type: Content, action: Copy always. Then it will be deployed with your app and found at runtime - it allows the wrapper to know better when features each device supports.
Thanks,
Lewis.