ShipCentralControl/Anjiehui7_DTU/User/ext_data.h

139 lines
3.4 KiB
C
Raw Permalink Normal View History

2025-04-03 15:59:48 +08:00
/*
*********************************************************************************************************
* IAR Development Kits
* on the
*
* Nano100
*
* Filename : ext_data.h
* Version : V1.00
* Programmer(s) : Qian Xianghong
*********************************************************************************************************
*/
#ifndef USER_EXT_DATA_PRESENT
#define USER_EXT_DATA_PRESENT
#include "type.h"
extern loopbuff_t RF_DataM, RF_TranM;
extern SemaphoreHandle_t RF_TranLock;
// <20><>ʼ<EFBFBD><CABC>
void Data_Open();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#pragma anon_unions
#pragma pack(push, 1)
// <20><>ʷ<EFBFBD><CAB7><EFBFBD>ݺ<EFBFBD><DDBA>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>
typedef struct // size = 64
{
uint16_t check; // <20><>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0x55AA
uint8_t oriPSN[6];
uint8_t payload_len;
uint8_t payload[RF_MAX_PAYLOAD_LEN];
int32_t prevData; // ͬһ<CDAC><D2BB>PSN<53><4E><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>¼ (-1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>¼)
unsigned warn : 1; // <20>Ƿ񱨾<C7B7><F1B1A8BE><EFBFBD>¼
unsigned fault : 1; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ϼ<EFBFBD>¼
unsigned : 14;
uint16_t volumePct; // <20><><EFBFBD><EFBFBD>Һλ<D2BA>ٷֱ<D9B7>
uint32_t volume; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t recvTime; // <20><>Ƶ<EFBFBD>յ<EFBFBD><D5B5>ľ<EFBFBD><C4BE><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint16_t crc; // У<><D0A3>λ
} ext_data_t;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
uint16_t check; // <20><>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0x55AA
int16_t count; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30>ʾ<EFBFBD>޵<EFBFBD><DEB5><EFBFBD>
uint16_t crc; // У<><D0A3>λ
} ext_count_t;
// <20><><EFBFBD>޵<EFBFBD><DEB5><EFBFBD>
typedef struct // size = 16
{
uint8_t PSN[6];
int32_t lastData; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (-1<><31>ʾ<EFBFBD>޼<EFBFBD>¼)
uint8_t pn;
unsigned warn : 1; // <20>Ƿ񱨾<C7B7>״̬
unsigned fault : 1; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>״̬
unsigned : 6;
uint32_t recvTime; // <20><>Ƶ<EFBFBD>յ<EFBFBD><D5B5>ľ<EFBFBD><C4BE><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
} ext_bottle_t;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
typedef struct // size = 24
{
uint8_t PSN[6];
char TGGU[12]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t FF[6];
} ext_box_t;
// <20><><EFBFBD>޵<EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD>PSN<53><4E><EFBFBD><EFBFBD>
typedef struct
{
uint8_t PSN[6];
int16_t recNo;
} ext_bottle_idx_t;
// <20><><EFBFBD>޵<EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
char TGGU[12];
uint8_t PSN[6];
int16_t recNo;
} ext_box_idx_t;
// GPS<50><53>λ<EFBFBD><CEBB>Ϣ
typedef struct // size = 22
{
uint16_t check; // <20><>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0x55AA
date_time_t sysTime; // ϵͳʱ<CDB3><CAB1>, size = 6
int32_t longitude; // <20><><EFBFBD><EFBFBD>
int32_t latitude; // ά<><CEAC>
uint16_t speed; // <20>ٶ<EFBFBD>
uint8_t sateCount; // GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t posState; // GPS<50><53>λ״̬
uint16_t crc; // У<><D0A3>λ
} ext_gps_t;
extern ext_gps_t Ext_GPS;
extern ext_data_t Ext_Data_Rec, Ext_Data_Rec1;
extern ext_count_t bottleCnt, boxCnt;
extern ext_bottle_idx_t bottlePSN[];
extern ext_box_idx_t boxTGGU[];
extern ext_box_idx_t boxPSN[];
#pragma pack(pop)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SFlash<73><68>һ<EFBFBD><D2BB><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>;<EFBFBD><CDBE><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ǣ<EFBFBD>
void CheckFramSFlashValid(uint32_t relative_time);
// TODO: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>
void cacl_gprs_tran_data(ext_data_t *pGprs, data_sample_t *sample);
// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// RF_DataM<61><4D>RF_TranM<6E><4D>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>дָ<D0B4><D6B8>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD>ͬ
void Data_PutToQueue(ext_data_t *pGprs);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Ext_Sort_Bottle_PSN(ext_bottle_idx_t a[], int16_t lo, int16_t hi);
void Ext_Sort_Box_TGGU(ext_box_idx_t a[], int16_t lo, int16_t hi);
void Ext_Sort_Box_PSN(ext_box_idx_t a[], int16_t lo, int16_t hi);
// <20><><EFBFBD><EFBFBD>PSN<53><4E><EFBFBD>Ҵ<EFBFBD><D2B4>޵<EFBFBD><DEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>򷵻<EFBFBD>-1
int16_t Ext_Lookup_Bottle_PSN(uint8_t PSN[], int16_t cnt);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD>PSN<53><4E>û<EFBFBD><C3BB><EFBFBD>򷵻<EFBFBD>-1
int16_t Ext_Lookup_Box_TGGU(char TGGU[], int16_t cnt);
// <20><><EFBFBD><EFBFBD>PSN<53><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>򷵻<EFBFBD>-1
int16_t Ext_Lookup_Box_PSN(uint8_t PSN[], int16_t cnt);
// <20><><EFBFBD>´ӷ<C2B4><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĹ<D8B5><C4B9><EFBFBD><E4B5B5>
void Ext_Update_Boxes(char *buff);
#endif