ShipCentralControl/Anjiehui7_DTU/User/def_data.h

521 lines
13 KiB
C
Raw Normal View History

2025-04-03 15:59:48 +08:00
/*
*********************************************************************************************************
* IAR Development Kits
* on the
*
* Nano130
*
* Filename : def_data.h
* Version : V1.00
* Programmer(s) : Qian Xianghong
*********************************************************************************************************
*/
#ifndef USER_DEF_DATA_PRESENT
#define USER_DEF_DATA_PRESENT
#include "type.h"
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#pragma anon_unions
#pragma pack(push, 1)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern const uint8_t CONFIG_BOARD_SELF;
// <20><EFBFBD><E6B4A2>ʶ="LS"
#define CONFIG_MARK_LS (('S' << 8) | 'L')
// <20><>Ʒ<EFBFBD><C6B7>ʶ="CY"
#define CONFIG_PRODUCT_CY (('Y' << 8) | 'C')
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʶ
#define CONFIG_FLAG_NOT_INITED 0
#define CONFIG_FLAG_INITED 1
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
#define CONFIG_BOARD_SINGLE 0 // һ<><D2BB>ʽ
#define CONFIG_BOARD_SAMPLE 1
#define CONFIG_BOARD_POWER 2
#define CONFIG_BOARD_DISPLAY 3
#define CONFIG_BOARD_BLUETOOTH 4
// <20><><EFBFBD>ݱ<EFBFBD><DDB1>루DC<44><43>
#define CAN_DC_NONE 0
#define CAN_DC_BOTTLE_CONFIG 1
#define CAN_DC_SENSOR_CONFIG 2
#define CAN_DC_DATA_CONFIG 3
#define CAN_DC_DISPLAY_CONFIG 4
#define CAN_DC_SAMPLE_SYSINFO 5
#define CAN_DC_POWER_SYSINFO 6
#define CAN_DC_DISPLAY_SYSINFO 7
#define CAN_DC_BLUETOOTH_SYSINFO 8
#define CAN_DC_DTU_DATA 9
#define CAN_DC_SAMPLE_DATA 10
#define CAN_DC_ADC_DATA 11
// ֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>
#define CAN_NOTIFY_RESET 0
#define CAN_NOTIFY_UPGRADE 1
#define CAN_NOTIFY_UPDATE 2
#define CAN_NOTIFY_SLEEP 3
#define CAN_NOTIFY_PING 4
#define CAN_NOTIFY_SAMPLE 5
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BOTTLE_TYPE_STAND 0 // <20><>ʽ
#define BOTTLE_TYPE_LYING 1 // <20><>ʽ
#define BOTTLE_TYPE_SPHERICAL 2 // <20><><EFBFBD><EFBFBD>
#define SENSOR_STATUS_NORMAL 0x00 // <20><><EFBFBD><EFBFBD>״̬
#define SENSOR_STATUS_NOCONNECT 0x01 // BIT0
#define SENSOR_STATUS_UNDERFLOW 0x02 // BIT1
#define SENSOR_STATUS_OVERFLOW 0x04 // BIT2
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
#define MEASURE_DPRESS 0
#define MEASURE_WEIGHT 1
// <20><>ʾ<EFBFBD><CABE>λ
#define DISP_UNIT_METRIC 0 // <20><><EFBFBD>Ƶ<EFBFBD>λ
#define DISP_UNIT_ENGLISH 1 // Ӣ<>Ƶ<EFBFBD>λ
// <20><>ʾģʽ
#define DISP_MODE_ALL 1 // <20><>ʾȫ<CABE><C8AB>
#define DISP_MODE_DPRESS 0 // <20><><EFBFBD><EFBFBD>ʾ<EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DISP_MODE_L 2 // <20><>ʾ<EFBFBD>ݻ<EFBFBD>, <20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
#define DISP_MODE_KG 3 // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ʾ<EFBFBD>ݻ<EFBFBD>
// <20><>żУ<C5BC>ʽ
#define PARITY_NONE 'n'
#define PARITY_SPACE 's'
#define PARITY_MARK 'm'
#define PARITY_ODD 'o'
#define PARITY_EVEN 'e'
// <20><>Ӫ<EFBFBD><D3AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define NET_TYPE_2G '2'
#define NET_TYPE_3G '3'
#define NET_TYPE_4G '4'
#define NET_TYPE_GPRS 'G'
#define NET_TYPE_CDMA 'C'
#define NET_TYPE_EDGE 'E'
// <20><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD><EFBFBD><EFBFBD>״̬
#define VACUUM_STATUS_FAULT 0 // <20><><EFBFBD><EFBFBD>
#define VACUUM_STATUS_OK 1 // <20><><EFBFBD><EFBFBD>
#define VACUUM_STATUS_COMM_FAULT 255 // ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
// й¶<D0B9><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
#define LEAK_STATUS_OK 0 // <20><><EFBFBD><EFBFBD>
#define LEAK_STATUS_FAULT 1 // <20><><EFBFBD><EFBFBD>
#define LEAK_STATUS_A1_ALARM 2 // <20><><EFBFBD>ޱ<EFBFBD><DEB1><EFBFBD>
#define LEAK_STATUS_A2_ALARM 3 // <20><><EFBFBD>ޱ<EFBFBD><DEB1><EFBFBD>
#define LEAK_STATUS_COMM_FAULT 255 // ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
// й©<D0B9><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>
#define LEAK_TYPE_SWITCH 1 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define LEAK_TYPE_CURRENT 2 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define LEAK_TYPE_MODBUS 4 // Modubs<62><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>󻺳<EFBFBD><F3BBBAB3><EFBFBD><EFBFBD><EFBFBD>С
#define DATA_BUFF_SIZE 128
// <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
uint32_t lowRange; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t highRange; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t zeroValue; // У<><D0A3>ֵ
uint32_t fullValue; // У<><D0A3>ֵ
} weight_param_t;
// <20><>ѹ/ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
uint16_t lowRange; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t highRange; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t zeroValue; // У<><D0A3>ֵ
uint16_t fullValue; // У<><D0A3>ֵ
} press_param_t;
// <20>¶ȴ<C2B6><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
int16_t lowRange; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int16_t highRange; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t zeroValue; // У<><D0A3>ֵ
uint16_t fullValue; // У<><D0A3>ֵ
} tempr_param_t;
// <20><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
uint8_t staVacuum; // <20><><EFBFBD>ռ<EFBFBD>״̬
unsigned : 8;
uint16_t lifeVacuum; // <20><><EFBFBD>ռ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float vacuum; // <20><><EFBFBD>ն<EFBFBD>
float rateVacuum; // ©<><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} vacuum_data_t;
// й¶<D0B9><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
uint8_t typeLeak; // й¶<D0B9><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t staLeak; // й¶<D0B9><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
uint16_t concentrations; // <20><><EFBFBD><EFBFBD>Ũ<EFBFBD><C5A8>
} leak_data_t;
typedef union
{
uint8_t status;
struct
{
unsigned notConnect : 1; // <20><><EFBFBD><EFBFBD>״̬
unsigned underFlow : 1; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned overFlow : 1; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned : 5;
};
} sensor_status_t;
// <20><EFBFBD><E6B1BE>
typedef struct
{
uint8_t major; // <20><><EFBFBD><EFBFBD><E6B1BE>
uint8_t minor; // <20>ΰ汾<CEB0><E6B1BE>
} version_t;
// <20><><EFBFBD><EFBFBD>
typedef struct
{
uint8_t year;
uint8_t month;
uint8_t day;
} date_t;
// ʱ<><CAB1>
typedef struct
{
uint8_t hour;
uint8_t minute;
uint8_t second;
} time_t;
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
typedef struct
{
uint8_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minute;
uint8_t second;
} date_time_t;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>Ϣ
typedef struct
{
uint16_t mark; //="LS"<22><><EFBFBD><EFBFBD><E6B4A2>ʶ
uint16_t product; //="CY"<22><><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>ʶ
uint8_t DC; // <20><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
unsigned : 8;
version_t ver; // <20><EFBFBD><E6B4A2>ʽ<EFBFBD><EFBFBD><E6B1BE>
} config_header_t;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-<2D><><EFBFBD>޲<EFBFBD><DEB2><EFBFBD>
typedef struct
{
config_header_t header; // ͷ<><CDB7>Ϣ
uint16_t serverVer; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>
uint8_t updateFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־
uint8_t addr; // ͨ<>ŵ<EFBFBD>ַ
uint8_t PSN[6]; // PSN
uint8_t type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t source; // ҺԴ
uint16_t len; // Բ<><D4B2><EFBFBD><EFBFBD><E5B3A4>
uint16_t diameter; // <20>ھ<EFBFBD>
uint16_t lenExtra; // ֱ<>߷<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
float density[5]; // <20><>ҺԴ<D2BA>ı<EFBFBD><C4B1><EFBFBD>
uint8_t chargePct; // <20><>װ<EFBFBD><D7B0>
uint8_t measureType;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
uint16_t fullPct; // <20><>Һλ<D2BA>ٷֱ<D9B7>
uint16_t priPct; // <20>ؼ<EFBFBD>Һλ<D2BA>ٷֱ<D9B7>
uint16_t orderPct; // <20><><EFBFBD><EFBFBD>Һλ<D2BA>ٷֱ<D9B7>
uint16_t emptyPct; // <20><>Һλ<D2BA>ٷֱ<D9B7>
uint32_t planMount; // ÿ<>ռƻ<D5BC><C6BB><EFBFBD><EFBFBD><EFBFBD>
uint32_t predictMount; // ÿ<><C3BF>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t warnVolt; // <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>: 10mV
uint16_t warnVoltH; // <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>: 10mV
uint16_t warnPress; // ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>: KPa
uint16_t warnPressH; // ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>: KPa
uint32_t options; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t ts; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
uint8_t dispMode; // <20><>ʾģʽ
unsigned : 8;
struct // Others
{
uint16_t warnVacuumH; // <20>¶ȱ<C2B6><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int16_t warnTempr; // <20>¶ȱ<C2B6><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int16_t warnTemprH; // <20>¶ȱ<C2B6><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
2025-05-21 14:04:38 +08:00
uint8_t reserved[32];
uint16_t lora_freq;
2025-04-03 15:59:48 +08:00
uint32_t offlineSeconds; // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ʱ<EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
uint16_t crc;
} config_bottle_t;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
config_header_t header; // ͷ<><CDB7>Ϣ
unsigned : 8;
unsigned : 8;
weight_param_t sensorWeight; // <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
press_param_t sensorDPress; // <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
press_param_t sensorPress; // ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
press_param_t sensorEPress[3];// <20><>չѹ<D5B9><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tempr_param_t sensorETempr[3];// <20><>չ<EFBFBD>¶ȴ<C2B6><C8B4><EFBFBD><EFBFBD><EFBFBD>
uint8_t reserved[36];
uint16_t crc;
} config_sensor_t;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3-<2D><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
typedef struct
{
config_header_t header; // ͷ<><CDB7>Ϣ
unsigned : 8;
unsigned : 8;
char reserved[8];
char server[30]; // <20><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD>
int16_t port; // <20><><EFBFBD>ݶ˿<DDB6>
char gpsServer[30]; // <20><EFBFBD><ECBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int16_t gpsPort; // <20><EFBFBD>˿<EFBFBD>
uint16_t intervalSample; // <20><><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint32_t intervalTrans; // <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
uint16_t intervalGPS; // λ<>òɼ<C3B2><C9BC><EFBFBD><EFBFBD><EFBFBD>
uint16_t intervalGPSTrans; // λ<><CEBB><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
int8_t timeLag; // ʱ<>Ĭ<EEA3AC><C4AC>Ϊ+8
unsigned : 8;
char upgServer[30]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int16_t upgPort; // <20><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
uint16_t crc;
} config_data_t;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4-<2D><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
config_header_t header; // ͷ<><CDB7>Ϣ
unsigned : 8;
unsigned : 8;
uint16_t lightDelay; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
uint16_t dispDelay; // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʱ
uint8_t unit; // <20><>ʾ<EFBFBD><CABE>λ
uint8_t L_Unit; // <20><>ʾ<EFBFBD><CABE>λ<EFBFBD><CEBB>UNIT_KPA, UNIT_KG, UNIT_L, UNIT_PCT, UNIT_MMH2O<32><4F>
char pwd1[6]; // <20><><EFBFBD>޲<EFBFBD><DEB2><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
char pwd2[6]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8><EFBFBD><EFBFBD>
char APN[8]; // <20><>Ӫ<EFBFBD><D3AA>APN
2025-04-24 08:10:26 +08:00
uint8_t ch_en;
uint8_t reserved[89];
2025-04-03 15:59:48 +08:00
uint16_t crc;
} config_display_t;
// <20>ɼ<EFBFBD><C9BC><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ
typedef struct
{
uint8_t boardFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
unsigned : 8;
version_t hardVer;
version_t softVer;
date_t softDate;
unsigned : 8;
} sysinfo_sample_t;
// <20><>Դ<EFBFBD><D4B4>ϵͳ<CFB5><CDB3>Ϣ
typedef struct
{
uint8_t boardFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
unsigned : 8;
version_t hardVer;
version_t softVer;
date_t softDate;
char parity; // <20><>żУ<C5BC>ʽ
uint32_t baudrate; // DTU<54><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
version_t protocolVer; // Զ<><D4B6>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><E6B1BE>
char simNumber[24]; // sim<69><6D><EFBFBD><EFBFBD>
char dtuRevison[24]; // 4Gģ<47><C4A3><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><E6B1BE>
char imeiNumber[16]; // 4Gģ<47><C4A3>IMEI<45><49><EFBFBD><EFBFBD>
uint32_t gprsSendCount; // GPRS<52><53><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
uint32_t gprsSuccCount; // GPRS<52>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
char gprsFailCode[6]; // GPRSʧ<53>ܴ<EFBFBD><DCB4><EFBFBD>
} sysinfo_power_t;
// <20><>ʾ<EFBFBD><CABE>ϵͳ<CFB5><CDB3>Ϣ
typedef struct
{
uint8_t boardFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
unsigned : 8;
version_t hardVer;
version_t softVer;
date_t softDate;
unsigned : 8;
} sysinfo_display_t;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ
typedef struct
{
uint8_t boardFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
unsigned : 8;
version_t hardVer;
version_t softVer;
date_t softDate;
char parity; // <20><>żУ<C5BC>ʽ
uint32_t baudrate; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E9B2A8><EFBFBD><EFBFBD>
version_t protocolVer; // <20><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD>
char moduleName[20]; // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} sysinfo_bluetooth_t;
// DTU<54>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
typedef struct // size = 36
{
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 rssi; // GPRS<52>ź<EFBFBD>ǿ<EFBFBD><C7BF>
uint8_t networked; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
uint8_t connected; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD>
uint8_t netType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t posState; // GPS<50><53>λ״̬
uint8_t sateCount; // GPS<50><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t batPct; // <20><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ٷֱ<D9B7>
uint8_t batLow; // <20>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>־
int16_t batVoltage; // <20><><EFBFBD>ص<EFBFBD>ѹ
uint16_t batMaxCapa; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t batCapa; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int16_t batCurrent; // <20><><EFBFBD>س<EFBFBD>/<2F>ŵ<EFBFBD><C5B5><EFBFBD>
int16_t batTempr; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int16_t sunLevel; // <20><><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>
} data_dtu_t;
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
typedef struct // size = 118
{
uint32_t volumeTotal; // <20><><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD>
sensor_status_t staWeight; // <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC> size = 1
sensor_status_t staDPress; // <20><>ѹ/<2F><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>״̬
sensor_status_t staPress; // ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
sensor_status_t staExtPress[3]; // <20><>չѹ<D5B9><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
sensor_status_t staExtTempr[3]; // <20><>չ<EFBFBD>¶ȴ<C2B6><C8B4><EFBFBD><EFBFBD><EFBFBD>״̬
unsigned : 8;
float diff; // <20><>ѹ/<2F><><EFBFBD><EFBFBD>
float height; // Һλ<D2BA>߶<EFBFBD>
uint32_t volume; // <20>ݻ<EFBFBD>
uint32_t weight; // <20><><EFBFBD><EFBFBD>
uint16_t volumePct; // <20>ݻ<EFBFBD><DDBB>ٷֱ<D9B7>
uint16_t pressure; // ѹ<><D1B9>
uint16_t extPressure[3]; // <20><>չѹ<D5B9><D1B9>
int16_t extTempr[3]; // <20><>չ<EFBFBD><EFBFBD>
vacuum_data_t vacuum[1]; // <20><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>A<EFBFBD><41>B<EFBFBD><42><EFBFBD><EFBFBD>size = 16 x 1
uint8_t reserved[8]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6>ֶΣ<D6B6><CEA3><EFBFBD><32><C2B7>Ϊ1·<31><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>С<EFBFBD><D0A1>
leak_data_t leak; // й¶<D0B9><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD> size = 4
uint8_t reserved_flow[22];
uint32_t adWeight; // <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>ADת<44><D7AA>ֵ
uint16_t adDPress; // <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADת<44><D7AA>ֵ
uint16_t adPress; // ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADת<44><D7AA>ֵ
uint16_t adExtPress[3]; // <20><>չѹ<D5B9><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADת<44><D7AA>ֵ
uint16_t adExtTempr[3]; // <20><>չ<EFBFBD>¶ȴ<C2B6><C8B4><EFBFBD><EFBFBD><EFBFBD>ADת<44><D7AA>ֵ
uint8_t charging; // <20><>װ<EFBFBD><D7B0>־
uint8_t warnning; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
} data_sample_t;
// adcֵ
typedef struct
{
uint16_t adcDiff; // <20><>ѹADCֵ
uint16_t adcPress; // ѹ<><D1B9>ADCֵ
uint16_t adcEPress[3]; // <20><>չѹ<D5B9><D1B9>ADCֵ
uint16_t adcETempr[3]; // <20><>չ<EFBFBD><EFBFBD>ADCֵ
uint32_t adcWeight; // <20><><EFBFBD><EFBFBD>ADCֵ
} adc_sample_t;
// <20><><EFBFBD><EFBFBD><E5BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CANͨѶ<CDA8><D1B6>Flash<73><68>д
typedef union
{
// <20>ֽڻ<D6BD><DABB><EFBFBD><E5A3AC><EFBFBD><EFBFBD>ͨ<EFBFBD>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD>ж<EFBFBD>д
uint8_t buff[DATA_BUFF_SIZE];
// <20>ֻ<EFBFBD><D6BB><EFBFBD>
uint16_t buff16[DATA_BUFF_SIZE / sizeof(uint16_t)];
// ˫<>ֻ<EFBFBD><D6BB><EFBFBD><E5A3AC><EFBFBD>ڶ<EFBFBD>дFlash
uint32_t buff32[DATA_BUFF_SIZE / sizeof(uint32_t)];
// <20><><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
config_header_t header; // ͷ<><CDB7>Ϣ
// <20><><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶν<D6B6><CEBD><EFBFBD>
config_bottle_t configBottle;
config_sensor_t configSensor;
config_data_t configData;
config_display_t configDisplay;
sysinfo_sample_t sampleInfo;
sysinfo_power_t powerInfo;
sysinfo_display_t displayInfo;
sysinfo_bluetooth_t bluetoothInfo;
data_dtu_t dtuData;
data_sample_t sampleDdata;
adc_sample_t adcData;
} rd_buff_t;
// <20><><EFBFBD>ڴ洢<DAB4><E6B4A2><EFBFBD><EFBFBD>
typedef struct
{
config_bottle_t configBottle;
config_sensor_t configSensor;
config_data_t configData;
config_display_t configDisplay;
sysinfo_sample_t sampleInfo;
sysinfo_power_t powerInfo;
sysinfo_display_t displayInfo;
sysinfo_bluetooth_t bluetoothInfo;
data_dtu_t dtuData;
data_sample_t sampleData;
adc_sample_t adcData;
} data_buff_t;
#pragma pack(pop)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ij<EFBFBD><C4B3><EFBFBD>
#define CONFIG_DATA_LEN(DC) Config_DataLen[(DC) - 1]
#define CONFIG_DATA_PTR(DC) Config_DataPtr[(DC) - 1]
extern const uint8_t Config_DataLen[];
extern const void* Config_DataPtr[];
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
extern data_buff_t dcBuff;
uint32_t Config_CheckValid(rd_buff_t *dataBuff, uint8_t DC);
void Config_ForceValid(rd_buff_t *dataBuff, uint8_t DC);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ı<DEB8>־
uint32_t Config_CheckUpdate(data_buff_t *dataBuff);
// <20><><EFBFBD>ô<EFBFBD><C3B4>޲<EFBFBD><DEB2><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
void Config_setBottleDefParam(data_buff_t *dataBuff);
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
void Config_setSensorDefParam(data_buff_t *dataBuff);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
void Config_setDataDefParam(data_buff_t *dataBuff);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
void Config_setDisplayDefParam(data_buff_t *dataBuff);
// <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ
void Config_fillSampleInfo(data_buff_t *dataBuff);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ϵͳ<CFB5><CDB3>Ϣ
void Config_fillPowerInfo(data_buff_t *dataBuff);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ϵͳ<CFB5><CDB3>Ϣ
void Config_fillDisplayInfo(data_buff_t *dataBuff);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ
void Config_fillBluetoothInfo(data_buff_t *dataBuff);
// <20><><EFBFBD><EFBFBD>ʽΪx16+x15+x2+1,LSB˳<42><CBB3>
uint16_t do_crc_16(unsigned short crc_reg, uint8_t *message, int16_t len);
#endif