Commit 50650d32 authored by Cesar Prados's avatar Cesar Prados Committed by Alessandro Rubini

pdelay/msg: add unpack pdelay functions

Signed-off-by: Cesar Prados's avatarC.Prados <c.prados@gsi.de>
parent e6aec3d0
...@@ -179,22 +179,21 @@ typedef struct MsgDelayResp { ...@@ -179,22 +179,21 @@ typedef struct MsgDelayResp {
} MsgDelayResp; } MsgDelayResp;
/* PdelayReq Message (table 29, page 131) -- not used in ppsi */ /* PdelayReq Message (table 29, page 131) -- not used in ppsi */
struct MsgPDelayReq { typedef struct MsgPDelayReq {
Timestamp originTimestamp; Timestamp originTimestamp;
} MsgPDelayReq;
};
/* PdelayResp Message (table 30, page 131) -- not used in ppsi */ /* PdelayResp Message (table 30, page 131) -- not used in ppsi */
struct MsgPDelayResp { typedef struct MsgPDelayResp {
Timestamp requestReceiptTimestamp; Timestamp requestReceiptTimestamp;
PortIdentity requestingPortIdentity; PortIdentity requestingPortIdentity;
}; } MsgPDelayResp;
/* PdelayRespFollowUp Message (table 31, page 132) -- not used in ppsi */ /* PdelayRespFollowUp Message (table 31, page 132) -- not used in ppsi */
struct MsgPDelayRespFollowUp { typedef struct MsgPDelayRespFollowUp {
Timestamp responseOriginTimestamp; Timestamp responseOriginTimestamp;
PortIdentity requestingPortIdentity; PortIdentity requestingPortIdentity;
}; } MsgPDelayRespFollowUp;
/* Signaling Message (table 33, page 133) */ /* Signaling Message (table 33, page 133) */
typedef struct MsgSignaling { typedef struct MsgSignaling {
......
...@@ -393,11 +393,16 @@ extern void msg_unpack_follow_up(void *buf, MsgFollowUp *flwup); ...@@ -393,11 +393,16 @@ extern void msg_unpack_follow_up(void *buf, MsgFollowUp *flwup);
extern void msg_unpack_delay_req(void *buf, MsgDelayReq *delay_req); extern void msg_unpack_delay_req(void *buf, MsgDelayReq *delay_req);
extern void msg_unpack_delay_resp(void *buf, MsgDelayResp *resp); extern void msg_unpack_delay_resp(void *buf, MsgDelayResp *resp);
/* pdelay */ /* pdelay */
extern void msg_unpack_pdelay_resp_follow_up(void *buf,
MsgPDelayRespFollowUp *
pdelay_resp_flwup);
extern void msg_pack_pdelay_resp_follow_up(struct pp_instance *ppi, extern void msg_pack_pdelay_resp_follow_up(struct pp_instance *ppi,
MsgHeader * hdr, MsgHeader * hdr,
Timestamp * prec_orig_tstamp); Timestamp * prec_orig_tstamp);
extern void msg_pack_pdelay_resp(struct pp_instance *ppi, MsgHeader * hdr, extern void msg_unpack_pdelay_resp(void *buf, MsgPDelayResp * presp);
Timestamp * rcv_tstamp); extern void msg_pack_pdelay_resp(struct pp_instance *ppi,
MsgHeader * hdr, Timestamp * rcv_tstamp);
extern void msg_unpack_pdelay_req(void *buf, MsgPDelayReq * pdelay_req);
extern void msg_pack_pdelay_req(struct pp_instance *ppi, extern void msg_pack_pdelay_req(struct pp_instance *ppi,
Timestamp * orig_tstamp); Timestamp * orig_tstamp);
......
...@@ -262,6 +262,22 @@ void msg_unpack_follow_up(void *buf, MsgFollowUp *flwup) ...@@ -262,6 +262,22 @@ void msg_unpack_follow_up(void *buf, MsgFollowUp *flwup)
htonl(*(UInteger32 *) (buf + 40)); htonl(*(UInteger32 *) (buf + 40));
} }
/* Unpack PDelay Resp FollowUp message from in buffer of ppi to msgtmp.follow */
void msg_unpack_pdelay_resp_follow_up(void *buf,
MsgPDelayRespFollowUp * pdelay_resp_flwup)
{
pdelay_resp_flwup->responseOriginTimestamp.secondsField.msb =
htons(*(UInteger16 *) (buf + 34));
pdelay_resp_flwup->responseOriginTimestamp.secondsField.lsb =
htonl(*(UInteger32 *) (buf + 36));
pdelay_resp_flwup->responseOriginTimestamp.nanosecondsField =
htonl(*(UInteger32 *) (buf + 40));
memcpy(&pdelay_resp_flwup->requestingPortIdentity.clockIdentity,
(buf + 44), PP_CLOCK_IDENTITY_LENGTH);
pdelay_resp_flwup->requestingPortIdentity.portNumber =
htons(*(UInteger16 *) (buf + 52));
}
/* pack DelayReq message into out buffer of ppi */ /* pack DelayReq message into out buffer of ppi */
static void msg_pack_delay_req(struct pp_instance *ppi, Timestamp *orig_tstamp) static void msg_pack_delay_req(struct pp_instance *ppi, Timestamp *orig_tstamp)
{ {
...@@ -408,6 +424,17 @@ void msg_unpack_delay_req(void *buf, MsgDelayReq *delay_req) ...@@ -408,6 +424,17 @@ void msg_unpack_delay_req(void *buf, MsgDelayReq *delay_req)
htonl(*(UInteger32 *) (buf + 40)); htonl(*(UInteger32 *) (buf + 40));
} }
/* Unpack PDelayReq message from in buffer of ppi to msgtmp.req */
void msg_unpack_pdelay_req(void *buf, MsgPDelayReq * pdelay_req)
{
pdelay_req->originTimestamp.secondsField.msb =
htons(*(UInteger16 *) (buf + 34));
pdelay_req->originTimestamp.secondsField.lsb =
htonl(*(UInteger32 *) (buf + 36));
pdelay_req->originTimestamp.nanosecondsField =
htonl(*(UInteger32 *) (buf + 40));
}
/* Unpack delayResp message from IN buffer of ppi to msgtmp.presp */ /* Unpack delayResp message from IN buffer of ppi to msgtmp.presp */
void msg_unpack_delay_resp(void *buf, MsgDelayResp *resp) void msg_unpack_delay_resp(void *buf, MsgDelayResp *resp)
{ {
...@@ -423,6 +450,21 @@ void msg_unpack_delay_resp(void *buf, MsgDelayResp *resp) ...@@ -423,6 +450,21 @@ void msg_unpack_delay_resp(void *buf, MsgDelayResp *resp)
htons(*(UInteger16 *) (buf + 52)); htons(*(UInteger16 *) (buf + 52));
} }
/* Unpack PDelayResp message from IN buffer of ppi to msgtmp.presp */
void msg_unpack_pdelay_resp(void *buf, MsgPDelayResp * presp)
{
presp->requestReceiptTimestamp.secondsField.msb =
htons(*(UInteger16 *) (buf + 34));
presp->requestReceiptTimestamp.secondsField.lsb =
htonl(*(UInteger32 *) (buf + 36));
presp->requestReceiptTimestamp.nanosecondsField =
htonl(*(UInteger32 *) (buf + 40));
memcpy(&presp->requestingPortIdentity.clockIdentity,
(buf + 44), PP_CLOCK_IDENTITY_LENGTH);
presp->requestingPortIdentity.portNumber =
htons(*(UInteger16 *) (buf + 52));
}
const char const *pp_msg_names[16] = { const char const *pp_msg_names[16] = {
[PPM_SYNC] = "sync", [PPM_SYNC] = "sync",
[PPM_DELAY_REQ] = "delay_req", [PPM_DELAY_REQ] = "delay_req",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment