micsat 5 лет назад
Родитель
Сommit
cd83f674df
1 измененных файлов с 18 добавлено и 44 удалено
  1. 18 44
      source/src/cip/cipcommon.c

+ 18 - 44
source/src/cip/cipcommon.c

@@ -723,7 +723,7 @@ EipStatus SetAttributeSingle(CipInstance *RESTRICT const instance,
 					message_router_request, message_router_response); //writes data to attribute, sets resonse status
 
 			/* Call the PostSetCallback if enabled for this attribute and the class provides one. */
-			if ((attribute->attribute_flags & kPostSetFunc) &&
+			if ((attribute->attribute_flags & (kPostSetFunc | kNvDataFunc)) &&
 			NULL != instance->cip_class->PostSetCallback) {
 				instance->cip_class->PostSetCallback(instance, attribute,
 						message_router_request->service);
@@ -755,7 +755,7 @@ int DecodeCipByte(const CipByte *const data,
 		CipMessageRouterResponse *const message_router_response) {
 
 	int number_of_decoded_bytes = -1;
-	(*(EipUint8*) (data)) = GetByteFromMessage(message_router_request->data);
+	(*(EipUint8*) (data)) = GetByteFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 1;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -785,7 +785,7 @@ int DecodeCipByteArray(const CipByteArray *const data,
 		}
 	}
 	// data-length is correct
-	memcpy(cip_byte_array->data, cip_message, cip_byte_array->length);
+	memcpy(cip_byte_array->data, &cip_message, cip_byte_array->length);
 	number_of_decoded_bytes = cip_byte_array->length;
 
 	message_router_response->general_status = kCipErrorSuccess;
@@ -796,10 +796,8 @@ int DecodeCipWord(const CipWord *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint16*) (data)) = GetWordFromMessage(cip_message);
+	(*(EipUint16*) (data)) = GetWordFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 2;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -809,10 +807,8 @@ int DecodeCipDword(const CipDword *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint32*) (data)) = GetDintFromMessage(cip_message);
+	(*(EipUint32*) (data)) = GetDintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 4;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -822,10 +818,8 @@ int DecodeCipLword(const CipLword *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint64*) (data)) = GetLintFromMessage(cip_message);
+	(*(EipUint64*) (data)) = GetLintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 8;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -835,10 +829,8 @@ int DecodeCipUsint(const CipUsint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint8*) (data)) = GetUsintFromMessage(cip_message);
+	(*(EipUint8*) (data)) = GetUsintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 1;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -848,10 +840,8 @@ int DecodeCipUint(const CipUint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint16*) (data)) = GetUintFromMessage(cip_message);
+	(*(EipUint16*) (data)) = GetUintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 2;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -861,10 +851,8 @@ int DecodeCipUdint(const CipUdint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint32*) (data)) = GetUdintFromMessage(cip_message);
+	(*(EipUint32*) (data)) = GetUdintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 4;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -874,10 +862,8 @@ int DecodeCipUlint(const CipUlint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint64*) (data)) = GetLintFromMessage(cip_message);
+	(*(EipUint64*) (data)) = GetLintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 8;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -887,10 +873,8 @@ int DecodeCipSint(const CipSint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint8*) (data)) = GetSintFromMessage(cip_message);
+	(*(EipUint8*) (data)) = GetSintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 1;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -900,10 +884,8 @@ int DecodeCipInt(const CipInt *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint16*) (data)) = GetIntFromMessage(cip_message);
+	(*(EipUint16*) (data)) = GetIntFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 2;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -913,10 +895,8 @@ int DecodeCipDint(const CipDint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint32*) (data)) = GetDintFromMessage(cip_message);
+	(*(EipUint32*) (data)) = GetDintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 4;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -926,10 +906,8 @@ int DecodeCipLint(const CipLint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint64*) (data)) = GetLintFromMessage(cip_message);
+	(*(EipUint64*) (data)) = GetLintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 8;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -939,10 +917,8 @@ int DecodeCipReal(const CipReal *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint32*) (data)) = GetDintFromMessage(cip_message);
+	(*(EipUint32*) (data)) = GetDintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 4;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -952,10 +928,8 @@ int DecodeCipLreal(const CipLreal *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	const EipUint8 **const cip_message = message_router_request->data;
-
 	int number_of_decoded_bytes = -1;
-	(*(EipUint64*) (data)) = GetLintFromMessage(cip_message);
+	(*(EipUint64*) (data)) = GetLintFromMessage(&message_router_request->data);
 	number_of_decoded_bytes = 8;
 	message_router_response->general_status = kCipErrorSuccess;
 	return number_of_decoded_bytes;
@@ -969,7 +943,7 @@ int DecodeCipString(const CipString *const data,
 
 	int number_of_decoded_bytes = -1;
 	CipString *string = (CipString*) data;
-	string->length = GetIntFromMessage(cip_message);
+	string->length = GetIntFromMessage(&cip_message);
 	memcpy(string->string, cip_message, string->length);
 	*cip_message += string->length;
 
@@ -995,7 +969,7 @@ int DecodeCipShortString(const CipShortString *const data,
 	short_string->length = **cip_message;
 	++(*cip_message);
 
-	memcpy(short_string->string, *cip_message, short_string->length);
+	memcpy(short_string->string, &cip_message, short_string->length);
 	*cip_message += short_string->length;
 
 	number_of_decoded_bytes = short_string->length + 1;