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) {
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);
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,
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);
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)
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);