- def isset(state, key):
- value = getattr(state, key)
- return any([x!=None for x in value])
- def get(items, key):
- points = [ Datapoint(s.time, getattr(s,key)) \
- for s in items if isset(s,key) ]
- stream = Datastream(id=key)
- stream.datapoints = points
- return stream
+ def split(items, limit):
+ split = {}
+ count = 0
+ sensors = {'acc': ['x','y','z'],
+ 'mag': ['x','y','z'],
+ 'tch': ['p','d'],
+ 'lgt': [''],
+ 'a2d': ['0','1','2','3','4','5']}
+ for state in items:
+ for sns in sensors:
+ data = getattr(state, sns)
+ for i in range(len(data)):
+ if data[i] == None:
+ continue
+ if count >= limit:
+ print('upload: cropping upload')
+ return split
+ chan = sns + sensors[sns][i]
+ if not split.has_key(chan):
+ split[chan] = []
+ point = Datapoint(state.time, data[i])
+ split[chan].append(point)
+ count += 1
+ return split
+