plc4go: enabled eip driver test

+ fixed several issues in eip
+ fixed wrong defaults for backplane and slot
+ Fixed xml rendering of fields
+ Fixed endianness
+ Fixed ansi encoding
diff --git a/plc4go/cmd/main/drivers/tests/eip_driver_test.go b/plc4go/cmd/main/drivers/tests/eip_driver_test.go
index e28299d..ca2ed1f 100644
--- a/plc4go/cmd/main/drivers/tests/eip_driver_test.go
+++ b/plc4go/cmd/main/drivers/tests/eip_driver_test.go
@@ -27,6 +27,5 @@
 )
 
 func TestEIPDriver(t *testing.T) {
-	t.Skip("Driver should work, currently there is a issue where the session id comes too late (due to Testframework won't wait)")
 	testutils.RunDriverTestsuite(t, eip.NewDriver(), "assets/testing/protocols/eip/DriverTestsuite.xml")
 }
diff --git a/plc4go/internal/plc4go/eip/Configuration.go b/plc4go/internal/plc4go/eip/Configuration.go
index aadb0e4..bc9620c 100644
--- a/plc4go/internal/plc4go/eip/Configuration.go
+++ b/plc4go/internal/plc4go/eip/Configuration.go
@@ -32,8 +32,8 @@
 
 func ParseFromOptions(options map[string][]string) (Configuration, error) {
 	configuration := Configuration{
-		backplane: 1,
-		slot:      1,
+		backplane: 0,
+		slot:      0,
 	}
 	if localRackString := getFromOptions(options, "backplane"); localRackString != "" {
 		atoi, err := strconv.Atoi(localRackString)
diff --git a/plc4go/internal/plc4go/eip/Connection.go b/plc4go/internal/plc4go/eip/Connection.go
index a2514bf..6b0a9d8 100644
--- a/plc4go/internal/plc4go/eip/Connection.go
+++ b/plc4go/internal/plc4go/eip/Connection.go
@@ -93,7 +93,7 @@
 	result := make(chan plc4go.PlcConnectionCloseResult)
 	go func() {
 		log.Debug().Msg("Sending UnregisterSession EIP Packet")
-		m.messageCodec.SendRequest(
+		_ = m.messageCodec.SendRequest(
 			readWriteModel.NewEipDisconnectRequest(m.sessionHandle, 0, make([]byte, 8), 0),
 			func(message interface{}) bool {
 				return true
diff --git a/plc4go/internal/plc4go/eip/Field.go b/plc4go/internal/plc4go/eip/Field.go
index 01923c4..3edaf1c 100644
--- a/plc4go/internal/plc4go/eip/Field.go
+++ b/plc4go/internal/plc4go/eip/Field.go
@@ -71,21 +71,27 @@
 
 func (m PlcField) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	log.Trace().Msg("MarshalXML")
-	if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "Field"}}); err != nil {
+	if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "EipField"}}); err != nil {
 		return err
 	}
 
 	if err := e.EncodeElement(m.Tag, xml.StartElement{Name: xml.Name{Local: "node"}}); err != nil {
 		return err
 	}
-	if err := e.EncodeElement(m.Type, xml.StartElement{Name: xml.Name{Local: "type"}}); err != nil {
-		return err
+	if m.Type != 0 {
+		if err := e.EncodeElement(m.Type, xml.StartElement{Name: xml.Name{Local: "type"}}); err != nil {
+			return err
+		}
 	}
 	if err := e.EncodeElement(m.ElementNb, xml.StartElement{Name: xml.Name{Local: "elementNb"}}); err != nil {
 		return err
 	}
+	// TODO: remove this from the spec
+	if err := e.EncodeElement("java.lang.Object", xml.StartElement{Name: xml.Name{Local: "defaultJavaType"}}); err != nil {
+		return err
+	}
 
-	if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "Field"}}); err != nil {
+	if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "EipField"}}); err != nil {
 		return err
 	}
 	return nil
diff --git a/plc4go/internal/plc4go/eip/MessageCodec.go b/plc4go/internal/plc4go/eip/MessageCodec.go
index 0aab08f..be105e1 100644
--- a/plc4go/internal/plc4go/eip/MessageCodec.go
+++ b/plc4go/internal/plc4go/eip/MessageCodec.go
@@ -48,7 +48,7 @@
 	// Cast the message to the correct type of struct
 	eipPacket := model.CastEipPacket(message)
 	// Serialize the request
-	wb := utils.NewWriteBufferByteBased()
+	wb := utils.NewLittleEndianWriteBufferByteBased()
 	err := eipPacket.Serialize(wb)
 	if err != nil {
 		return errors.Wrap(err, "error serializing request")
@@ -74,7 +74,7 @@
 			return nil, nil
 		}
 		//Second byte for the size and then add the header size 24
-		packetSize := uint32(((uint16(data[2]) << 8) + uint16(data[3])) + 24)
+		packetSize := uint32(((uint16(data[3]) << 8) + uint16(data[2])) + 24)
 		if num < packetSize {
 			log.Debug().Msgf("Not enough bytes. Got: %d Need: %d\n", num, packetSize)
 			return nil, nil
@@ -85,7 +85,7 @@
 			// TODO: Possibly clean up ...
 			return nil, nil
 		}
-		rb := utils.NewReadBufferByteBased(data)
+		rb := utils.NewLittleEndianReadBufferByteBased(data)
 		eipPacket, err := model.EipPacketParse(rb)
 		if err != nil {
 			log.Warn().Err(err).Msg("error parsing")
diff --git a/plc4go/internal/plc4go/eip/Reader.go b/plc4go/internal/plc4go/eip/Reader.go
index d4756c6..a6e1a52 100644
--- a/plc4go/internal/plc4go/eip/Reader.go
+++ b/plc4go/internal/plc4go/eip/Reader.go
@@ -20,7 +20,6 @@
 package eip
 
 import (
-	"encoding/ascii85"
 	readWriteModel "github.com/apache/plc4x/plc4go/internal/plc4go/eip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi"
 	plc4goModel "github.com/apache/plc4x/plc4go/internal/plc4go/spi/model"
@@ -330,20 +329,8 @@
 		return nil, err
 	}
 
-	tagBytes := make([]byte, ascii85.MaxEncodedLen(len([]byte(tagFinal))))
-	encodedBytes := ascii85.Encode(tagBytes, []byte(tagFinal))
-	tagBytes = tagBytes[:encodedBytes]
-
-	err = buffer.WriteByteArray("", tagBytes)
-	if err != nil {
-		return nil, err
-	}
-
-	err = buffer.WriteByte("", 0x00)
-	if err != nil {
-		return nil, err
-	}
-	err = buffer.WriteByte("", 0x00)
+	quoteToASCII := strconv.QuoteToASCII(tagFinal)
+	err = buffer.WriteByteArray("", []byte(quoteToASCII)[1:len(quoteToASCII)-1])
 	if err != nil {
 		return nil, err
 	}
diff --git a/plc4go/internal/plc4go/eip/Writer.go b/plc4go/internal/plc4go/eip/Writer.go
index e1655fc..6e6a61b 100644
--- a/plc4go/internal/plc4go/eip/Writer.go
+++ b/plc4go/internal/plc4go/eip/Writer.go
@@ -278,7 +278,7 @@
 }
 
 func encodeValue(value values.PlcValue, _type readWriteModel.CIPDataTypeCode, elements uint16) ([]int8, error) {
-	buffer := utils.NewWriteBufferByteBased()
+	buffer := utils.NewLittleEndianWriteBufferByteBased()
 	switch _type {
 	case readWriteModel.CIPDataTypeCode_SINT:
 		err := buffer.WriteByte("", value.GetUint8())
diff --git a/plc4go/internal/plc4go/spi/testutils/DriverTestRunner.go b/plc4go/internal/plc4go/spi/testutils/DriverTestRunner.go
index 158505f..7181e21 100644
--- a/plc4go/internal/plc4go/spi/testutils/DriverTestRunner.go
+++ b/plc4go/internal/plc4go/spi/testutils/DriverTestRunner.go
@@ -291,25 +291,25 @@
 				case "modbus":
 					expectation := expectedSerializable.(*modbusModel.ModbusTcpADU)
 					actual, err := modbusModel.ModbusTcpADUParse(utils.NewReadBufferByteBased(actualRawOutput), false)
-					log.Error().Err(err).Msgf("A readabled render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
+					log.Error().Err(err).Msgf("A readable render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
 				case "ads":
 					expectation := expectedSerializable.(*adsModel.AmsTCPPacket)
 					actual, err := adsModel.AmsTCPPacketParse(utils.NewLittleEndianReadBufferByteBased(actualRawOutput))
-					log.Error().Err(err).Msgf("A readabled render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
+					log.Error().Err(err).Msgf("A readable render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
 				case "eip":
 					expectation := expectedSerializable.(*eipModel.EipPacket)
 					actual, err := eipModel.EipPacketParse(utils.NewLittleEndianReadBufferByteBased(actualRawOutput))
-					log.Error().Err(err).Msgf("A readabled render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
+					log.Error().Err(err).Msgf("A readable render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
 				case "s7":
 					expectation := expectedSerializable.(*s7Model.TPKTPacket)
 					actual, err := s7Model.TPKTPacketParse(utils.NewReadBufferByteBased(actualRawOutput))
-					log.Error().Err(err).Msgf("A readabled render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
+					log.Error().Err(err).Msgf("A readable render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
 				case "knx":
 					expectation := expectedSerializable.(*knxModel.KnxNetIpMessage)
 					actual, err := knxModel.KnxNetIpMessageParse(utils.NewReadBufferByteBased(actualRawOutput))
-					log.Error().Err(err).Msgf("A readabled render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
+					log.Error().Err(err).Msgf("A readable render of expectation:\n%v\nvs actual paket\n%v\n", expectation, actual)
 				}
-				return errors.Errorf("actual output doesn't match expected output:\nactual:   0x%X\nexpected: 0x%X", actualRawOutput, expectedRawOutput)
+				return errors.Errorf("actual output doesn't match expected output:\nactual:\n%s\nexpected:\n%s", utils.Dump(actualRawOutput), utils.Dump(expectedRawOutput))
 			}
 		}
 		// If there's a difference, parse the input and display it to simplify debugging