iSIM: iPAQ Simulator

[Overview] [Documentation] [Architecture] [Message Passing] [iSIM Homepage]
 

Overview

 

 

iSIM is an interaction simulation environment for wireless iPAQ applications.  iSIM, written in the Java programming language makes use of several design patterns, such as Proxy, Model-View-Controller, and Observer.  iSIM was also structured in such a way, such that new components can be easily added or modified, without having to change the entire system.

 

Documentation

 

 

iSIM Java Documentation can be viewed here.

 
 

 

        iSIM was structured so that every main function/feature exists in its own component, and then a controller object controls all the various components.  In addition, iSIM has a Graphical User Interface (GUI) for viewing the and manipulating the data in the simulation.  Thus iSIM's architecture is design upon a Model-View-Controller pattern as seen below.  There is a central controller which contains the simulation data and controls the ability to use and manipulate that data.  There is also a GUI or view of the data which is controlled by the controller.

Sample Code:

SimulatorFrame.java       Controller.java        Agent.java  

 

 

       The iPAQ application also has its own architecture.  As seen below the iPAQ application must work with a transport component that is used for communicating with iSIM.  The iPAQ application itself may be designed using a pattern the designer wants, but in order to function correctly with iSIM, the iPAQ application should make use of the Proxy pattern.  The Proxy pattern will allow the iPAQ application to connect to iSIM via the transport package below, or to make a real-world network/GPS connection. 

Sample Code:

SocketReceiverListener.java       ChatUI.java      NmeaSocketGps.java

 

Message Passing

 

 

          One of iSIM's key features is the function of message passing.  iSIM communicates to simulated iPAQ devices with messages defined in the iSIM transport package.  Messages are created in the iSIM controller, which receives or extracts data from various system components.  The messages are then sent to the transport package.   The simulator and each iPAQ application has its own port number for listening to messages.  Each message, contains a destination port, and is sent to that port number. 

Sample Code:

SocketReceiverListener.java     SocketReceiver.java     SocketSender.java     Controller.java     

 

 

         iSIM currently supports two kinds of message passing.  The first and most obvious, is that iSIM can send message to any or all agents in the simulation.  For instance, when an agent is moved in iSIM, the controller creates a GPS message, and notifies the corresponding iPAQ application of the new GPS coordinates.  

        iSIM also supports multicast messaging.  iPAQ applications can send messages from peer to peer.  In order to simulate the wireless adhoc p2p messaging, iSIM acts as the multicast address.  Any messages that an iPAQ application sends are first sent to iSIM via the transport component.  The iSIM controller, once it receives a message, then determines which (if any) agents should receive the message.  Like before, the controller will forward the message to any iPAQ applications that the message should go to.  Timing delays are also added, depending on distance and wireless range.

Sample Code:

Message.java    Sim2PMessage.java     P2PMessage.java     NMEAMessage.java     MulticastMessage.java