formatted

This commit is contained in:
Gatsby Van
2024-01-19 12:48:38 +08:00
parent 64d02b3a71
commit 6f5a8d0b17
@@ -8,27 +8,31 @@
#include "linklayer/linklayer814.h" #include "linklayer/linklayer814.h"
#include "linklayer/msg_def.h" #include "linklayer/msg_def.h"
#define TIME_INT_REG (0x00000008>>2) #define TIME_INT_REG (0x00000008 >> 2)
#define TIME_FRAC_REG (0x0000000C>>2) #define TIME_FRAC_REG (0x0000000C >> 2)
#define TIME_ADJ_INT (0x0000001C>>2) #define TIME_ADJ_INT (0x0000001C >> 2)
#define TIME_ADJ_FRAC (0x00000020>>2) #define TIME_ADJ_FRAC (0x00000020 >> 2)
#define TIME_ADJ_TRIG (0x00000024>>2) #define TIME_ADJ_TRIG (0x00000024 >> 2)
#define CNTSTEP_OPT (0x00000028>>2) #define CNTSTEP_OPT (0x00000028 >> 2)
TIMECTRL_INST* tmcInstPtr = NULL; TIMECTRL_INST *tmcInstPtr = NULL;
PHY_INST* phyInstPtr = NULL; PHY_INST *phyInstPtr = NULL;
L2_INST* linkInstPtr = NULL; L2_INST *linkInstPtr = NULL;
uint32_t tmcReg[32] = {0}; uint32_t tmcReg[32] = {0};
uint32_t phycReg[512] = {0}; uint32_t phycReg[512] = {0};
uint8_t bmTemplate[INTRA_BM_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) = {
uint8_t bmTemplate[INTRA_BM_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) =
{
0x08, 0x21, 0x04, 0x06, 0x00, 0xF3, 0xA8, 0xCB, 0x08, 0x21, 0x04, 0x06, 0x00, 0xF3, 0xA8, 0xCB,
0x00, 0xA0, 0x49, 0x00, 0x9A, 0x04, 0x13, 0x1E, 0x00, 0xA0, 0x49, 0x00, 0x9A, 0x04, 0x13, 0x1E,
0x45, 0xE7, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x45, 0xE7, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA 0xAA, 0xAA, 0xAA, 0xAA, 0xAA
}; };
uint8_t w2acqTemplate[INTRA_W2ACQ_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) = {
uint8_t w2acqTemplate[INTRA_W2ACQ_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) =
{
0xCC, 0x71, 0x21, 0xA8, 0x0A, 0x00, 0x00, 0x00, 0xCC, 0x71, 0x21, 0xA8, 0x0A, 0x00, 0x00, 0x00,
0x00, 0x1A, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
0xF0, 0xF0, 0x2A, 0x0F, 0x0F, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x2A, 0x0F, 0x0F, 0xF0, 0x0F, 0x00,
@@ -62,7 +66,9 @@ uint8_t w2acqTemplate[INTRA_W2ACQ_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA
}; };
uint8_t mgmtTemplate[INTRA_MGMT_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) = {
uint8_t mgmtTemplate[INTRA_MGMT_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) =
{
0xCC, 0xC3, 0x99, 0x99, 0x83, 0x99, 0x99, 0x99, 0xCC, 0xC3, 0x99, 0x99, 0x83, 0x99, 0x99, 0x99,
0x99, 0xA5, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBA, 0x99, 0xA5, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xBA,
0xBB, 0x9B, 0x19, 0xCC, 0xCC, 0xDD, 0xDD, 0xEE, 0xBB, 0x9B, 0x19, 0xCC, 0xCC, 0xDD, 0xDD, 0xEE,
@@ -96,7 +102,9 @@ uint8_t mgmtTemplate[INTRA_MGMT_FRAME_LENGTH_MAX] __attribute__ ((aligned (8)))
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };
uint8_t rttTemplate[INTRA_RTT_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) = {
uint8_t rttTemplate[INTRA_RTT_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) =
{
0xDC, 0xA3, 0x10, 0x44, 0x98, 0x99, 0x99, 0x99, 0xDC, 0xA3, 0x10, 0x44, 0x98, 0x99, 0x99, 0x99,
0x99, 0x05, 0x00, 0x00, 0x00, 0x50, 0x32, 0x01, 0x99, 0x05, 0x00, 0x00, 0x00, 0x50, 0x32, 0x01,
0x00, 0x90, 0x99, 0xFF, 0xFF, 0xFF, 0x99, 0x99, 0x00, 0x90, 0x99, 0xFF, 0xFF, 0xFF, 0x99, 0x99,
@@ -130,7 +138,9 @@ uint8_t rttTemplate[INTRA_RTT_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) =
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };
uint8_t svcTemplate[INTRA_SVC_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) = {
uint8_t svcTemplate[INTRA_SVC_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) =
{
0xF0, 0xFF, 0x00, 0x21, 0x88, 0x00, 0x00, 0xF0, 0xF0, 0xFF, 0x00, 0x21, 0x88, 0x00, 0x00, 0xF0,
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x56, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x56, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -165,8 +175,8 @@ uint8_t svcTemplate[INTRA_SVC_FRAME_LENGTH_MAX] __attribute__ ((aligned (8))) =
0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xB5,
}; };
L2_CONFIG l2Config =
L2_CONFIG l2Config = { {
.myType = L2_NODE_HEAD, .myType = L2_NODE_HEAD,
.isInterHead = false, .isInterHead = false,
.myId = 1, .myId = 1,
@@ -178,7 +188,8 @@ L2_CONFIG l2Config = {
.tmcInstPtr = NULL .tmcInstPtr = NULL
}; };
PHY_CONFIG l1Config = { PHY_CONFIG l1Config =
{
.devId = 0, .devId = 0,
.txBramId = 0, .txBramId = 0,
.rxBramId = 0, .rxBramId = 0,
@@ -186,17 +197,21 @@ PHY_CONFIG l1Config = {
.baseAddr = (uintptr_t)phycReg .baseAddr = (uintptr_t)phycReg
}; };
TIMECTRL_CONFIG tmcConfig = { TIMECTRL_CONFIG tmcConfig =
{
.baseAddr = (uintptr_t)tmcReg, .baseAddr = (uintptr_t)tmcReg,
.reset = 10 .reset = 10
}; };
inline uint32_t rand_range(uint32_t a, uint32_t b){ int32_t rand_range(uint32_t a, uint32_t b);
inline int32_t rand_range(uint32_t a, uint32_t b)
{
ASSERT(b > a); ASSERT(b > a);
return (rand() % (b + 1 - a) + a); return (rand() % (b + 1 - a) + a);
} }
void linklayer_setup(void){ void linklayer_setup(void)
{
int32_t Status; int32_t Status;
Status = TimeCtrl_Init(&tmcInstPtr, &tmcConfig); Status = TimeCtrl_Init(&tmcInstPtr, &tmcConfig);
ASSERT_EQUAL(SUCCESS, Status); ASSERT_EQUAL(SUCCESS, Status);
@@ -211,18 +226,20 @@ void linklayer_setup(void){
ASSERT_EQUAL(SUCCESS, Status); ASSERT_EQUAL(SUCCESS, Status);
} }
void linklayer_teardown(void){ void linklayer_teardown(void)
{
Linklayer_Destroy(linkInstPtr); Linklayer_Destroy(linkInstPtr);
Phy_Destroy(phyInstPtr); Phy_Destroy(phyInstPtr);
TimeCtrl_Destroy(tmcInstPtr); TimeCtrl_Destroy(tmcInstPtr);
} }
void forge_bm_frame(uint8_t* buff, uint8_t nodeId, uint16_t clustId, uint16_t headId, uint64_t time) { void forge_bm_frame(uint8_t *buff, uint8_t nodeId, uint16_t clustId, uint16_t headId, uint64_t time)
{
BIT_ARRAY bitarr = { BIT_ARRAY bitarr = {
.words = (uint64_t*)buff, .words = (uint64_t *)buff,
.num_of_bits = INTRA_BM_FRAME_LENGTH_MAX*8, .num_of_bits = INTRA_BM_FRAME_LENGTH_MAX * 8,
.num_of_words = roundup_bits2words64(INTRA_BM_FRAME_LENGTH_MAX*8), .num_of_words = roundup_bits2words64(INTRA_BM_FRAME_LENGTH_MAX * 8),
.capacity_in_words = roundup_bits2words64(INTRA_BM_FRAME_LENGTH_MAX*8), .capacity_in_words = roundup_bits2words64(INTRA_BM_FRAME_LENGTH_MAX * 8),
}; };
memcpy(buff, bmTemplate, INTRA_BM_FRAME_LENGTH_MAX); memcpy(buff, bmTemplate, INTRA_BM_FRAME_LENGTH_MAX);
uint64_t dataChunk; uint64_t dataChunk;
@@ -249,13 +266,14 @@ void forge_bm_frame(uint8_t* buff, uint8_t nodeId, uint16_t clustId, uint16_t he
L2_CrcAppend(buff, BM_MSG_CRC_OFFSET / 8, BM_MSG_CRC_OFFSET / 8, L2_CRC8_31); L2_CrcAppend(buff, BM_MSG_CRC_OFFSET / 8, BM_MSG_CRC_OFFSET / 8, L2_CRC8_31);
} }
void forge_w2acq_frame(uint8_t* buff, L2_NODE_TYPE nodeType, uint16_t srcId, uint16_t destId, void forge_w2acq_frame(uint8_t *buff, L2_NODE_TYPE nodeType, uint16_t srcId, uint16_t destId,
uint16_t clustId, uint32_t netStartTime, L2_NODE_STATE state) { uint16_t clustId, uint32_t netStartTime, L2_NODE_STATE state)
{
BIT_ARRAY bitarr = { BIT_ARRAY bitarr = {
.words = (uint64_t*)buff, .words = (uint64_t *)buff,
.num_of_bits = INTRA_W2ACQ_FRAME_LENGTH_MAX*8, .num_of_bits = INTRA_W2ACQ_FRAME_LENGTH_MAX * 8,
.num_of_words = roundup_bits2words64(INTRA_W2ACQ_FRAME_LENGTH_MAX*8), .num_of_words = roundup_bits2words64(INTRA_W2ACQ_FRAME_LENGTH_MAX * 8),
.capacity_in_words = roundup_bits2words64(INTRA_W2ACQ_FRAME_LENGTH_MAX*8), .capacity_in_words = roundup_bits2words64(INTRA_W2ACQ_FRAME_LENGTH_MAX * 8),
}; };
memcpy(buff, w2acqTemplate, INTRA_W2ACQ_FRAME_LENGTH_MAX); memcpy(buff, w2acqTemplate, INTRA_W2ACQ_FRAME_LENGTH_MAX);
@@ -272,7 +290,8 @@ void forge_w2acq_frame(uint8_t* buff, L2_NODE_TYPE nodeType, uint16_t srcId, uin
dataChunk = (destId & 0x001F) | ((clustId & 0x001F) << 5); dataChunk = (destId & 0x001F) | ((clustId & 0x001F) << 5);
FrameInsertChunk(&bitarr, NS_MSG_INI_LEN_OFFSET, NS_MSG_INI_LEN_LEN, dataChunk); FrameInsertChunk(&bitarr, NS_MSG_INI_LEN_OFFSET, NS_MSG_INI_LEN_LEN, dataChunk);
/* current net stage */ /* current net stage */
switch (state) { switch (state)
{
case L2_INIT_STATE: case L2_INIT_STATE:
dataChunk = NET_INI_STAGE; dataChunk = NET_INI_STAGE;
break; break;
@@ -296,17 +315,19 @@ void forge_w2acq_frame(uint8_t* buff, L2_NODE_TYPE nodeType, uint16_t srcId, uin
L2_CrcAppend(buff, W2ACQ_FRAME_CRC_DLEN, W2ACQ_FRAME_CRC_POS, L2_CRC16_8005); L2_CrcAppend(buff, W2ACQ_FRAME_CRC_DLEN, W2ACQ_FRAME_CRC_POS, L2_CRC16_8005);
} }
void forge_mgmt_frame(uint8_t* buff, L2_NODE_STATE state) { void forge_mgmt_frame(uint8_t *buff, L2_NODE_STATE state)
{
BIT_ARRAY bitarr = { BIT_ARRAY bitarr = {
.words = (uint64_t*)buff, .words = (uint64_t *)buff,
.num_of_bits = INTRA_MGMT_FRAME_LENGTH_MAX*8, .num_of_bits = INTRA_MGMT_FRAME_LENGTH_MAX * 8,
.num_of_words = roundup_bits2words64(INTRA_MGMT_FRAME_LENGTH_MAX*8), .num_of_words = roundup_bits2words64(INTRA_MGMT_FRAME_LENGTH_MAX * 8),
.capacity_in_words = roundup_bits2words64(INTRA_MGMT_FRAME_LENGTH_MAX*8), .capacity_in_words = roundup_bits2words64(INTRA_MGMT_FRAME_LENGTH_MAX * 8),
}; };
memcpy(buff, mgmtTemplate, INTRA_MGMT_FRAME_LENGTH_MAX); memcpy(buff, mgmtTemplate, INTRA_MGMT_FRAME_LENGTH_MAX);
uint64_t dataChunk; uint64_t dataChunk;
switch (state) { switch (state)
{
case L2_INIT_STATE: case L2_INIT_STATE:
dataChunk = NET_INI_STAGE; dataChunk = NET_INI_STAGE;
break; break;
@@ -329,13 +350,14 @@ void forge_mgmt_frame(uint8_t* buff, L2_NODE_STATE state) {
} }
} }
void forge_rtt_frame(uint8_t* buff, uint16_t srcId, uint16_t destId, void forge_rtt_frame(uint8_t *buff, uint16_t srcId, uint16_t destId,
uint16_t clustId, const TIME_WORD* timeStamp, uint32_t doppler) { uint16_t clustId, const TIME_WORD *timeStamp, uint32_t doppler)
{
BIT_ARRAY bitarr = { BIT_ARRAY bitarr = {
.words = (uint64_t*)buff, .words = (uint64_t *)buff,
.num_of_bits = INTRA_BM_FRAME_LENGTH_MAX*8, .num_of_bits = INTRA_BM_FRAME_LENGTH_MAX * 8,
.num_of_words = roundup_bits2words64(INTRA_BM_FRAME_LENGTH_MAX*8), .num_of_words = roundup_bits2words64(INTRA_BM_FRAME_LENGTH_MAX * 8),
.capacity_in_words = roundup_bits2words64(INTRA_BM_FRAME_LENGTH_MAX*8), .capacity_in_words = roundup_bits2words64(INTRA_BM_FRAME_LENGTH_MAX * 8),
}; };
memcpy(buff, rttTemplate, INTRA_BM_FRAME_LENGTH_MAX); memcpy(buff, rttTemplate, INTRA_BM_FRAME_LENGTH_MAX);
uint64_t dataChunk; uint64_t dataChunk;