Untitled
#include <MWiFi.h> char nameAccP[]="D-Link-casa"; char passw[]=""; char mac[18]; char name[8]; char ip[16]; char remip[16]; char mask[16]; char gateway[16]; int fc=0; int fs=0; int ssocket; int csocket; unsigned int port=5000; MWiFi WIFI; void setup()
{
Serial.begin(9600);
WIFI.begin();
WIFI.getConfig(); WIFI.getMAC(mac); WIFI.getName(name);
Serial.print("MAC: ");Serial.println(mac);
Serial.print("Name: ");Serial.println(name);
Serial.print("MCW Version (hex) : ");
Serial.print(WIFI.MCWVERSION[1],HEX);Serial.print(" ");Serial.println(WIFI.MCWVERSION[0],HEX);
Serial.print("Radio Version (hex): ");
Serial.print(WIFI.RADIOVERSION[1],HEX);Serial.print(" ");Serial.println(WIFI.RADIOVERSION[0],HEX);
WIFI.setNetMask("255.255.255.0"); WIFI.setGateway("0.0.0.0"); Serial.println("New mask: 255.255.255.0");
Serial.println("New gateway: 0.0.0.0");
if (passw[0]==0) {WIFI.ConnSetOpen(nameAccP);} else {WIFI.ConnSetWPA(nameAccP,passw);}
fc=WIFI.Connect();
if (!fc) {Serial.print("Can't connect to ");Serial.print(nameAccP);Serial.println(". Do nothing");return;}
WIFI.getIP(ip); Serial.print("Connected with ");Serial.print(nameAccP);
Serial.print(" local ip is: ");Serial.println(ip);
ssocket=WIFI.openServerTCP(port);
if (ssocket==255) {WIFI.Disconnect();fc=0;Serial.println("Socket problem. Disconnected! Do nothing");return;}
Serial.print("Server active on port ");Serial.println(port);
}
void loop()
{
if(fc) {
if (!fs) { csocket=WIFI.pollingAccept(ssocket); if(csocket<255) fs=1; if (fs) {Serial.print("Server connected with : ");WIFI.getRemoteIP(remip);Serial.println(remip);}
}
else {
char *line=WIFI.readDataLn(csocket); if (line!=NULL) {
decodeCommand(line); }
}
}
}
void decodeCommand(char *line)
{
char command[15]="";
char data1[15]="";
char data2[15]="";
sscanf(line,"%14s %14s %14s",command,data1,data2); if ((strlen(command)==0)|(strcmp(command,"?")==0)) {help();return;} if (strcmp(command,"RAnalog")==0) {ranalog(data1);return;} if (strcmp(command,"RDigital")==0) {rdigital(data1);return;}
if (strcmp(command,"WAnalog")==0) {wanalog(data1,data2);return;}
if (strcmp(command,"WDigital")==0) {wdigital(data1,data2);return;}
if (strcmp(command,"SetPin")==0) {pinset(data1,data2);return;}
if (strcmp(command,"CloseConn")==0){WIFI.closeSock(csocket);fs=false;return;}
}
char pinErr[]="Pin number incorrect! Ana(0-5);Dig(4-13)(no7);Pwm(5,6,9,10,11)\r";
char answer[50];
void ranalog(char *data)
{
int fok;
int pin;
fok=sscanf(data,"%d",&pin); if (fok==0) {WIFI.writeDataLn(csocket,pinErr);return;} if ((pin<0)|(pin>5)) {WIFI.writeDataLn(csocket,pinErr);return;}
sprintf(answer,"Analog pin %d : %d\r",pin,analogRead(pin));
WIFI.writeDataLn(csocket,answer); }
void rdigital(char *data)
{
int fok;
int pin;
fok=sscanf(data,"%d",&pin); if (fok<=0) {WIFI.writeDataLn(csocket,pinErr);return;}
if ((pin<4)|(pin>13)) {WIFI.writeDataLn(csocket,pinErr);return;}
sprintf(answer,"Digital pin %d : %d\r",pin,digitalRead(pin));
WIFI.writeDataLn(csocket,answer);
}
void wdigital(char *data1, char *data2)
{
int fok;
int pin;
int val;
fok=sscanf(data1,"%d",&pin); if (fok<=0) {WIFI.writeDataLn(csocket,pinErr);return;}
if ((pin<4)|(pin>13)|(pin==7)) {WIFI.writeDataLn(csocket,pinErr);return;}
fok=sscanf(data2,"%d",&val); if (fok<=0) {WIFI.writeDataLn(csocket,"No value!\r");return;}
if (val<0) val=0;if (val>1) val=1;
digitalWrite(pin,val);
sprintf(answer,"Digital pin %d set to %d \r",pin,val);
WIFI.writeDataLn(csocket,answer);
}
void wanalog(char *data1, char *data2)
{
int fok;
int pin;
int val;
fok=sscanf(data1,"%d",&pin); if (fok<=0) {WIFI.writeDataLn(csocket,pinErr);return;}
if ((pin!=5)&(pin!=6)&(pin!=9)&(pin!=10)&(pin!=11)) {WIFI.writeDataLn(csocket,pinErr);return;}
fok=sscanf(data2,"%d",&val); if (fok<=0) {WIFI.writeDataLn(csocket,"No value!\r");return;}
if (val<0) val=0;if (val>1024) val=1024;
analogWrite(pin,val);
sprintf(answer,"Pwm pin %d set to %d \r",pin,val);
WIFI.writeDataLn(csocket,answer);
}
void pinset(char *data1, char *data2)
{
int fok;
int pin;
int val;
fok=sscanf(data1,"%d",&pin); if (fok<=0) {WIFI.writeDataLn(csocket,pinErr);return;}
if ((pin<4)|(pin>13)) {WIFI.writeDataLn(csocket,pinErr);return;}
val=-1;
if (strcmp(data2,"INPUT")==0) val=0;
if (strcmp(data2,"OUTPUT")==0) val=1;
if (strcmp(data2,"INPUT_PULLUP")==0) val=2;
if (val<0) {WIFI.writeDataLn(csocket,"No valid option!\r");return;}
pinMode(pin,val);
sprintf(answer,"Digital pin %d set to %s \r",pin,data2);
WIFI.writeDataLn(csocket,answer);
}
void help()
{
WIFI.writeDataLn(csocket,"* Network commands program\r");
WIFI.writeDataLn(csocket,"* Use: send line with command and data\r");
WIFI.writeDataLn(csocket,"* Commands availlable:\r");
WIFI.writeDataLn(csocket,"* RAnalog pin Es.: RAnalog 3\r");
WIFI.writeDataLn(csocket,"* RDigital pin\r");
WIFI.writeDataLn(csocket,"* WAnalog pin val\r");
WIFI.writeDataLn(csocket,"* WDigital pin val\r");
WIFI.writeDataLn(csocket,"* SetPin pin mode(INPUT/OUTPUT/INPUT_PULLUP)\r");
WIFI.writeDataLn(csocket,"* CloseConn\r\n******\r");
}