Ejemplo n.º 1
0
Archivo: wifi.c Proyecto: elzk/nds-ide
static
void
wifi_cleanup(void)
{
    if (listen_socket >= 0)
        closesocket(listen_socket);
#ifdef _WIN32
    // if any, do something after close socket
    // WSA Cleanup
#else
    Wifi_DisconnectAP();
    Wifi_DisableWifi();
#endif
}
Ejemplo n.º 2
0
void Menu::ConnectWifi()
{
    consoleClear();

    CONFIG config;
    if(!Config::Load(&config)) {
        printf("No configuration set\n\n");
        Menu::Continue();
        return;
    }

    printf("Connecting wifi\n");
    Wifi_AutoConnect();

    while(1) {
        int n = Wifi_AssocStatus();
        int ln = -1;

        switch(n) {
        case ASSOCSTATUS_AUTHENTICATING:
            if(ln != ASSOCSTATUS_AUTHENTICATING)
                printf("Authenticating\n");
            break;
        case ASSOCSTATUS_ASSOCIATING:
            if(ln != ASSOCSTATUS_ASSOCIATING)
                printf("Associating\n");
            break;
        case ASSOCSTATUS_ACQUIRINGDHCP:
            if(ln != ASSOCSTATUS_ACQUIRINGDHCP)
                printf("Acquiring IP address from DHCP\n");
            break;
        case ASSOCSTATUS_ASSOCIATED:
            in_addr a;
            a.s_addr = Wifi_GetIP();
            printf("Connected: %s\n", inet_ntoa(a));
            Menu::ConnectNX(config);
            Wifi_DisconnectAP();
            return;
        case ASSOCSTATUS_CANNOTCONNECT:
            printf("Connection failed\n\n");
            Menu::Continue();
            return;
        }

        ln = n;
    }
}
Ejemplo n.º 3
0
void postGame()
{
	PA_PauseMod(1);
	bool submitted = false;
	while(!Pad.Newpress.Start && !Stylus.DblClick && !submitted)
	{
		PA_ClearTextBg(SCREEN_TOP);
		PA_OutputSimpleText(SCREEN_TOP,0,0,"GAME OVER");
		PA_OutputText(SCREEN_TOP,0,1,"YOUR SCORE: %d", game.score);
		
		if(game.score<highscore.points)
		{
			PA_OutputText(SCREEN_TOP,0,2,"%s's High Score: %d", highscore.name, highscore.points);
			PA_OutputSimpleText(SCREEN_TOP,0,4,"Press Start to Play Again");
		}else{
			PA_OutputText(SCREEN_TOP,0,2,"NEW HIGH SCORE!!!");
			highscore.points=game.score;
			highscore.name=(char*)PA_UserInfo.Name;
			PA_OutputSimpleText(SCREEN_TOP,0,3,"Press Y To submit score online.");
			PA_OutputSimpleText(SCREEN_TOP,0,4,"Press Start to Play Again");
			if(Pad.Newpress.Y)
			{
				PA_OutputSimpleText(SCREEN_TOP,0,5,"Ranking globally...");
				
				// Init Network
				PA_InitWifi();
			    if(PA_ConnectWifiWFC())
			    {
			    	submitScore();
					getHighScores();
					submitted=true;
					Wifi_DisconnectAP();
			    }else{
			    	PA_OutputSimpleText(SCREEN_TOP,0,6,"Wifi Connection Failed.");
			    }
				Wifi_DisableWifi();
			}
		}
		// Sleep
		PA_CheckLid();
		PA_WaitForVBL();
	}
}
Ejemplo n.º 4
0
// note: int execv(const char *path, char *const argv[]);
//       - where the array of strings is terminated with a null string
//       - i.e. this is a bit different for now
int execz(const char* filename, int argc, const char** argv) 
{
  struct stat st;
  char filePath[MAXPATHLEN * 2];
  int pathLen;
  const char* args[1];
  int i;

  if (stat (filename, &st) < 0) {
    return 1;
  }

  if (argc <= 0 || !argv) {
    // Construct a command line if we weren't supplied with one
    if (!getcwd (filePath, MAXPATHLEN)) {
      return 2;
    }
    pathLen = strlen (filePath);
    strcpy (filePath + pathLen, filename);
    args[0] = filePath;
    argv = args;
  }

  // shutdown sound subsystem
  // note: EffectCancelAll seems to fail to stop
  //       the current sample
  mmEffectCancelAll();
  mmStop();
  while (mmActive()) {
    swiWaitForVBlank();
  }

  // shutdown network subsystem
  Wifi_DisconnectAP();
  Wifi_DisableWifi();

  // wait a bit: race condition??
  for (i = 0 ; i < 42 ; i++) {
      swiWaitForVBlank();
  }
	
  return runNds (load_bin, load_bin_size, st.st_ino, false, true, argc, argv);
}
Ejemplo n.º 5
0
int main(int argc, char *argv[])
{
    int rc;
    
    defaultExceptionHandler();
    consoleDemoInit();
    irqInit();
    irqEnable(IRQ_VBLANK);
    
    if(fatInitDefault() != 1)
    {
        return -1;
    }

    arm9_wifiConnect();
    
    rc = test_main();
    
    Wifi_DisconnectAP();
    Wifi_DisableWifi();
    
    return rc;
}
int Wifi_ConnectAP(Wifi_AccessPoint * apdata, int wepmode, int wepkeyid, u8 * wepkey) {
	int i;
	Wifi_AccessPoint ap;
	wifi_connect_state=-1;
	if(!apdata) return -1;
	if(((signed char)apdata->ssid_len)<0 || apdata->ssid_len>32) return -1;

	Wifi_DisconnectAP();

	wifi_connect_state=0;
	WifiData->wepmode9=wepmode; // copy data
	WifiData->wepkeyid9=wepkeyid;
	for(i=0;i<20;i++) {
		WifiData->wepkey9[i]=wepkey[i];
	}


	i=Wifi_FindMatchingAP(1,apdata,&ap);
	if(i==0) {
		Wifi_CopyMacAddr(WifiData->bssid9, ap.bssid);
		Wifi_CopyMacAddr(WifiData->apmac9, ap.bssid);
		WifiData->ssid9[0]=ap.ssid_len;
		for(i=0;i<32;i++) {
			WifiData->ssid9[i+1]=ap.ssid[i];
		}
		WifiData->apchannel9=ap.channel;
		for(i=0;i<16;i++) WifiData->baserates9[i]=ap.base_rates[i];
		WifiData->reqMode=WIFIMODE_NORMAL;
		WifiData->reqReqFlags |= WFLAG_REQ_APCONNECT | WFLAG_REQ_APCOPYVALUES;
		wifi_connect_state=1;
	} else {
		WifiData->reqMode=WIFIMODE_SCAN;
		wifi_connect_point = *apdata;
	}
	return 0;
}
int Wifi_AssocStatus(void) {
	switch(wifi_connect_state) {
		case -1: // error
			return ASSOCSTATUS_CANNOTCONNECT;
		case 0: // searching
			{
				int i;
				Wifi_AccessPoint ap;
				i=Wifi_FindMatchingAP(1,&wifi_connect_point,&ap);
				if(i==0) {
					Wifi_CopyMacAddr(WifiData->bssid9, ap.bssid);
					Wifi_CopyMacAddr(WifiData->apmac9, ap.bssid);
					WifiData->ssid9[0]=ap.ssid_len;
					for(i=0;i<32;i++) {
						WifiData->ssid9[i+1]=ap.ssid[i];
					}
					WifiData->apchannel9=ap.channel;
					for(i=0;i<16;i++) WifiData->baserates9[i]=ap.base_rates[i];
					WifiData->reqMode=WIFIMODE_NORMAL;
					WifiData->reqReqFlags |= WFLAG_REQ_APCONNECT | WFLAG_REQ_APCOPYVALUES;
					wifi_connect_state=1;
				}
			}
			return ASSOCSTATUS_SEARCHING;
		case 1: // associating
			switch(WifiData->curMode) {
			case WIFIMODE_DISABLED:
			case WIFIMODE_NORMAL:
			case WIFIMODE_DISASSOCIATE:
				return ASSOCSTATUS_DISCONNECTED;
            case WIFIMODE_SCAN:
                if(WifiData->reqReqFlags&WFLAG_REQ_APCONNECT) return ASSOCSTATUS_AUTHENTICATING;
                return ASSOCSTATUS_DISCONNECTED;
			case WIFIMODE_ASSOCIATE:
				switch(WifiData->authlevel) {
				case WIFI_AUTHLEVEL_DISCONNECTED:
					return ASSOCSTATUS_AUTHENTICATING;
				case WIFI_AUTHLEVEL_AUTHENTICATED:
				case WIFI_AUTHLEVEL_DEASSOCIATED:
					return ASSOCSTATUS_ASSOCIATING;
				case WIFI_AUTHLEVEL_ASSOCIATED:
#ifdef WIFI_USE_TCP_SGIP
					if(wifi_hw) {
						if(!(wifi_hw->ipaddr)) {
							sgIP_DHCP_Start(wifi_hw,wifi_hw->dns[0]==0);
							wifi_connect_state=2;
							return ASSOCSTATUS_ACQUIRINGDHCP;
						}
					}
					sgIP_ARP_SendGratARP(wifi_hw);
#endif
					wifi_connect_state=3;
					WifiData->flags9|=WFLAG_ARM9_NETREADY;
					return ASSOCSTATUS_ASSOCIATED;
				}
				break;
			case WIFIMODE_ASSOCIATED:
#ifdef WIFI_USE_TCP_SGIP
				if(wifi_hw) {
					if(!(wifi_hw->ipaddr)) {
						sgIP_DHCP_Start(wifi_hw,wifi_hw->dns[0]==0);
						wifi_connect_state=2;
						return ASSOCSTATUS_ACQUIRINGDHCP;
					}
				}
				sgIP_ARP_SendGratARP(wifi_hw);
#endif
				wifi_connect_state=3;
				WifiData->flags9|=WFLAG_ARM9_NETREADY;
				return ASSOCSTATUS_ASSOCIATED;
			case WIFIMODE_CANNOTASSOCIATE:
				return ASSOCSTATUS_CANNOTCONNECT;
			}
			return ASSOCSTATUS_DISCONNECTED;
		case 2: // dhcp'ing
#ifdef WIFI_USE_TCP_SGIP
			{
				int i;
				i=sgIP_DHCP_Update();
				if(i!=SGIP_DHCP_STATUS_WORKING) {
					switch(i) {
					case SGIP_DHCP_STATUS_SUCCESS:
						wifi_connect_state=3;
						WifiData->flags9|=WFLAG_ARM9_NETREADY;
						sgIP_ARP_SendGratARP(wifi_hw);
                        sgIP_DNS_Record_Localhost();
						return ASSOCSTATUS_ASSOCIATED;
					default:
					case SGIP_DHCP_STATUS_IDLE:
					case SGIP_DHCP_STATUS_FAILED:
						Wifi_DisconnectAP();
						wifi_connect_state=-1;
						return ASSOCSTATUS_CANNOTCONNECT;

					}
				}
			}
#else
			// should never get here (dhcp state) without sgIP!
			Wifi_DisconnectAP();
			wifi_connect_state=-1;
			return ASSOCSTATUS_CANNOTCONNECT;
#endif
			return ASSOCSTATUS_ACQUIRINGDHCP;
		case 3: // connected!
			return ASSOCSTATUS_ASSOCIATED;
		case 4: // search nintendo WFC data for a suitable AP
			{
				int n,i;
				for(n=0;n<3;n++) if(!(WifiData->wfc_enable[n]&0x80)) break;
				Wifi_AccessPoint ap;
				n=Wifi_FindMatchingAP(n,WifiData->wfc_ap,&ap);
				if(n!=-1) {
#ifdef WIFI_USE_TCP_SGIP
					Wifi_SetIP(WifiData->wfc_config[n][0],WifiData->wfc_config[n][1],WifiData->wfc_config[n][2],WifiData->wfc_config[n][3],WifiData->wfc_config[n][4]);
#endif
					WifiData->wepmode9=WifiData->wfc_enable[n]&0x03; // copy data
					WifiData->wepkeyid9=(WifiData->wfc_enable[n]>>4)&7;
					for(i=0;i<16;i++) {
						WifiData->wepkey9[i]=WifiData->wfc_wepkey[n][i];
					}

					Wifi_CopyMacAddr(WifiData->bssid9, ap.bssid);
					Wifi_CopyMacAddr(WifiData->apmac9, ap.bssid);
					WifiData->ssid9[0]=ap.ssid_len;
					for(i=0;i<32;i++) {
						WifiData->ssid9[i+1]=ap.ssid[i];
					}
					WifiData->apchannel9=ap.channel;
					for(i=0;i<16;i++) WifiData->baserates9[i]=ap.base_rates[i];
					WifiData->reqMode=WIFIMODE_NORMAL;
					WifiData->reqReqFlags |= WFLAG_REQ_APCONNECT | WFLAG_REQ_APCOPYVALUES;
					wifi_connect_state=1;
					return ASSOCSTATUS_SEARCHING;

				}

			}
			return ASSOCSTATUS_SEARCHING;
	}