package com.qubecad.pi.berrypiws;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
/**
* Servlet class BerryPiWS to Control the Berry Clip for the raspberry Pi
* available from http://www.raspberrypi-spy.co.uk/
*/
public class BerryPiWS extends HttpServlet {
private static final long serialVersionUID = 1L;
GpioController gpio;
GpioPinDigitalOutput pina;
GpioPinDigitalOutput pinb;
GpioPinDigitalOutput pinc;
GpioPinDigitalOutput pind;
GpioPinDigitalOutput pine;
GpioPinDigitalOutput pinf;
/**
* Default constructor.
*/
public BerryPiWS() {
GpioController gpio = GpioFactory.getInstance();
// Set up the pins and set low to start
System.out.println("Setting up GPIO Pins for output");
pina = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_07, "Pin A",
PinState.LOW);
pinb = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_00, "Pin B",
PinState.LOW);
pinc = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_03, "Pin C",
PinState.LOW);
pind = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_12, "Pin D",
PinState.LOW);
pine = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_13, "Pin E",
PinState.LOW);
pinf = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_14, "Pin F",
PinState.LOW);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// get the number of the LED to turn on and print to console
String action = request.getParameter("action");
System.out.println("action=" + request.getParameter("action"));
try {
// activate the request light, pause and reset.
if (action.equals("1")) {
System.out.println("A high");
pina.high();
Thread.sleep(1000);
pina.low();
} else if (action.equals("2")) {
System.out.println("B high");
pinb.high();
Thread.sleep(1000);
pinb.low();
} else if (action.equals("3")) {
System.out.println("C high");
pinc.high();
Thread.sleep(1000);
pinc.low();
} else if (action.equals("4")) {
System.out.println("D high");
pind.high();
Thread.sleep(1000);
pind.low();
} else if (action.equals("5")) {
System.out.println("E high");
pine.high();
Thread.sleep(1000);
pine.low();
} else if (action.equals("6")) {
System.out.println("F high");
pinf.high();
Thread.sleep(1000);
pinf.low();
}
} catch (InterruptedException e) {
System.out.print("Exception ");
}
// display the LED select form on the return page
PrintWriter out = response.getWriter();
String pagehtml = "<html><body>";
// if there was a valid LED number display a message
if ("123456".contains(action)) {
pagehtml = pagehtml + "<br>LED number " + action + " selected<br>";
}
String pagehtmlform = "<form action='./BerryPiWS' method='POST'><input type='text' name='action'/><input type='submit' value='Send'></form></body></html>";
out.println(pagehtml + pagehtmlform);
}
}