如何解决C中的gPTP入口时间戳
我一直在尝试实现 gPTP 事件消息(SYNC 和/或 FOLLOW_UP)消息的入口时间戳。基本上,有两个时间敏感网络(TSN)。即。设备端和网络端,在 5GS 中实现。因此 gPTP 数据包从 NWTT-->DSTT 流出。算法应该是所有事件消息都由 NWTT 加上时间戳并发送到 DSTT。然后据此可以计算出链路延迟。
这是我的代码,在创建套接字并接收缓冲区中的数据包并将它们复制到 PTP 结构标头后,我有点卡住了。任何帮助或指导表示赞赏。
硬件时间戳需要添加到 gPTP 事件消息中。
int main() {
int sock;
sock = socket(AF_PACKET,SOCK_RAW,htons(ETH_P_1588));
if (sock == -1) {
perror("socket");
exit(EXIT_FAILURE);
}
unsigned char *buffer = (unsigned char *) malloc(65537);
memset(buffer,65537);
struct sockaddr sockaddr;
int sockaddr_len = sizeof(sockaddr);
int buffer_len;
buffer_len = recvfrom(sock,buffer,65537,&sockaddr,(socklen_t *) &sockaddr_len);
if (buffer_len == -1) {
perror("recvfrom");
exit(EXIT_FAILURE);
}
struct timespec ts;
clock_gettime(CLOCK_REALTIME,(struct timespec *) &ts);
struct ptpv2_header *ptpv2Header = (struct ptpv2_header *) buffer;
// TODO
return EXIT_SUCCESS;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。