This is an old revision of the document!
Access Server Client API
Currently the trackwork server and the file storage server are accessed through separate APIs. The new Access Server will combine both pieces of functionality into one client side API.
Feature Requirements
Single authentication for all APIs including:
Support unauthenticated connections for GPS devices
Only allow GPS/RTK position uploads.
Will the TMM replacements require firmware downloands? (No, I think this is more complicated than it's worth, MC)
Control access to APIs dynamically.
Upon successful authentication the server should return enough information to allow the client to determine what that user has access to.
For example, a customer may have paid for track storage but not file storage.
Forward/Backward compatibility between the client and the server
The
API should be abstract enough that changes to the underlying implementation do not have a major impact on the client application.
Optimized data transfer
8 hours of data for a single GPS is roughly 30,000 points.
Customers will probably want to download an entire day's worth of data at once.
(MC) This may be implied, but we also want to be able to download small chunks at a time (updating tracks)
(MM) If we optimize for large data transfer, small should be perform fast as well.
Transfer only the data needed, not everything in the database.
Transfer data in a reasonably compact format (probably not XML).
-
Windows Mobile Support
High Level Implementation Details
Functional Components
I propose that we break the new Access Client into three areas of functionality:
Library functions
Server functions
-
Library Functions
Initialize the library and any underlying socket and 3rd party code.
Shutdown the library and any underlying socket and 3rd party code.
Provides a function to return server instances based on connection parameters (currently host name and port).
General Server Functions
Connects to an instance of the server (based on host name and port).
Authenticates client
Manages allowed APIs based on the authentication state and the user configuration return from the server.
API Functions
API functions provide access to the actual data stored on the server.
-
-
Functions for uploading/downloading GPS positions.
Functions for managing tracks (move, delete, etc.)
Functions for accessing GPS/Device statistics
-
-
-
Admin
API (may only be implemented in the Java library)
Functions for managing customers
Functions for managing users
Functions for adding/assigning devices to customers
Functions for managing TMM configuration
Functions for managing the AccessServer
Functions for monitoring/trouble shooting the AccessServer