diff --git a/main.cpp b/main.cpp index 9540a46..c095e86 100644 --- a/main.cpp +++ b/main.cpp @@ -69,7 +69,8 @@ void deregister_client(void) void deregister(void* /*arguments*/) { printf("POST deregister executed\n"); - deregister_client(); + m2m_deregister_res->send_delayed_post_response(); + //deregister_client(); } void client_registered(void) @@ -96,6 +97,20 @@ void update_progress(uint32_t progress, uint32_t total) printf("Update progress = %" PRIu8 "%%\n", percent); } +void sent_callback(const M2MBase& base, + const M2MBase::MessageDeliveryStatus status, + const M2MBase::MessageType /*type*/, + void *client_args) +{ + switch(status) { + case M2MBase::MESSAGE_STATUS_DELIVERED: + deregister_client(); + break; + default: + break; + } +} + int main(void) { int status; @@ -178,6 +193,12 @@ int main(void) printf("m2m_post_res->set_execute_function() failed\n"); return -1; } + if (m2m_deregister_res->set_message_delivery_status_cb(sent_callback, NULL) != true) { + printf("m2m_post_res->set_message_delivery_status_cb() failed\n"); + return -1; + } + m2m_deregister_res->set_delayed_response(true); + printf("Register Pelion Device Management Client\n\n"); cloud_client = new MbedCloudClient(client_registered, client_unregistered, client_error, NULL, update_progress);