Language used C#
Technologies used .NET framework
Brief Description The Race Data Transfer component is responsible for transporting race data from the track to the No Limits trailer and web site over the internet via .NET XML web services.
 
Full Description The Race Data Transfer component is responsible for transporting, archiving, and replaying race data from cars and the track. Car data is stored and transferred in a format such as a PI Research outing file. Race data is typically stored in “AMB” format, which is a series of records indicating when each car crosses a specific part of the track, such as the start/finish line.

The Race Data Transfer component is comprised of a server that runs at the track and a client that runs at the trailer (or at a web site host or other location).

The Race Data server monitors files at the track, identifies changes, and transmits them to the client via .NET Remoting.

The client receives the changes and creates or updates local files, making them available to the Race API.

Implementation Race Data Transfer is comprised of a server component running at the track, and a client component running at the trailer. The server component registers change notification on the data files. The client component makes requests for these changes from the server.

On getting a file change notification, Server identifies the changes by comparing it with the previous version and writes the changes on the port in an XML format. It then copies the current contents of the file to a backup file for comparison with a future file version. The client reads the changes sent by the server and updates the files/database running at the client location.

Interfaces exposed None
Coolest part using .NET Remoting and FileChangeNotificationHandler
Source Files ServerApp.cs The server class that registers the Change notification on the data files. On getting changes, opens the port for the client and writes the changes.
  ClientApp.cs The client class that pings the server for changes. On finding the open port, it connects to the server, reads the data sent on the port (data changes) and updates the local files accordingly.
  Click here for server source code and client source code, subject to the End User License Agreement.

Language used C#
 
Technologies used .NET framework, SQL Server 2000
Brief Description The Race API supplies race data to the applications in the “No Limits” trailer as well as future web and standalone applications.
Full Description The Race API allows applications to subscribe to car and/or track data. Applications can select which data (cars and channels) they are interested in. The API then supplies this data to the application. Replayed races are streamed according to original data timing so that they appear as live races to the application.

The Race API gets data from PI car data files and AMB streams, or from a SQL database, and either supplies this to the applications in real time or stores it in a SQL database for replay at a later time.
In addition to dynamic car and track data, The Race API also provides access to “static” data, such as car sponsors, team names, track maps, track, sector lengths, etc.

This application has 3 components: RaceRemotingServer.exe, RaceInfoBLL.dll and RaceDataAccessComponent.dll.

RaceRemotingServer opens Uri’s for Clients to call the OpenSocketConnection method defined in the RaceInfoBLL. After getting the Client request, the server opens a new port for the client and returns the port number to client. The server also registers to the file change notification event for the RaceSettings.xml file. After the RaceSelector starts/stops the race, the changes are saved into this file. The server the gets the change notification event and takes appropriate action (starts/stops sending the data).
The server also opens Uri for client to call the static data API’s to get the static car data (like make, engine, driver names etc).

Interfaces exposed OpenSocketConnection – the clients call this API to subscribe to cars and channels. The server opens a new port for the requesting client and returns the port number. After sending the port number, the server starts a new thread for writing the data stream on the opened socket. The client can connect to the port opened by the server and starts getting the data stream.
Coolest part Using .NET Remoting and Multithreading, and the FileChangeNotificationHandler provided by .NET to listen to changes in the file.
Source Files RaceInfoBLL.DLL:
SocketServerApp.cs
This class defines method that will be called by the clients for getting the data stream. The server on receiving the Client requests opens a new port and returns the port number. Also registers the File Change notification event with RaceSettings.xml. After getting notified for file changes, either starts sending the data (by calling the RaceDataAccessComponent) or stops sending the data.
  StaticDataRequests.cs This class defines methods for returning the static data required by the clients (Car/Driver and Race details).
 
  RaceDataAccessComponent.DLL:
StoredProcedure.cs
This class is used for creating the connection and running the Stored Procedures. It reads the Connection settings from the config file and creates a new Connection. Also defines overloaded function “Run” to run the Stored Procedures.
  DataAccess.cs This class is used for returning the data required by the RaceInfoBLL component. It creates the SqlParameter array and passes it to the StoredProcedure class. After receiving the data, returns it back to the calling API.
 
  RaceRemotingServer.EXE:
RaceRemotingServer.cs
This class opens 2 new Uri’s for calling the SocketServerApp and StaticDataRequests.
  Click here for source code, subject to the End User License Agreement.

Language used VB.NET
Technologies used .NET framework, ASP.NET, XML
Brief Description The Race Selector allows the “No Limits” trailer operator to choose a race to run, to start and stop it, and to synchronize it with audio and video feeds if needed.
Full Description The Race Selector allows the trailer operator to choose among races which have been archived, or directly from a live data stream (synchronously with a real race). It also allows some synchronization capabilities between video and data streams.

This application displays the Races stored in the Database. User can select the race and press the start button. Pressing the button starts the race, opens the RaceSettings.xml file and saves the changes. If race is already going on, then Start button is disabled and Stop button is enabled.

Interfaces exposed none
Coolest part Using the .NET XML Parsing API’s.
Source Files RaceSelect.aspx This web application is used for starting and stopping the Race. Also it lets the operator delay the data stream for synchronization.
  RaceSettings.xml The settings on the RaceSelect.aspx page gets saved to this file.
  Click here for source code, subject to the End User License Agreement.