ConOpSys V2970  P004.07
ANVILEX control operating system
Protocol_ANVILEX_Over_UART_V2.h
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 //! @file Protocol_ANVILEX_Over_UART_V2.h
3 //! @brief Communication protocol ANVILEX over UART class header file.
4 //! @attention No special attention requered.
5 //! @copyright (C) 2015-2020 ANVILEX LLC
6 //! $HeadURL: https://192.168.3.4:8443/svn/P004_07/ConOpSys/Engine/Protocol_ANVILEX_Over_UART_V2.h $
7 //! $Revision: 2359 $
8 //! $Date: 2021-02-08 19:48:43 +0500 (Пн, 08 фев 2021) $
9 //! $Author: ggavrituhin $
10 //------------------------------------------------------------------------------
11 //
12 // Redistribution and use in source and binary forms, with or without
13 // modification, are permitted provided that the following conditions are met:
14 //
15 // 1. Redistributions of source code must retain the above copyright notice,
16 // this list of conditions and the following disclaimer.
17 //
18 // 2. Redistributions in binary form must reproduce the above copyright notice,
19 // this list of conditions and the following disclaimer in the documentation
20 // and/or other materials provided with the distribution.
21 //
22 // 3. Neither the name of ANVILEX nor the names of its contributors may be
23 // used to endorse or promote products derived from this software without
24 // specific prior written permission.
25 //
26 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
30 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 // POSSIBILITY OF SUCH DAMAGE.
37 //
38 //------------------------------------------------------------------------------
39 
40 #pragma once
41 
42 //------------------------------------------------------------------------------
43 // Include system files
44 //------------------------------------------------------------------------------
45 
46 #include "Protocol_Base.h"
47 #include "ConOpSys_Variant.h"
48 
49 //------------------------------------------------------------------------------
50 
51 #define ANVILEX_PROTOCOL_RX_BUFFER_SIZE ( (U32)0x080 )
52 #define ANVILEX_PROTOCOL_TX_BUFFER_SIZE ( (U32)0x100 )
53 #define ANVILEX_SLAVE_FRAME_SIZE ( (U32)20 )
54 #define ANVILEX_SLAVE_FRAME_NUMBER ( (U32)5 )
55 
56 //------------------------------------------------------------------------------
57 // Class definitions
58 //------------------------------------------------------------------------------
59 
60 //! @brief Communication protocol ANVILEX over UART class
62 {
63 
64  //----------------------------------------------------------------------------
65  // Public defines, methods and variables
66  //----------------------------------------------------------------------------
67 
68  public:
69 
70  // Parameter property index definitions
71  typedef enum
72  {
73 
74  enum_ID = 1,
80  enum_Name = 7,
83  enum_Unit = 10
84 
86 
87  // Event property index definitions
88  typedef enum
89  {
90 
92 
94 
95  // ANVILEX protocol return values definition
96  typedef enum
97  {
98 
99  // Sucess related code
100  enum_Ok = 0x00000000,
101 
102  //
105  enum_Not_Implemented = 0x00000003,
106  enum_Unknown_Error = 0x00000004,
107 
108  // Parameter related return codes
116 
117  // Event related return codes
118  enum_Event_Not_Found = 0x0000000C,
119  enum_Event_Property_Not_Found = 0x0000000D
120 
122 
123  // Constructor and destructor methods
124  TProtocol_ANVILEX_Over_UART_V2(); //!< Class constructor method
125  ~TProtocol_ANVILEX_Over_UART_V2(); //!< Class destructor method
126 
127  // Initialisation and finalisation
128  VOID Init(); //!< Initialisation method
129  virtual VOID Send_Information( TProtocol_Base *object_Protocol );
130 
131  // Protocol status methods
132  virtual VOID Enter_Terminal_Mode(); //!< Enter in terminal operation mode
133  virtual VOID Enter_Protocol_Mode(); //!< Enter in protocol operation mode
134  virtual BOOL Is_Terminal_Mode(); //!< Return terminal operation mode status
135  virtual BOOL Is_Protocol_Mode(); //!< Rwturn protocol operatuin mode status
136 
137  // Protocol messages control
138  VOID Show_System_Welcome_Message_Enable(); //!< Enable show system welcome message
139  VOID Show_System_Welcome_Message_Disable(); //!< Disable show system welcome message
140  VOID Show_System_Ready_Message_Enable(); //!< Enable system ready message
141  VOID Show_System_Ready_Message_Disable(); //!< Disable system ready message
142 
143  // Receive related methods
144 // virtual VOID Receive_Char( C8 c8_Character );
145  virtual VOID Communication_Data_Receive( U8 u8_Receive_Value );
146  virtual VOID Communication_Data_Receive( VOID *void_Receive_Data );
147 
148  virtual VOID Receive_String( C8 *c8_String );
149  virtual VOID Receive_String( C8 *c8_String, U32 u32_Length );
150 
151  // Transmit related methods
152  VOID Transmit_Prompt(); //!< Transmit prompt in terminal mode
153  VOID Transmit_Boot_Welcome_Message(); //!< Transmit boot welcome message method
154  VOID Transmit_System_Ready_Message(); //!< Transmit system ready message method
155 
156  // Execute method
157  virtual VOID Execute();
158 
160 
161  // Diverse methods
162 
163  //----------------------------------------------------------------------------
164  // Protected defines, methods and variables
165  //----------------------------------------------------------------------------
166 
167  protected:
168 
169  //----------------------------------------------------------------------------
170  // Private defines, methods and variables
171  //----------------------------------------------------------------------------
172 
173  private:
174 
175  //--------------------------------------------------------------------------
176  // Parameter related methods
177  //--------------------------------------------------------------------------
178 
179  BOOL Terminal_Parameter_Information_Request(); //!< Parameter information terminal request
180  BOOL Protocol_Parameter_Information_Request(); //!< Parameter information protocol request
181 
182  BOOL Terminal_Parameter_Read_Request(); //!< Parameter read terminal request
183  BOOL Protocol_Parameter_Read_Request(); //!< Parameter read protocol request
184 
185  BOOL Terminal_Parameter_Write_Request(); //!< Parameter write terminal request
186  BOOL Protocol_Parameter_Write_Request(); //!< Parameter write protocol request
187 
188  //--------------------------------------------------------------------------
189  // Command related methods
190  //--------------------------------------------------------------------------
191 
192  VOID Command_Execution_Request(); //!< Command execution request
193 
194  //--------------------------------------------------------------------------
195  // Event related methods
196  //--------------------------------------------------------------------------
197 
198  BOOL Terminal_Event_Information_Request(); //!< Event information request in terminal mode
199  BOOL Protocol_Event_Information_Request(); //!< Event information request in protocol mode
200 
202 
203  BOOL Get_Frame( C8 *c8_Return_Value, U8 u8_Frame_Number );
204 
205  //--------------------------------------------------------------------------
206  // Common data transmision methods
207  //--------------------------------------------------------------------------
208 
209  VOID Protocol_Transmit_Error_Code( TProtocol_Return_Code enum_Return_Code ); //!< Transmit error code
210  VOID Protocol_Transmit_Variant_Value( TConOpSys_Variant *object_Value ); //!< Transmit variant value
211  VOID Protocol_Transmit_Variant_Value( TConOpSys_Variant *object_Value, U8 u8_Package_ID ); //!< Transmit variant value with node address
212  VOID Protocol_Transmit_U32_Value( U32 u32_Value ); //!< Transmit U32 value
213  VOID Protocol_Transmit_String( C8 *c8_String ); //!< Transmit null terminated string
214 
215  //! @brief Communication module instance descriptor
217 
218  //! @brief Terminal operation mode status
220 
221  //! @brief Show system welcome message status
223 
224  //! @brief Show system ready message status
226 
227  //! @brief Receive buffer index
229 
230  //! @brief Data receive buffer
232 
233  //! @brief Data transmit buffer
235 
236  //! @brief New data buffer
238 
239  //! @brief ESC code flag
240  BOOL bool_Esc = (BOOL)false;
241 
242  //! @brief Actual SCAN code
243  U8 u8_Scan_Code = (U8)'\0';
244 
245  //! @brief String recall request status
247 
248  //! @brief String recalled status
250 
251  //! @brief Package ID
253 
254  //! @brief Node address
255  U32 u32_Node_Address = (U32)SYSTEM_NODE_ADDRESS;
256 
257  //! @brief Frame counter
259 
260  //! @brief Frames list
262 
263 };
264 
265 //------------------------------------------------------------------------------
266 // End of file
267 //------------------------------------------------------------------------------
ConOpSys variant class header file.
int BOOL
Boolean datatype definition.
Definition: Defines.h:124
unsigned char U8
Binary 8-Bit unsigned integer datatype defenition.
Definition: Defines.h:183
void VOID
Datatypesess datatype definition.
Definition: Defines.h:105
unsigned long U32
Binary 32-Bit unsigned integer datatype defenition.
Definition: Defines.h:203
char C8
ASCII 8-Bit char datatype defenition.
Definition: Defines.h:156
#define ANVILEX_PROTOCOL_TX_BUFFER_SIZE
Definition: Protocol_ANVILEX_Over_UART_V2.h:52
#define ANVILEX_SLAVE_FRAME_NUMBER
Definition: Protocol_ANVILEX_Over_UART_V2.h:54
#define ANVILEX_PROTOCOL_RX_BUFFER_SIZE
Definition: Protocol_ANVILEX_Over_UART_V2.h:51
#define ANVILEX_SLAVE_FRAME_SIZE
Definition: Protocol_ANVILEX_Over_UART_V2.h:53
Communication protocol base class header file.
ConOpSys variant class.
Definition: ConOpSys_Variant.h:851
Communication protocol ANVILEX over UART class.
Definition: Protocol_ANVILEX_Over_UART_V2.h:62
VOID Transmit_System_Ready_Message()
Transmit system ready message method.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:630
VOID Transmit_Boot_Welcome_Message()
Transmit boot welcome message method.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:582
virtual VOID Receive_String(C8 *c8_String)
Receive string.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:532
VOID Protocol_Transmit_String(C8 *c8_String)
Transmit null terminated string.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:3975
C8 c8_New_Data_Buffer[ANVILEX_PROTOCOL_RX_BUFFER_SIZE]
New data buffer.
Definition: Protocol_ANVILEX_Over_UART_V2.h:237
VOID Protocol_Transmit_U32_Value(U32 u32_Value)
Transmit U32 value.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:3927
virtual BOOL Is_Protocol_Mode()
Rwturn protocol operatuin mode status.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:164
virtual VOID Send_Information(TProtocol_Base *object_Protocol)
Send information about protocol method.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:4089
VOID Init()
Initialisation method.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:101
VOID Protocol_Transmit_Variant_Value(TConOpSys_Variant *object_Value)
Transmit variant value.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:3811
U32 Get_Request_Data_Length()
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:4173
BOOL Protocol_Event_Information_Request()
Event information request in protocol mode.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:3502
BOOL Terminal_Parameter_Write_Request()
Parameter write terminal request.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:2481
VOID Show_System_Ready_Message_Disable()
Disable system ready message.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:212
BOOL Protocol_Parameter_Read_Request()
Parameter read protocol request.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:1903
VOID Command_Execution_Request()
Command execution request.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:4023
VOID Protocol_Transmit_Error_Code(TProtocol_Return_Code enum_Return_Code)
Transmit error code.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:3756
VOID Show_System_Welcome_Message_Enable()
Enable show system welcome message.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:176
virtual VOID Enter_Terminal_Mode()
Enter in terminal operation mode.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:128
BOOL bool_Show_System_Ready_Message_Enabled
Show system ready message status.
Definition: Protocol_ANVILEX_Over_UART_V2.h:225
VOID Show_System_Welcome_Message_Disable()
Disable show system welcome message.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:188
BOOL bool_Esc
ESC code flag.
Definition: Protocol_ANVILEX_Over_UART_V2.h:240
VOID Show_System_Ready_Message_Enable()
Enable system ready message.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:200
U32 u32_Receive_Buffer_Index
Receive buffer index.
Definition: Protocol_ANVILEX_Over_UART_V2.h:228
U8 u8_Scan_Code
Actual SCAN code.
Definition: Protocol_ANVILEX_Over_UART_V2.h:243
virtual VOID Execute()
Background cyclic execution method.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:694
TProtocol_ANVILEX_Over_UART_V2()
Class constructor method.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:69
C8 c8_Frame_List[ANVILEX_SLAVE_FRAME_NUMBER][ANVILEX_SLAVE_FRAME_SIZE]
Frames list.
Definition: Protocol_ANVILEX_Over_UART_V2.h:261
BOOL bool_Terminal_Mode
Terminal operation mode status.
Definition: Protocol_ANVILEX_Over_UART_V2.h:219
BOOL bool_Show_System_Welcome_Message_Enabled
Show system welcome message status.
Definition: Protocol_ANVILEX_Over_UART_V2.h:222
C8 c8_Receive_Buffer[ANVILEX_PROTOCOL_RX_BUFFER_SIZE]
Data receive buffer.
Definition: Protocol_ANVILEX_Over_UART_V2.h:231
TEvent_Property_Index
Definition: Protocol_ANVILEX_Over_UART_V2.h:89
@ enum_Event_Description
Definition: Protocol_ANVILEX_Over_UART_V2.h:91
U32 u32_Node_Address
Node address.
Definition: Protocol_ANVILEX_Over_UART_V2.h:255
TParameter_Property_Index
Definition: Protocol_ANVILEX_Over_UART_V2.h:72
@ enum_Description
Definition: Protocol_ANVILEX_Over_UART_V2.h:82
@ enum_ID
Definition: Protocol_ANVILEX_Over_UART_V2.h:74
@ enum_Default_Value
Definition: Protocol_ANVILEX_Over_UART_V2.h:79
@ enum_Unit
Definition: Protocol_ANVILEX_Over_UART_V2.h:83
@ enum_Group
Definition: Protocol_ANVILEX_Over_UART_V2.h:81
@ enum_Element_Count
Definition: Protocol_ANVILEX_Over_UART_V2.h:76
@ enum_Minimum_Value
Definition: Protocol_ANVILEX_Over_UART_V2.h:77
@ enum_Properties
Definition: Protocol_ANVILEX_Over_UART_V2.h:75
@ enum_Maximum_Value
Definition: Protocol_ANVILEX_Over_UART_V2.h:78
@ enum_Name
Definition: Protocol_ANVILEX_Over_UART_V2.h:80
BOOL bool_String_Recall_Request
String recall request status.
Definition: Protocol_ANVILEX_Over_UART_V2.h:246
BOOL Get_Frame(C8 *c8_Return_Value, U8 u8_Frame_Number)
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:4311
virtual VOID Communication_Data_Receive(U8 u8_Receive_Value)
Communication data receive method.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:224
VOID Transmit_Prompt()
Transmit prompt in terminal mode.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:682
TProtocol_Return_Code
Definition: Protocol_ANVILEX_Over_UART_V2.h:97
@ enum_Event_Not_Found
Definition: Protocol_ANVILEX_Over_UART_V2.h:118
@ enum_Parameter_Non_Readable
Definition: Protocol_ANVILEX_Over_UART_V2.h:111
@ enum_Unknown_Error
Definition: Protocol_ANVILEX_Over_UART_V2.h:106
@ enum_Invalid_Frame_Format
Definition: Protocol_ANVILEX_Over_UART_V2.h:103
@ enum_Parameter_Value_Out_Of_Bounds
Definition: Protocol_ANVILEX_Over_UART_V2.h:114
@ enum_Ok
Definition: Protocol_ANVILEX_Over_UART_V2.h:100
@ enum_Parameter_Non_Writable
Definition: Protocol_ANVILEX_Over_UART_V2.h:112
@ enum_Not_Implemented
Definition: Protocol_ANVILEX_Over_UART_V2.h:105
@ enum_Parameter_Access_Denied
Definition: Protocol_ANVILEX_Over_UART_V2.h:113
@ enum_Parameter_Write_Failure
Definition: Protocol_ANVILEX_Over_UART_V2.h:115
@ enum_Event_Property_Not_Found
Definition: Protocol_ANVILEX_Over_UART_V2.h:119
@ enum_Parameter_Property_Not_Found
Definition: Protocol_ANVILEX_Over_UART_V2.h:110
@ enum_Invalid_Frame_CRC
Definition: Protocol_ANVILEX_Over_UART_V2.h:104
@ enum_Parameter_Not_Found
Definition: Protocol_ANVILEX_Over_UART_V2.h:109
virtual BOOL Is_Terminal_Mode()
Return terminal operation mode status.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:152
BOOL Protocol_Parameter_Write_Request()
Parameter write protocol request.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:2655
C8 char_Instance_Derscriptor
Communication module instance descriptor.
Definition: Protocol_ANVILEX_Over_UART_V2.h:216
U8 u8_Package_ID
Package ID.
Definition: Protocol_ANVILEX_Over_UART_V2.h:252
BOOL bool_String_Recalled
String recalled status.
Definition: Protocol_ANVILEX_Over_UART_V2.h:249
C8 c8_Transmit_Buffer[ANVILEX_PROTOCOL_TX_BUFFER_SIZE]
Data transmit buffer.
Definition: Protocol_ANVILEX_Over_UART_V2.h:234
U8 u8_Frame_Counter
Frame counter.
Definition: Protocol_ANVILEX_Over_UART_V2.h:258
BOOL Terminal_Parameter_Read_Request()
Parameter read terminal request.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:1738
virtual VOID Enter_Protocol_Mode()
Enter in protocol operation mode.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:140
~TProtocol_ANVILEX_Over_UART_V2()
Class destructor method.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:93
BOOL Parse_Frames_Into_Message()
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:4214
BOOL Terminal_Parameter_Information_Request()
Parameter information terminal request.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:1072
BOOL Protocol_Parameter_Information_Request()
Parameter information protocol request.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:1268
BOOL Terminal_Event_Information_Request()
Event information request in terminal mode.
Definition: Protocol_ANVILEX_Over_UART_V2.cpp:3284
Definition: Protocol_Base.h:57