ptp4tsync.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*!
  2. * Copyright (C) Fraunhofer-Institut for Photonic Microsystems (IPMS)
  3. * Maria-Reiche-Str. 2
  4. * 01109 Dresden
  5. *
  6. * Unauthorized copying of this file, via any medium is strictly prohibited
  7. * Proprietary and confidential
  8. *
  9. * \file ptp4tsync.h
  10. * \author zimmerli
  11. * \date 2020-01-17
  12. * \brief PTP (802.1as) for TSN-EP (TSYNC)
  13. *
  14. */
  15. #ifndef PTP4TSYNC_H_
  16. #define PTP4TSYNC_H_
  17. #include <kernel/base/rtc.h>
  18. #include <kernel/driver/tsn_ipms/ep/tsn_ctrl_drv.h>
  19. enum ptp4sync_sync_e {
  20. PTP4SYNC_PRIMARY,
  21. PTP4SYNC_FALLBACK,
  22. PTP4SYNC_NONE
  23. };
  24. enum ptp4sync_port_role_e {
  25. PTP4SYNC_ROLE_DYNAMIC,
  26. PTP4SYNC_ROLE_MASTER,
  27. PTP4SYNC_ROLE_SLAVE,
  28. PTP4SYNC_ROLE_PASSIVE,
  29. PTP4SYNC_ROLE_DISABLED
  30. };
  31. void ptp4sync_start(struct rtc_s *rtc, uint8_t *mac_addr);
  32. void ptp4sync_add_domain(uint8_t domainNumber, uint8_t gmPrio1, uint32_t port_num, enum ptp4sync_sync_e type);
  33. void ptp4sync_rm_domain(uint8_t domainNumber);
  34. void ptp4sync_add_sync(uint8_t sourceDomainNumber, uint8_t targetDomainNumber);
  35. void ptp4sync_rm_sync(uint8_t sourceDomainNumber);
  36. void ptp4sync_add_port(uint8_t domainNumber, uint16_t portIndex, struct netdev_s *device);
  37. void ptp4sync_rm_port(uint8_t domainNumber, uint16_t portIndex);
  38. void ptp4sync_set_traffic_prio(uint8_t domainNumber, uint8_t prio);
  39. void ptp4sync_set_gm_prio1(uint8_t domainNumber, uint8_t prio1);
  40. void ptp4sync_set_rtcsync_mode(uint8_t domainNumber, enum ptp4sync_sync_e syncMode);
  41. void ptp4sync_set_ext_port_state(uint8_t domainNumber, uint32_t index, enum ptp4sync_port_role_e role);
  42. void ptp4sync_get_state(uint8_t domainNumber, uint64_t *gmid, uint16_t *gmchanges, int32_t *gmoffset);
  43. void ptp4sync_get_port_state(uint8_t domainNumber, uint32_t index, uint8_t *ascapable, uint8_t *portstate, uint16_t *pdelay);
  44. void ptp4sync_list(void);
  45. void ptp4sync_status(uint8_t domainNumber);
  46. #endif /* PTP4TSYNC_H_ */