Tici light sensor (#2150)
	
		
	
				
					
				
			* more generic sensor base class
* add file sensor
* light sensor working
* correct sensor type
old-commit-hash: 7cc5710974
			
			
				vw-mqb-aeb
			
			
		
							parent
							
								
									d8eb799948
								
							
						
					
					
						commit
						23c8b41c67
					
				
				 8 changed files with 84 additions and 3 deletions
			
			
		@ -0,0 +1,15 @@ | 
				
			||||
#include <iostream> | 
				
			||||
#include <string> | 
				
			||||
 | 
				
			||||
#include "file_sensor.hpp" | 
				
			||||
 | 
				
			||||
FileSensor::FileSensor(std::string filename) : file(filename) { | 
				
			||||
} | 
				
			||||
 | 
				
			||||
int FileSensor::init() { | 
				
			||||
  return file.is_open() ? 0 : 1; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
FileSensor::~FileSensor(){ | 
				
			||||
  file.close(); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,19 @@ | 
				
			||||
#pragma once | 
				
			||||
 | 
				
			||||
#include <fstream> | 
				
			||||
#include <string> | 
				
			||||
 | 
				
			||||
#include "cereal/gen/cpp/log.capnp.h" | 
				
			||||
#include "sensors/sensor.hpp" | 
				
			||||
 | 
				
			||||
 | 
				
			||||
class FileSensor : public Sensor { | 
				
			||||
protected: | 
				
			||||
  std::ifstream file; | 
				
			||||
 | 
				
			||||
public: | 
				
			||||
  FileSensor(std::string filename); | 
				
			||||
  ~FileSensor(); | 
				
			||||
  int init(); | 
				
			||||
  virtual void get_event(cereal::SensorEventData::Builder &event) = 0; | 
				
			||||
}; | 
				
			||||
@ -0,0 +1,23 @@ | 
				
			||||
#include <iostream> | 
				
			||||
#include <string> | 
				
			||||
 | 
				
			||||
#include "common/timing.h" | 
				
			||||
 | 
				
			||||
#include "light_sensor.hpp" | 
				
			||||
#include "constants.hpp" | 
				
			||||
 | 
				
			||||
void LightSensor::get_event(cereal::SensorEventData::Builder &event){ | 
				
			||||
  uint64_t start_time = nanos_since_boot(); | 
				
			||||
  file.clear(); | 
				
			||||
  file.seekg(0); | 
				
			||||
 | 
				
			||||
  int value; | 
				
			||||
  file >> value; | 
				
			||||
 | 
				
			||||
  event.setSource(cereal::SensorEventData::SensorSource::RPR0521); | 
				
			||||
  event.setVersion(1); | 
				
			||||
  event.setSensor(SENSOR_LIGHT); | 
				
			||||
  event.setType(SENSOR_TYPE_LIGHT); | 
				
			||||
  event.setTimestamp(start_time); | 
				
			||||
  event.setLight(value); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,8 @@ | 
				
			||||
#pragma once | 
				
			||||
#include "file_sensor.hpp" | 
				
			||||
 | 
				
			||||
class LightSensor : public FileSensor { | 
				
			||||
public: | 
				
			||||
  LightSensor(std::string filename) : FileSensor(filename){}; | 
				
			||||
  void get_event(cereal::SensorEventData::Builder &event); | 
				
			||||
}; | 
				
			||||
@ -0,0 +1,9 @@ | 
				
			||||
#pragma once | 
				
			||||
 | 
				
			||||
#include "cereal/gen/cpp/log.capnp.h" | 
				
			||||
 | 
				
			||||
class Sensor { | 
				
			||||
public: | 
				
			||||
  virtual int init() = 0; | 
				
			||||
  virtual void get_event(cereal::SensorEventData::Builder &event) = 0; | 
				
			||||
}; | 
				
			||||
					Loading…
					
					
				
		Reference in new issue