ctrl_bonds.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "ctrl_bonds.h"
  2. #include <Adafruit_LittleFS.h>
  3. #include <InternalFileSystem.h>
  4. #include <string.h>
  5. using namespace Adafruit_LittleFS_Namespace;
  6. CtrlBond g_bond[NBOND];
  7. volatile bool g_bondDirty = false;
  8. #define CTRLBOND_FILE "/ctrlbond.bin"
  9. bool ctrlRecEmpty(const uint8_t *r)
  10. {
  11. for (int i = 0; i < 24; i++)
  12. if (r[i])
  13. return false;
  14. return true;
  15. }
  16. void saveCtrlBonds()
  17. {
  18. InternalFS.remove(CTRLBOND_FILE);
  19. File f(InternalFS);
  20. if (f.open(CTRLBOND_FILE, FILE_O_WRITE)) {
  21. for (int i = 0; i < NBOND; i++) {
  22. uint8_t u = g_bond[i].used ? 1 : 0;
  23. f.write(&u, 1);
  24. f.write(g_bond[i].rec, 24);
  25. }
  26. f.close();
  27. }
  28. }
  29. void loadCtrlBonds()
  30. {
  31. File f(InternalFS);
  32. if (f.open(CTRLBOND_FILE, FILE_O_READ))
  33. for (int i = 0; i < NBOND; i++) {
  34. uint8_t u = 0;
  35. if (f.read(&u, 1) == 1) {
  36. g_bond[i].used = u;
  37. f.read(g_bond[i].rec, 24);
  38. }
  39. }
  40. f.close();
  41. }
  42. int ctrlBondMatch(const uint8_t *proteus_uuid, const uint8_t *ibex_uuid)
  43. {
  44. for (int i = 0; i < NBOND; i++) {
  45. if (!g_bond[i].used)
  46. continue;
  47. if (memcmp(g_bond[i].rec + 0, proteus_uuid, 4) == 0 &&
  48. memcmp(g_bond[i].rec + 4, ibex_uuid, 4) == 0)
  49. return i;
  50. }
  51. return -1;
  52. }