OSDN Git Service

lejos_NXJ_win32_0_5_0beta.zip
[nxt-jsp/lejos_nxj.git] / nxtOSEK / lejos_nxj / src / java / classes / lejos / rcxcomm / PacketHandler.java
diff --git a/nxtOSEK/lejos_nxj/src/java/classes/lejos/rcxcomm/PacketHandler.java b/nxtOSEK/lejos_nxj/src/java/classes/lejos/rcxcomm/PacketHandler.java
new file mode 100644 (file)
index 0000000..677811f
--- /dev/null
@@ -0,0 +1,85 @@
+package lejos.rcxcomm;\r
+\r
+/**\r
+ * Abstract packet handler. \r
+ * Implementations must include sendPacket, receivePacket and\r
+ * isPacketAvailable(). The other methods are optional.\r
+ **/\r
+public abstract class PacketHandler {\r
+  protected PacketHandler lowerHandler;\r
+\r
+  public PacketHandler() {\r
+  }\r
+\r
+  public PacketHandler(PacketHandler handler) {\r
+    lowerHandler = handler;\r
+  }\r
+   \r
+  /**\r
+   * Set the source and destination for this connection.\r
+   **/ \r
+  public void open(byte source, byte destination) {\r
+  }\r
+\r
+  /**\r
+   * Reset sequence numbers for this handler\r
+   **/\r
+  public void reset() {\r
+  }\r
+\r
+  /**\r
+   * Set or unset the listen flag to keep a PC serial tower alive\r
+   * @param listen true to set listen mode, else false\r
+   **/\r
+  public void setListen(boolean listen) {\r
+    lowerHandler.setListen(listen);\r
+  }\r
+\r
+  /** Send a packet.\r
+   * @param packet the bytes to send\r
+   * @param len the number of bytes to send\r
+   * @return true if the send was successful, else false\r
+   */\r
+  public abstract boolean sendPacket(byte [] packet, int len);\r
+\r
+  /** Receive a packet.\r
+   * @param buffer the buffer to receive the packet into\r
+   * @return the number of bytes received\r
+   */\r
+  public abstract int receivePacket(byte [] buffer);\r
+\r
+  public int receiveAck(byte [] buffer) {\r
+    return 0;\r
+  }\r
+\r
+  /**\r
+   * Check if a packet is available\r
+   * @return true if a Packet is available, else false\r
+   */\r
+  public abstract boolean isPacketAvailable();\r
+\r
+  /**\r
+   * Check if an ack is available\r
+   * @return true if a ack is available, else false\r
+   */\r
+  public boolean isAckAvailable() {\r
+    return false;\r
+  }\r
+\r
+  /**\r
+   * Close this packet handler and all lower layers.\r
+   */\r
+  public void close() {\r
+    lowerHandler.close();\r
+  }\r
+\r
+  /**\r
+   * Get the last error.\r
+   * @return the error number, or zero for success\r
+   **/\r
+  public int getError() {\r
+    return lowerHandler.getError();\r
+  }\r
+}\r
+\r
+\r