On Mon, 24 Apr 2023 at 11:07, Stephan Wurm <stephan.w...@a-eberle.de> wrote:
> Set profile identification according to IEC 62439-3:2016 Appendix B, > when dataset comparison is set to iec62439-3. > This also distinguishes between single-attached (SAC) and doubly- > attached (DAC) clocks. > DAC usually stands for digital analog converter. https://en.wikipedia.org/wiki/Digital-to-analog_converter Perhaps you or IEC have a better acronym? Like DbAC? or CA2 and CA1? Erez > Signed-off-by: Stephan Wurm <stephan.w...@a-eberle.de> > --- > bmc.h | 1 + > config.c | 1 + > port.c | 25 ++++++++++++++++++++----- > 3 files changed, 22 insertions(+), 5 deletions(-) > > diff --git a/bmc.h b/bmc.h > index 2901cda..17e4934 100644 > --- a/bmc.h > +++ b/bmc.h > @@ -32,6 +32,7 @@ > enum { > DS_CMP_IEEE1588, > DS_CMP_G8275, > + DS_CMP_IEC62439_3, > }; > > /** > diff --git a/config.c b/config.c > index 28beb3b..f2da24f 100644 > --- a/config.c > +++ b/config.c > @@ -160,6 +160,7 @@ static struct config_enum clock_type_enu[] = { > static struct config_enum dataset_comp_enu[] = { > { "ieee1588", DS_CMP_IEEE1588 }, > { "G.8275.x", DS_CMP_G8275 }, > + { "iec62439-3", DS_CMP_IEC62439_3 }, > { NULL, 0 }, > }; > > diff --git a/port.c b/port.c > index c70e5b4..edf76da 100644 > --- a/port.c > +++ b/port.c > @@ -873,6 +873,8 @@ static const Octet profile_id_drr[] = {0x00, 0x1B, > 0x19, 0x00, 0x01, 0x00}; > static const Octet profile_id_p2p[] = {0x00, 0x1B, 0x19, 0x00, 0x02, > 0x00}; > static const Octet profile_id_8275_1[] = {0x00, 0x19, 0xA7, 0x01, 0x02, > 0x03}; > static const Octet profile_id_8275_2[] = {0x00, 0x19, 0xA7, 0x02, 0x01, > 0x02}; > +static const Octet profile_id_62439_3_SAC[] = {0x00, 0x0C, 0xCD, 0x00, > 0x01, 0x00}; > +static const Octet profile_id_62439_3_DAC[] = {0x00, 0x0C, 0xCD, 0x00, > 0x01, 0x30}; > > static int port_management_fill_response(struct port *target, > struct ptp_message *rsp, int id) > @@ -893,8 +895,10 @@ static int port_management_fill_response(struct port > *target, > struct port_ds_np *pdsnp; > struct tlv_extra *extra; > struct PortIdentity pid; > + const Octet *profile_id; > const char *ts_label; > struct portDS *pds; > + struct config *cfg; > uint16_t u16; > uint8_t *buf; > int datalen; > @@ -967,20 +971,31 @@ static int port_management_fill_response(struct port > *target, > buf += sizeof(struct PTPText) + > cd->userDescription->length; > > if (target->delayMechanism == DM_P2P) { > - memcpy(buf, profile_id_p2p, PROFILE_ID_LEN); > + cfg = clock_config(target->clock); > + if (config_get_int(cfg, NULL, > "dataset_comparison") == > + DS_CMP_IEC62439_3) { > + if (target->paired_port) { > + profile_id = > profile_id_62439_3_DAC; > + } else { > + profile_id = > profile_id_62439_3_SAC; > + } > + } else { > + profile_id = profile_id_p2p; > + } > } else { > - struct config *cfg = clock_config(target->clock); > + cfg = clock_config(target->clock); > if (config_get_int(cfg, NULL, > "dataset_comparison") == > DS_CMP_G8275) { > if (transport_type(target->trp) == > TRANS_IEEE_802_3) { > - memcpy(buf, profile_id_8275_1, > PROFILE_ID_LEN); > + profile_id = profile_id_8275_1; > } else { > - memcpy(buf, profile_id_8275_2, > PROFILE_ID_LEN); > + profile_id = profile_id_8275_2; > } > } else { > - memcpy(buf, profile_id_drr, > PROFILE_ID_LEN); > + profile_id = profile_id_drr; > } > } > + memcpy(buf, profile_id, PROFILE_ID_LEN); > buf += PROFILE_ID_LEN; > datalen = buf - tlv->data; > break; > > -- > 2.34.1 > > > > _______________________________________________ > Linuxptp-devel mailing list > Linuxptp-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linuxptp-devel >
_______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel