int ESP8266::connectWifi(char *ssid, char *password) { strcpy(_ssid, ssid); strcpy(_password, password); // set the access point value and connect wifi.print(F("AT+CWJAP=\"")); wifi.print(ssid); wifi.print(F("\",\"")); wifi.print(password); wifi.println(F("\"")); delay(100); if(!searchResults("OK", 30000, _debugLevel)) { return WIFI_ERR_CONNECT; } // enable multi-connection mode if (!setLinkMode(1)) { return WIFI_ERR_LINK; } // get the IP assigned by DHCP getIP(); // get the broadcast address (assumes class c w/ .255) getBroadcast(); return WIFI_ERR_NONE; }
void main(int argc, char *argv[]){ j = fopen("ips.json","w"); if(argc != 4){ sprintf(json + strlen(json),"{\n\"Error\": \"Faltan o sobran argumentos\"\n}"); fputs(json,j); fclose(j); }else{ char ip[16]; char clase, opcion; int num = atoi(argv[3]); char tipo[10]; f = fopen("red.txt","w"); sprintf(ip,"%s",argv[1]); opcion = argv[2][0]; separaIP(ip); fprintf(f,"Dirección IP: %d.%d.%d.%d\n",IP[0],IP[1],IP[2],IP[3]); clase = getClase(); if(clase == 'A' || clase == 'B' || clase == 'C'){ sprintf(tipo,"%s",getTipo(clase)); fprintf(f,"Tipo: %s\n", tipo); getDiRed(); getBroadcast(0); sprintf(json,"{\n\"Red\": \"%d.%d.%d.%d\",\n\"Clase\": \"%c\",\n\"Primer IP\": \"%d.%d.%d.%d\",\n\"Mascara\": \"%d.%d.%d.%d\",\n\"Broadcast\": \"%d.%d.%d.%d\",\n\"Ultima IP\": \"%d.%d.%d.%d\",\n\"Default Gateway\": \"%d.%d.%d.%d\"",red[0],red[1],red[2],red[3],clase,red[0],red[1],red[2],red[3]+1,mascara[0],mascara[1],mascara[2],mascara[3],broadcast[0],broadcast[1],broadcast[2],broadcast[3],broadcast[0],broadcast[1],broadcast[2],broadcast[3]-1,broadcast[0],broadcast[1],broadcast[2],broadcast[3]-1); imprimeTabla(clase); }else{ fprintf(f,"Clase: %c\n",clase); } switch(opcion){ case 's': validaNumero(bitsNecesarios(num),clase); fprintf(f,"Se crearán %d subredes\n",(int)pow(2,bitsNecesarios(num))); getSubredes(bitsNecesarios(num),clase); break; case 'h': num += 2; getHosts(bitsNecesarios(num),clase); break; case '-': sprintf(json+strlen(json),"\n"); fputs(json,j); break; default: sprintf(json + strlen(json),"{\n\"Error\": \"Argumento inválido\"\n}"); fputs(json,j); fclose(j); exit(0); } fclose(f); strcat(json,"}"); fputs(json,j);; fclose(j); } }
void getSubredes(char bits, char clase){ unsigned char c,b,j; int aux_num,i; int mask = 255; switch(clase){ case 'A': subred[0] = IP[0]; c = 1; b = 24; break; case 'B': subred[0] = IP[0]; subred[1] = IP[1]; c = 2; b = 16; break; case 'C': subred[0] = IP[0]; subred[1] = IP[1]; subred[2] = IP[2]; c = 3; b = 8; } getMascaraSubred(clase,bits); imprimeEncabezado(); sprintf(json+strlen(json),",\n\"Subredes\": [\n"); for(i=0; i<pow(2,bits); i++){ aux_num = i << (b-bits); char z = 0; for(j = 3; j >= c; j--){ subred[j] = (aux_num & mask)>>z; mask <<= 8; z += 8; } mask = 255; getBroadcast(1); if(i == pow(2,bits) -1) imprimeSubred(i,1); else imprimeSubred(i,0); } sprintf(json+strlen(json),"]\n"); }