Hi, Following the requests here, I've wrote this application. Basically the application blinks the device LED every few seconds. The idea is to have some notification that the device is still alive. The application blinks differently depending on the status of the device.
Main features:
Including sequences for normal, low battery, no-signal, new message (Voice/SMS/MMS/EMail), Missed calls, appointments, wireless status (bluetooth and wifi), GPS status and charging level.
Almost all sequences can be configured via the settings application.
Sequences may include blinking the green and orange LEDs (in HD2 - may be configured in other devices), the keypad LED, vibration and playing a wav file.
If the radio is turned off or there is no signal, another orange blink occurs (in addition to the regular one).
When the phone is charging the orange LED lights constantly, every few seconds a sequence of green blinks according to the batter level occurs (20-40% - 1 blink, 40-60% - 2 blinks, 60-80% - 3 blinks and 80-100% - 4 blinks). If the battery is fully charged - the green led lights constantly.
Blink interval and length can be set via the registry. Different blink interval for idle mode and when notification exists (new message/missed call).
Running the link once starts the application, on blink sequence occurs. Running the link again runs the settings application from which the service can be closed.
Known issues
Custom LED id's are not saved to the registry in ver. 1.5.
It seems that there are some issues running "Dusk taskbar" or "SDKCERTS" along with Blinker.
Sometimes when the device is locked, the application stops working (until the device wakes up). After a soft-reset the application returns to behave as expected. I really don't know what instigates the problem or how to solve it... If anyone has a clue please leave me a message. Not solved, but might be better in ver. 1.1. Update(16/4/2011): setting [HKCU\Software\Blinker\AllowUnattendedMode] to 0. Solved this issue for some. Also enabling "Don't suspend power" in S2U2 (under the advanced category) seems to help. Update(14/5/2011): In ver. 1.4 a possibility to periodically wake the device, it seems that this solution might work around the issue. gpobernardo may have found a solution to the problem.
Non at the moment (I'm sure some will pop soon... )
System Requirements
.Net Compact Framework 3.5
Tested successfully on: HTC HD2 (Leo), HTC TD2 (Topaz), HTC Touch HD (Blackstone), HTC Touch2 (Mega).
But might work on other devices (please let me know if it works on other devices as well...)
Rewrote the service project in c++ (Now the service requires significantly less memory when running).
Added ability to vibrate (see second post for further information).
Added ability to play a wav file in the sequence (see second post for further information).
Added sequences for "Appointment" and "New MMS".
Blinker now uses only the WM notification method.
Removed the "Use WM Notification" as it is no longer required.
Removed the "SMS Store" setting as it is no longer required.
Fixed issue where in lower resolution devices a scroll bar did not appear in the settings application.
Added "Advanced" tab in the settings application.
Added a "Wakeup notification" - this option will force the device to wake every couple of seconds. This should solve the "unattended issue" - but might affect the battery drain. This feature can be turned on under the "advanced" tab in the settings application.
Hibernates when no blinking is required.
Changed "AllowUnattendedMode" to "ForceUnattendedMode" and added a checkbox to control this value under the "advanced" tab.
Blinker can now use the notification system instead of directly check the Stores (thanks peterpan911 for the tip). This can be configured in the setting, under "Use WM Notifications".
Blinker can be configured to load on startup from the settings window.
Blink Sequences
The blink sequences for the different situations can be customized. The blink sequences can be edited in the settings application under the "sequences" tab or by directly editing the correspnding registry key. A blink sequence is composed of blocks separated by comas (white space is not allowed). The following commands are allowed:
Quote:
G<#> Blink the green led for a duration of # msec. O<#> Blink the orange led for a duration of # msec. P<#> Blink the pad light for a duration of # msec. C<x><#> Blink a custom LED (x=a,b or c) for a duration of # msec. Pl<WAV file> Play the specified WAV file. V<#> Vibrate for a duration of # msec. S<#> Sleep for a duration of # msec. L<#> Loop over the following sequence (until the "E" block or to the end of the sequence) # times. E Mark the end of the sequence to loop over.
This sequence will do the following:
Blink the green LED for 100msec, blink orange one for 100msec, then it will repeatedly (10 times) blink the green LED (25msec) and the orange LED (25msec). then it will pause for 100msec and finally turn the orange LED for 100msec. At the end it will play the file "\Storage Card\My Documents\SomeFile.wav".
Configuration
All the configuration can be performed via the settings application. All settings are saved to the registry, under "HKCU\Software\Blinker". The following keys are available:
Quote:
ForceUnattendedMode (DWORD), (0 = Don't change anything, any non-zero value = force unattended mode), (default = 1)
Allows unattended mode (another try to solve the unattended issue).
GreenLed (DWORD), (default = 1)
The LED id to use for the green LED.
OrangeLed (DWORD), (default = 2)
The LED id to use for the orange LED.
VibrationLed (DWORD) (default = 1)
Sets the ID of the vibration LED.
CustomLed# (DWORD) (default = 0)
Allows to define 3 more LED IDs accessed as Ca, Cb and Cc from the sequences.
WakeupNotification (DWORD), (0 = off , any non-zero value = on), (default = 1)
Periodically wakeup the device (another try to solve the unattended issue).
ACNotifications (DWORD), (0 = disabled, any non-zero value = enabled), (default = 1)
Controls weather Blinker shows notifications when the device is plugged to power source.
BatteryThreshold (DWORD), (default = 50)
Sets the threshold (in percent) for the "low battery" status. When the battery level falls below this value Blinker will use the "LowBatterySequence" (see below). When the battery level is above the threshold the "NormalSequence" (see below) is used.
BlinkByNotification (DWORD), (1 = enabled, any other value = disabled) (default = 0)
Controls weather Blinker should blink according WM notifications, or should check the state of the different stores. When enabled Blinker checks the WM notifications state.
BlinkDelay (DWORD), (default = 10000)
The period between blinks (in msec).
NotificationBlinkDelay (DWORD), (default = 3000)
The period between blinks (in msec) when there's a new notification (unread message/missed call).
AppointmentSequence (STRING), (default = "P500,L4,S100,P100,E,S200")
The blink sequence (see below) to use when there is an active appointment notification.
BluetoothSequence (STRING), (default = "S100,G25")
The blink sequence (see below) to use when the bluetooth is turned on.
FullPowerSequence (STRING), (default = "O25")
The blink sequence (see below) to use when on AC power and battery is full.
GPSSequence (STRING), (default = "S100,O25,G25,O25")
The blink sequence (see below) to use when GPS receiver is turned on.
LowBatterySequence (STRING), (default = "O25")
The blink sequence (see below) to use when the battery is below the BatteryThreshold (see above).
MissedCallsSequence (STRING), (default = "P500,S200")
The blink sequence (see below) to use when after a missed call.
NewMailSequence (STRING), (default = "P500,L1,S100,P100,E,S200")
The blink sequence (see below) to use when there is an unread email message.
NewMMSSequence (STRING), (default = "P500,L2,S100,P100,E,S200")
The blink sequence (see below) to use when there is an unread MMS message.
NewSMSSequence (STRING), (default = "P500,L2,S100,P100,E,S200")
The blink sequence (see below) to use when there is an unread SMS message.
NewVoiceMessageSequence (STRING), (default = "P500,L3,S100,P100,E,S200")
The blink sequence (see below) to use when there is a new voice mail message.
NormalSequence (STRING), (default = "G25")
The blink sequence (see below) to use when the battery is above the BatteryThreshold (see above).
NoSignalSequence (STRING), (default = "S100,O25")
The blink sequence (see below) to use when there is no signal. This sequence is played after the NormalSequence/LowBatterySequence.
OffSequence (STRING), (default = "L5,O25,G25,S25,E,O500")
The blink sequence (see below) to use when the application shuts down.
OnSequence (STRING), (default = "L5,O25,G25,S25,E,G500")
The blink sequence (see below) to use when the application starts.
WifiSequence (STRING), (default = "S100,O25")
The blink sequence (see below) to use when the WIFI is turned on.
Fav. ROMs: Dutty V12 COM3,kwbr FINAL COM3, cmE 1.6
Radio: 2.15.50
---- Austrian XDA-Developers Social Group Helft's uns doch bitte gegenseitig ...und vergesst nicht die Gruppen-Subscription unter "Thread Tools"
If the original author doesn't mind, I have made a small addition for those of us with Mortscript!
PLEASE NOTE: The first version I posted of this script had a small error, which wrote the registry entries as a STRING rather than a DWORD. This caused "Blinker" not to launch - due to an invalid data entry. I APOLOGISE for this - the joys of writing scripts after a long day at work. This is NOW FIXED, and tested on two different HD2s, and working fine.
blinker.ini -- a simple settings file that explains where (and how) to adjust the various settings for...
Notifications when connected to AC
LED colour change when battery level falls below a certain threshold %age
Time delay between "blinks"
Length of time of each "blink"
It also allows you to set the various "blink patterns" for...
Low Battery Blink Pattern
Normal Blink Pattern
No Service Pattern
Off Pattern (When "blink" is shut down)
On Pattern (When "blink" is turned on)
blinker_v1.mscr -- a script file that reads data from the .ini file, displays the settings, and writes them to the registry. It then restarts Blinker with your new settings activated!
At present I have assumed that you have installed the app into Device Memory, so you'll have to copy the two files into DEVICE/Program Files/Blinker
Have a play and see what you think!
A very big thank you to Zevele - and I hope you don't mind me making this little MOD for it already!!
from SPVM500 to TOUCH to TOUCH HD to HD2....
_____________________________________________
HTC Touch HD2
ORANGE UK
32GB microSD
OS - WM6.5 - CE OS 5.2.21869 (Build 21869.5.0.82) ROM Vers. - 1.66.405.2 (76641) WWE Radio Vers. - 2.10.50.28_2 HSPL - 1.42.000
If I turned flight-Mudus on / telephone off, another orange blink occurs (in addition to the regular one) as described
But, if there is suddenly no signal, it don't will be shown in anyway
(I simulated it with the death-grip->iPhone4
->....or there is no signal, another orange blink occurs
I installed this cab and when I tried to launch, it crashed:
Blinker.exe
KeyNotFoundException
at
System.ThrowHelper.ThrowKeyNotFoundException()
at
System.Collections.Generic.Dictionary'1.
get_item(SequenceTypeKey)
at Blinker.CBliner..ctor()
ar Blinker.Program.Main(String args)
...and I hope you don't mind me making this little MOD for it already!!
Not at all, I'm glad that people show interest. I might add a configuration utility later, similar to the one you made.
Thanks for the mod.
Quote:
Originally Posted by kajos
...But, if there is suddenly no signal, it don't will be shown in anyway
(I simulated it with the death-grip->iPhone4
I didn't know the HD2 had a "death grip", how do you do it? I could use it to debug this feature.
Quote:
Originally Posted by hgalanos
I installed this cab and when I tried to launch, it crashed...
Is this the full log? If not, can you please post the full one. At the moment I have no idea why this error occurs, I'll need more clues to solve it...
PLEASE NOTE: The last version I posted of this script had a small error, which wrote the registry entries as a STRING rather than a DWORD. This caused "Blinker" not to launch - due to an invalid data entry. I APOLOGISE for this - the joys of writing scripts after a long day at work. This is NOW FIXED, and tested on two different HD2s, and working fine.
Mortscript fixed now! Please RE-DOWNLOAD from my original post.
Sorry for anyone who did used and suffered with problems!
from SPVM500 to TOUCH to TOUCH HD to HD2....
_____________________________________________
HTC Touch HD2
ORANGE UK
32GB microSD
OS - WM6.5 - CE OS 5.2.21869 (Build 21869.5.0.82) ROM Vers. - 1.66.405.2 (76641) WWE Radio Vers. - 2.10.50.28_2 HSPL - 1.42.000
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?