Within the application source code and prior to calling the main IPC driver command functions, both the M3 and C28 source code must define and initialize at least one volatile global tIpcController instance for an M3-C28 IPC interrupt pair. Notice in this M3 code example that two global tIpcController instances were declared, and the first call to the IPCMInitialize function associates g_sIpcController1 with C28 IPC interrupt 1 and M3 IPC interrupt 1. This means that any messages sent using g_sIpcController1 in either the M3 or C28 application code will be received by C28 IPC ISR1 and M3 IPC ISR1, respectively. The second call associates g_sIpcController2 with C28 IPC interrupt 2 and M3 IPC interrupt 2.