stub.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include "bus.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include "io.h"
  6. #ifdef __linux__
  7. #ifndef ARM
  8. int fifos[128];
  9. #endif
  10. #endif
  11. void write_pin(int pin, int value)
  12. {
  13. #ifdef __linux__
  14. #ifndef ARM
  15. char c = (value)?'1':'0';
  16. write(fifos[pin], &c, 1);
  17. #else
  18. digitalWrite(pin, value);
  19. #endif
  20. #else
  21. digitalWrite(pin, value);
  22. #endif
  23. }
  24. int read_pin(int pin)
  25. {
  26. #ifdef __linux__
  27. #ifndef ARM
  28. int f = fifos[pin];
  29. int c=0;
  30. while(read(fifos[pin], &c,1)<=0)usleep(10);
  31. return (c=='0')?0:1;
  32. #else
  33. return digitalRead(pin);
  34. #endif
  35. #else
  36. return digitalRead(pin);
  37. #endif
  38. }
  39. void init_read_pin(int d, int clk, int ack)
  40. {
  41. #ifdef __linux__
  42. #ifndef ARM
  43. fifos[d]=open("/tmp/fifodata", O_RDONLY | O_NONBLOCK);
  44. fifos[clk]=open("/tmp/fifoclk", O_RDONLY | O_NONBLOCK);
  45. fifos[ack]=open("/tmp/fifoack", O_WRONLY );
  46. #else
  47. pinMode(d, INPUT);
  48. pinMode(clk, INPUT);
  49. pinMode(ack, OUTPUT);
  50. #endif
  51. #else
  52. pinMode(d, INPUT);
  53. pinMode(clk, INPUT);
  54. pinMode(ack, OUTPUT);
  55. #endif
  56. }
  57. void init_write_pin(int d, int clk, int ack)
  58. {
  59. #ifdef __linux__
  60. #ifndef ARM
  61. fifos[d]=open("/tmp/fifoack", O_RDONLY | O_NONBLOCK);
  62. fifos[clk]=open("/tmp/fifodata", O_WRONLY);
  63. fifos[ack]=open("/tmp/fifoclk", O_WRONLY);
  64. #else
  65. pinMode(d, OUTPUT);
  66. pinMode(clk, OUTPUT);
  67. pinMode(ack, INPUT);
  68. #endif
  69. #else
  70. pinMode(d, OUTPUT);
  71. pinMode(clk, OUTPUT);
  72. pinMode(ack, INPUT);
  73. #endif
  74. }
  75. void free_fifo(int d, int clk, int ack)
  76. {
  77. #ifdef __linux__
  78. #ifndef ARM
  79. close(fifos[d]);
  80. close(fifos[clk]);
  81. close(fifos[ack]);
  82. #endif
  83. #endif
  84. }