Beispiel #1
0
void WiFiLib::reinit() {
  	WiFiLib_DEV.begin(WiFiLib_BAUDS);
	send(F("AT+RST"), 2000);
	sendPart(F("AT+CWMODE="));
	send(String(mode), 100);
	if (mode != '1') { // Configure AP
		sendPart(F("AT+CWSAP=\""));
		sendPart(ssid);
		sendPart(F("\",\""));
		sendPart(pass);
		send(F("\",1,0"), 500); // Last param, ench: 0 OPEN; 2 WPA_PSK; 3 WPA2_PSK; 4 WPA_WPA2_PSK 
	}
	if (mode != '2') { // Configure STA
		for(char i = 0; i < 5; i++) {
			sendPart(F("AT+CWJAP=\""));
			sendPart(ssid);
			sendPart(F("\",\""));
			sendPart(pass);
			String res = send(F("\""), 10000);
			if(res.indexOf("OK") >= 0) {
				break;
			}
		}
	}
	send(F("AT+CIPMUX=1"), 200); // configure for multiple connections
	send(F("AT+CIPSERVER=1,80"), 200); // turn on server on port 80
}
Beispiel #2
0
void main()
{
  lcdInit();
  spiOn();
  spiOff();
  sendByte(out);
  sendArray(array);
  lcdOn();
  lcdOff();
  sendBuffer();
  sendPart(3, 7, LCD_Buffer);
  clear();
  clearPart(5, 76);
  clearPartColor(5, 76, clBLACK);
  setPenColor(clBLACK);
  setBackColor(clWHITE);
  delay_nsek(40);
  scsOn();
  scsOff();
  i =  getValue(LCD_Buffer, 23, 266);
  setValue(LCD_Buffer, 23, 266, 0x3F);
  setCharge();
  resetCharge();
  drawPixel(5, 5, LCD_Buffer);
  drawVLine(5, 5, 5, LCD_Buffer);
  drawHLine(5, 5, 5, LCD_Buffer);
  drawLine(5, 5, 55, 55, LCD_Buffer);
  drawRect(5, 5, 55, 55, LCD_Buffer);
  drawFillRect(5, 5, 55, 55, clWHITE, LCD_Buffer);
  drawCircle(10, 10, 5, LCD_Buffer);
}
Beispiel #3
0
static int manageEnet(ServerData *data)
{
   ENetEvent event;
   PacketGeneric *packet;
   Client *client;
   assert(data);

   /* Wait up to 1000 milliseconds for an event. */
   while (enet_host_service(data->server, &event, 1000) > 0) {
      switch (event.type) {
         case ENET_EVENT_TYPE_CONNECT:
            printf("A new client connected from %x:%u.\n",
                  event.peer->address.host,
                  event.peer->address.port);

            /* broadcast join message to others */
            sendJoin(data, &event);
            client = (Client*)event.peer->data;
            break;

         case ENET_EVENT_TYPE_RECEIVE:
            /* discard bad packets */
            if (event.packet->dataLength < sizeof(PacketGeneric))
               break;

            printf("A packet of length %u was received on channel %u.\n",
                  event.packet->dataLength,
                  event.channelID);

            /* handle packet */
            client = (Client*)event.peer->data;
            packet = (PacketGeneric*)event.packet->data;
            switch (packet->id) {
               case PACKET_ID_ACTOR_STATE:
                  handleState(data, &event);
                  break;
               case PACKET_ID_ACTOR_FULL_STATE:
                  handleFullState(data, &event);
                  break;
            }

            /* Clean up the packet now that we're done using it. */
            enet_packet_destroy(event.packet);
            break;

         case ENET_EVENT_TYPE_DISCONNECT:
            /* broadcast part message to others */
            sendPart(data, &event);

            /* Reset the peer's client information. */
            serverFreeClient(data, event.peer->data);
            event.peer->data = NULL;
      }
   }

   /* send all response packets */
   enet_host_flush(data->server);
   return RETURN_OK;
}
Beispiel #4
0
void WiFiLib::wifiLoop() {
    if(WiFiLib_DEV.available()) {
		char IPDSteps = 0, c;
		int ipd;
		String route = "";
		long int time = millis() + 500;
		while (time > millis()) {
			while (WiFiLib_DEV.available()) {
				c = WiFiLib_DEV.read(); // read the next character.
				switch (IPDSteps) {
					case 0:
						if (c == '+') {
							IPDSteps++;
						} else {
							IPDSteps = 0;
						}
						break;

					case 1:
						if (c == 'I') {
							IPDSteps++;
						} else {
							IPDSteps = 0;
						}
						break;

					case 2:
						if (c == 'P') {
							IPDSteps++;
						} else {
							IPDSteps = 0;
						}
						break;

					case 3:
						if (c == 'D') {
							IPDSteps++;
						} else {
							IPDSteps = 0;
						}
						break;

					case 4:
						if (c == ',') {
							IPDSteps++;
							ipd = 0;
						} else {
							IPDSteps = 0;
						}
						break;

					case 5: // Reading IPD channel
						if (c == ',') {
							IPDSteps++;
						} else {
							ipd = ipd * 10 + c - 48;
						}
						break;

					case 6: // Length, ignored
						if (c == ':') {
							IPDSteps++;
						}
						break;

					case 7: // GET, post, etc
						if (c == ' ') {
							IPDSteps++;
						}
						break;

					case 8: // Route
						if (c == ' ') {
							IPDSteps++;
						} else {
							route += c;
						}
						break;
			
					case 9: // Ignore, request completed
						break;
			
					default:
						IPDSteps = 0;
				}
			}
		}
		if (IPDSteps == 9) { // Request fond, check routes
			IPDStruct * last = IPDs;
			bool found = false;
			char *tmpstr = NULL;
			while (last != NULL) {
				tmpstr = NULL;
				if (last->mode == 4) {// 4 Default route
						found = true;
				} else if (strlen(last->route) <= route.length()) {
					switch (last->mode) {
						case 3:// 3 found in any position
							found = route.indexOf(*last->route) >= 0;
							break;

						case 2:// 2 ends with
							found = route.endsWith(last->route);
							break;

						case 1:// 1 starts with
							found = route.startsWith(last->route);
							break;

						case 0:// 0 same string
						default:
							found = route.equals(last->route);
							break;
					}
					if (tmpstr != NULL) {
						free(tmpstr);
					}
				}
				if (found) {
					last->fp(route, ipd);
					sendPart(F("AT+CIPCLOSE="));
					send(String(ipd, DEC), 100);
					return;
				}
				last = (IPDStruct *) last->next;
			}
		sendDataByIPD(ipd, F("404 - Not found"));
		send(String(ipd, DEC), 100);
		last->fp(route, ipd);
		sendPart(F("AT+CIPCLOSE="));
		send(String(ipd, DEC), 100);
		}			
	}
}
Beispiel #5
0
// Used for setting-up Wifi Module to desired speed.
// Remember to change Arduino sketch speed when changing to adapt to new one.
void WiFiLib::setBaudRate(const String br) {
	sendPart(F("AT+CIOBAUD="));
	send(br, 200);
}
Beispiel #6
0
void WiFiLib::_sendDataByIPD_common(const int ipd) {
	sendPart(F("AT+CIPSEND="));
	sendPart(ipd);
	sendPart(F(","));
}