Adjust to latest mdg API
authorSangyoon Jang <jeremy.jang@samsung.com>
Fri, 10 Aug 2018 02:15:23 +0000 (11:15 +0900)
committer장상윤/Tizen Platform Lab(SR)/Engineer/삼성전자 <jeremy.jang@samsung.com>
Fri, 10 Aug 2018 02:25:30 +0000 (11:25 +0900)
Add sending reply code.

Change-Id: Ie7b6b1099c5590ec7666bfaa42746a10b0b95349
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/common/mdg_manager.cc
src/common/mdg_manager.h

index 522eadcc3966a45cfb1748a4596812b16c24e5a9..b5a27ae8f591a413df0a64e7cc42fa0a9e7bf27b 100644 (file)
@@ -56,9 +56,11 @@ std::string MDGErrorToString(int error) {
     return it->second;
 }
 
-void SendDataFinishCb(int result, void* user_data) {
+void SendDataFinishCb(int result, mdg_device_h device, char* channel_id,
+    int msg_id, unsigned char* data, int len, void* user_data) {
   LOG(INFO) << "SendDataFinishCb called. "
-            << "result: " << result;
+            << "result: " << result
+            << ", msg_id: " << msg_id;
 }
 
 std::string GetDeviceIdFromHandle(const mdg_device_h device) {
@@ -134,16 +136,17 @@ bool MDGManager::Initialize() {
   return true;
 }
 
-void MDGManager::ChannelCb(int result, char* device_id, char* channel_id,
-    unsigned char* arg, int len, void* user_data) {
-  LOG(INFO) << "ChannelCb called. "
+void MDGManager::ReceiveDataCb(int result, char* device_id, char* channel_id,
+    int msg_id, unsigned char* data, int len, void* user_data) {
+  LOG(INFO) << "ReceiveDataCb called. "
             << "result: " << result
             << ", device_id: " << device_id
             << ", channel_id: " << channel_id
+            << ", msg_id: " << msg_id
             << ", len: " << len;
 
   MDGManager* mdgmgr = static_cast<MDGManager*>(user_data);
-  unsigned char* p = arg;
+  unsigned char* p = data;
   Command cmd;
   memcpy(&cmd, p, sizeof(Command));
   p = p + sizeof(Command);
@@ -167,6 +170,16 @@ void MDGManager::ChannelCb(int result, char* device_id, char* channel_id,
     if (!AppControlManager::LaunchApplication(data, datasize))
       LOG(ERROR) << "Failed to launch application";
   }
+
+  // FIXME(jeremy.jang): temporary code. need to send proper reply packet.
+  unsigned char* reply = new unsigned char[4];
+  size_t reply_len = 4;
+  memset(reply, 0, reply_len);
+  int ret = mdg_device_send_response(mdgmgr->mdg_handle_, device_id,
+      channel_id, msg_id, reply, reply_len);
+  if (ret != MDG_ERROR_NONE)
+    LOG(ERROR) << "Failed to send response to " << device_id;
+  delete reply;
 }
 
 bool MDGManager::GroupFoundCb(mdg_group_type_e type, mdg_group_h group,
@@ -370,9 +383,10 @@ bool MDGManager::SendData(const std::string& device_id, Command cmd,
   p = p + sizeof(size_t);
   memcpy(p, data, len);
 
+  int msg_id;
   int ret = mdg_device_send_data(mdg_handle_, device,
       const_cast<char*>(kChannelId),
-      buf, datasize, SendDataFinishCb, this);
+      buf, datasize, SendDataFinishCb, this, &msg_id);
   if (ret != MDG_ERROR_NONE)
     LOG(ERROR) << "Failed to send data: " << MDGErrorToString(ret);
 
@@ -390,7 +404,7 @@ void MDGManager::FindDevices() {
 
 void MDGManager::RegisterEndpoint() {
   int ret = mdg_device_regist_channel(mdg_handle_,
-      const_cast<char*>(kChannelId), &MDGManager::ChannelCb, this);
+      const_cast<char*>(kChannelId), &MDGManager::ReceiveDataCb, this);
   if (ret == MDG_ERROR_NONE)
     LOG(INFO) << "Channel for capmgr registered";
   else if (ret == MDG_ERROR_ALREADY_REGISTERED)
index a3753fc8b6c25ec76ee3d61f20c1784e0dfc2077..793605abe928e001d83abc449ecdfab3f7a81694 100644 (file)
@@ -42,10 +42,8 @@ class MDGManager : public ConnectionManager {
   bool SendData(const std::string& device_id, Command cmd,
       const unsigned char* data, size_t len);
 
-  static void RequestCb(char* cmd, char* device_id, unsigned char* arg,
-      int len, int ret, void* user_data);
-  static void ChannelCb(int result, char* device_id, char* channel_id,
-      unsigned char* arg, int len, void* user_data);
+  static void ReceiveDataCb(int result, char* device_id, char* channel_id,
+      int msg_id, unsigned char* data, int len, void* user_data);
   static bool GroupFoundCb(mdg_group_type_e type, mdg_group_h group,
       void* user_data);
   static void GroupFinishCb(int result, void* user_data);