Initial version.

This commit is contained in:
Gatsby Van
2023-12-20 00:11:03 +08:00
commit 416bd53733
1043 changed files with 293547 additions and 0 deletions
+102
View File
@@ -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_ */