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 {
} MsgDelayResp;
/* PdelayReq Message (table 29, page 131) -- not used in ppsi */
struct MsgPDelayReq {
typedef struct MsgPDelayReq {
Timestamp originTimestamp;
};
} MsgPDelayReq;
/* PdelayResp Message (table 30, page 131) -- not used in ppsi */
struct MsgPDelayResp {
typedef struct MsgPDelayResp {
Timestamp requestReceiptTimestamp;
PortIdentity requestingPortIdentity;
};
} MsgPDelayResp;
/* PdelayRespFollowUp Message (table 31, page 132) -- not used in ppsi */
struct MsgPDelayRespFollowUp {
typedef struct MsgPDelayRespFollowUp {
Timestamp responseOriginTimestamp;
PortIdentity requestingPortIdentity;
};
} MsgPDelayRespFollowUp;
/* Signaling Message (table 33, page 133) */
typedef struct MsgSignaling {
......
......@@ -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_resp(void *buf, MsgDelayResp *resp);
/* 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,
MsgHeader * hdr,
Timestamp * prec_orig_tstamp);
extern void msg_pack_pdelay_resp(struct pp_instance *ppi, MsgHeader * hdr,
Timestamp * rcv_tstamp);
extern void msg_unpack_pdelay_resp(void *buf, MsgPDelayResp * presp);
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,
Timestamp * orig_tstamp);
......
......@@ -262,6 +262,22 @@ void msg_unpack_follow_up(void *buf, MsgFollowUp *flwup)
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 */
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)
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 */
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));
}
/* 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] = {
[PPM_SYNC] = "sync",
[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