Sunday, January 6, 2008

Enabling Notifications in the myFaves Interface

This article is outdated. Please see myFaves Revisited for updated instructions.

After enabling myFaves on my Shadow, I found that the notifications were not working, like missed calls, messages, and reminders. Besides, myFaves adds your five favorite numbers to the no-log list, which essentially stops you from receiving notifications from these numbers in the usual notifications tab. This is because (as I think), the my5 service starts doing that for you, intercepting calls and messages and giving the proper notifications on the myFaves interface. Without a myFaves account, the my5 service does not work, and so, although I managed to enable the interface, much of its benefits are not present.

Fortunately, I managed to gather some understanding of the registry entries that are changed by the my5 service in order to facilitate the notifications. I ended up writing my own my5Notifier, which while running in the background, makes the appropriate changes to the registry and triggers the myFaves interface to read from.

This tutorial shall require deleting your call history as of now and installing the my5Notifier I shall provide. So, if you are not keen on doing that, then perhaps, I cannot yet tell you how to enable the notifications. Also, the notifier can currently handle only missed calls and reminders. As my development proceeds, I shall release updates to the my5Notifier and am hoping that at some point in time the application will grow up enough to enable contacts modifications without entering the registry.

So, here we go!!

1. Enable the myFaves interface as shown in the previous post and make sure it is working as a dialer. Then backup your registry.

2. Open up CeRegistryEditor and make the following changes to the entries you just made in Step 1.

In HKLM/Software/HTC/My5/My5App/Contact_0, change the format of the phone number in the PhoneDash entry to (XXX) XXX-XXXX.

In HKLM/Software/HTC/My5/My5App/Contact_0, change the value of the State string value entry to 2.

In HKLM/Software/Microsoft/CHome/CMyFaves/0, change the format of the phone number in the Phone entry to (XXX) XXX-XXXX.

Do these two changes for the other contacts as well, 1 through 4.

3. In HKLM/Security/Phone/NoLog, make sure that the List entry is empty. If there is something in there, remove them and enter a blank space.

4. On your phone, go to Start > Call History. From the Menu, select "Delete List" to clear up the call history. Then reboot the phone.

5. In HKLM/Security/Phone/NoLog, check the List entry. Your myFaves numbers should have come up there.

6. In HKLM/Software/Microsoft/CHome/CMyFaves/0, make sure the following entries exist besides Image, Name and Phone. The entries below are DWORD (Type REG_DWORD). If they do not exist, create them.

AnniversaryDaysCount = 0
BirthdayDaysCount = 0
MessageCount = 0
MissedCallCount = 0
Notifications = 0

Now for some custom data about this contact. In HKLM/Software/HTC/My5/My5App/Contact_0/Data, change the following:

AnniversaryDate = the anniversary date. I shall show you how to input this date in a while.
AnniversaryDaysCount = number of days prior to the anniversary date you want notifications to begin.
BirthDayDate = the birthday date.
BirthdayDaysCount = number of days prior to the birthday date you want notifications to begin.

The AnniversaryDaysCount and BirthdayDaysCount are REG_SZ entries. Create them if they do not exist. The AnniversaryDate and BirthDayDate are REG_BINARY entries. Create them if they do no exist.

Okay, here's how the date is to be entered. Lets do it for 2008 January Sunday 6, 14:20:23:00

Year 2008: In hex it is 07D8. Swap the bytes (first and second halves), you get D807.
Month January=1: Hex=0001. After swap = 0100.
Day Sunday=0: Hex=0000. After swap = 0000.
Date 6: Hex=0006. After swap = 0600.
Hour 14: Hex=000E. After swap = 0E00.
Min 20: Hex=0014. After swap = 1400.
Sec 23: Hex=0017. After swap = 1700.
Millisec 00: Hex=0000. After swap = 0000.

So, the entry you would make is D8070100000006000E00140017000000. If you do not know how to convert decimal to hex, use the calculator on your PC. Also, please enter a valid date. I am not over-burdening the notifier to check for date validity.

7. Repeat Step 6 for the other contacts.

8. Now download this application - my5Notifier. Copy the application to a folder of your choice. Create a shortcut to it, and move the shortcut to \Windows\Start up. This would start the notifier as soon as you reboot.

9. Reboot the phone. Upon start, the my5Notifier will begin execution. Press the Home key to go back to your usual home screen. Sorry for this extra key press!! I shall soon create a service dll for it.

That should do it!! Sorry for the registry tweaks you have to do to enter simple information. The my5Notifier is currently being improved and I intend to add the following improvements to it.

-SMS notifications
-Change contact information in the application
-Convert the application into a service dll

Known bug: If the phone keypad locks while at the myFaves Interface, then the next time you unlock the keypad, only the last shown notification is displayed (meaning it does not change over to a different type, as in the image above). A workaround to this is to press the start key, and then the home key. I do not know yet if the problem is from the myFaves interface or the notifier.

Besides, I did my part of the testing with the notifier, but there will always be some bug I might have missed. So please do let me know if you find one. I will release the source code after development.

Please read "A Quick Follow-Up".


deyanimay9 said...

First of all when i reboot my phone the registry entries in microsoft/chome/cmyfaves gets messed up and missed calls don show up in my faves or notifications.

Rinku said...

Thanks for reporting the bug! I am looking into it.

abe said...

thanks but it's kind complicated could you create a cab for it please?

Rinku said...

Yes, I am redesigning this whole myFaves thing. I shall soon release a cab installer!!

abe said...

You rock!!! rinku