The invention relates generally to wireless classroom response systems, and, more particularly, to wireless classroom response systems in which each student has a handheld unit that can wirelessly send messages to a computer.
When a lesson is presented to a class of students it is often difficult to gauge whether the students are absorbing or even paying attention to the lesson. Wireless classroom response systems address this difficulty. Some currently-existing systems are deficient however, in that they do not permit the student to choose from multiple wireless networks. Others use proprietary communication schemes, thereby inhibiting the development of hardware and software by third-party vendors.
In accordance with the foregoing, a wireless classroom response system is provided. In an embodiment of the invention, the system includes multiple wireless networks, each serving a different classroom. Each network has a computer located proximate to the classroom that the wireless network serves. The computer executes a communications server and an application program, wherein the application program facilitates classroom activities. The system also includes a wireless access point located proximate to the classroom. The wireless access point is communicatively linked to the computer. The system also has a plurality of handheld units. Each handheld unit displays, to a user, a list of the networks, and receives a user input indicating which one of the wireless networks the handheld unit should connect. The handheld unit connects to the chosen wireless network, thereby becoming a node in the wireless network. It also transmits data to the application program via the wireless access point and the communications server.
In another embodiment of the invention, the system has a computer, a wireless access point, and handheld units located proximate to a classroom. The wireless access point is communicatively linked to the computer. The computer displays a user interface that permits an instructor to interact with the computer. The computer executes a communications server. Each handheld unit is used by a student, and performs the steps of transmitting a markup language document to the computer via the wireless access point, wherein the markup language data contains data that identifies a service of the communication server.
In yet another embodiment of the invention, the system has a computer, a wireless access point, and handheld units located proximate to a classroom. The wireless access point is communicatively linked to the computer. The computer displays a user interface that permits an instructor to interact with the computer. The computer executes a communications server. Each handheld unit is used by a student, and performs the steps of transmitting a message in an open network protocol to the computer via the wireless access point, wherein the markup language data contains data that identifies a service of the communication server.
The architecture and operation of a wireless audience response system configured according to an embodiment of the invention will now be described. Referring to
Although any of a variety of communication protocols may be used in conjunction with the system 10, according to various embodiments, the wireless networks of the system 10 communicate using an open network protocol, such as the IEEE 802.15.4 standard. When implemented using the IEEE 802.15.4 standard, the wireless networks operate as personal area networks (PANs). Furthermore, in one embodiment, each classroom in a school has its own wireless network, which includes its own PC 12 and AP 14. In this embodiment, the AP 14 is a Universal Serial Bus (USB) device that includes a microprocessor (e.g., an ARM processor) and an 802.15.4 chip set. The AP 14 carries out the functions of an 802.15.4 PAN Coordinator and also serves as the access point for devices to communicate with the wireless network. The computer 12 hosts the communications server 26 and one or more application programs. The handheld units 16 include 802.15.4 chip sets and execute programs that enable them to communicate wirelessly with the communications server 26 on the computer 12 via the AP 14. By submitting requests via the communications server 26, the handheld units 16 use services of the application programs 22 hosted on the computer 12 to obtain such things as academic content, data synchronization, real time response activities, etc. Possible embodiments of the handheld units 16 are shown in
Referring to
Referring still to
In one embodiment of the invention, the computer 12 also executes a ground control manager that is separate from the ground control program 44. The ground control manager is a utility that is used to configure the AP 14, assign device ownership, inspect connected devices, and perform other management tasks. However, the application programs, working with the ground control program 44 via the appropriate API can also implement many of the management tasks normally performed by the ground control manager.
In an embodiment of the invention, the handheld units 16 connect to the PAN using the IEEE 802.15.4 Low-Rate Wireless Personal Area Network standard. The application programs running on the computer 12 connect to the wireless network via TCP/IP sockets. The ground control program 44, the USB, and the AP 14 bridge the communications between application programs 12 and the handheld units 16. The handheld units 16 locate the wireless networks using an 802.15.4 active scan. An active scan locates 802.15.4 PAN coordinators by stepping through logical channels in the 802.15.4 airspace, and issuing a beacon request. A PAN coordinator (the AP 14 in this embodiment) will respond to a beacon request with the 802.15.4 beacon frame. Within this frame is the beacon payload carrying the Network Identifier block. This block details information about the PAN as shown in the following table.
The Network Name field is intended for use by each handheld unit 16 to help determine whether or not to associate to the wireless network. This name is set by the owner/administrator of that wireless network. When the system 10 is deployed in a classroom environment, the administrator/owner may be the instructor. The string can be displayed to the user along with other wireless networks that were found in the active scan, thereby allowing the user to make the choice of which wireless network to join. Software executing on the handheld unit 16 connects to the wireless network via the ground control program 44 (hosted on the computer 12). The ground control program 44 provides a TCP/IP port for connection. The identifier for the AP 14 is simply the localhost or IP address of the computer 12 along with the TCP port number. In one embodiment, the AP 14 port number will be selected at random from the Internet Assigned Numbers Authority (IANA) dynamic and private port range of 49152 to 65535.
In an embodiment of the invention, data transmitted between the handheld units 16 and the base station 11 is carried in 802.15.4 data frames using a delivery construct that will be referred to herein as Saturn Protocol (SP) datagrams. SP datagrams use a segment format similar to the TCP/IP segment format and have the following structure.
The ground control program 44 automatically assembles data into segments for application programs (such as the first, second, and third application programs 48, 50, and 52) that use its services. The handheld devices 16, however, provide their own services for segmentation of data.
In an embodiment of the invention, SP datagram segments are limited in size by the Maximum Transmission Units (MTU) of the 802.15.4 MAC data frame. Depending on the security suite in use for the 802.15.4 network, this MTU can be reduced due to overhead of encryption and freshness implementations. In an unsecured network, the MTU is 102 bytes. To construct a segment, a template header with the Version, Header Length, Service Port, and Datagram ID fields is created and then used to send each segment of the data in an 802.15.4 data frame. The SYN flag is set for the first segment. The FIN flag is set for the last segment. The Sequence Number for the first segment should start at 0. Remaining segments have their Sequence Number set based on the byte sequence they carry.
Referring to
The Datagram ID field is used to identify datagram segments during a transaction using 802.15.4 data request and data indication communication protocols. Datagram IDs are simple 8 bit IDs that are incremented each time a new transaction is started by the sender.
The Sequence Number field is used to determine the portion of the data payload the segment carries. The arrival of the datagram segment with the FIN bit equal to 1 indicates that the final segment. Reception of the FIN segment does not mean the datagram assembly is complete as it is possible previous segments may have been lost and are in the process of being resent. Determining that a datagram is completed is based on examining the sequence for missing segments.
Referring again to
When SP datagrams from a handheld unit 16 are constructed and sent over the one of the wireless networks (
As shown in
To request services from one or more application programs according to an embodiment of the invention, a handheld unit 16 forms and transmits a “service request” to the computer 12. A service request is formed using Hypertext Transport Protocol (HTTP) POST syntax of the form:
When the computer 12 receives a datagram from a handheld unit 16, the ground control program 44 identifies which application program has registered to handle the datagram, and then calls a “ReceiveData” service of that application program, as shown in the following example.
No response is required by the application program in this example.
If an application program wishes to send data to a handheld unit 16, the application program calls a “SendData” service of the ground control program 44, as shown in the following example.
In an embodiment of the invention, the ground control program 44 offers services to the application programs. These services are available through a service port defined by the ground control program 44, and allow the application programs to get and set information for the handheld units 16, configure the AP 14, and connect/disconnect to the handheld units 16. The following sections describe the structure of service requests and responses according to one embodiment of the invention.
Service Requests. Service requests are formed using standard HTTP GET and POST syntax of the form:
Consider the following example services URL that is used to get a list of handheld units managed by the server:
Service Responses. Service responses are formed using HTTP syntax of the form:
For XML data (default content type), the message-body is enclosed in a <data> element and includes a <status> element whose contents provide the service url of the request, a status code, and optional message for the caller. This status code and message differs from the HTTP status code, which relates to the success of locating and calling the service.
In the following sections, examples of application services, the format used to invoke the services, the format used to respond to the requests, and example service requests will be described.
SetNetworkSettings. This application service sets the network name and encryption settings for the AP 14 (
GetNetworkSettings. This application service gets the network settings for the AP 14.
GetDevices. The GetDevices service returns a device node for each handheld unit 16 with active sessions.
SetDeviceEnvironmentSettings. This service specifies the environment settings for all handheld units 16.
GetDeviceEnvironmentSettings. This service specifies the environment settings for all handheld units.
SetOwnerAssignmentList. This service is called by an application program to set the owner assignment file. This file is used to respond to a request by a handheld unit 16 for owner assignment. Each owner that is assigned from this list is removed once assigned. Ownership assignment starts from the first item in the list. If an owner assignment list is already set, it will be replaced by the new list.
GetOwnerAssignmentList. This service returns the current owner assignment list.
SetDeviceOwnerAssignment. This service is used to specify owner information for a specific handheld unit 16.
ConnectServiceHandler. This service requests that a particular application be designated to handle certain services for the handheld units 16. On success, the port is kept alive for these services. That application then becomes the “service handler” for that service. In the example below, the applications also register to be service handlers for particular types of devices. For example, an application may register to be the service handler for all requests originating from a Responder-type (Type I) handheld unit.
DisconnectServiceHandler. This service is invoked to disconnect handheld units from a particular application program. The caller sends this request on the same port established via the ConnectServiceHandler request. If there are no more service handler connections on the port, the ground control program 44 will close the connection.
GetAccessPoints. This service returns an access point node identifier for each access point that the ground control program 44 recognizes.
AccessPointCommand. This service sends a command to a specified access point.
SetAdminPIN. Calling this service changes the Administrator PIN for the ground control program 44.
ValidateAdminPIN. Calling this service validates a PIN against the Administrator PIN for the ground control program 44.
Shutdown Server. Calling this service shuts down the software running on the computer 12 that manages the system 10 and disconnects all access points.
In accordance with an embodiment of the invention, the handheld units 16 (
Responses to service requests are returned in SDTP syntax of the form:
AssignOwner. This service request is made by a handheld unit 16 when it wishes to have an owner assigned to it.
{own\f Wayne\l Buffington\i 38da398a173ca172\p 1234{kc\k 101{app\n AccelTest\i 3d8920a182ef4829}}{ds {fs\hw8\no8}}}
ResetOwner. This service request asks that the owner of a handheld unit 16 be reset. The request requires an administrator PIN to be supplied by the handheld unit 16.
AssociateDevice. This service is called by a handheld unit 16 after the handheld unit 16 successfully associates with the PAN coordinator (e.g., the AP 14).
Date and Time. This service gets the current date and time
Calculator. This service is a simple expression calculator.
GetFirmwareVersions. This service returns the firmware versions on file for the specified handheld unit.
StartFirmwareUpdate. This service authorizes and begins a firmware update to the handheld unit 16.
Validate Administrator PIN. Validates a PIN as the Administrator PIN.
System Status Codes. In an embodiment of the invention, the system 10 (
USB Communications. In an embodiment of the invention, data transfer between the computer 12 and the AP 14 take place via a USB connection. The AP 14 is enumerated by the computer 12 as a Full Speed (12 MHz) Human Interface Device (HID) with a maximum throughput of 512 Kbits/s or 64 KBytes/s. A generic HID report capable of transporting 64 bytes is used between the AP 14 and computer 12. The AP 14 exposes three USB Endpoints: Control endpoint 0 which is 8 bytes, IN Endpoint 1 which is 64 bytes, and OUT Endpoint 2 which is 64 bytes. The sense of IN/OUT endpoints refers to the point of view of the computer 12 sending data out and receiving data in.
A datagram message can be sent to and from the AP 14 via the USB. Datagrams can be larger than the 64 bytes provided by a single HID report message. Therefore, transmission of multiple frames might be necessary to build a complete datagram.
The following table summarizes the frame format used to transport a datagram
The format of a header common to all data frames is as follows:
Communication between the computer 12 and AP 14 is accomplished via datagrams as described above. The data being carried in these datagrams is described in more detail in this section. The purpose of the datagram as well as its payload is described in the tables below. The Operation Code word uniquely describes the datagram payload.
Custom Function Result Codes. According to one embodiment of the invention, the result codes returned by various functions include “success,” “busy,” and “error.”
Device Statistics. The following table shows examples of device statistics that may be obtained using the GetDeviceStatistics ( ) call (described in the previous table):
Device Test Interface. According to an embodiment of the invention, the computer 12 (
The first three fields: Test Type, Test OpCode, and PayloadSizeInBytes will be part of every Device test message. The field Test Data[ ], is dependant on the specific test message and is variable in size.
Sequential Loop Back Test (Test Type 0x0001). An example of a test that can be performed via the device test interface is the “sequential loop back test.” In this test, a set of messages will be sent from the computer 12 (
The following table shows an example of a sequential loop back test data message.
The following table shows an example of a sequential loop back test init message.
The following table shows another example of a sequential loop back test data message.
The following table shows another example of a sequential loop back test data message.
The following table shows an example of a sequential loop back test complete message.
The following table shows another example of a sequential loop back test complete message.
Firmware Update Command Set. In one embodiment, a firmware update to a handheld unit 16 is controlled according to one or more firmware update commands, examples of which will now be described.
Identify (“I”) Command. This command is sent by a handheld unit 16 to initiate a download session. If the ground control program 44 is able to service the request, it responds by sending a Write command to the unit at the first valid address contained in the image. If the ground control program 44 cannot service the request for any reason, it will send a Q command to the handheld unit 16, terminating the session.
In the above example:
Read (“R”) Command. This command is sent by the handheld unit 16 in order to initiate a read operation. The ground control program 44 responds with either a W if more data is available or a Q if there is no more data to write.
Write (“W”) Command. This command is sent by the host in response to either a valid I command or in response to a R command. If sent in response to the “I” command, the address shall be the first valid address in the image file. If sent in response to the R command, the address shall be that contained in the R command. If there is no image data at the address requested in the R command, the W command shall contain the image data at the next valid address. The host shall send data until either <Page Size> number of bytes has been sent or a page boundary is reached. If the end of contiguous image data is found before a page boundary, the host shall pad the remaining bytes with 0xFF.
Quit Bootloader (“Q”) Command. This command may be sent by either device at any time to terminate a bootload session. If the command is host-initiated, the device will confirm by echoing the ‘Q’.
An example of how a firmware update of the handheld unit 16 might occur in an embodiment of the invention will now be described. In this example, it will be assumed that no errors are encountered during the update process.
Now that embodiments of the hardware and software architecture for the system 10 (
Saturn Server startup. This use case describes the communications the startup process for the Saturn Server 82. It involves starting all network access points, network services, the GCNS 74, and the Routing & Translation Program 78.
Access Point Startup. This use case describes the Access Point startup process.
Device Association. This use case describes the process for a handheld unit 16 to request and be granted association to the wireless network (
Device Disassociation. This use case describes the process for a handheld unit 16 to disassociate from a wireless network.
Coordinator Disassociation. This use case describes the process for a coordinator to disassociate a device from the PAN.
Ground Control Service Request. This use case describes a sample GC service request for the GetDevices API.
Posting Device Data. This use case describes the posting of data from a handheld unit 16 to the GCNS 74 for processing.
Processing Device Data. This use case describes the steps to process datagrams posted to GCNS 74. This processing involves delivering the payload of the datagram to a service handler (e.g., an application program).
Posting Service Handler Response or Request. This use case describes the steps to post a service response or request from an application program to the GCNS 74.
Processing Service Handler Response or Request. This use case describes the steps to process SendData requests posted to a Saturn Access Point (AP).
Security Violation. This use case describes the steps taken when a device service request does not meet the security requirements of the server.
Shutdown. This use case describes the steps taken when the Saturn Server is shutdown in an orderly fashion.
PAN ID Conflict Handling. This use case describes the steps to handle a PAN ID conflict. In this use case, the APMAC detects the conflict after receiving a beacon with a PAN ID equal to its own, but from a different source address. PAN ID conflicts can also be reported by a handheld unit.
It can be seen from the foregoing that a new and useful wireless classroom response system has been described. It should be noted that the use of the terms “a” and “an” and “the” and similar referents in the context of describing the invention (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. It should also be noted that recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein, and each separate value is incorporated into the specification as if it were individually recited herein.
All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illuminate the invention and does not pose a limitation on the scope of the invention unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the invention. Preferred embodiments of this invention are described herein, including the best mode known to the inventors for carrying out the invention. It should be understood that the illustrated embodiments are exemplary only, and should not be taken as limiting the scope of the invention.
This application claims the benefit of the filing date of U.S. Provisional Application No. 60/694,414, filed Jun. 27, 2005 and U.S. Provisional Application No. 60/729,428, filed Oct. 21, 2005, each of which are incorporated herein by reference in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
3245157 | Laviana | Apr 1966 | A |
4764120 | Griffin et al. | Aug 1988 | A |
5002491 | Abrahamson et al. | Mar 1991 | A |
5273437 | Caldwell et al. | Dec 1993 | A |
5379221 | Schulter et al. | Jan 1995 | A |
D377339 | Beruscha et al. | Jan 1997 | S |
RE35449 | Derks | Feb 1997 | E |
5724357 | Derks | Mar 1998 | A |
5823788 | Lemelson et al. | Oct 1998 | A |
D408381 | Nelson et al. | Apr 1999 | S |
6021119 | Derks et al. | Feb 2000 | A |
D431562 | Bhatia et al. | Oct 2000 | S |
D437314 | DeLeon | Feb 2001 | S |
D447729 | Song et al. | Sep 2001 | S |
D447740 | Johansson | Sep 2001 | S |
D448026 | Nicklos et al. | Sep 2001 | S |
D448375 | Walters et al. | Sep 2001 | S |
D452863 | Madsen et al. | Jan 2002 | S |
D469763 | Searby | Feb 2003 | S |
D480716 | Saikawa et al. | Oct 2003 | S |
D481037 | Searby | Oct 2003 | S |
6665000 | Buehler et al. | Dec 2003 | B1 |
6807395 | Iwazaki et al. | Oct 2004 | B2 |
D501643 | Strand et al. | Feb 2005 | S |
6895213 | Ward | May 2005 | B1 |
D523854 | Rinna et al. | Jun 2006 | S |
7360158 | Beeman | Apr 2008 | B1 |
20030073065 | Riggs | Apr 2003 | A1 |
20030074320 | Riggs | Apr 2003 | A1 |
20030095102 | Kraft et al. | May 2003 | A1 |
20030153263 | Glass et al. | Aug 2003 | A1 |
20030153321 | Glass et al. | Aug 2003 | A1 |
20030153347 | Glass et al. | Aug 2003 | A1 |
20030236891 | Glass et al. | Dec 2003 | A1 |
20040033478 | Knowles et al. | Feb 2004 | A1 |
20040072136 | Roschelle et al. | Apr 2004 | A1 |
20040115608 | Meyer et al. | Jun 2004 | A1 |
20040127208 | Nair et al. | Jul 2004 | A1 |
20040203563 | Menard | Oct 2004 | A1 |
20040205818 | Saruhashi et al. | Oct 2004 | A1 |
20040209634 | Hrastar | Oct 2004 | A1 |
20040219493 | Phillips | Nov 2004 | A1 |
20040229642 | Derks et al. | Nov 2004 | A1 |
20040248074 | Hoyashita et al. | Dec 2004 | A1 |
20050003338 | Norcott et al. | Jan 2005 | A1 |
20050070294 | Lyle et al. | Mar 2005 | A1 |
20050086261 | Mammone | Apr 2005 | A1 |
20050245295 | Lee et al. | Nov 2005 | A1 |
20050282535 | Chmaytelli et al. | Dec 2005 | A1 |
20050287981 | Hill | Dec 2005 | A1 |
20060057550 | Sahashi | Mar 2006 | A1 |
20060111103 | Jeong et al. | May 2006 | A1 |
20060183477 | Bocking et al. | Aug 2006 | A1 |
20060189311 | Cromer et al. | Aug 2006 | A1 |
20060204944 | Preskill | Sep 2006 | A1 |
20080052754 | Iga | Feb 2008 | A1 |
Number | Date | Country |
---|---|---|
0 843 432 | May 1998 | EP |
0 697 773 | Sep 2002 | EP |
1 337 127 | Aug 2003 | EP |
1 351 145 | Oct 2003 | EP |
1 427 228 | Jun 2004 | EP |
2 375 014 | Oct 2002 | GB |
WO 9806210 | Feb 1998 | WO |
WO 2004031488 | Apr 2004 | WO |
WO 2005039146 | Apr 2005 | WO |
Number | Date | Country | |
---|---|---|---|
20060294216 A1 | Dec 2006 | US |
Number | Date | Country | |
---|---|---|---|
60694414 | Jun 2005 | US | |
60729428 | Oct 2005 | US |