CINEMA’s UbiComp Subsystem Stefan Berger and Henning Schulzrinne Department of Computer Science Columbia University
Outline Idea User Interfaces Software Components Architecture Summary
Idea Use SIP to enable ubiquitous computing scenario Set up environment according to the preferences of the user Device control via SIP MESSAGE Tie CINEMA to building infrastructure User must authenticate Swipe Cards iButtons … other unique credentials like biometrics
Administrator Pages Room administration Create and delete rooms Define default SIP URL for phone in a room Declare names of computers in this room Room administration page Maps to ‘Rooms’ table Room access control Give users access to rooms Room Access Control Page Maps to ‘RoomACL’ table
Administrator Pages Global configuration page Shows much read-only status information Where and whether reader software is running Allows to specify scripts that are to be run in different rooms Configuration information for Pingtel Xpressa Setup Page Much info from ‘ConfigData’ table Pages currently accessible by everyone Will be upgraded to administrator level
User Pages Credential Management Add any supported credential you want iButtons or swipe cards Credential Management Page Maps to ‘Credentials’ table Device Preferences Page Configure device to your preferences Device Preferences Page Info stored into ‘ConfigData’ table
User Pages Room Phone Preferences Default entry automatically redirects to default phone Redirect phone calls to a phone in the room Allows to set timeout when room goes back to ‘neutral’ Room Phone Preferences Page Information stored in ‘RoomPrefs’ table
User Pages Tracking other users Who is where? Who is in which room? Data is ‘byproduct’ of authentication Use to ‘log out’ from room Tracking User Page Maps to ‘last_seen’ table
Software Components ‘DoorDaemon’ To be deployed in every room Processes card or iButton data Maps credential data to user name Runs scripts relevant for room Gets name of scripts from database table Writes its own parameters into configuration table Allows other software to find it Runs as server or client Client: needs to poll – bad!
Device Scripts Dynamically ‘sourced’ by DoorDaemon Return namespace when ‘sourced’ Need to implement interface $ns_action(): called when new user enters a room Arguments: user’s address, room $ns_cleanup(): Called every few seconds; script must decide what to do Argument: room
Software Components iButton reader Polls iButton reader hardware every 3 seconds Capable of running in server or client mode Client mode avoids polling by ‘DoorDaemon’ Writes its parameters into configuration table – for status page Can be started in ‘web’ mode Used to add credentials to the system Only one such iButton reader possible
Software Components Swipe card reader Uses software-interrupt to read card data from serial port Supports also PS/2 card readers Report different patterns PS/2 reader behaves like keyboard; needs GUI for ‘focus’ Otherwise similar to iButton reader software
Architecture Credentials table HTTP Server Credentials.CGI iButton Reader Software (TCP Server) Command: Read iButton Data iButton Data User X Add Credential Data for User X Adding Credentials to the System Credential Data
Architecture Card Number Credential Reader Software Serial Number Door Daemon Last-seen table Credentials table Map(Credential data) = User X User X in IRT-LAB Configuration Data Script names Device Control Scripts Credential Data Detecting a User Execute scripts IRT-LAB
Future all-SIP Architecture SIP Presence Agent (SIPd) Card Data Credential Reader Software iButton Data SIP PUBLISH: User X in ‘IRT-LAB’ SIP NOTIFY: User X in ‘IRT-LAB’ SIP NOTIFY: User X’s preferences SIP MESSAGE: Play Radio Station 5 HTTP: Add device line for User X, Configure ringer tone, speed dial, etc. SIP MESSAGE: Turn Light On IRT Lab Services at IRT- LAB: Radio, Light, IP- Phone SIP-devctrl
SIP for device control Basic SIP stack REGISTER Method- handling functions INVITESUBSCRIBENOTIFYMESSAGE Sipstack2.0 Dispatcher Downwards: API function calls Upwards: Callbacks Slink-e devctrl Message Content Extraction De-multiplexing Registered callbacks XYZ module Port 5060
Other Software Slink-E library (slinke.tcl) Controls Slink-E Learns and replays IR sequences IR sequences associated with a ‘button’ Load and Store IR sequences Controls the radio in the lab Used on top of sip-devctrl Sends IR sequences according to SIP MESSAGE content
Other Software iButton library Enables TCL to be used with iButton Allows to Read serial number Read/Write access to data on iButton Read iButton parameter and type information i.e., memory size
Summary & Future Work Prototype in working condition Combine card reader software pieces Two serial ports Possibly combine with ‘Door Daemon’ Extend ‘Door Daemon’ Go towards all-SIP architecture Use SIP’s PUBLISH method for user’s location publication
END
Tables Credentials Stores user credential data User’s address MD5 hash of card ID Some card info describing type of card Rooms RoomID: Name of room Default SIP phone URI Extended to host machine names in a room
Tables Last seen table User’s address Location Date user entered location Lastseen.tcl for table management Expiration of users Who is in a room Lookups in table
Tables ConfigData Table of attributes and values Attributes defined for all kinds of information For distributed applications Was easier to use SQL than Service Discovery…