SDC C-Project CF Review 프로그램
LYW
2022-05-31 f1a543772246f59b8b52a8857270b38ee38f3588
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
115
116
117
118
119
120
121
122
123
124
#ifndef _MVCP_H_
#define _MVCP_H_
 
#include <string>
#include <stdint.h>
 
namespace mvsol {
 
    namespace protocol {
 
        const unsigned char STX            = 0x02;
        const unsigned char ETX            = 0x03;
        const unsigned char UNIQUECODE    = 0x7D;
        const unsigned char MAGICCODE    = 0x20;
 
        const unsigned char READ        = 0x52;
        const unsigned char WRITE        = 0x57;
 
        const unsigned char READACK        = 0x72;
        const unsigned char WRITEACK    = 0x77;
 
        enum ProtocolVersion
        {
            kProtocolVersion1 = 1,
        };
 
 
        class Security
        {
        public:
            static int Encrypt(const unsigned char* indata, int indatasize, unsigned char* outdata, int* outdatasize);
            static int Decrypt(const unsigned char* indata, int indatasize, unsigned char* outdata, int* outdatasize);
        };
        
 
        class BaseProtocol
        {
        public:
            BaseProtocol();
            ~BaseProtocol();
 
        public:
            static unsigned char CalcCheckSum(const unsigned char* data, int datasize);
 
        public:
            virtual int GetBytes(unsigned char* outdata, int* outdatasize) = 0;
        };
 
 
        class MVCP : public BaseProtocol
        {
        public:
            MVCP();
            MVCP(unsigned char command, unsigned short address, unsigned int data, unsigned char status = 0x00);
 
            enum { LENGTH = 11, };
 
        public:
            virtual int GetBytes(unsigned char* outdata, int* outdatasize);
            virtual void Parse(unsigned char* indata, int indatasize);
 
            virtual std::string ToString();
 
        public:
            static int GetBytes(unsigned char command, unsigned short address, unsigned int data, unsigned char status, unsigned char* outdata, int* outdatasize);
 
        //¼Ó¼º
        public:
            unsigned char GetCommand() const { return command_; }
            unsigned short GetAddress() const { return address_; }
            unsigned int GetData() const { return data_; }
            unsigned char GetStatus() const { return status_; }
            unsigned char GetCheckSum() const { return checksum_; }
 
        protected:
            unsigned char command_;
            unsigned short address_;
            unsigned int data_;
            unsigned char status_;
            unsigned char checksum_;
        };
 
 
        // Broadcast sending data
        class MVBRCP : public BaseProtocol
        {
        public:
            MVBRCP();
            ~MVBRCP();
 
            enum { LENGTH = 19, };
 
        public:
            virtual int GetBytes(unsigned char* outdata, int* outdatasize);
 
        // ¼Ó¼º
        public:
            static int GetBytes(unsigned char command, unsigned short address, unsigned int serialnumber, unsigned long long data, unsigned char status, unsigned char* outdata, int* outdatasize);
        };
 
        class MVBACP : public BaseProtocol
        {
        public:
            MVBACP();
            ~MVBACP();
 
            enum { LENGTH = 71, };
 
        public:
            virtual int GetBytes(unsigned char* outdata, int* outdatasize);
            virtual int Parse(const unsigned char* indata, int indatasize);
 
            //virtual int Send()
 
        public:
            static int GetBytes(unsigned char command, unsigned short address, unsigned int data, unsigned char status, unsigned char* outdata, int* outdatasize);
        };
 
    } // namespace protocol
 
} // namespace mvsol
 
 
#endif //__MVCP_H__