flexPTP 1.0
An IEEE 1588 PTP implementation designed for microcontrollers
Loading...
Searching...
No Matches
tlv.c
Go to the documentation of this file.
1#include "tlv.h"
2#include "flexptp/ptp_types.h"
3#include <string.h>
4
5uint16_t ptp_tlv_insert(void * dst, const PtpProfileTlvElement * pad, PtpMessageType mt, uint16_t maxLen) {
6 const PtpProfileTlvElement * iter = pad;
7 uint8_t * p = (uint8_t *)dst;
8 uint16_t lenLeft = maxLen;
9 uint16_t size = 0;
10
11 while (iter != NULL) {
12 if (iter->msgType == mt) {
13 if (iter->size > lenLeft) {
14 break;
15 }
16 memcpy(p, iter->data, iter->size);
17 p += iter->size;
18 lenLeft -= iter->size;
19 size += iter->size;
20 }
21 iter = iter->next;
22 }
23
24 return size;
25}
This module defines the fundamental PTP message and state machine type, flags, bitfields and the PTP ...
PtpMessageType
PTP packet type enumeration.
Definition: ptp_types.h:29
PTP profile additional data list element.
Definition: ptp_types.h:311
PtpMessageType msgType
Message type into which this extension should be inserted.
Definition: ptp_types.h:314
const void * data
Pointer to the data block.
Definition: ptp_types.h:312
struct _PtpProfileAdditionalData * next
Pointer to the next element of the list.
Definition: ptp_types.h:315
uint16_t size
Size of the data block.
Definition: ptp_types.h:313
uint16_t ptp_tlv_insert(void *dst, const PtpProfileTlvElement *pad, PtpMessageType mt, uint16_t maxLen)
Definition: tlv.c:5
This module implements the TLV-related functionality.