C_runtime/erpc_PLCObject_server.cpp
changeset 4043 b217fb367574
parent 4032 1ffff67678ad
child 4044 2a4b8b59d165
--- a/C_runtime/erpc_PLCObject_server.cpp	Tue Nov 19 23:52:04 2024 +0100
+++ b/C_runtime/erpc_PLCObject_server.cpp	Fri Nov 22 16:31:51 2024 +0100
@@ -1,5 +1,5 @@
 /*
- * Generated by erpcgen 1.12.0 on Mon May 20 17:54:19 2024.
+ * Generated by erpcgen 1.12.0 on Mon Oct 28 15:10:14 2024.
  *
  * AUTOGENERATED - DO NOT EDIT
  */
@@ -501,6 +501,12 @@
             break;
         }
 
+        case BeremizPLCObjectService_interface::m_ExtendedCallId:
+        {
+            erpcStatus = ExtendedCall_shim(codec, messageFactory, transport, sequence);
+            break;
+        }
+
         default:
         {
             erpcStatus = kErpcStatus_InvalidArgument;
@@ -1313,3 +1319,92 @@
 
     return err;
 }
+
+// Server shim for ExtendedCall of BeremizPLCObjectService interface.
+erpc_status_t BeremizPLCObjectService_service::ExtendedCall_shim(Codec * codec, MessageBufferFactory *messageFactory, Transport * transport, uint32_t sequence)
+{
+    erpc_status_t err = kErpcStatus_Success;
+
+    char * method = NULL;
+    binary_t *argument = NULL;
+    argument = (binary_t *) erpc_malloc(sizeof(binary_t));
+    if (argument == NULL)
+    {
+        codec->updateStatus(kErpcStatus_MemoryError);
+    }
+    binary_t *answer = NULL;
+    uint32_t result;
+
+    // startReadMessage() was already called before this shim was invoked.
+
+    {
+        uint32_t method_len;
+        char * method_local;
+        codec->readString(method_len, &method_local);
+        method = (char*) erpc_malloc((method_len + 1) * sizeof(char));
+        if ((method == NULL) || (method_local == NULL))
+        {
+            codec->updateStatus(kErpcStatus_MemoryError);
+        }
+        else
+        {
+            memcpy(method, method_local, method_len);
+            (method)[method_len] = 0;
+        }
+    }
+
+    read_binary_t_struct(codec, argument);
+
+    answer = (binary_t *) erpc_malloc(sizeof(binary_t));
+    if (answer == NULL)
+    {
+        codec->updateStatus(kErpcStatus_MemoryError);
+    }
+
+    err = codec->getStatus();
+    if (err == kErpcStatus_Success)
+    {
+        // Invoke the actual served function.
+#if ERPC_NESTED_CALLS_DETECTION
+        nestingDetection = true;
+#endif
+        result = m_handler->ExtendedCall(method, argument, answer);
+#if ERPC_NESTED_CALLS_DETECTION
+        nestingDetection = false;
+#endif
+
+        // preparing MessageBuffer for serializing data
+        err = messageFactory->prepareServerBufferForSend(codec->getBufferRef(), transport->reserveHeaderSize());
+    }
+
+    if (err == kErpcStatus_Success)
+    {
+        // preparing codec for serializing data
+        codec->reset(transport->reserveHeaderSize());
+
+        // Build response message.
+        codec->startWriteMessage(message_type_t::kReplyMessage, BeremizPLCObjectService_interface::m_serviceId, BeremizPLCObjectService_interface::m_ExtendedCallId, sequence);
+
+        write_binary_t_struct(codec, answer);
+
+        codec->write(result);
+
+        err = codec->getStatus();
+    }
+
+    erpc_free(method);
+
+    if (argument)
+    {
+        free_binary_t_struct(argument);
+    }
+    erpc_free(argument);
+
+    if (answer)
+    {
+        free_binary_t_struct(answer);
+    }
+    erpc_free(answer);
+
+    return err;
+}