ec_eoe.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (c) 2025, sakumisu
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #ifndef EC_EOE_H
  7. #define EC_EOE_H
  8. #ifdef CONFIG_EC_EOE
  9. #include "netif/etharp.h"
  10. #include "lwip/netif.h"
  11. #include "lwip/pbuf.h"
  12. #include "lwip/tcpip.h"
  13. #include "lwip/ip_addr.h"
  14. struct ec_eoe_ip_param {
  15. uint8_t hostname[EC_MAX_HOSTNAME_SIZE];
  16. const char *ipv4_addr_str;
  17. const char *ipv4_mask_str;
  18. const char *ipv4_gw_str;
  19. const char *dns_server_str;
  20. uint8_t mac_addr[6];
  21. };
  22. typedef struct ec_eoe {
  23. ec_master_t *master;
  24. uint16_t slave_index;
  25. ec_datagram_t tx_datagram;
  26. ec_datagram_t rx_datagram;
  27. uint8_t tx_buffer[1536];
  28. uint8_t rx_buffer[1536];
  29. uint32_t max_data_size;
  30. ec_osal_mq_t tx_pbuf_mq;
  31. uint8_t tx_frame_number;
  32. uint8_t tx_fragment_number;
  33. uint32_t tx_offset;
  34. uint32_t tx_total_size;
  35. struct pbuf *tx_pbuf;
  36. uint8_t rx_frame_number;
  37. uint8_t rx_fragment_number;
  38. uint32_t rx_offset;
  39. uint32_t rx_total_size;
  40. struct pbuf *rx_pbuf;
  41. struct ec_eoe_ip_param master_ip_param;
  42. struct ec_eoe_ip_param slave_ip_param;
  43. bool initialized;
  44. ec_osal_thread_t txrx_thread;
  45. ec_osal_mutex_t txrx_mutex;
  46. struct netif netif;
  47. } ec_eoe_t;
  48. int ec_eoe_start(ec_eoe_t *eoe,
  49. ec_master_t *master,
  50. uint16_t slave_index,
  51. struct ec_eoe_ip_param *master_ip_param,
  52. struct ec_eoe_ip_param *slave_ip_param);
  53. #endif
  54. #endif