Fix a bug about delegate invoke method 12/271412/1
authorHwankyu Jhun <h.jhun@samsung.com>
Mon, 21 Feb 2022 03:30:00 +0000 (12:30 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Mon, 21 Feb 2022 03:30:00 +0000 (12:30 +0900)
The first parcel data has to be <UPPERCASE_PREFIX>_<UPPERCASE_NAME>_METHOD_CALLBACK_.

Change-Id: If4bc8bc64eec007117fa7e3236655cf6608a1212
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
idlc/gen/c_stub_body_gen.cc
idlc/gen/c_stub_body_gen_cb.h

index 367670e..d92af42 100644 (file)
@@ -368,6 +368,12 @@ void CStubBodyGen::GenInterfaceDelegateBase(std::ofstream& stream,
   std::transform(enum_value.begin(), enum_value.end(), enum_value.begin(),
       ::toupper);
 
+  std::string prefix = GetHandlePrefix();
+  std::transform(prefix.begin(), prefix.end(), prefix.begin(), ::toupper);
+
+  std::string name = iface.GetID();
+  std::transform(name.begin(), name.end(), name.begin(), ::toupper);
+
   std::string code(ReplaceAll(CB_INTERFACE_DELEGATE_BASE, {
       { "<PREFIX>", GetHandlePrefix() },
       { "<NAME>", iface.GetID() },
@@ -375,7 +381,9 @@ void CStubBodyGen::GenInterfaceDelegateBase(std::ofstream& stream,
       { "<DELEGATE_PARAMS>", GenDelegateParams(iface, decl) },
       { "<DELEGATE_PARAMS_CHECK>", GenDelegateParamsCheck(iface, decl) },
       { "<DELEGATE_ENUM_VALUE>", enum_value },
-      { "<DELEGATE_PARCEL_WRITE>", GenDelegateParcelWrite(iface, decl) }
+      { "<DELEGATE_PARCEL_WRITE>", GenDelegateParcelWrite(iface, decl) },
+      { "<UPPERCASE_PREFIX>", prefix },
+      { "<UPPERCASE_NAME>", name }
   }));
 
   stream << SmartIndent(code);
index d9dc5e4..6c63fb5 100644 (file)
@@ -432,6 +432,8 @@ static void __<PREFIX>_<NAME>_remove_context(<PREFIX>_<NAME>_context_h context)
  * <DELEGATE_PARAMS_CHECK> The implementation to check whether arguments are nullptr or not
  * <DELEGATE_ENUM_VALUE> The enumeration value of the method.
  * <DELEGATE_PARCEL_WRITE> The implementation to write arguments to the parcel.
+ * <UPPERCASE_PREFIX> The uppercase prefix of the interface.
+ * <UPPERCASE_NAME> The uppercase name of the interface.
  */
 constexpr const char CB_INTERFACE_DELEGATE_BASE[] =
 R"__c_cb(
@@ -638,7 +640,7 @@ int <PREFIX>_<NAME>_<DELEGATE_NAME>_invoke(<PREFIX>_<NAME>_<DELEGATE_NAME>_h h<D
     return ret_;
   }
 
-  rpc_port_parcel_write_int32(parcel_, <DELEGATE_ENUM_VALUE>);
+  rpc_port_parcel_write_int32(parcel_, <UPPERCASE_PREFIX>_<UPPERCASE_NAME>_METHOD_CALLBACK_);
 
   rpc_port_parcel_write(parcel_, &h->parcelable, h);