original files of m241

This commit is contained in:
neelimap
2026-07-30 11:19:44 +05:30
parent 170c2b3f3a
commit afc7070c1f
12254 changed files with 7655111 additions and 0 deletions
@@ -0,0 +1,406 @@
/**
* @file ptpd_dep.h
*
* @brief External definitions for inclusion elsewhere.
*
*
*/
/*
modification history
--------------------
25jan17,xxy Add support for TSN Clocks and Timers (F6548)
01nov16,myt Add PTP features.(F7726)
15aug16,xxy Add PTP features.(F6696)
13jun16,xxy Add PTP one-step hardware Tx timeStamp
*/
#ifndef PTPD_DEP_H_
#define PTPD_DEP_H_
#ifdef RUNTIME_DEBUG
#undef PTPD_DBGV
#define PTPD_DBGV
#endif
/** \name System messages*/
/**\{*/
/* Syslog ordering. We define extra debug levels above LOG_DEBUG for internal use - but message() doesn't pass these to SysLog */
/* extended from <sys/syslog.h> */
#define LOG_DEBUG1 7
#define LOG_DEBUG2 8
#define LOG_DEBUG3 9
#define LOG_DEBUGV 9
#define EMERGENCY(x, ...) (void)printf( x, ##__VA_ARGS__)
#define ALERT(x, ...) (void)printf( x, ##__VA_ARGS__)
#define CRITICAL(x, ...) (void)printf( x, ##__VA_ARGS__)
#define ERROR_LOG(x, ...) (void)printf( x, ##__VA_ARGS__)
#define PERROR(x, ...) (void)printf( x " (strerror: %m)\n", ##__VA_ARGS__)
#define WARNING(x, ...) (void)printf( x, ##__VA_ARGS__)
#define NOTIFY(x, ...) (void)printf( x, ##__VA_ARGS__)
#define NOTICE(x, ...) (void)printf( x, ##__VA_ARGS__)
#define INFO(x, ...) (void)printf( x, ##__VA_ARGS__)
#include <assert.h>
#include <endCommon.h>
/*
list of per-module defines:
./dep/sys.c:#define PRINT_MAC_ADDRESSES
./dep/timer.c:#define US_TIMER_INTERVAL 125000
*/
#define USE_BINDTODEVICE
/* enable this line to show debug numbers in nanoseconds instead of microseconds
#define DEBUG_IN_NS */
#define DBG_UNIT_US (1000)
#define DBG_UNIT_NS (1)
#ifdef DEBUG_IN_NS
#define DBG_UNIT DBG_UNIT_NS
#else
#define DBG_UNIT DBG_UNIT_US
#endif
#ifdef PTPD_DBGV
#define DBGV(x, ...) printf( x, ##__VA_ARGS__)
#else
#define DBGV(x, ...)
#endif
/*
* new debug level DBG2:
* this is above DBG(), but below DBGV() (to avoid changing hundreds of lines)
*/
#ifdef PTPD_DBG2
#define DBG2(x, ...) printf( x, ##__VA_ARGS__)
#else
#define DBG2(x, ...)
#endif
#ifdef PTPD_DBG
#define DBG(x, ...) printf( x, ##__VA_ARGS__)
#else
#define DBG(x, ...)
#endif
/** \}*/
/** \name Endian corrections*/
/**\{*/
#if defined(PTPD_MSBF)
#define shift8(x,y) ( (x) << ((3-y)<<3) )
#define shift16(x,y) ( (x) << ((1-y)<<4) )
#elif defined(PTPD_LSBF)
#define shift8(x,y) ( (x) << ((y)<<3) )
#define shift16(x,y) ( (x) << ((y)<<4) )
#endif
#define flip16(x) htons(x)
#define flip32(x) htonl(x)
/* i don't know any target platforms that do not have htons and htonl,
but here are generic funtions just in case */
/*
#if defined(PTPD_MSBF)
#define flip16(x) (x)
#define flip32(x) (x)
#elif defined(PTPD_LSBF)
static inline Integer16 flip16(Integer16 x)
{
return (((x) >> 8) & 0x00ff) | (((x) << 8) & 0xff00);
}
static inline Integer32 flip32(x)
{
return (((x) >> 24) & 0x000000ff) | (((x) >> 8 ) & 0x0000ff00) |
(((x) << 8 ) & 0x00ff0000) | (((x) << 24) & 0xff000000);
}
#endif
*/
/** \}*/
/** \name Bit array manipulations*/
/**\{*/
#define getFlag(x,y) !!( *(UInteger8*)((x)+((y)<8?1:0)) & (1<<((y)<8?(y):(y)-8)) )
#define setFlag(x,y) ( *(UInteger8*)((x)+((y)<8?1:0)) |= 1<<((y)<8?(y):(y)-8) )
#define clearFlag(x,y) ( *(UInteger8*)((x)+((y)<8?1:0)) &= ~(1<<((y)<8?(y):(y)-8)) )
/** \}*/
/** \name msg.c
*-Pack and unpack PTP messages */
/**\{*/
void msgUnpackHeader(Octet * buf,MsgHeader*);
void msgUnpackAnnounce (Octet * buf,MsgAnnounce*);
void msgUnpackSync(Octet * buf,MsgSync*);
void msgUnpackFollowUp(Octet * buf,MsgFollowUp*);
void msgUnpackDelayReq(Octet * buf, MsgDelayReq * delayreq);
void msgUnpackDelayResp(Octet * buf,MsgDelayResp *);
void msgUnpackPDelayReq(Octet * buf,MsgPDelayReq*);
void msgUnpackPDelayResp(Octet * buf,MsgPDelayResp*);
void msgUnpackPDelayRespFollowUp(Octet * buf,MsgPDelayRespFollowUp*);
void msgUnpackManagement(Octet * buf,MsgManagement*, MsgHeader*, PtpClock *ptpClock);
void msgPackHeader(Octet * buf,PtpClock*);
void msgPackAnnounce(Octet * buf,PtpClock*,RunTimeOpts *);
void msgPackSync(Octet * buf,Timestamp*,PtpClock*,RunTimeOpts *);
void msgPackFollowUp(Octet * buf,Timestamp*,PtpClock*, const UInteger16,RunTimeOpts *);
void msgPackDelayReq(Octet * buf,Timestamp *,PtpClock *);
void msgPackDelayResp(Octet * buf,MsgHeader *,Timestamp *,PtpClock *,RunTimeOpts *);
void msgPackPDelayReq(Octet * buf,Timestamp*,PtpClock*,RunTimeOpts *);
void msgPackPDelayResp(Octet * buf,MsgHeader*,Timestamp*,PtpClock*);
void msgPackPDelayRespFollowUp(Octet * buf,MsgHeader*,Timestamp*,PtpClock*, const UInteger16);
void msgPackManagement(Octet * buf,MsgManagement*,PtpClock*);
void msgPackManagementRespAck(Octet *,MsgManagement*,PtpClock*);
void msgPackManagementTLV(Octet *,MsgManagement*, PtpClock*);
void msgPackManagementErrorStatusTLV(Octet *,MsgManagement*,PtpClock*);
void freeMMErrorStatusTLV(ManagementTLV*);
void freeMMTLV(ManagementTLV*);
void msgDump(PtpClock *ptpClock);
void msgDebugHeader(MsgHeader *header);
void msgDebugSync(MsgSync *sync);
void msgDebugAnnounce(MsgAnnounce *announce);
void msgDebugDelayReq(MsgDelayReq *req);
void msgDebugFollowUp(MsgFollowUp *follow);
void msgDebugDelayResp(MsgDelayResp *resp);
void msgDebugManagement(MsgManagement *manage);
void copyClockIdentity( ClockIdentity dest, ClockIdentity src);
void copyPortIdentity( PortIdentity * dest, PortIdentity * src);
void unpackMsgManagement(Octet *, MsgManagement*, PtpClock*);
void packMsgManagement(MsgManagement*, Octet *);
void unpackManagementTLV(Octet*, MsgManagement*, PtpClock*);
void packManagementTLV(ManagementTLV*, Octet*);
void freeManagementTLV(MsgManagement*);
void unpackMMClockDescription( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMClockDescription( MsgManagement*, Octet*);
void freeMMClockDescription( MMClockDescription*);
void unpackMMUserDescription( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMUserDescription( MsgManagement*, Octet*);
void freeMMUserDescription( MMUserDescription*);
void unpackMMErrorStatus( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMErrorStatus( MsgManagement*, Octet*);
void freeMMErrorStatus( MMErrorStatus*);
void unpackMMInitialize( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMInitialize( MsgManagement*, Octet*);
void unpackMMDefaultDataSet( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMDefaultDataSet( MsgManagement*, Octet*);
void unpackMMCurrentDataSet( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMCurrentDataSet( MsgManagement*, Octet*);
void unpackMMParentDataSet( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMParentDataSet( MsgManagement*, Octet*);
void unpackMMTimePropertiesDataSet( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMTimePropertiesDataSet( MsgManagement*, Octet*);
void unpackMMPortDataSet( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMPortDataSet( MsgManagement*, Octet*);
void unpackMMPriority1( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMPriority1( MsgManagement*, Octet*);
void unpackMMPriority2( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMPriority2( MsgManagement*, Octet*);
void unpackMMDomain( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMDomain( MsgManagement*, Octet*);
void unpackMMSlaveOnly( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMSlaveOnly( MsgManagement*, Octet* );
void unpackMMLogAnnounceInterval( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMLogAnnounceInterval( MsgManagement*, Octet*);
void unpackMMAnnounceReceiptTimeout( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMAnnounceReceiptTimeout( MsgManagement*, Octet*);
void unpackMMLogSyncInterval( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMLogSyncInterval( MsgManagement*, Octet*);
void unpackMMVersionNumber( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMVersionNumber( MsgManagement*, Octet*);
void unpackMMTime( Octet* buf, MsgManagement*, PtpClock * );
UInteger16 packMMTime( MsgManagement*, Octet*);
void unpackMMClockAccuracy( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMClockAccuracy( MsgManagement*, Octet*);
void unpackMMUtcProperties( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMUtcProperties( MsgManagement*, Octet*);
void unpackMMTraceabilityProperties( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMTraceabilityProperties( MsgManagement*, Octet*);
void unpackMMDelayMechanism( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMDelayMechanism( MsgManagement*, Octet*);
void unpackMMLogMinPdelayReqInterval( Octet* buf, MsgManagement*, PtpClock* );
UInteger16 packMMLogMinPdelayReqInterval( MsgManagement*, Octet*);
void unpackPortAddress( Octet* buf, PortAddress*, PtpClock*);
void packPortAddress( PortAddress*, Octet*);
void freePortAddress( PortAddress*);
void unpackPTPText( Octet* buf, PTPText*, PtpClock*);
void packPTPText( PTPText*, Octet*);
void freePTPText( PTPText*);
void unpackPhysicalAddress( Octet* buf, PhysicalAddress*, PtpClock*);
void packPhysicalAddress( PhysicalAddress*, Octet*);
void freePhysicalAddress( PhysicalAddress*);
void unpackClockIdentity( Octet* buf, ClockIdentity *c, PtpClock*);
void packClockIdentity( ClockIdentity *c, Octet* buf);
void freeClockIdentity( ClockIdentity *c);
void unpackClockQuality( Octet* buf, ClockQuality *c, PtpClock*);
void packClockQuality( ClockQuality *c, Octet* buf);
void freeClockQuality( ClockQuality *c);
void unpackTimeInterval( Octet* buf, TimeInterval *t, PtpClock*);
void packTimeInterval( TimeInterval *t, Octet* buf);
void freeTimeInterval( TimeInterval *t);
void unpackPortIdentity( Octet* buf, PortIdentity *p, PtpClock*);
void packPortIdentity( PortIdentity *p, Octet* buf);
void freePortIdentity( PortIdentity *p);
void unpackTimestamp( Octet* buf, Timestamp *t, PtpClock*);
void packTimestamp( Timestamp *t, Octet* buf);
void freeTimestamp( Timestamp *t);
UInteger16 msgPackManagementResponse(Octet * buf,MsgHeader*,MsgManagement*,PtpClock*);
/** \}*/
/** \name net.c (Unix API dependent)
* -Init network stuff, send and receive datas*/
/**\{*/
Boolean netInit(NetPath*,RunTimeOpts*,PtpClock*);
Boolean netShutdown(RunTimeOpts*,NetPath*);
int netSelect(RunTimeOpts *,TimeInternal*,NetPath*,fd_set*);
ssize_t netRecvEvent(Octet*,TimeInternal*,NetPath*,int);
ssize_t netRecvGeneral(Octet*,NetPath*);
ssize_t netSendEvent(Octet*,UInteger16,PtpClock*,RunTimeOpts*,Integer32,TimeInternal*);
ssize_t netSendGeneral(Octet*,UInteger16,NetPath*,RunTimeOpts*,Integer32 );
ssize_t netSendPeerGeneral(Octet*,UInteger16,NetPath*,RunTimeOpts*);
ssize_t netSendPeerEvent(Octet*,UInteger16,PtpClock*,RunTimeOpts*,TimeInternal*);
Boolean netRefreshIGMP(NetPath *, RunTimeOpts *, PtpClock *);
Boolean hostLookup(const char* hostname, Integer32* addr);
int netSetSysTime (void * ethCookie, struct timespec * ts);
int netGetSysTime (void * ethCookie, struct timespec * ts);
int netAdjustFreq (void * ethCookie, INT32 adj);
int netGetSysIntervalTime (void * ethCookie, IEEE1588_TIMER_SYNC * sync);
int netGetSysSyncDelayTime (void * ethCookie, long * delay);
int netSetSysIntervalTime (void * ethCookie, IEEE1588_TIMER_SYNC * sync);
int netSetSysTimeAdd (void *ethCookie, INT64 * counts);
int netEnableHwTimeStamp (void * ethCookie, UINT8 enable);
Boolean netGetHwTimeStampCap (void * ethCookie);
Boolean netGetHwOneStepCap (void * ethCookie);
/** \}*/
/** \name servo.c
* -Clock servo*/
/**\{*/
void initClock(RunTimeOpts*,PtpClock*);
void updatePeerDelay (one_way_delay_filter*, RunTimeOpts*,PtpClock*,TimeInternal*,Boolean);
void updateDelay (one_way_delay_filter*, RunTimeOpts*, PtpClock*,TimeInternal*);
void updateOffset(TimeInternal*,TimeInternal*,
offset_from_master_filter*,RunTimeOpts*,PtpClock*,TimeInternal*);
void updateClock(RunTimeOpts*,PtpClock*);
void servo_perform_clock_step(RunTimeOpts * rtOpts, PtpClock * ptpClock);
PtpClock * ptpdStartup(int slaveMaster, RunTimeOpts * rtOpts);
void ptpdShutdown(RunTimeOpts * rtOpts, PtpClock * ptpClock);
void enable_runtime_debug(void );
void disable_runtime_debug(void );
#define D_ON do { enable_runtime_debug(); } while (0);
#define D_OFF do { disable_runtime_debug( ); } while (0);
/** \}*/
/** \name sys.c (Unix API dependent)
* -Manage timing system API*/
/**\{*/
/* new debug methods to debug time variables */
char *time2st(const TimeInternal * p);
void DBG_time(const char *name, const TimeInternal p);
void logStatistics(RunTimeOpts *rtOpts, PtpClock *ptpClock);
void ShowStatistics(RunTimeOpts * rtOpts, PtpClock * ptpClock);
void displayStatus(const RunTimeOpts *rtOpts,PtpClock *ptpClock, const char *prefixMessage);
void displayPortIdentity(PortIdentity *port, const char *prefixMessage);
void getTime(RunTimeOpts * ,TimeInternal*);
void setTime(RunTimeOpts * ,TimeInternal*);
double getRand(void);
#ifndef HAVE_SYS_TIMEX_H
void adjTime(Integer32);
#else
void adjFreq_wrapper(RunTimeOpts * rtOpts, PtpClock * ptpClock, double adj);
Boolean adjFreq(RunTimeOpts *,double);
double getAdjFreq(void);
void informClockSource(PtpClock* ptpClock);
/* Observed drift save / recovery functions */
void restoreDrift(PtpClock * ptpClock, RunTimeOpts * rtOpts, Boolean quiet);
void saveDrift(PtpClock * ptpClock, RunTimeOpts * rtOpts, Boolean quiet);
/* Helper function to manage ntpadjtime / adjtimex flags */
void setTimexFlags(int flags, Boolean quiet);
void unsetTimexFlags(int flags, Boolean quiet);
int getTimexFlags(void);
Boolean checkTimexFlags(int flags);
#endif /* HAVE_SYS_TIMEX_H */
#ifndef _WRS_CONFIG_ARCH_i86
double trunc(double x);
double round(double x);
#endif
/** \}*/
/** \name timer.c (Unix API dependent)
* -Handle with timers*/
/**\{*/
void initTimer(void);
void timerUpdate(IntervalTimer*);
void timerStop(UInteger16,IntervalTimer*);
/* void timerStart(UInteger16,UInteger16,IntervalTimer*); */
/* R135 patch: we went back to floating point periods (for less than 1s )*/
void timerStart(UInteger16 index, float interval, IntervalTimer * itimer);
/* Version with randomized backoff */
void timerStart_random(UInteger16 index, float interval, IntervalTimer * itimer);
Boolean timerExpired(UInteger16,IntervalTimer*);
Boolean timerStopped(UInteger16,IntervalTimer*);
Boolean timerRunning(UInteger16,IntervalTimer*);
/** \}*/
void
reset_operator_messages(RunTimeOpts * rtOpts, PtpClock * ptpClock);
void setupPIservo(PIservo* servo, const RunTimeOpts* rtOpts);
void resetPIservo(PIservo* servo);
double runPIservo(RunTimeOpts * rtOpts, PIservo* servo, const Integer32 input);
#endif /*PTPD_DEP_H_*/