Counter hierarchy
=================

Service		unique name
Interface	net.connman.Counter
Object path	freely definable

Methods		void Release()

			This method gets called when the service daemon
			unregisters the counter. A counter can use it to do
			cleanup tasks. There is no need to unregister the
			counter, because when this method gets called it has
			already been unregistered.

		void Usage(object service, dict home, dict roaming)

			This signal indicates a change in the counter values
			for the service object. The counter is reset by calling
			the service ResetCounters method.

			When registering a new counter this method will be
			called once with all details for "home" and "roaming"
			counters filled in. Every further method call will
			only include the changed values.

			When "home" counter is active, then "roaming" counter
			will contain an empty dictionary and vise-versa.

			The dictionary argument contains the following entries:

				RX.Packets

					Total number of packets received.

				TX.Bytes

					Total number of packets sent.

				RX.Bytes

					Total number of bytes received.

				TX.Bytes

					Total number of bytes sent.

				RX.Errors

					Total number of erronous packets
					received.

				TX.Errors

					Total number of erronous packets
					sent.

				RX.Dropped

					Total number of dropped packets
					while receiving.

				TX.Dropped

					Total number of dropped packets
					while sending.

				Time

					Total number of seconds online.
