Page 1 of 2 12 LastLast
Results 1 to 20 of 36
  1.    #1  
    What is TreoVibe?

    For folks coming from PalmOS Treos, you are probably used to how the Treo vibrates on an incoming call, with a 2 short vibrates and a long vibrate, 2 short vibrates, and a long vibrate, etc...

    Well, coming over to Windows Mobile, the vibrate function works differently, as it's just one continuous vibration if you have enabled the phone to vibrate on an incoming call. Some folks including myself don't like the way this works, so I've developed a little "app" with MortScript to help out!

    TreoVibe solves this and more, by allowing you to set how the phone vibrates on an incoming call. The default values are very close to the PalmOS Treos, and you can customize it how you like!

    FEATURES

    - Set Vibration Lengths: Set the length in milliseconds for the short vibrate and long vibrate

    - Set Vibration Style: Choose from 4 options, with the ability (with a little customization to the script)
    to create more if you want to!

    Vibration Styles
    -- Treo Classic: Short, Short, Long...Short, Short Long...
    -- Short, Short, Short: as the name implies, 3 short vibrations repeated while the phone
    is ringing
    -- Short, Long, Short: as the name implies, 1 short vibration then a long vibration, then a short
    vibration repeated while the phone is ringing
    -- Long, Long Long: as the name implies, 3 long vibrations, repeated while the phone is ringing

    - Test TreoVibe: After selecting your vibration lengths and style, test it out to see what it will feel like when
    the phone is ringing. It will repeat your settings 3 times to give you a "feel" for it

    - Enable TreoVibe: Enable TreoVibe so that it will work on incoming calls

    - Disable TreoVibe: Disable TreoVibe so the default vibration will take over.

    - Enable/Disable TreoVibe On Reset: Enables/Disables TreoVibe on Reset

    INSTALLATION INSTRUCTIONS

    Included in the ReadMe. Would highly suggest using the CAB file installer for easy installation/uninstallation

    You only need to download one of the two versions below. For CAB file installations (easiest and recommended), download the TreoVibe CAB.zip file below.

    Enjoy!

    # Rev 1.5 -- new revision numbering,
    # revised CAB installer, new code to stop vibration sooner when you connect a call (thanks to westronic)
    # Rev 4 -- Option to enable/disable on reset, + CAB installer with nice new icon!
    # Rev 3 -- no need for Carrier and Model choice thanks to hannip!
    Attached Images Attached Images
    Attached Files Attached Files
    Last edited by scottymomo; 04/13/2007 at 01:04 PM.
    Palm III > HS Visor > Treo 600 > Treo 650 > Treo 750 > Treo Pro > PrePlus GSM

    "95% of all software issues are due to USER ERROR."
  2. #2  
    Scotty, is that status value a bitmask? Have you compared the values to see if there is one bit that is always true between them when a call is incoming and false when not? It could be that all you have to do is bit compare.

    We can build a table:
    00000000100100010000100010100000 - 9504928 - Cingular/Vodafone 750 (cradle)
    00000010100100010001100010100000 - 43063456 - Cingular/Vodafone 750 (no cradle)
    00000000100100000000100010100000 - 9439392 - Cingular/Vodafone 750 (no call)

    00000000100000010001100010100000 - 8460448 - 700 series (cradle)
    00000000100000010000100010100000 - 8456352 - 700 series (no cradle)
    00000000100000000000000010100000 - 8388768 - 700 series (no call)

    00000000000000010000000000000000 - 65536 - the bit you want to check

    Looks to me like bit 17 (starting from the right) is the bit you want to check for all treo's.

    Use Mort's bitwise operators to do the check.

    ex.
    If ( status AND 65536 )
    Message( "The phone is ringing" )
    EndIf
    Last edited by hannip; 03/05/2007 at 12:53 AM.
  3. #3  
    I tested this and it works perfectly on my sprint 700wx and cingy 750.

    change the line that checks the carrier values simple to this.
    If ( x AND 65536 )

    Then you can get rid of all of the carrier selections and values.
  4.    #4  
    Cool, will check it out...(was in the middle of revising anyway and this will also help for my next one!)
    Palm III > HS Visor > Treo 600 > Treo 650 > Treo 750 > Treo Pro > PrePlus GSM

    "95% of all software issues are due to USER ERROR."
  5.    #5  
    Rev 3 attached, no carrier selection needed now thanks to hannip!
    Palm III > HS Visor > Treo 600 > Treo 650 > Treo 750 > Treo Pro > PrePlus GSM

    "95% of all software issues are due to USER ERROR."
  6. #6  
    Here is the agreed upon TreoVibe icon.
    Attached Files Attached Files
  7. #7  
    Your icon is now in our icon resource at resource id 116.
  8.    #8  
    Rev 4 with CAB Installer posted!

    Thanks to hannip for helping out with the CAB installer piece and featherfox for the icon!
    Palm III > HS Visor > Treo 600 > Treo 650 > Treo 750 > Treo Pro > PrePlus GSM

    "95% of all software issues are due to USER ERROR."
  9. #9  
    Superb job Scotty! And you followed all of our standards to the letter!

    I installed it and it's awesome. The icon is really cool too.
  10.    #10  
    Yep, thanks!

    Now, one feature enhancement I haven't been able to figure out yet...how to stop the vibration if the phone is muted by the user (pressing a key on the qwerty)...was looking through the registry trying to see what changes when that occurs and haven't come up with anything yet...I can't export the entire registry in time so that's not an option, was looking in a few key areas but couldn't come up with anything that actually changed.... if you want to help me look, that would be great!
    Palm III > HS Visor > Treo 600 > Treo 650 > Treo 750 > Treo Pro > PrePlus GSM

    "95% of all software issues are due to USER ERROR."
  11. xdalaw's Avatar
    Posts
    583 Posts
    Global Posts
    680 Global Posts
    #11  
    Great work scottymomo! Thanks.
  12. #12  
    I have another feature enhancement based upon my wife's input when she heard the vibrate going off when I answered the phone. I suggest the program stop the vibrations as soon as the phone call is no longer "incoming."

    If I've done this correctly, it will vibrate, then check to see that the phone call is still incoming, then vibrate again, then check again, then vibrate again - thus it will stop after the current vibration when a call comes in. The current code will vibrate all three times no matter what else happens as nothing can interrupt the vibration sequence once it begins, and this can be rather annoying to a caller.

    I've tested this and it seems to work correctly - that is, the vibrate no longer continues after answering the phone, even if answering on the first vibrate in the series.

    If someone could figure out how to detect a keypress, then you could do the same thing for that. A keypress check could be done to stop any more vibrations, checking the same time as the second and third check for incoming phone status.

    BTW: I do not know how to interrupt a vibration, so it's probably best not to set too long a "long" vibrate so as not to annoy your callers.

    This is probably not the most efficient code, but you could do something like:

    Code:
    #Incoming Call
    
    # Read Variables from INI File
    VibrateShort = IniRead(SystemPath("ScriptPath")\"TreoVibe.ini", "Settings", "VibrateShort")
    VibrateLong = IniRead(SystemPath("ScriptPath")\"TreoVibe.ini", "Settings", "VibrateLong")
    VibrateStyle = IniRead(SystemPath("ScriptPath")\"TreoVibe.ini", "Settings", "VibrateStyle")
    VibrateActive = IniRead(SystemPath("ScriptPath")\"TreoVibe.ini", "Settings", "VibrateActive")
    
    While(1)
    While(VibrateActive = 1)
    x = RegRead( "HKLM", "System\State\Phone", "Status" )
    
    If (x AND 65536)
    	If ((VibrateStyle=1) or (VibrateStyle=2) or (VibrateStyle=3))
    		Vibrate(VibrateShort)
    	Else
    		Vibrate(VibrateLong)
         	EndIf
    	Sleep(100)		
    	x = RegRead( "HKLM", "System\State\Phone", "Status" )
    	If (x AND 65536)
         		If ((VibrateStyle=1) or (VibrateStyle=2))
    			Vibrate(VibrateShort)
    		Else
    			Vibrate(VibrateLong)
         		EndIf
    		Sleep(100)
    		x = RegRead( "HKLM", "System\State\Phone", "Status" )
    		If (x AND 65536)
         			If ((VibrateStyle=2) or (VibrateStyle=3))
    				Vibrate(VibrateShort)
    			Else
    				Vibrate(VibrateLong)
         			EndIf
    		EndIf
    	EndIf
    EndIf
    
    Sleep (1000)
    EndWhile
    Sleep(1000)
    EndWhile
    Quote Originally Posted by scottymomo View Post
    Yep, thanks!

    Now, one feature enhancement I haven't been able to figure out yet...how to stop the vibration if the phone is muted by the user (pressing a key on the qwerty)...was looking through the registry trying to see what changes when that occurs and haven't come up with anything yet...I can't export the entire registry in time so that's not an option, was looking in a few key areas but couldn't come up with anything that actually changed.... if you want to help me look, that would be great!
    Last edited by westronic; 03/09/2007 at 08:42 PM.
  13. #13  
    Scotty it's pretty simple
    HKLM /System/State/Phone
    DWORD- Palm Active Call- is 0 value when call is inactive
    When call becomes active value change turn 1.

    RegRead current value
    When ever value 1 turns over you know the rest.

    Phil C
  14. #14  
    To what are you referring below? I, for one, am confused on the relevance. I think a phone call is "active" when you answer the phone, right? My suggested code change simply looks for when it is no longer "incoming" which might be when it is now "active" or might be when you've hung up. Either way the vibration should stop right away and not wait until all three vibrations are complete.

    Ideally, the vibration would stop immediately (in the middle of a vibration), but I do not know how to do that.

    Hmmm.... I have an idea, but I need to work on it a bit before I post it.


    Quote Originally Posted by slingbox View Post
    Scotty it's pretty simple
    HKLM /System/State/Phone
    DWORD- Palm Active Call- is 0 value when call is inactive
    When call becomes active value change turn 1.

    RegRead current value
    When ever value 1 turns over you know the rest.

    Phil C
    Last edited by westronic; 03/10/2007 at 12:15 PM.
  15. #15  
    You would have to write a Killscript code, tie it into Value 1 presents.Then script stop inturn vibe stops leading you to a happy phone call.Scotty more then likely is working on something now.
  16. #16  
    That might not work sling. Once MortScript starts the vibrate I doubt that killing the script will stop it. Remember the script itself is not the program. When you kill a script it will just keep future calls from executing. Anything that has already been processed by MortScript.exe will keep going.

    Westronics mods will certianly help by cutting out any additional calls to vibrate.
  17. #17  
    Hmm killscript on value 1 you could write a script direcly to the reg stoping vibe values .
    There you go that will work


    Phil C





    I love winCE
  18. #18  
    The problem sling is that the script does not continue until after the vibrate call has finished which is not until the vribration has stopped. I've tested this to verify. You'd need a 2nd script with a fast loop check monitoring the reg value that would turn off the current vibrate. This script would have to get kicked off prior to the vibrate. I have a few ideas on how to do that. I'll let you know how it turns out. Basically it all depends on how fast the reg value changes after you hit the answer button and how fast the script can detect it.
  19. #19  
    The approach I am testing involves breaking up the vibrate into many rapidly-played components Something like:

    Repeat (VibrateShort/100)
    Vibrate(100)
    EndRepeat

    And then within each "repeat" cycle one could check to stop the vibrate. This does not work very well, though. If it was the only process running it would be fast enough to be okay, I think, but I find that it does not keep the vibrate happening properly.

    It's a tricky thing to try and interrupt a command in mid-execution.

    What I have done so far is probably acceptable, but not the ideal solution.
  20. #20  
    Quote Originally Posted by hannip View Post
    The problem sling is that the script does not continue until after the vibrate call has finished which is not until the vribration has stopped. I've tested this to verify. You'd need a 2nd script with a fast loop check monitoring the reg value that would turn off the current vibrate. This script would have to get kicked off prior to the vibrate. I have a few ideas on how to do that. I'll let you know how it turns out. Basically it all depends on how fast the reg value changes after you hit the answer button and how fast the script can detect it.
    And, of course, the more often you check for the registry change the greater the performance hit on the device, right?

    All these scripts that run continuously have that issue.
Page 1 of 2 12 LastLast

Posting Permissions