forked from 0xha0/datalink_repo
Initial version.
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
* Description: A simplified version of timesync for datalink 814 (Dijian)
|
||||
*
|
||||
* Date: 2021-12-04 16:32
|
||||
* LastEditors: Fan Hao
|
||||
* LastEditTime: 2022-07-06 16:32
|
||||
* Revisions: Rev 0.0
|
||||
* History:
|
||||
* [2022-07-06]: Initial version.
|
||||
* [2021-12-04]: Initial version.
|
||||
*
|
||||
* Copyright(c) 2021 Beijing Institute of Technology.
|
||||
* Lab of Communication and Networking
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef RTT_H_
|
||||
#define RTT_H_
|
||||
|
||||
/***************************** Include Files *********************************/
|
||||
#include <stdint.h>
|
||||
#include "linklayer814.h"
|
||||
#include "linklayer814_types.h"
|
||||
|
||||
/************************** Constant Definitions *****************************/
|
||||
#define MAX_FREQ_EST_NUM 128 // 32bit word
|
||||
#define SVC_FREQ_EST_NUM 512 // byte
|
||||
#define MGMT_FREQ_EST_NUM 512 // byte
|
||||
#define BISAR_FREQ_EST_NUM 480 // byte
|
||||
|
||||
#define CXR_FREQ 3800000000.0 // Hz
|
||||
|
||||
#define LIGHT_SPPED_AIR 299702547.0 // m/s
|
||||
#define LIGHT_SPPED_VAC 299792458.0 // m/s
|
||||
|
||||
#define RCV2FSYNC_CLOCKS 0 // clocks from frame sync time to receive time
|
||||
#define PHYRSP_DELAY_CLOCKS 0// clocks from frame sync time to receive time
|
||||
//#define PHY_SYNCT2FEND_200K 904052L
|
||||
//#define PHY_SYNCT2FEND_200K 924232L
|
||||
#define PHY_SYNCT2FEND_200K 905052L
|
||||
|
||||
#define RTT_TIME_NONE UINT32_MAX
|
||||
#define RTT_DOPPLER_NONE UINT32_MAX
|
||||
|
||||
|
||||
/***************** Macros (Inline Functions) Definitions *********************/
|
||||
|
||||
/**************************** Type Definitions *******************************/
|
||||
|
||||
// TODO: Multi-node RTT
|
||||
typedef struct {
|
||||
L2_TIME_WORD Tt1;
|
||||
L2_TIME_WORD Tr1;
|
||||
L2_TIME_WORD Tt2;
|
||||
L2_TIME_WORD Tr2;
|
||||
L2_TIME_WORD Tt3;
|
||||
L2_TIME_WORD Tr3;
|
||||
L2_TIME_WORD Tt4;
|
||||
L2_TIME_WORD Tr4;
|
||||
int32_t dopplerR1;
|
||||
int32_t dopplerR2;
|
||||
int32_t dopplerR3;
|
||||
int32_t dopplerR4;
|
||||
L2_TIME_WORD TroundA;
|
||||
L2_TIME_WORD TreplyA;
|
||||
L2_TIME_WORD TroundB;
|
||||
L2_TIME_WORD TreplyB;
|
||||
int32_t rttAdj;
|
||||
} RTT_RECORD;
|
||||
|
||||
typedef enum {
|
||||
RTT_NONE_STAGE = 0,
|
||||
RTT_REQ1 = 1,
|
||||
RTT_RSP1 = 2,
|
||||
RTT_REQ2 = 3,
|
||||
RTT_RSP2 = 4, // Rtt Stages
|
||||
} L2_RTT_SATGE;
|
||||
|
||||
typedef struct {
|
||||
L2_RCD rttStatge;
|
||||
bool isR1Valid;
|
||||
bool isR2Valid;
|
||||
bool isR3Valid;
|
||||
bool isR4Valid;
|
||||
RTT_RECORD rttRecord;
|
||||
} L2_RTT_FSM;
|
||||
|
||||
typedef enum {
|
||||
RTT_NONE = 0,
|
||||
RTT_SEND = 1,
|
||||
RTT_RCV = 2,
|
||||
} L2_RTT_TOR;
|
||||
|
||||
/************************** Function Prototypes ******************************/
|
||||
|
||||
// RTT
|
||||
L2_RTT_SATGE RTT_GetLastStage(L2_RTT_FSM* rttFsmPtr);
|
||||
L2_RTT_SATGE RTT_GetCurrentStage(L2_RTT_FSM* rttFsmPtr);
|
||||
L2_RTT_SATGE RTT_GetNextStage(L2_RTT_FSM* rttFsmPtr);
|
||||
|
||||
#endif /* RTT_H_ */
|
||||
Reference in New Issue
Block a user