parameters.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #pragma once
  2. #include <stdint.h>
  3. #define MAX_PUBLIC_KEYS 10
  4. #define PUBLIC_KEY_LEN 32
  5. #define PARAM_NAME_MAX_LEN 16
  6. class Parameters {
  7. public:
  8. uint8_t lock_level;
  9. uint8_t can_node;
  10. char uas_id[21] = "ABCD123456789";
  11. float wifi_nan_rate;
  12. float bt4_rate;
  13. float bt5_rate;
  14. /*
  15. header at the front of storage
  16. */
  17. struct header {
  18. uint32_t format_version;
  19. uint32_t flash_counter;
  20. uint32_t crc;
  21. struct public_key {
  22. uint8_t key[PUBLIC_KEY_LEN];
  23. } public_keys[MAX_PUBLIC_KEYS];
  24. uint32_t reserved[30];
  25. };
  26. enum class ParamType {
  27. NONE=0,
  28. UINT8=1,
  29. FLOAT=2,
  30. CHAR20=3,
  31. };
  32. struct Param {
  33. char name[PARAM_NAME_MAX_LEN+1];
  34. ParamType ptype;
  35. const void *ptr;
  36. float default_value;
  37. float min_value;
  38. float max_value;
  39. void set(float v) const;
  40. void set(uint8_t v) const;
  41. void set(const char *v) const;
  42. uint8_t get_uint8() const;
  43. float get_float() const;
  44. const char *get_char20() const;
  45. };
  46. static const struct Param params[];
  47. static const Param *find(const char *name);
  48. static const Param *find_by_index(uint16_t idx);
  49. bool dirty;
  50. void load_defaults(void);
  51. };
  52. extern Parameters g;