Index: trunk/fw_g473rct/SES/inc/modbus.h
===================================================================
--- trunk/fw_g473rct/SES/inc/modbus.h	(revision 63)
+++ trunk/fw_g473rct/SES/inc/modbus.h	(revision 69)
@@ -30,16 +30,22 @@
   
     //! define der Größe der Ein- und Ausgangsbuffer
-    #define RXBUFFERSIZE                                256
-    #define TXBUFFERSIZE                                256
+    #define RXBUFFERSIZE                    256
+    #define TXBUFFERSIZE                    256
   
-    #define FORWARD_DATA                                TRUE
+    #define FORWARD_DATA                    TRUE
     #define SEND_TO_LOKALBUS				1
     #define RESPOND_TO_QUERY				2	
 
-    #define MAX_ADRESS                                  ((sizeof(sys_data_struct_t) / 2)-1)
+    #define MAX_ADRESS                      ((sizeof(sys_data_struct_t) / 2)-1)
     
-    #define MODBUS_UART_PARITY_EVEN                     0
-    #define MODBUS_UART_PARITY_ODD                      1
-    #define MODBUS_UART_PARITY_NONE                     2
+    #define MODBUS_UART_PARITY_EVEN         0
+    #define MODBUS_UART_PARITY_ODD          1
+    #define MODBUS_UART_PARITY_NONE         2
+
+	#define MODBUS_BROADCAST_ADDRESS        0x00
+	#define FC_READ_COILS                   0x01
+	#define FC_READ_HOLDING_REGISTERS       0x03
+	#define FC_WRITE_SINGLE_REGISTER        0x06
+	#define FC_WRITE_MULTIPLE_REGISTER      0x10
 
 //    typedef union bword
Index: trunk/fw_g473rct/SES/inc/ring.h
===================================================================
--- trunk/fw_g473rct/SES/inc/ring.h	(revision 69)
+++ trunk/fw_g473rct/SES/inc/ring.h	(revision 69)
@@ -0,0 +1,23 @@
+#ifndef RING_BUFFER_H
+#define RING_BUFFER_H
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#define RB_SIZE (1U << 13U)  // must be power of 2 for efficiency
+
+typedef struct
+{
+    uint8_t buffer[RB_SIZE];
+    volatile uint16_t head;
+    volatile uint16_t tail;
+} ring_buffer_t;
+
+void rb_init(ring_buffer_t* rb);
+bool rb_push(ring_buffer_t* rb, uint8_t data);
+bool rb_pop(ring_buffer_t* rb, uint8_t* data);
+uint16_t rb_available(const ring_buffer_t* rb);
+bool rb_peek(const ring_buffer_t* const rb, uint8_t* const data);
+bool rb_peek_at(const ring_buffer_t* const rb, uint16_t index, uint8_t* data);
+
+#endif
Index: trunk/fw_g473rct/SES/inc/sysdata.h
===================================================================
--- trunk/fw_g473rct/SES/inc/sysdata.h	(revision 63)
+++ trunk/fw_g473rct/SES/inc/sysdata.h	(revision 69)
@@ -226,5 +226,5 @@
 	/* 8 of 8 */ uint16_t ltc_charge_current_max;								// 239
 	/* 4 of 8 */ int64_t  mAs_AutoModeU;										// 240-243
-	/* 6 of 8 */ uint16_t UNIQUE_NAME(reserved);								// 244
+	/* 6 of 8 */ uint16_t ramCRCErrCnt;											// 244
 	/* 6 of 8 */ uint16_t UNIQUE_NAME(reserved);								// 245
 	/* 6 of 8 */ uint16_t UNIQUE_NAME(reserved);								// 246
