blob: cf59d043e4e1dd554a5dd513f944d9024ce8f291 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Syncbase data model for Sensor Log.
//
// Every type <T> stored in Syncbase is defined as a pair of types, K<T> and
// V<T>, representing data stored in the key and value, respectively, in a
// single collection. K<T> types satisfy the PersistentDataKey interface,
// supporting conversion to and from the row key.
package sbmodel
import (
"time"
)
// devicecfg : <DevId>
// Measuring device handle. Master only.
type VDeviceCfg struct {
// Human-readable, not necessarily unique description of the device.
Desc string
// Syncbase instance publishing the syncgroup created by the device.
SgPublishSb string
}
type KDeviceCfg struct {
DevId string
}
// streamdef : <DevId>/<StreamId>
// Configures a stream of data to be measured.
type VStreamDef struct {
// Human-readable, not necessarily unique description of the stream.
Desc string
// Sampling configuration.
Sampler SamplerDef
// Flag to start and stop sampling.
Enabled bool
}
type KStreamDef struct {
DevId string
StreamId string
}
// Sampling script and polling frequency.
type SamplerDef struct {
// Shell script executed after every Interval, starting from Start.
// It should output a single data point, if available. A non-zero exit
// status or failure to parse the value will produce an error instead.
Script string
Start time.Time
Interval time.Duration
// TODO(ivanpi): Add timeout.
}
// sdata : <DevId>/<StreamId>/<Timestamp>
// Measured data value or error.
type KDataPoint struct {
DevId string
StreamId string
Timestamp time.Time
}
type VDataPoint union {
Value float64
Error string
}