Ubuntu12.04.4_lts
2023-08-01 961efe36f62f7eba688d504ec0cdf3e1daa4dd74
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#ifndef LORACELL_H
#define LORACELL_H
 
#include <qthread.h>
#include <QDebug>
#include <QMutex>
#include "Common/data_define.h"
 
//----------------------------------------------------------------------------------------------
 
#define   CRC_NORMAL            0
#define   CRC_REVERSE           1
 
#define DEVICE_ADDR_BROADCAST    0xFF
 
//----------------------------------------------------------------------------------------------
#define CMD_READVOL     0x00A0
#define CMD_SETMONADDR  0x00A2
#define CMD_ADJMONVOL   0x00A3
#define CMD_VERSION     0x00A4
#define CMD_SETMONFRE   0x00A8
 
#define CMD_SetADJOffSet    0x00B1
#define    CMD_SetADJSlope        0x00B2
 
#define MON_MAX_VOL     16000
 
#define     TRDATA_len            16
 
#define MODE_CYCLE          0   //轮询
#define MODE_SINGLE         1   //单个
 
class LORACELL : public QThread
{
    Q_OBJECT
 
public:
        LORACELL(const char *dev, int fre, int order);
        virtual void run();
        ~LORACELL();
 
public:
        void setWorkNum(int num_g,int num_eachm);
        void setWorkParam(int param1, int param2);
        int setWorkFre(int fre);
        int  getWorkFre();
        bool setmoduleaddr(int num, int num2);//当前地址,目标地址
        bool setmodulefre(int num, int num2);//单体地址,目标频段
        void GetBattVolData(void *data);
        int all_tx;
        int all_rx;
        bool adjmon_offset(int num, int vol);
        bool adjmon_slope(int num, int vol);
        void set_readmode(int);
        void set_addrsingle(int);
        void setadjindex(int);
        int AdjMonoVol(const quint8 index, const quint16 vol, int index_type=0);
 
        QString get_version();
        void getmodulevol(void *data);
 
private:
        int FD_NRF905;
 
        bool runEn;
 
        static const int CommOK = 0;
        static const int CommTxError = -1;
        static const int CommRxError = -2;
        static const int CommDataError = -3;
        static const int CommWrFailError = -4;
 
        quint16 battVolData[MONOMER_NUM_MAX];
        quint8 battVolErrCnt[MONOMER_NUM_MAX];
 
        int Work_Order;
        int Work_Num;
        int EachGroupBattSum;
        int EachGroupModule;
        quint16 BattGroup;
 
        int tx_count[75];
        int rx_count[75];
        int readmode;       //读取模式
        int addr_singlemodule;//单个模块读取地址
        int nowfre;
        int adj_index;
        int module0vol[4];
        int monversion[4];
 
        void set_speed(int fd, int speed);
        int set_Parity(int fd,int databits,int stopbits,int parity);
        int OpenDev(const char *Dev);
        void SetDevAttr(int fd,int bitrate, char bitlen, char stopbitlen, char checktype);
        int WriteDev(int fd, void *buf, int len);
        int ReadDev(int fd, void *buf, int len);
 
 
        bool readMonVol(int maddr, int timeout_ms);
        int  retryerrormodule(int times, int timeout_ms, bool *error_count);
        bool readMonVersion(int maddr,int timeout_ms);
 
        int TxPacket(const unsigned char *addr, const void *datas, int fre);
        unsigned char CheckDataIfOK(const unsigned char *ADDR, RFData m_TXData, RFData* m_RFData);
 
        int Write_LoRa_Config(int fre);
        int Uart_Write_LoRa_Config(int);
        int Read_LoRa_Config(unsigned char *pbuf);
        int Uart_Read_LoRa_Config(unsigned char *pbuf);
        void Set_LoRa_Mode(const unsigned char mode);
        int ReadData(void *buf, const int len, const int timeout_5ms);
};
 
#endif // MODULE_DRV_H