]> rtime.felk.cvut.cz Git - sysless.git/commitdiff
Alternative function to insert SPI message at queue head.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Sun, 4 Dec 2011 21:46:52 +0000 (22:46 +0100)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Sun, 4 Dec 2011 21:46:52 +0000 (22:46 +0100)
This allows immediate retransmit of current message
from transfer callback function.

Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
libs4c/spi/spi_drv.c
libs4c/spi/spi_drv.h

index 4e578e81e89cf83abba6f91e5baa498f5643aea0..6dff73f1383ab875311f0d62c2b5c4870b83232e 100644 (file)
@@ -42,6 +42,19 @@ int spi_msg_rq_ins(spi_drv_t *ifc, spi_msg_head_t *msg)
   return 0;
 }
 
+int spi_msg_rq_ins_head(spi_drv_t *ifc, spi_msg_head_t *msg)
+{
+  spi_isr_lock_level_t saveif;
+
+  if(!ifc) return -1;
+  if(!(ifc->flags&SPI_IFC_ON)) return -1;
+  spi_isr_lock(saveif);
+  spi_rq_queue_ins_head(ifc,msg);
+  spi_isr_unlock(saveif);
+  ifc->ctrl_fnc(ifc,SPI_CTRL_WAKE_RQ,NULL);
+  return 0;
+}
+
 int spi_msg_rq_rem(spi_msg_head_t *msg)
 {
   int act=0;
index 448f42af21866cbde4b19fb2aa926099b7411108..cc5a38416309f246c8d3d3af44dad3e43b627279 100644 (file)
@@ -62,6 +62,7 @@ typedef struct spi_drv {
 
 spi_drv_t *spi_find_drv(char *name, int number);
 int spi_msg_rq_ins(spi_drv_t *ifc, spi_msg_head_t *msg);
+int spi_msg_rq_ins_head(spi_drv_t *ifc, spi_msg_head_t *msg);
 int spi_msg_rq_rem(spi_msg_head_t *msg);
 int spi_flush_all(spi_drv_t *ifc);
 int spi_transfer(spi_drv_t *ifc, int addr, int rq_len,