From: Jérémie D. <Ba...@us...> - 2011-03-12 21:00:35
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 4e54c2a25cca9ff42042dce62420deea8545d6b7 (commit) from 7f386be7746f720e4fd46aae6adb0e960870b021 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4e54c2a25cca9ff42042dce62420deea8545d6b7 Author: Jérémie Dimino <je...@di...> Date: Sat Mar 12 21:59:31 2011 +0100 [info] implement the driver ----------------------------------------------------------------------- Changes: diff --git a/info/control2011/_oasis b/info/control2011/_oasis index 42abfbc..8c23795 100644 --- a/info/control2011/_oasis +++ b/info/control2011/_oasis @@ -51,6 +51,17 @@ Library "krobot-interfaces" Krobot_interface_can # +-------------------------------------------------------------------+ +# | The driver | +# +-------------------------------------------------------------------+ + +Executable "krobot-driver" + Path: src/driver + Install: true + CompiledObject: best + MainIs: krobot_driver.ml + BuildDepends: krobot.can-bus, lwt.syntax + +# +-------------------------------------------------------------------+ # | Tools | # +-------------------------------------------------------------------+ diff --git a/info/control2011/_tags b/info/control2011/_tags index cc76a51..fedbe71 100644 --- a/info/control2011/_tags +++ b/info/control2011/_tags @@ -2,7 +2,7 @@ <src/interfaces/*.ml>: -syntax_camlp4o # OASIS_START -# DO NOT EDIT (digest: 4facc269f4400da42699b09bf69a0df9) +# DO NOT EDIT (digest: 714f24c8f8cd15c9da08a3b463f1d17c) # Library krobot "src/lib": include <src/lib/*.ml{,i}>: pkg_obus @@ -22,6 +22,19 @@ "src/can/can_stubs.c": pkg_lwt.unix "src/can/can_stubs.c": pkg_lwt.syntax "src/can/can_stubs.c": pkg_krobot.interfaces +# Executable krobot-driver +<src/driver/krobot_driver.{native,byte}>: use_krobot-can-bus +<src/driver/krobot_driver.{native,byte}>: use_krobot +<src/driver/krobot_driver.{native,byte}>: pkg_obus +<src/driver/krobot_driver.{native,byte}>: pkg_lwt.unix +<src/driver/krobot_driver.{native,byte}>: pkg_lwt.syntax +<src/driver/krobot_driver.{native,byte}>: pkg_krobot.interfaces +<src/driver/*.ml{,i}>: use_krobot-can-bus +<src/driver/*.ml{,i}>: use_krobot +<src/driver/*.ml{,i}>: pkg_obus +<src/driver/*.ml{,i}>: pkg_lwt.unix +<src/driver/*.ml{,i}>: pkg_lwt.syntax +<src/driver/*.ml{,i}>: pkg_krobot.interfaces # Library krobot-interfaces "src/interfaces": include <src/interfaces/*.ml{,i}>: pkg_obus diff --git a/info/control2011/setup.ml b/info/control2011/setup.ml index 2e91799..e003f47 100644 --- a/info/control2011/setup.ml +++ b/info/control2011/setup.ml @@ -1,7 +1,7 @@ (* setup.ml generated for the first time by OASIS v0.2.0~alpha1 *) (* OASIS_START *) -(* DO NOT EDIT (digest: 0dc16674bcb1ea7bbf1df154eca87808) *) +(* DO NOT EDIT (digest: 003c94954a115118c0158a0ee154e6cc) *) (* Regenerated by OASIS v0.2.0 Visit http://oasis.forge.ocamlcore.org for more information and @@ -5152,6 +5152,33 @@ let setup_t = doc_build_tools = [ExternalTool "ocamlbuild"; ExternalTool "ocamldoc"]; }); + Executable + ({ + cs_name = "krobot-driver"; + cs_data = PropList.Data.create (); + cs_plugin_data = []; + }, + { + bs_build = [(OASISExpr.EBool true, true)]; + bs_install = [(OASISExpr.EBool true, true)]; + bs_path = "src/driver"; + bs_compiled_object = Best; + bs_build_depends = + [ + InternalLibrary "krobot-can-bus"; + FindlibPackage ("lwt.syntax", None) + ]; + bs_build_tools = [ExternalTool "ocamlbuild"]; + bs_c_sources = []; + bs_data_files = []; + bs_ccopt = [(OASISExpr.EBool true, [])]; + bs_cclib = [(OASISExpr.EBool true, [])]; + bs_dlllib = [(OASISExpr.EBool true, [])]; + bs_dllpath = [(OASISExpr.EBool true, [])]; + bs_byteopt = [(OASISExpr.EBool true, [])]; + bs_nativeopt = [(OASISExpr.EBool true, [])]; + }, + {exec_custom = false; exec_main_is = "krobot_driver.ml"; }); Library ({ cs_name = "krobot-interfaces"; diff --git a/info/control2011/src/driver/krobot_driver.ml b/info/control2011/src/driver/krobot_driver.ml new file mode 100644 index 0000000..71d36ff --- /dev/null +++ b/info/control2011/src/driver/krobot_driver.ml @@ -0,0 +1,36 @@ +(* + * krobot_driver.ml + * ---------------- + * Copyright : (c) 2011, Jeremie Dimino <je...@di...> + * Licence : BSD3 + * + * This file is a part of [kro]bot. + *) + +(* The interface between the CAN and D-Bus *) + +open Lwt +open Lwt_react + +lwt () = + if Array.length Sys.argv <> 2 then begin + print_endline "usage: krobot-driver <interface>"; + exit 2; + end; + + (* Open the CAN bus. *) + lwt can = Krobot_can_bus.open_can Sys.argv.(1) in + + (* Open the D-Bus connection. *) + lwt bus = OBus_bus.of_addresses [OBus_address.make "unix" [("abstract", "krobot")]] in + + (* D-Bus --> CAN *) + lwt () = + OBus_signal.connect (Krobot_can.frames bus) + >|= E.notify_s (Krobot_can_bus.send can) + in + + (* CAN --> D-Bus *) + while_lwt true do + Krobot_can_bus.recv can >>= Krobot_can.send bus + done hooks/post-receive -- krobot |