From 77e9488cbb0c4c7dbb55470ec4cf2bbbe35a5d8d Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Sun, 22 Jul 2012 11:07:44 +0200 Subject: support logging into file --- log.vala | 39 +++++++++++++++++++++++++++++++++++++++ main.vala | 16 ++++++++++------ microcopter.cfg | 1 + 3 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 log.vala diff --git a/log.vala b/log.vala new file mode 100644 index 0000000..a4f9842 --- /dev/null +++ b/log.vala @@ -0,0 +1,39 @@ +namespace Log { + private unowned FileStream file; + private FileStream fileowner; + + public void init() { + set_file(cfg.get_string("config", "logfile")); + GLib.Log.set_default_handler(log_handler); + } + + private void log_handler(string? domain, LogLevelFlags flags, string message) { + TimeVal time = {0}; + time.get_current_time(); + string s = "%.10ld | %15s | %s\n".printf(time.tv_usec, domain, message); + + if(file != null) { + file.printf(s); + file.flush(); + } + } + + public bool set_file(string filename) { + switch(filename) { + case "stdout": + file = stdout; + break; + case "stderr": + file = stderr; + break; + default: + fileowner = FileStream.open(filename, "a"); + file = fileowner; + break; + } + + if(file == null) + return false; + return true; + } +} diff --git a/main.vala b/main.vala index 76fd3ab..d398367 100644 --- a/main.vala +++ b/main.vala @@ -27,9 +27,10 @@ Kinematics kinematics; bool loop() { try { /* TODO: get sensor values */ + /* TODO: get remote control values */ /* TODO: update kinematics */ - flightCtrl.process(); + //flightCtrl.process(); } catch(Error e) { stderr.printf("%s\n", e.message); } @@ -38,14 +39,17 @@ bool loop() { } int main(string[] args) { + Environment.set_prgname("microcopterd"); + try { cfg = new Config(); + Log.init(); - gyroscope = cfg.get_gyroscope(); - accelerometer = cfg.get_accelerometer(); - compass = cfg.get_compass(); - barometer = cfg.get_barometer(); - motorCtrl = cfg.get_motor_controller(); + //gyroscope = cfg.get_gyroscope(); + //accelerometer = cfg.get_accelerometer(); + //compass = cfg.get_compass(); + //barometer = cfg.get_barometer(); + //motorCtrl = cfg.get_motor_controller(); model = cfg.get_model(); receiver = cfg.get_receiver(); diff --git a/microcopter.cfg b/microcopter.cfg index 373c44a..70441a7 100644 --- a/microcopter.cfg +++ b/microcopter.cfg @@ -6,6 +6,7 @@ gyroscope = ITG3200 accelerometer = ADXL345 compass = HMC5843 barometer = BMP085 +logfile = microcopterd.log [ITG3200] i2c-adapter = 3 -- cgit v1.2.3