/* * DS2406Servlet.java * * Created on 20 November 2001, 21:11 * * Copyright 2001 Chris Bryden. Redistribute Freely. * * c.bryden@virgin.net * */ import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import com.dalsemi.onewire.OneWireAccessProvider; import com.dalsemi.onewire.*; import com.dalsemi.onewire.adapter.*; import com.dalsemi.onewire.container.*; import com.dalsemi.onewire.container.OneWireContainer12; /** * * @author cjb * @version */ public class DS2406Servlet extends HttpServlet { /** Initializes the servlet. */ public void init(ServletConfig config) throws ServletException { super.init(config); } /** Destroys the servlet. */ public void destroy() { } private OneWireContainer12[] getDevices() throws OneWireException { DSPortAdapter pa = null; pa = OneWireAccessProvider.getDefaultAdapter(); //target family DS2406 pa.targetFamily(0x12); Enumeration e = pa.getAllDeviceContainers(); Vector v = new Vector(); int i = 0; while( e.hasMoreElements()) { v.addElement((OneWireContainer12) e.nextElement()); } OneWireContainer12[] devices = new OneWireContainer12[v.size()]; v.copyInto(devices); return(devices); } private void drawDocument(PrintWriter out) { OneWireContainer12[] devices = new OneWireContainer12[0]; try { devices = getDevices(); } catch(OneWireException e) { out.write("

One Wire Exception
"); e.printStackTrace(out); out.write(""); return; } out.write("\r\n\r\n\r\n\r\n\r\n\r\n\r\n"); out.write("DS2406 Servlet\r\n\r\n"); out.write(""); out.write(""); out.write("\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n

"); out.write("DS2406 Servlet

"); out.write("\r\n"); out.write("

\r\n" + (new OneWireContainer12()).getDescription()); out.write("\r\n
"); out.write("\r\n"); out.write("\r\n"); out.write("\r\n\r\n"); out.write("\r\n


\r\n"); out.write("\r\n"); for(int i=0;i\r\n"); } } out.write("\r\n
\r\n"); out.write("
Device\r\nChannel A\r\nChannel B
\r\n"); out.write("\r\n"); byte[] state = new byte[0]; try { state = devices[i].readDevice(); } catch(OneWireException e) { out.write("One Wire Exception:" + e.getMessage()); } out.write(devices[i].getName() + "@" + devices[i].getAddressAsString()); for(int chan=0;chan<=1;++chan) { out.write("\r\n"); String newstate = devices[i].getLatchState(chan,state) ? "Off":"On"; String level = devices[i].getLevel(chan,state) ? "High":"Low"; out.write("\r\n"); out.write("" + level + ""); out.write("
\r\n"); out.write("
"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=ISO-8859-1"); drawDocument(response.getWriter()); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { OneWireContainer12[] devices = new OneWireContainer12[0]; try { devices = getDevices(); } catch(OneWireException e) { response.getWriter().write("

One Wire Exception
"); e.printStackTrace(response.getWriter()); response.getWriter().write(""); return; } String address = request.getParameter("address"); int channel = Integer.parseInt(request.getParameter("channel")); String newstate = request.getParameter("state"); for(int i=0;i

One Wire Exception
"); e.printStackTrace(response.getWriter()); response.getWriter().write(""); return; } if(newstate.equals("On")) { devices[i].setLatchState(channel, true, false, state); } else { devices[i].setLatchState(channel, false, false, state); } try { devices[i].writeDevice(state); } catch(OneWireException e) { response.getWriter().write("

One Wire Exception
"); e.printStackTrace(response.getWriter()); response.getWriter().write(""); return; } break; } } response.setContentType("text/html;charset=ISO-8859-1"); drawDocument(response.getWriter()); } /** Returns a short description of the servlet. */ public String getServletInfo() { return "DS2406 One-Wire dual addressable switch servlet"; } }