blob: 63096317e5fdea80b39c997329745626486ed2ec [file] [log] [blame]
Jiri Simsad7616c92015-03-24 23:44:30 -07001// Copyright 2015 The Vanadium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Todd Wang8c4e5cc2015-04-09 11:30:52 -07005// Package device defines interfaces for configuration of the Vanadium device
6// manager. The subdirectories implement the v.io/v23/services/device
7// interfaces.
Bogdan Capritac87a9142014-07-21 10:38:13 -07008//
Bogdan Caprita2b219362014-12-09 17:03:33 -08009// The device manager is a server that is expected to run on every
Suharsh Sivakumar1d38dc02015-03-16 17:53:29 -070010// Vanadium-enabled device, and it handles both device management and management
Bogdan Caprita2b219362014-12-09 17:03:33 -080011// of the applications running on the device.
Bogdan Capritac87a9142014-07-21 10:38:13 -070012//
Bogdan Caprita2b219362014-12-09 17:03:33 -080013// The device manager is responsible for installing, updating, and launching
Bogdan Capritac87a9142014-07-21 10:38:13 -070014// applications. It therefore sets up a footprint on the local filesystem, both
15// to maintain its internal state, and to provide applications with their own
16// private workspaces.
17//
Bogdan Caprita2b219362014-12-09 17:03:33 -080018// The device manager is responsible for updating itself. The mechanism to do
19// so is implementation-dependent, though each device manager expects to be
20// supplied with the file path of a symbolic link file, which the device manager
21// will then update to point to the updated version of itself before terminating
22// itself. The device manager should therefore be launched via this symbolic
23// link to enable auto-updates. To enable updates, in addition to the symbolic
24// link path, the device manager needs to be told what its application metadata
25// is (such as command-line arguments and environment variables, i.e. the
Todd Wang94c9d0b2015-04-01 14:27:00 -070026// application envelope defined in the v.io/v23/services/application package),
27// as well as the object name for where it can fetch an updated envelope, and
28// the local filesystem path for its previous version (for rollbacks).
Bogdan Capritac87a9142014-07-21 10:38:13 -070029//
Bogdan Caprita2b219362014-12-09 17:03:33 -080030// Finally, the device manager needs to know its own object name, so it can pass
Bogdan Capritac87a9142014-07-21 10:38:13 -070031// that along to the applications that it starts.
32//
Bogdan Caprita2b219362014-12-09 17:03:33 -080033// The impl subpackage contains the implementation of the device manager
34// service.
Bogdan Capritac87a9142014-07-21 10:38:13 -070035//
36// The config subpackage encapsulates the configuration settings that form the
Bogdan Caprita2b219362014-12-09 17:03:33 -080037// device manager service's 'contract' with its environment.
Bogdan Capritac87a9142014-07-21 10:38:13 -070038//
Bogdan Capritaa456f472014-12-10 10:18:03 -080039// The deviced subpackage contains the main driver.
40package device