diff -r 89d6a7a84779 -r 25a17d01db0c Symbian3/PDK/Source/GUID-B9B35999-0937-51C5-BB77-91A6C039CE2F.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-B9B35999-0937-51C5-BB77-91A6C039CE2F.dita Fri Jan 22 18:26:19 2010 +0000 @@ -0,0 +1,53 @@ + + + + + +ISR +Table and Interrupt IDsThe ISR Table and Interrupt IDs must be defined by the ASSP/Variant. +
ISR Table

Decide on the number of interrupts that +exist in the system. If the port is split into a core ASSP layer, and a device +Variant layer, the core layer should include only those interrupts that exist +on the ASSP.

In the core ASSP implementation, declare a static ISR +table, of type SInterruptHandler with the same number +of entries that you have just worked out.

In the template port, for +example, this table is static member of the TemplateInterrupt class:

const TInt KNumTemplateInts=EAsspIntIdZ+1; + +class TemplateInterrupt : public Interrupt + { + ... + public: + static SInterruptHandler Handlers[KNumTemplateInts]; + }; +

SInterruptHandler is defined +in ...\e32\include\kernel\arm\assp.h, and TemplateInterrrupt is +defined in ...\template_assp\template_assp_priv.h.

+
Interrupt IDs

Declare an enum in an exported header +file that provides labels for each of the possible Interrupt ID s in the table.

For example, in the template +port, the interrupt IDs are defined by the TTemplateAsspInterruptId enum, +defined in ...\template_assp\template_assp.h, and is +part of the ASSP layer:

// Enumerate here all ASSP interrupt souces. It could be a good idea to enumerate them in a way that facilitates +// operating on the corresponding interrupt controller registers (e.g using their value as a shift count) +// +// EXAMPLE ONLY +enum TTemplateAsspInterruptId + { + // ASSP or first-level Interrupt IDs + EAsspIntIdA=0, + EAsspIntIdB=1, + EAsspIntIdC=2, + EAsspIntIdD=3, + EAsspIntIdE=4, + // ... + EAsspIntIdUsb=11, + EAsspIntIdDma=12, + // ... + EAsspIntIdZ=25 + };
+
\ No newline at end of file