ec_sii.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (c) 2025, sakumisu
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #ifndef EC_SII_H
  7. #define EC_SII_H
  8. typedef struct ec_slave ec_slave_t;
  9. typedef struct ec_sii {
  10. // Non-category data
  11. uint16_t aliasaddr; /**< Configured station alias. */
  12. uint32_t vendor_id; /**< Vendor ID. */
  13. uint32_t product_code; /**< Vendor-specific product code. */
  14. uint32_t revision_number; /**< Revision number. */
  15. uint32_t serial_number; /**< Serial number. */
  16. uint16_t boot_rx_mailbox_offset; /**< Bootstrap receive mailbox address. */
  17. uint16_t boot_rx_mailbox_size; /**< Bootstrap receive mailbox size. */
  18. uint16_t boot_tx_mailbox_offset; /**< Bootstrap transmit mailbox address. */
  19. uint16_t boot_tx_mailbox_size; /**< Bootstrap transmit mailbox size. */
  20. uint16_t std_rx_mailbox_offset; /**< Standard receive mailbox address. */
  21. uint16_t std_rx_mailbox_size; /**< Standard receive mailbox size. */
  22. uint16_t std_tx_mailbox_offset; /**< Standard transmit mailbox address. */
  23. uint16_t std_tx_mailbox_size; /**< Standard transmit mailbox size. */
  24. uint16_t mailbox_protocols; /**< Supported mailbox protocols. */
  25. // General
  26. ec_sii_general_t general;
  27. bool has_general;
  28. // Strings
  29. char **strings; /**< Strings in SII categories. */
  30. uint32_t string_count; /**< Number of SII strings. */
  31. } ec_sii_t;
  32. int ec_sii_read(ec_master_t *master, uint16_t slave_index, ec_datagram_t *datagram, uint16_t woffset, uint32_t *buf, uint32_t len);
  33. int ec_sii_write(ec_master_t *master, uint16_t slave_index, ec_datagram_t *datagram, uint16_t woffset, const uint16_t *buf, uint32_t len);
  34. #endif