Module: xenomai-abe
Branch: analogy
Commit: 6ca30a54e1b21fe731a1c4c67bf15f1316d39328
URL:    
http://git.xenomai.org/?p=xenomai-abe.git;a=commit;h=6ca30a54e1b21fe731a1c4c67bf15f1316d39328

Author: Alexis Berlemont <alexis.berlem...@gmail.com>
Date:   Sun Jan 30 22:59:10 2011 +0100

analogy: [fake] add instruction callbacks for the loop subdevices

---

 ksrc/drivers/analogy/testing/fake.c |   37 +++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/ksrc/drivers/analogy/testing/fake.c 
b/ksrc/drivers/analogy/testing/fake.c
index 4a8ce5a..d8f8cda 100644
--- a/ksrc/drivers/analogy/testing/fake.c
+++ b/ksrc/drivers/analogy/testing/fake.c
@@ -42,8 +42,11 @@ struct ai_priv {
 };
 
 struct ao_ai2_priv {
+       /* Asynchronous loop stuff */
        uint8_t buffer[TRANSFER_SIZE];
        int count;
+       /* Synchronous loop stuff */
+       uint16_t insn_value;
 };
 
 struct dio_priv {
@@ -388,6 +391,38 @@ static int dio_insn_bits(a4l_subd_t *subd, a4l_kinsn_t 
*insn)
        return 0;
 }
 
+/* --- Synchronous AO + AI2 functions --- */
+
+int ao_insn_write(a4l_subd_t *subd, a4l_kinsn_t *insn)
+{
+       struct ao_ai2_priv *priv = (struct ao_ai2_priv *)subd->priv;
+       uint16_t *data = (uint16_t *)insn->data;        
+
+       /* Checks the buffer size */
+       if (insn->data_size != sizeof(uint16_t))
+               return -EINVAL;
+
+       /* Retrieves the value to memorize */
+       priv->insn_value = data[0];
+       
+       return 0;
+}
+
+int ai2_insn_read(a4l_subd_t *subd, a4l_kinsn_t *insn)
+{
+       struct ao_ai2_priv *priv = *((struct ao_ai2_priv **)subd->priv);
+       uint16_t *data = (uint16_t *)insn->data;
+
+       /* Checks the buffer size */
+       if (insn->data_size != sizeof(uint16_t))
+               return -EINVAL;
+       
+       /* Sets the memorized value */
+       data[0] = priv->insn_value;
+       
+       return 0;
+}
+
 /* --- Initialization functions --- */
 
 void setup_ai_subd(a4l_subd_t *subd)
@@ -427,6 +462,7 @@ void setup_ao_subd(a4l_subd_t *subd)
        subd->cancel = ao_cancel;
        subd->trigger = ao_trigger;
        subd->cmd_mask = &ao_cmd_mask;
+       subd->insn_write = ao_insn_write;
 }
 
 void setup_ai2_subd(a4l_subd_t *subd)
@@ -440,6 +476,7 @@ void setup_ai2_subd(a4l_subd_t *subd)
        subd->do_cmd = ai2_cmd;
        subd->cancel = ai2_cancel;
        subd->cmd_mask = &ai_cmd_mask;
+       subd->insn_read = ai2_insn_read;
 }
 
 /* --- Attach / detach functions ---  */


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to