triggers.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "triggers.h"
  2. #include "FreeRTOS.h"
  3. #include "task.h"
  4. #include "settings_api.h"
  5. #include <stdio.h>
  6. #include <math.h>
  7. //
  8. bool trig_low_value(float value, float lowlevel, float highlevel, float hyst,
  9. hyst_state_t *state)
  10. {
  11. (void)highlevel;
  12. if (*state == hyst_idle) {
  13. if (value <= lowlevel) {
  14. *state = hyst_down;
  15. return true;
  16. } else {
  17. return false;
  18. }
  19. } else if (*state == hyst_down) {
  20. if (value > (lowlevel + fabs(hyst))) {
  21. *state = hyst_idle;
  22. return false;
  23. } else {
  24. return true;
  25. }
  26. }
  27. return false;
  28. }
  29. bool trig_high_value(float value, float lowlevel, float highlevel, float hyst,
  30. hyst_state_t *state)
  31. {
  32. (void)lowlevel;
  33. if (*state == hyst_idle) {
  34. if (value >= highlevel) {
  35. *state = hyst_up;
  36. return true;
  37. } else {
  38. return false;
  39. }
  40. } else if (*state == hyst_up) {
  41. if (value < (highlevel - fabs(hyst))) {
  42. *state = hyst_idle;
  43. return false;
  44. } else {
  45. return true;
  46. }
  47. }
  48. return false;
  49. }