Up to: Mika Raento's Symbian Programming pages
Although the main intent of these pages is to give you hints as to how you can make things work, there are things that can't be made to work (but would have been interesting). If you figure out how to do any of these things, drop me a line, as we've expended some time in trying to make them work.
A lot of people seem to be interested in knowing the phone number of the phone their code is running on. This is not possible in general, since a GSM mobile equipment does not need to know its MSISDN. The only thing the mobile equipment and the GSM routing parts of the network talk about is the IMSI (International Mobile Subscriber Identity). When calling a GSM mobile, the network translates the phone number to the IMSI at some point.
That said, some SIMs do contain the phone number. This might be retrievable, but since you can't rely on it being there it is of limited use.
For WAP developers, you might be able to make a deal with the operator that they add a MSISDN field at the WAP gateway.
The recent capability-removing hacks show that it is possible to load device drivers on 3rd edition phones. I don't know how.
Symbian is a protected mode operating system. Your application code is running in usermode. On some Symbian phones (SonyEricsson ones) you can load device drivers, so by writing something that looks like a device driver you can run your own kernel-mode code. Nokia phones refure to load device drivers from anywhere else than ROM so you can't do that (short of reflashing your own code, in which case you have ample opportunity to write your own kernelmode code anyway).
Breaking News (2)! zg has reverse-engineered some of the ISI interfaces and protocol and seems to have a partially working netmon for Series 60 v1 (3650, 7650, n-gage). CVS. This could be a starting point. I think it links to the LIBs available only for v1, so it won't directly work for v2.
There is a net monitor for symbian phones and it works on regular off-the-shelf models: http://www.symbian-freak.com/. Now we just have to reverse-engineer either the client-server communication or the actual phone APIs...
Many earlier, non-Symbian, Nokia phones had a hidden network monitor mode that allowed you to see all the signal information the phone was using for base station selection. Such information does not seem to be available under Symbian.
There is a field test app floating around on the net that works on early versions of the 7650. It crashes on later versions and my personal guess is that they actually removed some components from the ROM that were needed for the field-test app. Since such components would probably have to run in kernelmode to interface with the actual hw, you can't write them on your own.
If you just want to play with, google for something like 'ftd nokia 7650 download', get a 7650 with sw version 3.16 and install the software. It seems to be made of an applicationa and a server, so you might even be able to reverse engineer the client-server protocol between them and write your own app that uses the server, but it will still only work on sw 3.16 (and you can't really redistribute it since you don't have rights to the field-test software).
The N97 SDK has an API for idle screen plugins.
If you are writing any kind of network-oriented app, you might want to add new status notifications to the phone idle screen (like the message, bluetooth, IR etc. icons). This is not strictly possible because these are drawn by the Phone app and it has a hardcoded list of possible notification icons.
What you can do, though, is to use direct screen access to draw on top of the phone app. This is a bit brittle, but better than nothing.
Mika Raento, mikie(at)iki.fi