|
|
@@ -1398,6 +1398,38 @@ EipStatus Delete(CipInstance *RESTRICT const instance,
|
|
|
return kEipStatusOk;
|
|
|
}
|
|
|
|
|
|
+EipStatus Reset(CipInstance *RESTRICT const instance,
|
|
|
+ CipMessageRouterRequest *const message_router_request,
|
|
|
+ CipMessageRouterResponse *const message_router_response,
|
|
|
+ const struct sockaddr *originator_address,
|
|
|
+ const int encapsulation_session) {
|
|
|
+
|
|
|
+ message_router_response->general_status = kCipErrorSuccess;
|
|
|
+ message_router_response->size_of_additional_status = 0;
|
|
|
+ InitializeENIPMessage(&message_router_response->message);
|
|
|
+ message_router_response->reply_service = (0x80 | message_router_request->service);
|
|
|
+
|
|
|
+ EipStatus internal_state = kEipStatusOk;
|
|
|
+
|
|
|
+ CipClass *const class = instance->cip_class;
|
|
|
+
|
|
|
+ /* Call the PreResetCallback if the class provides one. */
|
|
|
+ if (NULL != class->PreResetCallback) {
|
|
|
+ internal_state = class->PreResetCallback(instance, message_router_request,
|
|
|
+ message_router_response);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (kEipStatusOk == internal_state) {
|
|
|
+
|
|
|
+ /* Call the PostResetCallback if the class provides one. */
|
|
|
+ if (NULL != class->PostResetCallback) {
|
|
|
+ class->PostResetCallback(instance, message_router_request,
|
|
|
+ message_router_response);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return kEipStatusOk;
|
|
|
+}
|
|
|
+
|
|
|
void AllocateAttributeMasks(CipClass *target_class) {
|
|
|
unsigned size = 1 + CalculateIndex(target_class->highest_attribute_number);
|
|
|
OPENER_TRACE_INFO(
|