backend.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "backend.h"
  2. #include "bus.h"
  3. #ifdef __linux__
  4. #include "config.h"
  5. int data[3]={0};
  6. #include "io.h"
  7. int do_pid_file(config_t* cfg)
  8. {
  9. const char* file = config_get_string(cfg, "misc.pidfile");
  10. FILE* f;
  11. int x;
  12. f=fopen(file, "w+");
  13. if(!f)
  14. {
  15. fprintf(stderr, "Erreur unable to open pid file '%s'\n", file);
  16. perror(" ");
  17. return -1;
  18. }
  19. x=getpid();
  20. fprintf(f, "%d\n", x);
  21. fclose(f);
  22. return 0;
  23. }
  24. int main_loop()
  25. {
  26. config_t cfg;
  27. bus_t bus;
  28. pthread_t thread;
  29. FILE* file = NULL;
  30. struct timeval tv;
  31. time(NULL);
  32. setup_io();
  33. config_init(&cfg, "config.cfg");
  34. config_print(&cfg);
  35. bus_init_recv(&bus, config_get_int(&cfg, "pin.data"),
  36. config_get_int(&cfg, "pin.clk"),
  37. config_get_int(&cfg, "pin.ack"));
  38. init_read_pin(config_get_int(&cfg, "pin.data"),
  39. config_get_int(&cfg, "pin.clk"),
  40. config_get_int(&cfg, "pin.ack"));
  41. pthread_create(&thread, NULL, bus_recv_thread, &bus);
  42. while(1)
  43. {
  44. uint32_t c;
  45. double w;
  46. char buffer[16];
  47. bus_read(&bus, &c, 4);
  48. printf("%ld' s %ld ms %'d us \n", c/1000000, c%1000000/1000, c%1000);
  49. w=3600.0/(((double)c)/1000000.0);
  50. printf("\t%.2lf W %.2lf A\n\n", w, w/220);
  51. }
  52. }
  53. #endif