modbus_params.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #ifndef __MODBUS_PARAMS_H
  2. #define __MODBUS_PARAMS_H
  3. #include "mb.h"
  4. #include "mbport.h"
  5. #include "modbus.h"
  6. //#include "settings_sys.h"
  7. #include <stdbool.h>
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #define SWAP_16(x, y) {x[0] = y >> 8; x[1] = y & 0x0FF;}
  12. #define MB_PARAM_MAX 60//54
  13. //
  14. typedef struct {
  15. uint16_t reg;
  16. uint16_t size;
  17. uint8_t *param;
  18. bool f_activity;
  19. mb_delay_action_t (*set)(void);
  20. void (*get)(uint8_t* buf, uint8_t size);
  21. void (*check_handler)(void);
  22. } mb_param_t;
  23. //
  24. void mb_init_params(void);
  25. // Возвращает размер параметра в регистрах
  26. bool mb_find_param(uint16_t reg, uint16_t *index, uint16_t *size);
  27. //
  28. mb_delay_action_t mb_set_param(uint8_t *buf, uint16_t index);
  29. //
  30. void mb_get_param(uint8_t *buf, uint16_t index);
  31. // Установка адреса. Запрос без параметров.
  32. bool mb_set_addr(uint8_t *buf, uint8_t *addr);
  33. // Установка адреса по ID
  34. bool mb_set_addr_id(uint8_t *buf, uint8_t *addr);
  35. // Установка адреса по серийному номеру
  36. bool mb_set_addr_serial(uint8_t *buf, uint8_t *addr);
  37. // -------------------------------------------------------------------------- //
  38. // Установка параметров
  39. // -------------------------------------------------------------------------- //
  40. //
  41. mb_delay_action_t mb_set_time(void);
  42. //
  43. mb_delay_action_t mb_set_din_mode(void);
  44. //
  45. mb_delay_action_t mb_set_do(void);
  46. //
  47. mb_delay_action_t mb_set_do_mode(void);
  48. //
  49. mb_delay_action_t mb_password(void);
  50. // -------------------------------------------------------------------------- //
  51. // Проверка параметров //
  52. // -------------------------------------------------------------------------- //
  53. //
  54. void mb_check_dummy(void);
  55. #ifdef __cplusplus
  56. }
  57. #endif
  58. #endif // __MODBUS_PARAMS_H