12 Commits
Author SHA1 Message Date
Gatsby Van 9f75b519e0 update .gitignore 2024-01-31 00:35:46 +08:00
Gatsby Van 7e38cf59e2 miscellaneous update 2024-01-31 00:35:31 +08:00
Gatsby Van 86d089e2b4 omit auto start 2024-01-31 00:35:14 +08:00
Gatsby Van 5cefee63f8 *bugfix: correct product ID 2024-01-31 00:34:57 +08:00
Gatsby Van 1647f4b97c *bugfix: correct FLJ and LJ data length 2024-01-31 00:34:29 +08:00
Gatsby Van 1b1790657a *bugfix: add test data mode 2024-01-31 00:33:34 +08:00
Gatsby Van da212a47e7 *bugfix: increase systembus response delay
required by 12 (CASIC)
2024-01-31 00:31:34 +08:00
Gatsby Van 49e962612e *bugfix: correct FLJ and LJ data length 2024-01-31 00:30:36 +08:00
Gatsby Van 64c116dbe0 update self test content 2024-01-31 00:28:17 +08:00
Gatsby Van a13ded2a89 *bugfix: update register address 2024-01-31 00:23:30 +08:00
Gatsby Van 949d0d7049 miscellaneous commit 2024-01-31 00:21:08 +08:00
Gatsby Van ec56ec6f6f miscellaneous fix 2024-01-31 00:20:46 +08:00
8 changed files with 94 additions and 74 deletions
+5 -1
View File
@@ -50,4 +50,8 @@
modules.order
Module.symvers
Mkfile.old
dkms.conf
dkms.conf
# MacOS .DS_Store file
**/.DS_Store
**/._.DS_Store
+2 -2
View File
@@ -88,14 +88,14 @@ L2_CONFIG linkConfig = {
.tmcInstPtr = NULL
};
// static L2_CONFIG linkConfig = {
// L2_CONFIG linkConfig = {
// .myType = L2_NODE_MEMBER,
// .clustId = 1,
// .myId = 2,
// .headId = 1,
// .bkpHeadId = 0,
// .netScale = 2,
// .phyInstPtr = NULL, // pyhsical layer reference
// .phyInstPtr = NULL, // physical layer reference
// .tmcInstPtr = NULL
// };
+3 -3
View File
@@ -91,7 +91,7 @@ L2_CONFIG linkConfig = {
// .headId = 1,
// .bkpHeadId = 0,
// .netScale = 2,
// .phyInstPtr = NULL, // pyhsical layer reference
// .phyInstPtr = NULL, // physical layer reference
// .tmcInstPtr = NULL
// };
@@ -830,7 +830,7 @@ int main(void)
DBG_PRINT("Physical started...\n");
Phy_Start(phyInstPtr);
Linklayer_Start(linkInstPtr);
// Linklayer_Start(linkInstPtr);
while (true)
{
@@ -846,7 +846,7 @@ int main(void)
if (SystemBus_IsRsqPendding(sysbusDescPtr) && (!SystemBus_IsTxBusy(sysbusDescPtr)))
{
// FIXME: Required by 12 (CASC)
udelay(200);
udelay(4000);
Status = SystemBus_MakeResp(sysbusDescPtr);
if (Status != SUCCESS)
{
@@ -112,27 +112,27 @@ static int32_t Service_Packing(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t dst
L2_FrameInsertChunk(buff, L2_MSG_SVC_SRC_SPEEDY, L2_MSG_SVC_SRC_SPEEDY_LEN, &(instPtr->sysInfo.vY));
L2_FrameInsertChunk(buff, L2_MSG_SVC_SRC_SPEEDZ, L2_MSG_SVC_SRC_SPEEDZ_LEN, &(instPtr->sysInfo.vZ));
// uint32_t dataId;
// if(L2_GetNodeType(instPtr) == L2_NODE_HEAD)
// {
// SysMonitor_GetSendPayloadFLJRaw(buff+L2_MSG_SVC_PAYLOAD, &dataId);
// }
// else
// {
// SysMonitor_GetSendPayloadLJRaw(buff+L2_MSG_SVC_PAYLOAD, &dataId);
// }
// L2_FrameInsertChunk(buff, L2_MSG_SVC_PAYLOAD_ID, L2_MSG_SVC_PAYLOAD_ID_LEN, &dataId);
// if (dataId == DATA_ID_NONE)
// {
// L2_FrameInsertChunk(buff, L2_MSG_SVC_PAYLOAD, L2_MSG_SVC_PAYLOAD_LEN, testData);
// }
// packing payload
uint32_t dataId;
dataId = DATA_ID_NONE;
if(L2_GetNodeType(instPtr) == L2_NODE_HEAD)
{
SysMonitor_GetSendPayloadFLJRaw(buff + L2_MSG_SVC_PAYLOAD, &dataId);
}
else
{
SysMonitor_GetSendPayloadLJRaw(buff + L2_MSG_SVC_PAYLOAD, &dataId);
}
L2_FrameInsertChunk(buff, L2_MSG_SVC_PAYLOAD_ID, L2_MSG_SVC_PAYLOAD_ID_LEN, &dataId);
L2_FrameInsertChunk(buff, L2_MSG_SVC_PAYLOAD, L2_MSG_SVC_PAYLOAD_LEN, testData);
if (dataId == DATA_ID_NONE)
{
L2_FrameInsertChunk(buff, L2_MSG_SVC_PAYLOAD, L2_MSG_SVC_PAYLOAD_LEN, testData);
}
// // packing payload
// uint32_t dataId;
// dataId = DATA_ID_TEST;
// L2_FrameInsertChunk(buff, L2_MSG_SVC_PAYLOAD_ID, L2_MSG_SVC_PAYLOAD_ID_LEN, &dataId);
// L2_FrameInsertChunk(buff, L2_MSG_SVC_PAYLOAD, L2_MSG_SVC_PAYLOAD_LEN, testData);
Status = L2_CrcAppend(buff, L2_SVC_PACK_LEN - L2_MSG_SVC_CRC_LEN, L2_MSG_SVC_CRC, L2_CRC16_1021);
@@ -277,7 +277,7 @@
/**
* Register: ANT_STATUS_0
*/
#define ANT_STATUS 0x00000100U
#define ANT_STATUS 0x00000048U
#define ANT_STATUS_CODE_SHIFT 0
#define ANT_STATUS_CODE_WIDTH 8
#define ANT_STATUS_CODE_MASK 0x000000FFU
@@ -294,7 +294,7 @@
/**
* Register: ANT_FRAME_CNT
*/
#define ANT_FRAME_CNT 0x00000104U
#define ANT_FRAME_CNT 0x0000004CU
#define ANT_FRAME_CNT_SHIFT 0
#define ANT_FRAME_CNT_WIDTH 32
#define ANT_FRAME_CNT_MASK 0xFFFFFFFFU
@@ -302,7 +302,7 @@
/**
* Register: RF_STATUS
*/
#define RF_STATUS 0x00000108U
#define RF_STATUS 0x00000050U
#define RF_STATUS_TEMP_SHIFT 0
#define RF_STATUS_TEMP_WIDTH 8
#define RF_STATUS_TEMP_MASK 0x000000FFU
@@ -319,7 +319,7 @@
/**
* Register: RF_MGC
*/
#define RF_MGC 0x0000010CU
#define RF_MGC 0x00000054U
#define RF_MGC_CH1_SHIFT 0
#define RF_MGC_CH1_WIDTH 4
#define RF_MGC_CH1_MASK 0x0000000FU
@@ -336,7 +336,7 @@
/**
* Register: RF_FRAME_CNT
*/
#define RF_FRAME_CNT 0x00000110U
#define RF_FRAME_CNT 0x00000058U
#define RF_FRAME_CNT_SHIFT 0
#define RF_FRAME_CNT_WIDTH 32
#define RF_FRAME_CNT_MASK 0xFFFFFFFFU
+17 -8
View File
@@ -77,6 +77,15 @@ int32_t SysMonitor_Init(void)
memset(&(sysMonitorInst->recvLogCtrl), BUFF_NONE, sizeof(PINGPONG));
memset(&(sysMonitorInst->protocolLogCtrl), BUFF_NONE, sizeof(PINGPONG));
memset(&(sysMonitorInst->hwStateCtrl), BUFF_NONE, sizeof(PINGPONG));
sysMonitorInst->recvPL[0].dataId_flj = DATA_ID_NONE;
sysMonitorInst->recvPL[0].dataId_lj = DATA_ID_NONE;
sysMonitorInst->recvPL[1].dataId_flj = DATA_ID_NONE;
sysMonitorInst->recvPL[1].dataId_lj = DATA_ID_NONE;
sysMonitorInst->sendPL[0].dataId_flj = DATA_ID_NONE;
sysMonitorInst->sendPL[0].dataId_lj = DATA_ID_NONE;
sysMonitorInst->sendPL[1].dataId_flj = DATA_ID_NONE;
sysMonitorInst->sendPL[1].dataId_lj = DATA_ID_NONE;
return SUCCESS;
}
@@ -209,7 +218,7 @@ void SysMonitor_UpdateSendPayloadFLJRaw(uint8_t *buff)
uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->sendPLCtrl);
sysMonitorInst->sendPLCtrl.wBusy = buffIndx;
memcpy(sysMonitorInst->sendPL[buffIndx].data_flj, buff, sizeof(uint8_t) * PAYLOAD_FLJ);
memcpy(sysMonitorInst->sendPL[buffIndx].data_flj, buff, sizeof(uint8_t) * PAYLOAD_FLJ_TX);
sysMonitorInst->sendPL[buffIndx].dataId_flj++;
sysMonitorInst->sendPLCtrl.latest = buffIndx;
sysMonitorInst->sendPLCtrl.wBusy = BUFF_NONE;
@@ -230,7 +239,7 @@ void SysMonitor_GetSendPayloadFLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->sendPLCtrl.rBusy = buffIndx;
if (sysMonitorInst->sendPL[buffIndx].dataId_flj != DATA_ID_NONE)
{
memcpy(buff, sysMonitorInst->sendPL[buffIndx].data_flj, sizeof(uint8_t) * PAYLOAD_FLJ);
memcpy(buff, sysMonitorInst->sendPL[buffIndx].data_flj, sizeof(uint8_t) * PAYLOAD_FLJ_TX);
}
*id = sysMonitorInst->sendPL[buffIndx].dataId_flj;
sysMonitorInst->sendPLCtrl.rBusy = buffIndex_old;
@@ -245,7 +254,7 @@ void SysMonitor_UpdateSendPayloadLJRaw(uint8_t *buff)
uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->sendPLCtrl);
sysMonitorInst->sendPLCtrl.wBusy = buffIndx;
memcpy(sysMonitorInst->sendPL[buffIndx].data_lj, buff, sizeof(uint8_t) * PAYLOAD_LJ);
memcpy(sysMonitorInst->sendPL[buffIndx].data_lj, buff, sizeof(uint8_t) * PAYLOAD_LJ_TX);
sysMonitorInst->sendPL[buffIndx].dataId_lj++;
sysMonitorInst->sendPLCtrl.latest = buffIndx;
sysMonitorInst->sendPLCtrl.wBusy = BUFF_NONE;
@@ -266,7 +275,7 @@ void SysMonitor_GetSendPayloadLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->sendPLCtrl.rBusy = buffIndx;
if (sysMonitorInst->sendPL[buffIndx].dataId_lj != DATA_ID_NONE)
{
memcpy(buff, sysMonitorInst->sendPL[buffIndx].data_lj, sizeof(uint8_t) * PAYLOAD_LJ);
memcpy(buff, sysMonitorInst->sendPL[buffIndx].data_lj, sizeof(uint8_t) * PAYLOAD_LJ_TX);
}
*id = sysMonitorInst->sendPL[buffIndx].dataId_lj;
sysMonitorInst->sendPLCtrl.rBusy = buffIndex_old;
@@ -282,7 +291,7 @@ void SysMonitor_UpdateRecvPayloadFLJRaw(uint8_t *buff)
uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->recvPLCtrl);
sysMonitorInst->recvPLCtrl.wBusy = buffIndx;
memcpy(sysMonitorInst->recvPL[buffIndx].data_flj, buff, sizeof(uint8_t) * PAYLOAD_FLJ);
memcpy(sysMonitorInst->recvPL[buffIndx].data_flj, buff, sizeof(uint8_t) * PAYLOAD_FLJ_RX);
sysMonitorInst->recvPL[buffIndx].dataId_flj++;
sysMonitorInst->recvPLCtrl.latest = buffIndx;
sysMonitorInst->recvPLCtrl.wBusy = BUFF_NONE;
@@ -303,7 +312,7 @@ void SysMonitor_GetRecvPayloadFLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->recvPLCtrl.rBusy = buffIndx;
if (sysMonitorInst->recvPL[buffIndx].dataId_flj != DATA_ID_NONE)
{
memcpy(buff, sysMonitorInst->recvPL[buffIndx].data_flj, sizeof(uint8_t) * PAYLOAD_FLJ);
memcpy(buff, sysMonitorInst->recvPL[buffIndx].data_flj, sizeof(uint8_t) * PAYLOAD_FLJ_RX);
}
*id = sysMonitorInst->recvPL[buffIndx].dataId_flj;
sysMonitorInst->recvPLCtrl.rBusy = buffIndex_old;
@@ -318,7 +327,7 @@ void SysMonitor_UpdateRecvPayloadLJRaw(uint8_t *buff)
uint8_t buffIndx;
buffIndx = GetWritable(sysMonitorInst->recvPLCtrl);
sysMonitorInst->recvPLCtrl.wBusy = buffIndx;
memcpy(sysMonitorInst->recvPL[buffIndx].data_lj, buff, sizeof(uint8_t) * PAYLOAD_LJ);
memcpy(sysMonitorInst->recvPL[buffIndx].data_lj, buff, sizeof(uint8_t) * PAYLOAD_LJ_RX);
sysMonitorInst->recvPL[buffIndx].dataId_lj++;
sysMonitorInst->recvPLCtrl.latest = buffIndx;
sysMonitorInst->recvPLCtrl.wBusy = BUFF_NONE;
@@ -339,7 +348,7 @@ void SysMonitor_GetRecvPayloadLJRaw(uint8_t *buff, uint32_t *id)
sysMonitorInst->recvPLCtrl.rBusy = buffIndx;
if (sysMonitorInst->recvPL[buffIndx].dataId_lj != DATA_ID_NONE)
{
memcpy(buff, sysMonitorInst->recvPL[buffIndx].data_lj, sizeof(uint8_t) * PAYLOAD_LJ);
memcpy(buff, sysMonitorInst->recvPL[buffIndx].data_lj, sizeof(uint8_t) * PAYLOAD_LJ_RX);
}
*id = sysMonitorInst->recvPL[buffIndx].dataId_lj;
sysMonitorInst->recvPLCtrl.rBusy = buffIndex_old;
+10 -6
View File
@@ -4,10 +4,14 @@
#include <stdint.h>
#include <stdbool.h>
#define PAYLOAD_FLJ 78
#define PAYLOAD_LJ 168
#define PAYLOAD_LEN 256
#define PAYLOAD_FLJ_RX 168
#define PAYLOAD_FLJ_TX 66
#define PAYLOAD_LJ_RX 66
#define PAYLOAD_LJ_TX 168
#define DATA_ID_NONE UINT32_MAX
#define DATA_ID_TEST 0x02030203
typedef struct
{
@@ -57,9 +61,9 @@ typedef struct
typedef struct
{
uint32_t dataId_lj;
uint8_t data_lj[PAYLOAD_LJ];
uint8_t data_lj[PAYLOAD_LEN];
uint32_t dataId_flj;
uint8_t data_flj[PAYLOAD_FLJ];
uint8_t data_flj[PAYLOAD_LEN];
} PAYLOAD;
typedef struct
@@ -69,7 +73,7 @@ typedef struct
uint8_t slotNo;
uint8_t frameType;
// Payload
uint8_t payload[256];
uint8_t payload[PAYLOAD_LEN];
// Time sync info
uint64_t tmStamp;
uint32_t tmDevi;
@@ -99,7 +103,7 @@ typedef struct
// -- Signal processor status
uint16_t spVolt;
uint16_t spTemp;
uint16_t chipSt;
uint8_t chipSt;
// -- Antenna status
uint8_t antVolt;
uint8_t antTemp;
+33 -30
View File
@@ -38,7 +38,7 @@
// -- Production type
#define WD_PRD 0x01
#define PRD_DL_K 0xDD
#define PRD_DL_S 0xDE
#define PRD_DL_S 0xEE
#define PRD_ALL 0xFF
// Self-Test
@@ -52,45 +52,42 @@
#define ST_RET_OK 0xAA
#define ST_RET_ERROR 0x55
// -- -- Signal processor voltage
#define WD_SP_VOLT_L 0x03
#define WD_SP_VOLT_H 0x04
#define WD_SP_VOLT 0x03
// -- -- Signal processor temperature
#define WD_SP_TEMP_L 0x05
#define WD_SP_TEMP_H 0x06
#define WD_SP_TEMP 0x04
// -- -- Signal processor chip status
#define WD_SP_CS_L 0x07
#define WD_SP_CS_H 0x08
#define WD_SP_CS 0x05
// -- -- Signal processor antenna voltage
#define WD_AS_VOLT 0x09
#define WD_ANT_VOLT 0x06
// -- -- Signal processor antenna temperature
#define WD_AS_TEMP 0x0A
#define WD_ANT_TEMP 0x07
// -- -- Signal processor antenna PLL lock status
#define WD_AS_PLL 0x0B
#define WD_ANT_PLL 0x08
// -- -- Signal processor antenna MGC
#define WD_AS_MGC_L 0x0C
#define WD_AS_MGC_H 0x0D
#define WD_ANT_MGC_L 0x09
#define WD_ANT_MGC_H 0x0A
// -- -- Signal processor antenna status
#define WD_AS_ST 0x0E.
#define WD_ANT_ST 0x0B
// -- -- Dummy must be 0x00
#define WD_ST_DUMMY 0x0F
#define WD_ST_DUMMY 0x0C
// Data Send Test Command
#define CMD_DATA_TEST_A 0xE2
// -- Request
#define DATA_TEST_REQ_A_LEN 80
// -- -- 78 byte payload
#define DATA_TEST_REQ_A_LEN 68
// -- -- 68 byte payload
// -- Response
#define DATA_TEST_RSP_A_LEN 80
// -- -- 78 byte payload
#define DATA_TEST_RSP_A_LEN 68
// -- -- 68 byte payload
// Data Send Test Command
#define CMD_DATA_TEST_B 0xF2
// -- Request
#define DATA_TEST_REQ_B_LEN 152
// -- -- 150 byte payload
#define DATA_TEST_REQ_B_LEN 170
// -- -- 170 byte payload
// -- Response
#define DATA_TEST_RSP_B_LEN 152
// -- -- 150 byte payload
#define DATA_TEST_RSP_B_LEN 170
// -- -- 170 byte payload
// Config load
#define CMD_CONFIG 0xE3
@@ -135,8 +132,8 @@
#define WD_FLJ_POLL 0x02
#define FLJ_POLL_CODE 0x77
// -- Response
#define FLJ_POLL_RESP_LEN 78
// -- -- received 78 byte payload
#define FLJ_POLL_RESP_LEN 170
// -- -- received 170 byte payload
// LJ Poll
#define CMD_LJ_POLL 0xF5
@@ -144,8 +141,8 @@
#define WD_LJ_POLL 0x02
#define LJ_POLL_CODE 0x77
// -- Response
#define LJ_POLL_RESP_LEN 168
// -- -- received 156 byte payload
#define LJ_POLL_RESP_LEN 68
// -- -- received 68 byte payload
// Remote Test FLJ
#define CMD_FLJ_RM_TEST 0xE6
@@ -440,13 +437,16 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr)
break;
}
sysbusRsp->len = FLJ_POLL_RESP_LEN;
sysbusRsp->data[WD_CMD] = WD_FLJ_POLL;
sysbusRsp->data[WD_CMD] = CMD_FLJ_POLL;
sysbusRsp->data[WD_PRD] = MY_PRD_ID;
uint32_t dataId;
SysMonitor_GetRecvPayloadFLJRaw(sysbusRsp->data + FLJ_DATA_OFFSET, &dataId); // omit control info
if (dataId == DATA_ID_NONE)
{
memset(sysbusRsp->data + FLJ_DATA_OFFSET, 0xAA, PAYLOAD_FLJ);
free(sysbusRsp);
DBG_WARNING("SystemBus::no RX data!\n");
Status = SUCCESS;
break;
}
if (CircQueuePush(instPtr->txQueue, (void *)sysbusRsp) == false)
{
@@ -473,13 +473,16 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr)
break;
}
sysbusRsp->len = LJ_POLL_RESP_LEN;
sysbusRsp->data[WD_CMD] = WD_LJ_POLL;
sysbusRsp->data[WD_CMD] = CMD_LJ_POLL;
sysbusRsp->data[WD_PRD] = MY_PRD_ID;
uint32_t dataId;
SysMonitor_GetRecvPayloadLJRaw(sysbusRsp->data + LJ_DATA_OFFSET, &dataId); // omit control info
if (dataId == DATA_ID_NONE)
{
memset(sysbusRsp->data + LJ_DATA_OFFSET, 0xAA, PAYLOAD_LJ);
free(sysbusRsp);
DBG_WARNING("SystemBus::no RX data!\n");
Status = SUCCESS;
break;
}
if (CircQueuePush(instPtr->txQueue, (void *)sysbusRsp) == false)
{