Figure 4.1 illustrates the Cricket software architecture. At the lowest layer, cricketd allows a Cricket host device to access the Serial Port API to configure low-level Cricket parameters and obtain raw measurements from the Cricket hardware device (see Section 2.2). Our software package includes a CricketDaemon server application that connects to cricketd to filter and process raw Cricket measurements to infer the listener's spatial location and compute its position coordinates. Java applications may access the processed location information via the Java Cricket client library (Clientlib), which interfaces between the application and the CricketDaemon. At runtime, one CricketDaemon processes location information for exactly one Cricket device. A CricketDaemon may serve location information of a Cricket device to numerous applications at the same time.