void arm9_wifiInit() { // send fifo message to initialize the arm7 wifi REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; // enable & clear FIFO u32 Wifi_pass= Wifi_Init(WIFIINIT_OPTION_USELED); REG_IPC_FIFO_TX=0x12345678; REG_IPC_FIFO_TX=Wifi_pass; *((volatile u16 *)0x0400010E) = 0; // disable timer3 irqSet(IRQ_TIMER3, arm9_wifiTimer); // setup timer IRQ irqEnable(IRQ_TIMER3); irqSet(IRQ_FIFO_NOT_EMPTY, arm9_fifo); // setup fifo IRQ irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; // enable FIFO IRQ Wifi_SetSyncHandler(arm9_synctoarm7); // tell wifi lib to use our handler to notify arm7 // set timer3 *((volatile u16 *)0x0400010C) = -(131062*WifiTimerInterval_ms/1000); // 131062 * 256 cycles = ~1000ms; *((volatile u16 *)0x0400010E) = 0x00C2; // enable, irq, 1/256 clock while(Wifi_CheckInit()==0) { // wait for arm7 to be initted successfully WaitVbl(); // wait for vblank } // wifi init complete - wifi lib can now be used! }
void wifi_init() { REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; /* * Our half of the ARM7 Wifi handshaking: * Send it a pointer to the shared memory area for Wifi. */ REG_IPC_FIFO_TX = IPC_MSG_WIFI_INIT; REG_IPC_FIFO_TX = Wifi_Init(WIFIINIT_OPTION_USELED); /* Disable TIMER3 before setting up its IRQ handler */ TIMER3_CR = 0; irqInit(); irqSet(IRQ_VBLANK, vblank_irq_handler); irqEnable(IRQ_VBLANK); irqSet(IRQ_TIMER3, wifi_timer_handler); irqEnable(IRQ_TIMER3); irqSet(IRQ_FIFO_NOT_EMPTY, fifo_irq_handler); irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(wifi_sync_handler); /* Program TIMER3 for 50ms intervals */ TIMER3_DATA = TIMER_FREQ_256(1000 / WIFI_TIMER_MS); TIMER3_CR = TIMER_DIV_256 | TIMER_IRQ_REQ; /* Poll for the ARM7 init to finish */ while (!Wifi_CheckInit()) { swiWaitForVBlank(); } }
int main(void) { REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; IPC->mailData=0; IPC->mailSize=0; PA_SoundBusyInit = 0; PA_Init(); irqInit(); irqSet(IRQ_VBLANK, PA_VBL); irqEnable(IRQ_VBLANK); irqSet(IRQ_TIMER0, timer0); irqEnable(IRQ_TIMER0); SetYtrigger(80); vcount = 80; irqSet(IRQ_VCOUNT, VcountHandler); irqEnable(IRQ_VBLANK | IRQ_VCOUNT); // irqSet(IRQ_TIMER3, ProcessMicrophoneTimerIRQ); // irqEnable(IRQ_TIMER3); //swiWaitForVBlank(); //swiWaitForVBlank(); //supprime pour test irqSet(IRQ_WIFI, Wifi_Interrupt); // set up wifi interrupt irqEnable(IRQ_WIFI); //swiWaitForVBlank(); //swiWaitForVBlank(); //supprime pour test SndInit7 (); u32 fifo_temp; while(1) { // wait for magic number while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; if(fifo_temp==0x12345678) break; } while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; // give next value to wifi_init Wifi_Init(fifo_temp); irqSet(IRQ_FIFO_NOT_EMPTY,arm7_fifo); // set up fifo irq irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(arm7_synctoarm9); // allow wifi lib to notify arm9 // Keep the ARM7 out of main RAM while (1) { swiWaitForVBlank(); } return 0; }
int main() { REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; IPC->mailData=0; IPC->mailSize=0; PA_SoundBusyInit = 0; PA_Init(); irqInit(); irqSet(IRQ_VBLANK, PA_VBL); irqEnable(IRQ_VBLANK); irqSet(IRQ_TIMER2, timer2); irqEnable(IRQ_TIMER2); SetYtrigger(80); vcount = 80; irqSet(IRQ_VCOUNT, VcountHandler); irqEnable(IRQ_VBLANK | IRQ_VCOUNT); //supprime pour test irqSet(IRQ_WIFI, Wifi_Interrupt); // set up wifi interrupt irqEnable(IRQ_WIFI); //supprime pour test SndInit7 (); // Initialize AS_Lib AS_Init(); u32 fifo_temp; while(1) { // wait for magic number while (REG_IPC_FIFO_CR & IPC_FIFO_RECV_EMPTY) { AS_MP3Engine(); swiWaitForVBlank(); } fifo_temp=REG_IPC_FIFO_RX; if(fifo_temp==0x12345678) break; } while (REG_IPC_FIFO_CR & IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp = REG_IPC_FIFO_RX; // give next value to wifi_init Wifi_Init(fifo_temp); irqSet(IRQ_FIFO_NOT_EMPTY, arm7_fifo); // set up fifo irq irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(arm7_synctoarm9); // allow wifi lib to notify arm9 while (1) { AS_MP3Engine(); swiWaitForVBlank(); } return 0; }
//--------------------------------------------------------------------------------- int main(int argc, char ** argv) { //--------------------------------------------------------------------------------- // read User Settings from firmware readUserSettings(); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; // enable & prepare fifo asap rtcReset(); //enable sound powerON(POWER_SOUND); writePowerManagement(PM_CONTROL_REG, ( readPowerManagement(PM_CONTROL_REG) & ~PM_SOUND_MUTE ) | PM_SOUND_AMP ); SOUND_CR = SOUND_ENABLE | SOUND_VOL(0x7F); irqInit(); // Start the RTC tracking IRQ initClockIRQ(); SetYtrigger(80); irqSet(IRQ_VCOUNT, VcountHandler); irqSet(IRQ_VBLANK, VblankHandler); irqSet(IRQ_WIFI, Wifi_Interrupt); // set up wifi interrupt irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_WIFI); { // sync with arm9 and init wifi u32 fifo_temp; while(1) { // wait for magic number while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; if(fifo_temp==0x12345678) break; } while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; // give next value to wifi_init Wifi_Init(fifo_temp); irqSet(IRQ_FIFO_NOT_EMPTY,arm7_fifo); // set up fifo irq irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(arm7_synctoarm9); // allow wifi lib to notify arm9 } // arm7 wifi init complete // Keep the ARM7 mostly idle while (1) swiWaitForVBlank(); }
int main(int argc, char ** argv) { u32 fifo_temp; REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; // Reset the clock if needed rtcReset(); //enable sound powerON(POWER_SOUND); SOUND_CR = SOUND_ENABLE | SOUND_VOL(0x7F); IPC->soundData = 0; irqInit(); irqSet(IRQ_VBLANK, VblankHandler); SetYtrigger(80); vcount = 80; irqSet(IRQ_VCOUNT, VcountHandler); irqEnable(IRQ_VBLANK | IRQ_VCOUNT); irqSet(IRQ_TIMER0, tob_ProcessMicrophoneTimerIRQ); tob_MIC_On(); irqSet(IRQ_WIFI, Wifi_Interrupt); irqEnable(IRQ_WIFI); // trade some mail, to get a pointer from arm9 while(1) { while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; if(fifo_temp==0x12345678) break; } while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; Wifi_Init(fifo_temp); irqSet(IRQ_FIFO_NOT_EMPTY,arm7_fifo); irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(arm7_synctoarm9); // Keep the ARM7 idle while(1) swiWaitForVBlank(); }
void wifiInit() { REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; u32 Wifi_pass = Wifi_Init(WIFIINIT_OPTION_USELED); REG_IPC_FIFO_TX = 0x12345678; REG_IPC_FIFO_TX = Wifi_pass; *((volatile u16 *)0x0400010E) = 0; irqSet(IRQ_TIMER3, T50); irqEnable(IRQ_TIMER3); irqSet(IRQ_FIFO_NOT_EMPTY, ARM9FIFO); irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(ARMSYNC); *((volatile u16 *)0x0400010C) = -6553; *((volatile u16 *)0x0400010E) = 0x00C2; while(!Wifi_CheckInit()) swiWaitForVBlank(); }
void wifi_go(void) { irqSet(IRQ_WIFI, Wifi_Interrupt); // set up wifi interrupt irqEnable(IRQ_WIFI); { // sync with arm9 and init wifi u32 fifo_temp; while(1) { // wait for magic number while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; if(fifo_temp==0x12345678) break; } while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; // give next value to wifi_init Wifi_Init(fifo_temp); irqSet(IRQ_FIFO_NOT_EMPTY,arm7_fifo); // set up fifo irq irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(arm7_synctoarm9); // allow wifi lib to notify arm9 } // arm7 wifi init complete }