code: def sensordata(self, event):
          
  
          if len(self.datatypes) == 0:
              return
  
          data = event.data
          timestamp = event.timestamp
          # bus = event.bus
  
          # TODO: What about multiple busses? That is prepared, but how exactly
          # should they be handled?
  
          self.log("New incoming navdata:", data, lvl=verbose)
  
          for name, value in data.items():
              if name in self.datatypes:
                  ref = self.datatypes[name]
                  self.sensed[name] = ref
  
                  if ref.lastvalue != str(value):
                      # self.log("Reference outdated:", ref._fields)
  
                      item = {
                          'value': value,
                          'timestamp': timestamp,
                          'type': name
                      }
  
                      self.referenceframe[name] = value
                      self.referenceages[name] = timestamp
  
                      # self.log("Subscriptions:", self.subscriptions, ref.name)
                      if ref.name in self.subscriptions:
  
                          packet = {
                              'component': 'hfos.navdata.sensors',
                              'action': 'update',
                              'data': item
                          }
  
                          self.log("Serving update: ", packet, lvl=verbose)
                          for uuid in self.subscriptions[ref.name]:
                              self.log("Serving to ", uuid, lvl=events)
                              self.fireEvent(send(uuid, packet),
                                             'hfosweb')
  
                      # self.log("New item: ", item)
                      sensordata = objectmodels['sensordata'](item)
                      # self.log("Value entry:", sensordata._fields)
  
                      if ref.record:
                          self.log("Recording updated reference:",
                                   sensordata._fields)
                          sensordata.save()
  
                      ref.lastvalue = str(value)
                      ref.timestamp = timestamp
              else:
                  self.log("Unknown sensor data received!", data, lvl=warn)
docs: Generates a new reference frame from incoming sensordata
  
          :param event: new sensordata to be merged into referenceframe