Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/internal/iothub_client_authorization.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/internal/iothub_client_authorization.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/internal/iothub_client_authorization.h	(revision 464)
@@ -42,5 +42,5 @@
 MOCKABLE_FUNCTION(, IOTHUB_CREDENTIAL_TYPE, IoTHubClient_Auth_Set_x509_Type, IOTHUB_AUTHORIZATION_HANDLE, handle, bool, enable_x509);
 MOCKABLE_FUNCTION(, IOTHUB_CREDENTIAL_TYPE, IoTHubClient_Auth_Get_Credential_Type, IOTHUB_AUTHORIZATION_HANDLE, handle);
-MOCKABLE_FUNCTION(, char*, IoTHubClient_Auth_Get_SasToken, IOTHUB_AUTHORIZATION_HANDLE, handle, const char*, scope, size_t, expiry_time_relative_seconds, const char*, key_name);
+MOCKABLE_FUNCTION(, char*, IoTHubClient_Auth_Get_SasToken, IOTHUB_AUTHORIZATION_HANDLE, handle, const char*, scope, uint64_t, expiry_time_relative_seconds, const char*, key_name);
 MOCKABLE_FUNCTION(, int, IoTHubClient_Auth_Set_xio_Certificate, IOTHUB_AUTHORIZATION_HANDLE, handle, XIO_HANDLE, xio);
 MOCKABLE_FUNCTION(, const char*, IoTHubClient_Auth_Get_DeviceId, IOTHUB_AUTHORIZATION_HANDLE, handle);
@@ -49,6 +49,6 @@
 MOCKABLE_FUNCTION(, SAS_TOKEN_STATUS, IoTHubClient_Auth_Is_SasToken_Valid, IOTHUB_AUTHORIZATION_HANDLE, handle);
 MOCKABLE_FUNCTION(, int, IoTHubClient_Auth_Get_x509_info, IOTHUB_AUTHORIZATION_HANDLE, handle, char**, x509_cert, char**, x509_key);
-MOCKABLE_FUNCTION(, int, IoTHubClient_Auth_Set_SasToken_Expiry, IOTHUB_AUTHORIZATION_HANDLE, handle, size_t, expiry_time_seconds);
-MOCKABLE_FUNCTION(, size_t, IoTHubClient_Auth_Get_SasToken_Expiry, IOTHUB_AUTHORIZATION_HANDLE, handle);
+MOCKABLE_FUNCTION(, int, IoTHubClient_Auth_Set_SasToken_Expiry, IOTHUB_AUTHORIZATION_HANDLE, handle, uint64_t, expiry_time_seconds);
+MOCKABLE_FUNCTION(, uint64_t, IoTHubClient_Auth_Get_SasToken_Expiry, IOTHUB_AUTHORIZATION_HANDLE, handle);
 
 
Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/internal/iothub_internal_consts.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/internal/iothub_internal_consts.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/internal/iothub_internal_consts.h	(revision 464)
@@ -10,9 +10,5 @@
 #endif
 
-    static const char* IOTHUB_API_VERSION = "2019-10-01";
-    // TODO: https://github.com/Azure/azure-iot-sdk-c/issues/1547 tracks removing this preview 
-    // variable once the underlying logic is enabled on all IoTHubs.
-    static const char* IOTHUB_API_PREVIEW_VERSION = "2020-05-31-preview";
-
+    static const char* IOTHUB_API_VERSION = "2020-09-30";
     static const char* SECURITY_INTERFACE_INTERNAL_ID = "iothub-interface-internal-id";
     static const char* SECURITY_INTERFACE_INTERNAL_ID_VALUE = "security*azureiot*com^SecurityAgent^1*0*0";
Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client.h	(revision 464)
@@ -2,6 +2,14 @@
 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
 
+//**********************************************************************
+// NOTE: THIS HEADER IS DEPRECATED
+// 
+// Functions in this header will be maintained for backward compatability.
+// New applications should use iothub_device_client.h.
+// 
+//**********************************************************************
+
 /** @file iothub_client.h
-*    @brief Extends the IoTHubCLient_LL module with additional features.
+*    @brief Extends the IoTHubClient_LL with additional features.
 *
 *    @note  DEPRECATED. New users use iothub_device_client.h for IoTHubClient APIs.
@@ -38,313 +46,90 @@
 
     /**
-    * @brief    Creates a IoT Hub client for communication with an existing
-    *             IoT Hub using the specified connection string parameter.
-    *
-    * @param    connectionString    Pointer to a character string
-    * @param    protocol            Function pointer for protocol implementation
-    *
-    *            Sample connection string:
-    *                <blockquote>
-    *                    <pre>HostName=[IoT Hub name goes here].[IoT Hub suffix goes here, e.g., private.azure-devices-int.net];DeviceId=[Device ID goes here];SharedAccessKey=[Device key goes here];</pre>
-    *                   <pre>HostName=[IoT Hub name goes here].[IoT Hub suffix goes here, e.g., private.azure-devices-int.net];DeviceId=[Device ID goes here];SharedAccessSignature=SharedAccessSignature sr=[IoT Hub name goes here].[IoT Hub suffix goes here, e.g., private.azure-devices-int.net]/devices/[Device ID goes here]&sig=[SAS Token goes here]&se=[Expiry Time goes here];</pre>
-    *                </blockquote>
-    *
-    * @return    A non-NULL @c IOTHUB_CLIENT_HANDLE value that is used when
-    *             invoking other functions for IoT Hub client and @c NULL on failure.
+    * @deprecated IoTHubClient_CreateFromConnectionString is deprecated.  Use IoTHubDeviceClient_CreateFromConnectionString instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_HANDLE, IoTHubClient_CreateFromConnectionString, const char*, connectionString, IOTHUB_CLIENT_TRANSPORT_PROVIDER, protocol);
 
     /**
-    * @brief    Creates a IoT Hub client for communication with an existing IoT
-    *             Hub using the specified parameters.
-    *
-    * @param    config    Pointer to an @c IOTHUB_CLIENT_CONFIG structure
-    *
-    *            The API does not allow sharing of a connection across multiple
-    *            devices. This is a blocking call.
-    *
-    * @return    A non-NULL @c IOTHUB_CLIENT_HANDLE value that is used when
-    *             invoking other functions for IoT Hub client and @c NULL on failure.
+    * @deprecated IoTHubClient_Create is deprecated.  Use IoTHubDeviceClient_Create instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_HANDLE, IoTHubClient_Create, const IOTHUB_CLIENT_CONFIG*, config);
 
     /**
-    * @brief    Creates a IoT Hub client for communication with an existing IoT
-    *             Hub using the specified parameters.
-    *
-    * @param    transportHandle    TRANSPORT_HANDLE which represents a connection.
-    * @param    config    Pointer to an @c IOTHUB_CLIENT_CONFIG structure
-    *
-    *            The API allows sharing of a connection across multiple
-    *            devices. This is a blocking call.
-    *
-    * @return    A non-NULL @c IOTHUB_CLIENT_HANDLE value that is used when
-    *             invoking other functions for IoT Hub client and @c NULL on failure.
+    * @deprecated IoTHubClient_CreateWithTransport is deprecated.  Use IoTHubDeviceClient_CreateWithTransport instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_HANDLE, IoTHubClient_CreateWithTransport, TRANSPORT_HANDLE, transportHandle, const IOTHUB_CLIENT_CONFIG*, config);
 
     /**
-    * @brief    Creates a IoT Hub client for communication with an existing IoT
-    *             Hub using the device auth module.
-    *
-    * @param    iothub_uri    Pointer to an ioThub hostname received in the registration process
-    * @param    device_id    Pointer to the device Id of the device
-    * @param    protocol    Function pointer for protocol implementation
-    *
-    * @return    A non-NULL @c IOTHUB_CLIENT_LL_HANDLE value that is used when
-    *             invoking other functions for IoT Hub client and @c NULL on failure.
+    * @deprecated IoTHubClient_CreateFromDeviceAuth is deprecated.  Use IoTHubDeviceClient_CreateFromDeviceAuth instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_HANDLE, IoTHubClient_CreateFromDeviceAuth, const char*, iothub_uri, const char*, device_id, IOTHUB_CLIENT_TRANSPORT_PROVIDER, protocol);
 
     /**
-    * @brief    Disposes of resources allocated by the IoT Hub client. This is a
-    *             blocking call.
-    *
-    * @param    iotHubClientHandle    The handle created by a call to the create function.
+    * @deprecated IoTHubClient_Destroy is deprecated.  Use IoTHubDeviceClient_Destroy instead.
     */
     MOCKABLE_FUNCTION(, void, IoTHubClient_Destroy, IOTHUB_CLIENT_HANDLE, iotHubClientHandle);
 
     /**
-    * @brief    Asynchronous call to send the message specified by @p eventMessageHandle.
-    *
-    * @param    iotHubClientHandle               The handle created by a call to the create function.
-    * @param    eventMessageHandle               The handle to an IoT Hub message.
-    * @param    eventConfirmationCallback      The callback specified by the device for receiving
-    *                                         confirmation of the delivery of the IoT Hub message.
-    *                                         This callback can be expected to invoke the
-    *                                         ::IoTHubClient_SendEventAsync function for the
-    *                                         same message in an attempt to retry sending a failing
-    *                                         message. The user can specify a @c NULL value here to
-    *                                         indicate that no callback is required.
-    * @param    userContextCallback            User specified context that will be provided to the
-    *                                         callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_Destroy function from within any callback.
-    * @remarks
-    *            The IOTHUB_MESSAGE_HANDLE instance provided as argument is copied by the function,
-    *            so this argument can be destroyed by the calling application right after IoTHubClient_SendEventAsync returns.
-    *            The copy of @c eventMessageHandle is later destroyed by the iothub client when the message is effectively sent, if a failure sending it occurs, or if the client is destroyed.
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_SendEventAsync is deprecated.  Use IoTHubDeviceClient_SendEventAsync instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SendEventAsync, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_MESSAGE_HANDLE, eventMessageHandle, IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK, eventConfirmationCallback, void*, userContextCallback);
 
     /**
-    * @brief    This function returns the current sending status for IoTHubClient.
-    *
-    * @param    iotHubClientHandle        The handle created by a call to the create function.
-    * @param    iotHubClientStatus        The sending state is populated at the address pointed
-    *                                     at by this parameter. The value will be set to
-    *                                     @c IOTHUBCLIENT_SENDSTATUS_IDLE if there is currently
-    *                                     no item to be sent and @c IOTHUBCLIENT_SENDSTATUS_BUSY
-    *                                     if there are.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_GetSendStatus is deprecated.  Use IoTHubDeviceClient_GetSendStatus instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_GetSendStatus, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_STATUS*, iotHubClientStatus);
 
     /**
-    * @brief    Sets up the message callback to be invoked when IoT Hub issues a
-    *             message to the device. This is a blocking call.
-    *
-    * @param    iotHubClientHandle               The handle created by a call to the create function.
-    * @param    messageCallback                The callback specified by the device for receiving
-    *                                         messages from IoT Hub.
-    * @param    userContextCallback            User specified context that will be provided to the
-    *                                         callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_SetMessageCallback is deprecated.  Use IoTHubDeviceClient_SetMessageCallback instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetMessageCallback, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_MESSAGE_CALLBACK_ASYNC, messageCallback, void*, userContextCallback);
 
     /**
-    * @brief    Sets up the connection status callback to be invoked representing the status of
-    * the connection to IOT Hub. This is a blocking call.
-    *
-    * @param    iotHubClientHandle                       The handle created by a call to the create function.
-    * @param    connectionStatusCallback                The callback specified by the device for receiving
-    *                                                 updates about the status of the connection to IoT Hub.
-    * @param    userContextCallback                    User specified context that will be provided to the
-    *                                                 callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_SetConnectionStatusCallback is deprecated.  Use IoTHubDeviceClient_SetConnectionStatusCallback instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetConnectionStatusCallback, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_CONNECTION_STATUS_CALLBACK, connectionStatusCallback, void*, userContextCallback);
 
     /**
-    * @brief    Sets up the connection status callback to be invoked representing the status of
-    * the connection to IOT Hub. This is a blocking call.
-    *
-    * @param    iotHubClientHandle                       The handle created by a call to the create function.
-    * @param    retryPolicy                             The policy to use to reconnect to IoT Hub when a
-    *                                               connection drops.
-    * @param    retryTimeoutLimitInSeconds            Maximum amount of time(seconds) to attempt reconnection when a
-    *                                               connection drops to IOT Hub.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_SetRetryPolicy is deprecated.  Use IoTHubDeviceClient_SetRetryPolicy instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetRetryPolicy, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_RETRY_POLICY, retryPolicy, size_t, retryTimeoutLimitInSeconds);
 
     /**
-    * @brief    Sets up the connection status callback to be invoked representing the status of
-    * the connection to IOT Hub. This is a blocking call.
-    *
-    * @param    iotHubClientHandle                       The handle created by a call to the create function.
-    * @param    retryPolicy                             Out parameter containing the policy to use to reconnect to IoT Hub.
-    * @param    retryTimeoutLimitInSeconds            Out parameter containing maximum amount of time in seconds to attempt reconnection
-    to IOT Hub.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_GetRetryPolicy is deprecated.  Use IoTHubDeviceClient_GetRetryPolicy instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_GetRetryPolicy, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_RETRY_POLICY*, retryPolicy, size_t*, retryTimeoutLimitInSeconds);
 
     /**
-    * @brief    This function returns in the out parameter @p lastMessageReceiveTime
-    *             what was the value of the @c time function when the last message was
-    *             received at the client.
-    *
-    * @param    iotHubClientHandle                The handle created by a call to the create function.
-    * @param    lastMessageReceiveTime          Out parameter containing the value of @c time function
-    *                                             when the last message was received.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_GetLastMessageReceiveTime is deprecated.  Use IoTHubDeviceClient_GetLastMessageReceiveTime instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_GetLastMessageReceiveTime, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, time_t*, lastMessageReceiveTime);
 
     /**
-    * @brief    This API sets a runtime option identified by parameter @p optionName
-    *             to a value pointed to by @p value. @p optionName and the data type
-    *             @p value is pointing to are specific for every option.
-    *
-    * @param    iotHubClientHandle    The handle created by a call to the create function.
-    * @param    optionName              Name of the option.
-    * @param    value                  The value.
-    *
-    *            The options that can be set via this API are:
-    *                - @b timeout - the maximum time in milliseconds a communication is
-    *                  allowed to use. @p value is a pointer to an @c unsigned @c int with
-    *                  the timeout value in milliseconds. This is only supported for the HTTP
-    *                  protocol as of now. When the HTTP protocol uses CURL, the meaning of
-    *                  the parameter is <em>total request time</em>. When the HTTP protocol uses
-    *                  winhttp, the meaning is the same as the @c dwSendTimeout and
-    *                  @c dwReceiveTimeout parameters of the
-    *                  <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa384116(v=vs.85).aspx">
-    *                  WinHttpSetTimeouts</a> API.
-    *                - @b CURLOPT_LOW_SPEED_LIMIT - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_LOW_SPEED_TIME - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_FORBID_REUSE - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_FRESH_CONNECT - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_VERBOSE - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b messageTimeout - the maximum time in milliseconds until a message
-    *                 is timeouted. The time starts at IoTHubClient_SendEventAsync. By default,
-    *                 messages do not expire. @p is a pointer to a uint64_t
-    *                - @b svc2cl_keep_alive_timeout_secs - the AMQP service side keep alive interval in seconds.
-    *                 After the connection established the client requests the server to set the
-    *                 keep alive interval for given time.
-    *                 If it is not set then the default 240 sec applies.
-    *                 If it is set to zero the server will not send keep alive messages to the client.
-    *                - @b cl2svc_keep_alive_send_ratio - the AMQP client side keep alive interval in seconds.
-    *                 After the connection established the server requests the client to set the
-    *                 keep alive interval for given time.
-    *                 If it is not set then the default ratio of 1/2 is applied.
-    *                 The ratio has to be greater than 0.0 and equal to or less than 0.9
-
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
-    */
+    * @deprecated IoTHubClient_SetOption is deprecated.  Use IoTHubDeviceClient_SetOption instead.
+    */   
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetOption, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, const char*, optionName, const void*, value);
 
     /**
-    * @brief    This API specifies a call back to be used when the device receives a state update.
-    *
-    * @param    iotHubClientHandle        The handle created by a call to the create function.
-    * @param    deviceTwinCallback        The callback specified by the device client to be used for updating
-    *                                    the desired state. The callback will be called in response to a
-    *                                    request send by the IoTHub services. The payload will be passed to the
-    *                                    callback, along with two version numbers:
-    *                                        - Desired:
-    *                                        - LastSeenReported:
-    * @param    userContextCallback        User specified context that will be provided to the
-    *                                     callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_SetDeviceTwinCallback is deprecated.  Use IoTHubDeviceClient_SetDeviceTwinCallback instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetDeviceTwinCallback, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_TWIN_CALLBACK, deviceTwinCallback, void*, userContextCallback);
 
     /**
-    * @brief    This API sends a report of the device's properties and their current values.
-    *
-    * @param    iotHubClientHandle        The handle created by a call to the create function.
-    * @param    reportedState            The current device property values to be 'reported' to the IoTHub.
-    * @param    reportedStateCallback    The callback specified by the device client to be called with the
-    *                                    result of the transaction.
-    * @param    userContextCallback        User specified context that will be provided to the
-    *                                     callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_SendReportedState is deprecated.  Use IoTHubDeviceClient_SendReportedState instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SendReportedState, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, const unsigned char*, reportedState, size_t, size, IOTHUB_CLIENT_REPORTED_STATE_CALLBACK, reportedStateCallback, void*, userContextCallback);
 
     /**
-    * @brief    This API sets callback for cloud to device method call.
-    *
-    * @param    iotHubClientHandle        The handle created by a call to the create function.
-    * @param    deviceMethodCallback    The callback which will be called by IoTHub.
-    * @param    userContextCallback        User specified context that will be provided to the
-    *                                     callback. This can be @c NULL.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_SetDeviceMethodCallback is deprecated.  Use IoTHubDeviceClient_SetDeviceMethodCallback instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetDeviceMethodCallback, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_METHOD_CALLBACK_ASYNC, deviceMethodCallback, void*, userContextCallback);
 
     /**
-    * @brief    This API sets callback for async cloud to device method call.
-    *
-    * @param    iotHubClientHandle                The handle created by a call to the create function.
-    * @param    inboundDeviceMethodCallback     The callback which will be called by IoTHub.
-    * @param    userContextCallback                User specified context that will be provided to the
-    *                                             callback. This can be @c NULL.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_SetDeviceMethodCallback_Ex is deprecated.  Use IoTHubDeviceClient_SetDeviceMethodCallback instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetDeviceMethodCallback_Ex, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_INBOUND_DEVICE_METHOD_CALLBACK, inboundDeviceMethodCallback, void*, userContextCallback);
 
     /**
-    * @brief    This API responses to a asnyc method callback identified the methodId.
-    *
-    * @param    iotHubClientHandle      The handle created by a call to the create function.
-    * @param    methodId                The methodId of the Device Method callback.
-    * @param    response                The response data for the method callback.
-    * @param    response_size           The size of the response data buffer.
-    * @param    status_response         The status response of the method callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_DeviceMethodResponse is deprecated.  Use IoTHubDeviceClient_SetDeviceMethodCallback instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_DeviceMethodResponse, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, METHOD_HANDLE, methodId, const unsigned char*, response, size_t, response_size, int, statusCode);
@@ -352,38 +137,16 @@
 #ifndef DONT_USE_UPLOADTOBLOB
     /**
-    * @brief    IoTHubClient_UploadToBlobAsync uploads data from memory to a file in Azure Blob Storage.
-    *
-    * @param    iotHubClientHandle                    The handle created by a call to the IoTHubClient_Create function.
-    * @param    destinationFileName                    The name of the file to be created in Azure Blob Storage.
-    * @param    source                              The source of data.
-    * @param    size                                The size of data.
-    * @param    iotHubClientFileUploadCallback      A callback to be invoked when the file upload operation has finished.
-    * @param    context                             A user-provided context to be passed to the file upload callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_UploadToBlobAsync is deprecated.  Use IoTHubDeviceClient_UploadToBlobAsync instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_UploadToBlobAsync, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, const char*, destinationFileName, const unsigned char*, source, size_t, size, IOTHUB_CLIENT_FILE_UPLOAD_CALLBACK, iotHubClientFileUploadCallback, void*, context);
 
     /**
-    ** DEPRECATED: Use IoTHubClient_UploadMultipleBlocksToBlobAsyncEx instead **
-    * @brief                          Uploads a file to a Blob storage in chunks, fed through the callback function provided by the user.
-    * @remarks                        This function allows users to upload large files in chunks, not requiring the whole file content to be passed in memory.
-    * @param iotHubClientHandle       The handle created by a call to the IoTHubClient_Create function.
-    * @param destinationFileName      The name of the file to be created in Azure Blob Storage.
-    * @param getDataCallback          A callback to be invoked to acquire the file chunks to be uploaded, as well as to indicate the status of the upload of the previous block.
-    * @param context                  Any data provided by the user to serve as context on getDataCallback.
-    * @returns                        An IOTHUB_CLIENT_RESULT value indicating the success or failure of the API call.
-    ** DEPRECATED: Use IoTHubClient_UploadMultipleBlocksToBlobAsyncEx instead **
+    * @deprecated IoTHubClient_UploadMultipleBlocksToBlobAsync is deprecated.  Use IoTHubDeviceClient_UploadMultipleBlocksToBlobAsync instead.
     */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_UploadMultipleBlocksToBlobAsync, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, const char*, destinationFileName, IOTHUB_CLIENT_FILE_UPLOAD_GET_DATA_CALLBACK, getDataCallback, void*, context);
 
     /**
-    * @brief                          Uploads a file to a Blob storage in chunks, fed through the callback function provided by the user.
-    * @remarks                        This function allows users to upload large files in chunks, not requiring the whole file content to be passed in memory.
-    * @param iotHubClientHandle       The handle created by a call to the IoTHubClient_Create function.
-    * @param destinationFileName      The name of the file to be created in Azure Blob Storage.
-    * @param getDataCallbackEx        A callback to be invoked to acquire the file chunks to be uploaded, as well as to indicate the status of the upload of the previous block.
-    * @param context                  Any data provided by the user to serve as context on getDataCallback.
-    * @returns                        An IOTHUB_CLIENT_RESULT value indicating the success or failure of the API call.*/
+    * @deprecated IoTHubClient_UploadMultipleBlocksToBlobAsyncEx is deprecated.  Use IoTHubDeviceClient_UploadMultipleBlocksToBlobAsync instead.
+    */
     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_UploadMultipleBlocksToBlobAsyncEx, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, const char*, destinationFileName, IOTHUB_CLIENT_FILE_UPLOAD_GET_DATA_CALLBACK_EX, getDataCallbackEx, void*, context);
 
Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_core.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_core.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_core.h	(revision 464)
@@ -2,14 +2,11 @@
 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
 
-/** @file iothub_client_core.h
-*    @brief Extends the IoTHubClientCore_LL module with additional features.
-*
-*    @details IoTHubClientCore is a module that extends the IoTHubClientCore_LL
-*             module with 2 features:
-*                - scheduling the work for the IoTHubCLient from a
-*                  thread, so that the user does not need to create their
-*                  own thread
-*                - thread-safe APIs
-*/
+//**********************************************************************
+// NOTE: THIS HEADER IS FOR INTERNAL USE ONLY
+// 
+// Applications should use iothub_device_client.h or iothub_module_client.h 
+// instead for the official API.
+// 
+//**********************************************************************
 
 #ifndef IOTHUB_CLIENT_CORE_H
Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_core_ll.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_core_ll.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_core_ll.h	(revision 464)
@@ -2,22 +2,11 @@
 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
 
-/** @file iothub_client_core_ll.h
-*    @brief     APIs that allow a user (usually a device) to communicate
-*             with an Azure IoTHub.
-*
-*    @details IoTHubClientCore_LL is a module that allows a user (usually a
-*             device) to communicate with an Azure IoTHub. It can send events
-*             and receive messages. At any given moment in time there can only
-*             be at most 1 message callback function.
-*
-*             This API surface contains a set of APIs that allows the user to
-*             interact with the lower layer portion of the IoTHubClient. These APIs
-*             contain @c _LL_ in their name, but retain the same functionality like the
-*             @c IoTHubClient_... APIs, with one difference. If the @c _LL_ APIs are
-*             used then the user is responsible for scheduling when the actual work done
-*             by the IoTHubClient happens (when the data is sent/received on/from the wire).
-*             This is useful for constrained devices where spinning a separate thread is
-*             often not desired.
-*/
+//**********************************************************************
+// NOTE: THIS HEADER IS FOR INTERNAL USE ONLY
+// 
+// Applications should use iothub_device_client_ll.h or iothub_module_client_ll.h 
+// instead for the official API.
+// 
+//**********************************************************************
 
 #ifndef IOTHUB_CLIENT_CORE_LL_H
Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_ll.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_ll.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_ll.h	(revision 464)
@@ -1,4 +1,13 @@
 // Copyright (c) Microsoft. All rights reserved.
 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+//**********************************************************************
+// NOTE: THIS HEADER IS DEPRECATED
+// 
+// Functions in this header will be maintained for backward compatability.
+// New applications should use iothub_device_client_ll.h.
+// 
+//**********************************************************************
+
 
 /** @file iothub_client_ll.h
@@ -6,5 +15,5 @@
 *             with an Azure IoTHub.
 *
-*    @details IoTHubClient_LL is a module that allows a user (usually a
+*    @details IoTHubClient_LL allows a user (usually a
 *             device) to communicate with an Azure IoTHub. It can send events
 *             and receive messages. At any given moment in time there can only
@@ -38,364 +47,114 @@
 typedef struct IOTHUB_CLIENT_CORE_LL_HANDLE_DATA_TAG* IOTHUB_CLIENT_LL_HANDLE;
 
+    /**
+    * @deprecated IoTHubClient_LL_CreateFromConnectionString is deprecated.  Use IoTHubDeviceClient_LL_CreateFromConnectionString instead.
+    */
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_CreateFromConnectionString, const char*, connectionString, IOTHUB_CLIENT_TRANSPORT_PROVIDER, protocol);
 
     /**
-    * @brief    Creates a IoT Hub client for communication with an existing
-    *             IoT Hub using the specified connection string parameter.
-    *
-    * @param    connectionString    Pointer to a character string
-    * @param    protocol            Function pointer for protocol implementation
-    *
-    *            Sample connection string:
-    *                <blockquote>
-    *                    <pre>HostName=[IoT Hub name goes here].[IoT Hub suffix goes here, e.g., private.azure-devices-int.net];DeviceId=[Device ID goes here];SharedAccessKey=[Device key goes here];</pre>
-    *                </blockquote>
-    *
-    * @return    A non-NULL @c IOTHUB_CLIENT_LL_HANDLE value that is used when
-    *             invoking other functions for IoT Hub client and @c NULL on failure.
+    * @deprecated IoTHubClient_LL_Create is deprecated.  Use IoTHubDeviceClient_LL_Create instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_CreateFromConnectionString, const char*, connectionString, IOTHUB_CLIENT_TRANSPORT_PROVIDER, protocol);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_Create, const IOTHUB_CLIENT_CONFIG*, config);
 
     /**
-    * @brief    Creates a IoT Hub client for communication with an existing IoT
-    *             Hub using the specified parameters.
-    *
-    * @param    config    Pointer to an @c IOTHUB_CLIENT_CONFIG structure
-    *
-    *            The API does not allow sharing of a connection across multiple
-    *            devices. This is a blocking call.
-    *
-    * @return    A non-NULL @c IOTHUB_CLIENT_LL_HANDLE value that is used when
-    *             invoking other functions for IoT Hub client and @c NULL on failure.
+    * @deprecated IoTHubClient_LL_CreateWithTransport is deprecated.  Use IoTHubDeviceClient_LL_CreateWithTransport instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_Create, const IOTHUB_CLIENT_CONFIG*, config);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_CreateWithTransport, const IOTHUB_CLIENT_DEVICE_CONFIG*, config);
 
     /**
-    * @brief    Creates a IoT Hub client for communication with an existing IoT
-    *             Hub using an existing transport.
-    *
-    * @param    config    Pointer to an @c IOTHUB_CLIENT_DEVICE_CONFIG structure
-    *
-    *            The API *allows* sharing of a connection across multiple
-    *            devices. This is a blocking call.
-    *
-    * @return    A non-NULL @c IOTHUB_CLIENT_LL_HANDLE value that is used when
-    *             invoking other functions for IoT Hub client and @c NULL on failure.
+    * @deprecated IoTHubClient_LL_CreateFromDeviceAuth is deprecated.  Use IoTHubDeviceClient_LL_CreateFromDeviceAuth instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_CreateWithTransport, const IOTHUB_CLIENT_DEVICE_CONFIG*, config);
-
-     /**
-     * @brief    Creates a IoT Hub client for communication with an existing IoT
-     *             Hub using the device auth module.
-     *
-     * @param    iothub_uri    Pointer to an ioThub hostname received in the registration process
-     * @param    device_id    Pointer to the device Id of the device
-     * @param    device_auth_handle    a device auth handle used to generate the connection string
-     * @param    protocol            Function pointer for protocol implementation
-     *
-     * @return    A non-NULL @c IOTHUB_CLIENT_LL_HANDLE value that is used when
-     *             invoking other functions for IoT Hub client and @c NULL on failure.
-     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_CreateFromDeviceAuth, const char*, iothub_uri, const char*, device_id, IOTHUB_CLIENT_TRANSPORT_PROVIDER, protocol);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_CreateFromDeviceAuth, const char*, iothub_uri, const char*, device_id, IOTHUB_CLIENT_TRANSPORT_PROVIDER, protocol);
 
     /**
-    * @brief    Disposes of resources allocated by the IoT Hub client. This is a
-    *             blocking call.
-    *
-    * @param    iotHubClientHandle    The handle created by a call to the create function.
+    * @deprecated IoTHubClient_LL_Destroy is deprecatedDevice.  Use IoTHubClient_LL_Destroy instead.
     */
-     MOCKABLE_FUNCTION(, void, IoTHubClient_LL_Destroy, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle);
+    MOCKABLE_FUNCTION(, void, IoTHubClient_LL_Destroy, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle);
 
     /**
-    * @brief    Asynchronous call to send the message specified by @p eventMessageHandle.
-    *
-    * @param    iotHubClientHandle               The handle created by a call to the create function.
-    * @param    eventMessageHandle               The handle to an IoT Hub message.
-    * @param    eventConfirmationCallback      The callback specified by the device for receiving
-    *                                         confirmation of the delivery of the IoT Hub message.
-    *                                         This callback can be expected to invoke the
-    *                                         ::IoTHubClient_LL_SendEventAsync function for the
-    *                                         same message in an attempt to retry sending a failing
-    *                                         message. The user can specify a @c NULL value here to
-    *                                         indicate that no callback is required.
-    * @param    userContextCallback            User specified context that will be provided to the
-    *                                         callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    * @remarks
-    *            The IOTHUB_MESSAGE_HANDLE instance provided as argument is copied by the function,
-    *            so this argument can be destroyed by the calling application right after IoTHubClient_LL_SendEventAsync returns.
-    *            The copy of @c eventMessageHandle is later destroyed by the iothub client when the message is effectively sent, if a failure sending it occurs, or if the client is destroyed.
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_SendEventAsync is deprecated.  Use IoTHubDeviceClient_LL_SendEventAsync instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SendEventAsync, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_MESSAGE_HANDLE, eventMessageHandle, IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK, eventConfirmationCallback, void*, userContextCallback);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SendEventAsync, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_MESSAGE_HANDLE, eventMessageHandle, IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK, eventConfirmationCallback, void*, userContextCallback);
 
     /**
-    * @brief    This function returns the current sending status for IoTHubClient.
-    *
-    * @param    iotHubClientHandle        The handle created by a call to the create function.
-    * @param    iotHubClientStatus        The sending state is populated at the address pointed
-    *                                     at by this parameter. The value will be set to
-    *                                     @c IOTHUBCLIENT_SENDSTATUS_IDLE if there is currently
-    *                                     no item to be sent and @c IOTHUBCLIENT_SENDSTATUS_BUSY
-    *                                     if there are.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_GetSendStatus is deprecated.  UseDevice IoTHubClient_LL_GetSendStatus instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_GetSendStatus, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_STATUS*, iotHubClientStatus);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_GetSendStatus, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_STATUS*, iotHubClientStatus);
 
     /**
-    * @brief    Sets up the message callback to be invoked when IoT Hub issues a
-    *             message to the device. This is a blocking call.
-    *
-    * @param    iotHubClientHandle               The handle created by a call to the create function.
-    * @param    messageCallback                The callback specified by the device for receiving
-    *                                         messages from IoT Hub.
-    * @param    userContextCallback            User specified context that will be provided to the
-    *                                         callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_SetMessageCallback is deprecated.  Use IoTHubDeviceClient_LL_SetMessageCallback instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetMessageCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_MESSAGE_CALLBACK_ASYNC, messageCallback, void*, userContextCallback);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetMessageCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_MESSAGE_CALLBACK_ASYNC, messageCallback, void*, userContextCallback);
 
     /**
-    * @brief    Sets up the connection status callback to be invoked representing the status of
-    * the connection to IOT Hub. This is a blocking call.
-    *
-    * @param    iotHubClientHandle                       The handle created by a call to the create function.
-    * @param    connectionStatusCallback                The callback specified by the device for receiving
-    *                                                 updates about the status of the connection to IoT Hub.
-    * @param    userContextCallback                    User specified context that will be provided to the
-    *                                                 callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_SetConnectionStatusCallback is deprecated.  Use IoTHubDeviceClient_LL_SetConnectionStatusCallback instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetConnectionStatusCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_CONNECTION_STATUS_CALLBACK, connectionStatusCallback, void*, userContextCallback);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetConnectionStatusCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_CONNECTION_STATUS_CALLBACK, connectionStatusCallback, void*, userContextCallback);
 
     /**
-    * @brief    Sets up the connection status callback to be invoked representing the status of
-    * the connection to IOT Hub. This is a blocking call.
-    *
-    * @param    iotHubClientHandle                       The handle created by a call to the create function.
-    * @param    retryPolicy                             The policy to use to reconnect to IoT Hub when a
-    *                                               connection drops.
-    * @param    retryTimeoutLimitInSeconds            Maximum amount of time(seconds) to attempt reconnection when a
-    *                                               connection drops to IOT Hub.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_SetRetryPolicy is deprecated.  Use IoTHubDeviceClient_LL_SetRetryPolicy instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetRetryPolicy, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_RETRY_POLICY, retryPolicy, size_t, retryTimeoutLimitInSeconds);
-
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetRetryPolicy, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_RETRY_POLICY, retryPolicy, size_t, retryTimeoutLimitInSeconds);
 
     /**
-    * @brief    Sets up the connection status callback to be invoked representing the status of
-    * the connection to IOT Hub. This is a blocking call.
-    *
-    * @param    iotHubClientHandle                       The handle created by a call to the create function.
-    * @param    retryPolicy                             Out parameter containing the policy to use to reconnect to IoT Hub.
-    * @param    retryTimeoutLimitInSeconds            Out parameter containing maximum amount of time in seconds to attempt reconnection
-                                                    to IOT Hub.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_GetRetryPolicy is deprecated.  Use IoTHubDeviceClient_LL_GetRetryPolicy instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_GetRetryPolicy, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_RETRY_POLICY*, retryPolicy, size_t*, retryTimeoutLimitInSeconds);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_GetRetryPolicy, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_RETRY_POLICY*, retryPolicy, size_t*, retryTimeoutLimitInSeconds);
 
     /**
-    * @brief    This function returns in the out parameter @p lastMessageReceiveTime
-    *             what was the value of the @c time function when the last message was
-    *             received at the client.
-    *
-    * @param    iotHubClientHandle                The handle created by a call to the create function.
-    * @param    lastMessageReceiveTime          Out parameter containing the value of @c time function
-    *                                             when the last message was received.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_GetLastMessageReceiveTime is deprecated.  Use IoTHubDeviceClient_LL_GetLastMessageReceiveTime instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_GetLastMessageReceiveTime, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, time_t*, lastMessageReceiveTime);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_GetLastMessageReceiveTime, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, time_t*, lastMessageReceiveTime);
 
     /**
-    * @brief    This function is meant to be called by the user when work
-    *             (sending/receiving) can be done by the IoTHubClient.
-    *
-    * @param    iotHubClientHandle    The handle created by a call to the create function.
-    *
-    *            All IoTHubClient interactions (in regards to network traffic
-    *            and/or user level callbacks) are the effect of calling this
-    *            function and they take place synchronously inside _DoWork.
+    * @deprecated IoTHubClient_LL_DoWork is deprecateDeviced.  Use IoTHubDeviceClient_LL_DoWork instead.
     */
-     MOCKABLE_FUNCTION(, void, IoTHubClient_LL_DoWork, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle);
+    MOCKABLE_FUNCTION(, void, IoTHubClient_LL_DoWork, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle);
 
     /**
-    * @brief    This API sets a runtime option identified by parameter @p optionName
-    *             to a value pointed to by @p value. @p optionName and the data type
-    *             @p value is pointing to are specific for every option.
-    *
-    * @param    iotHubClientHandle    The handle created by a call to the create function.
-    * @param    optionName              Name of the option.
-    * @param    value                  The value.
-    *
-    *            The options that can be set via this API are:
-    *                - @b timeout - the maximum time in milliseconds a communication is
-    *                  allowed to use. @p value is a pointer to an @c unsigned @c int with
-    *                  the timeout value in milliseconds. This is only supported for the HTTP
-    *                  protocol as of now. When the HTTP protocol uses CURL, the meaning of
-    *                  the parameter is <em>total request time</em>. When the HTTP protocol uses
-    *                  winhttp, the meaning is the same as the @c dwSendTimeout and
-    *                  @c dwReceiveTimeout parameters of the
-    *                  <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa384116(v=vs.85).aspx">
-    *                  WinHttpSetTimeouts</a> API.
-    *                - @b CURLOPT_LOW_SPEED_LIMIT - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_LOW_SPEED_TIME - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_FORBID_REUSE - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_FRESH_CONNECT - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_VERBOSE - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *              - @b keepalive - available for MQTT protocol.  Integer value that sets the
-    *                interval in seconds when pings are sent to the server.
-    *              - @b logtrace - available for MQTT protocol.  Boolean value that turns on and
-    *                off the diagnostic logging.
-    *              - @b sas_token_lifetime - available for MQTT & AMQP protocol.  size_t value that that determines the
-    *                sas token timeout length.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_SetOption is deprecated. Device Use IoTHubDeviceClient_LL_SetOption instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetOption, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, optionName, const void*, value);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetOption, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, optionName, const void*, value);
 
     /**
-    * @brief    This API specifies a call back to be used when the device receives a desired state update.
-    *
-    * @param    iotHubClientHandle        The handle created by a call to the create function.
-    * @param    deviceTwinCallback        The callback specified by the device client to be used for updating
-    *                                    the desired state. The callback will be called in response to patch
-    *                                    request send by the IoTHub services. The payload will be passed to the
-    *                                    callback, along with two version numbers:
-    *                                        - Desired:
-    *                                        - LastSeenReported:
-    * @param    userContextCallback        User specified context that will be provided to the
-    *                                     callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_SetDeviceTwinCallback is deprecated.  Use IoTHubDeviceClient_LL_SetDeviceTwinCallback instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetDeviceTwinCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_TWIN_CALLBACK, deviceTwinCallback, void*, userContextCallback);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetDeviceTwinCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_TWIN_CALLBACK, deviceTwinCallback, void*, userContextCallback);
 
     /**
-    * @brief    This API sneds a report of the device's properties and their current values.
-    *
-    * @param    iotHubClientHandle        The handle created by a call to the create function.
-    * @param    reportedState            The current device property values to be 'reported' to the IoTHub.
-    * @param    reportedStateCallback    The callback specified by the device client to be called with the
-    *                                    result of the transaction.
-    * @param    userContextCallback        User specified context that will be provided to the
-    *                                     callback. This can be @c NULL.
-    *
-    *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubClient_LL_Destroy function from within any callback.
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_SendReportedState is deprecated.  Use IoTHubDeviceClient_LL_SendReportedState instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SendReportedState, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const unsigned char*, reportedState, size_t, size, IOTHUB_CLIENT_REPORTED_STATE_CALLBACK, reportedStateCallback, void*, userContextCallback);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SendReportedState, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const unsigned char*, reportedState, size_t, size, IOTHUB_CLIENT_REPORTED_STATE_CALLBACK, reportedStateCallback, void*, userContextCallback);
 
-     /**
-     * @brief    This API sets callback for cloud to device method call.
-     *
-     * @param    iotHubClientHandle        The handle created by a call to the create function.
-     * @param    deviceMethodCallback    The callback which will be called by IoTHub.
-     * @param    userContextCallback        User specified context that will be provided to the
-     *                                     callback. This can be @c NULL.
-     *
-     * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
-     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetDeviceMethodCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_METHOD_CALLBACK_ASYNC, deviceMethodCallback, void*, userContextCallback);
+    /**
+    * @deprecated IoTHubClient_LL_SetDeviceMethodCallback is deprecated.  Use IoTHubDeviceClient_LL_SetDeviceMethodCallback instead.
+    */
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetDeviceMethodCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_METHOD_CALLBACK_ASYNC, deviceMethodCallback, void*, userContextCallback);
 
-     /**
-     * @brief    This API sets callback for async cloud to device method call.
-     *
-     * @param    iotHubClientHandle                The handle created by a call to the create function.
-     * @param    inboundDeviceMethodCallback     The callback which will be called by IoTHub.
-     * @param    userContextCallback                User specified context that will be provided to the
-     *                                             callback. This can be @c NULL.
-     *
-     * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
-     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetDeviceMethodCallback_Ex, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_INBOUND_DEVICE_METHOD_CALLBACK, inboundDeviceMethodCallback, void*, userContextCallback);
+    /**
+    * @deprecated IoTHubClient_LL_SetDeviceMethodCallback_Ex is deprecated.  Use IoTHubDeviceClient_LL_SetDeviceMethodCallback instead.
+    */
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetDeviceMethodCallback_Ex, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_INBOUND_DEVICE_METHOD_CALLBACK, inboundDeviceMethodCallback, void*, userContextCallback);
 
-     /**
-     * @brief    This API responses to a asnyc method callback identified the methodId.
-     *
-     * @param    iotHubClientHandle      The handle created by a call to the create function.
-     * @param    methodId                The methodId of the Device Method callback.
-     * @param    response                The response data for the method callback.
-     * @param    response_size           The size of the response data buffer.
-     * @param    status_response         The status response of the method callback.
-     *
-     * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
-     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_DeviceMethodResponse, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, METHOD_HANDLE, methodId, const unsigned char*, response, size_t, respSize, int, statusCode);
+    /**
+    * @deprecated IoTHubClient_LL_DeviceMethodResponse is deprecated.  Use IoTHubDeviceClient_LL_SetDeviceMethodCallback instead.
+    */
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_DeviceMethodResponse, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, METHOD_HANDLE, methodId, const unsigned char*, response, size_t, respSize, int, statusCode);
 
 #ifndef DONT_USE_UPLOADTOBLOB
     /**
-    * @brief    This API uploads to Azure Storage the content pointed to by @p source having the size @p size
-    *           under the blob name devicename/@pdestinationFileName
-    *
-    * @param    iotHubClientHandle        The handle created by a call to the create function.
-    * @param    destinationFileName     name of the file.
-    * @param    source                  pointer to the source for file content (can be NULL)
-    * @param    size                    the size of the source in memory (if @p source is NULL then size needs to be 0).
-    *
-    * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
+    * @deprecated IoTHubClient_LL_UploadToBlob is deprecated.  UsDevicee IoTHubDeviceClient_LL_UploadToBlob instead.
     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_UploadToBlob, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, destinationFileName, const unsigned char*, source, size_t, size);
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_UploadToBlob, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, destinationFileName, const unsigned char*, source, size_t, size);
 
-     /**
-     ** DEPRECATED: Use IoTHubClient_LL_UploadMultipleBlocksToBlobAsyncEx instead **
-     * @brief    This API uploads to Azure Storage the content provided block by block by @p getDataCallback
-     *           under the blob name devicename/@pdestinationFileName
-     *
-     * @param    iotHubClientHandle      The handle created by a call to the create function.
-     * @param    destinationFileName     name of the file.
-     * @param    getDataCallback         A callback to be invoked to acquire the file chunks to be uploaded, as well as to indicate the status of the upload of the previous block.
-     * @param    context                 Any data provided by the user to serve as context on getDataCallback.
-     *
-     * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
-     ** DEPRECATED: Use IoTHubClient_LL_UploadMultipleBlocksToBlobAsyncEx instead **
-     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_UploadMultipleBlocksToBlob, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, destinationFileName, IOTHUB_CLIENT_FILE_UPLOAD_GET_DATA_CALLBACK, getDataCallback, void*, context);
+    /**
+    * @deprecated IoTHubClient_LL_UploadMultipleBlocksToBlob is deprecated.  Use IoTHubDeviceClient_LL_UploadMultipleBlocksToBlob instead.
+    */
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_UploadMultipleBlocksToBlob, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, destinationFileName, IOTHUB_CLIENT_FILE_UPLOAD_GET_DATA_CALLBACK, getDataCallback, void*, context);
 
-     /**
-     * @brief    This API uploads to Azure Storage the content provided block by block by @p getDataCallback
-     *           under the blob name devicename/@pdestinationFileName
-     *
-     * @param    iotHubClientHandle      The handle created by a call to the create function.
-     * @param    destinationFileName     name of the file.
-     * @param    getDataCallbackEx       A callback to be invoked to acquire the file chunks to be uploaded, as well as to indicate the status of the upload of the previous block.
-     * @param    context                 Any data provided by the user to serve as context on getDataCallback.
-     *
-     * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
-     */
-     MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_UploadMultipleBlocksToBlobEx, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, destinationFileName, IOTHUB_CLIENT_FILE_UPLOAD_GET_DATA_CALLBACK_EX, getDataCallbackEx, void*, context);
+    /**
+    * @deprecated IoTHubClient_LL_UploadMultipleBlocksToBlobEx is deprecated.  Use IoTHubDeviceClient_LL_UploadMultipleBlocksToBlob instead.
+    */
+    MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_UploadMultipleBlocksToBlobEx, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, destinationFileName, IOTHUB_CLIENT_FILE_UPLOAD_GET_DATA_CALLBACK_EX, getDataCallbackEx, void*, context);
 
 #endif /*DONT_USE_UPLOADTOBLOB*/
Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_options.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_options.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_options.h	(revision 464)
@@ -28,4 +28,6 @@
     static STATIC_VAR_UNUSED const char* OPTION_CONNECTION_TIMEOUT = "connect_timeout";
 
+    /* None of the OPTION_PROXY_* options below are implemented.  Use OPTION_HTTP_PROXY 
+    from shared_util_options.h in https://github.com/Azure/azure-c-shared-utility/ repo instead */
     static STATIC_VAR_UNUSED const char* OPTION_PROXY_HOST = "proxy_address";
     static STATIC_VAR_UNUSED const char* OPTION_PROXY_USERNAME = "proxy_username";
@@ -87,4 +89,18 @@
     static STATIC_VAR_UNUSED const char* OPTION_DO_WORK_FREQUENCY_IN_MS = "do_work_freq_ms";
 
+// Minimum percentage (in the 0 to 1 range) of multiplexed registered devices that must be failing for a transport-wide reconnection to be triggered.
+// A value of zero results in a single registered device to be able to cause a general transport reconnection 
+// (thus causing all other multiplexed registered devices to be also reconnected, meaning an agressive reconnection strategy).
+// Setting this parameter to one indicates that 100% of the multiplexed registered devices must be failing in parallel for a 
+// transport-wide reconnection to be triggered (resulting in a very lenient reconnection strategy).  
+#define DEVICE_MULTIPLEXING_FAULTY_DEVICE_RATIO_RECONNECTION_THRESHOLD 0
+
+// Minimum number of consecutive failures an individual registered device must have to be considered a faulty device.
+// This is used along with DEVICE_MULTIPLEXING_FAULTY_DEVICE_RATIO_RECONNECTION_THRESHOLD to trigger transport-wide reconnections.
+// The device may fail to authenticate, timeout establishing the connection, get disconnected by the service for some reason or fail sending messages.
+// In all these cases the failures are cummulatively counted; if the count is equal to or greater than DEVICE_FAILURE_COUNT_RECONNECTION_THRESHOLD
+// the device is considered to be in a faulty state.    
+#define DEVICE_FAILURE_COUNT_RECONNECTION_THRESHOLD 5
+
 #ifdef __cplusplus
 }
Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_version.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_version.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_client_version.h	(revision 464)
@@ -9,5 +9,5 @@
 #define IOTHUB_CLIENT_VERSION_H
 
-#define IOTHUB_SDK_VERSION "1.3.8"
+#define IOTHUB_SDK_VERSION "1.6.0"
 
 #include "umock_c/umock_c_prod.h"
Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_device_client_ll.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_device_client_ll.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_device_client_ll.h	(revision 464)
@@ -6,5 +6,5 @@
 *             with an Azure IoTHub.
 *
-*    @details IoTHubDeviceClient_LL is a module that allows a user (usually a
+*    @details IoTHubDeviceClient_LL allows a user (usually a
 *             device) to communicate with an Azure IoTHub. It can send events
 *             and receive messages. At any given moment in time there can only
@@ -16,5 +16,5 @@
 *             @c IoTHubDeviceClient_... APIs, with one difference. If the @c _LL_ APIs are
 *             used then the user is responsible for scheduling when the actual work done
-*             by the IoTHubClient happens (when the data is sent/received on/from the wire).
+*             by the IoTHubClient happens (when the data is sent/received on/from the network).
 *             This is useful for constrained devices where spinning a separate thread is
 *             often not desired.
@@ -88,5 +88,5 @@
      /**
      * @brief    Creates a IoT Hub client for communication with an existing IoT
-     *           Hub using the device auth module.
+     *           Hub using the device auth.
      *
      * @param    iothub_uri             Pointer to an ioThub hostname received in the registration process
@@ -116,5 +116,5 @@
     *                                           confirmation of the delivery of the IoT Hub message.
     *                                           This callback can be expected to invoke the
-    *                                           ::IoTHubDeviceClient_LL_SendEventAsync function for the
+    *                                           IoTHubDeviceClient_LL_SendEventAsync function for the
     *                                           same message in an attempt to retry sending a failing
     *                                           message. The user can specify a @c NULL value here to
@@ -124,5 +124,5 @@
     *
     *           @b NOTE: The application behavior is undefined if the user calls
-    *           the ::IoTHubDeviceClient_LL_Destroy function from within any callback.
+    *           the IoTHubDeviceClient_LL_Destroy function from within any callback.
     * @remarks
     *           The IOTHUB_MESSAGE_HANDLE instance provided as argument is copied by the function,
@@ -139,7 +139,9 @@
     * @param    iotHubClientStatus        The sending state is populated at the address pointed
     *                                     at by this parameter. The value will be set to
-    *                                     @c IOTHUBCLIENT_SENDSTATUS_IDLE if there is currently
-    *                                     no item to be sent and @c IOTHUBCLIENT_SENDSTATUS_BUSY
+    *                                     @c IOTHUB_CLIENT_SEND_STATUS_IDLE if there is currently
+    *                                     no item to be sent and @c IOTHUB_CLIENT_SEND_STATUS_BUSY
     *                                     if there are.
+    *
+    * @remark    Does not return information related to uploads initiated by IoTHubDeviceClient_LL_UploadToBlob or IoTHubDeviceClient_LL_UploadMultipleBlocksToBlob.
     *
     * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -158,5 +160,5 @@
     *
     *           @b NOTE: The application behavior is undefined if the user calls
-    *           the ::IoTHubDeviceClient_LL_Destroy function from within any callback.
+    *           the IoTHubDeviceClient_LL_Destroy function from within any callback.
     *
     * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -175,5 +177,7 @@
     *
     *           @b NOTE: The application behavior is undefined if the user calls
-    *           the ::IoTHubDeviceClient_LL_Destroy function from within any callback.
+    *           the IoTHubDeviceClient_LL_Destroy function from within any callback.
+    *
+    * @remark   Callback specified will not receive connection status change notifications for upload connections created with IoTHubDeviceClient_LL_UploadToBlob or IoTHubDeviceClient_LL_UploadMultipleBlocksToBlob.
     *
     * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -192,5 +196,7 @@
     *
     *           @b NOTE: The application behavior is undefined if the user calls
-    *           the ::IoTHubDeviceClient_LL_Destroy function from within any callback.
+    *           the IoTHubDeviceClient_LL_Destroy function from within any callback.
+    *
+    * @remark   Uploads initiated by IoTHubDeviceClient_LL_UploadToBlob or IoTHubDeviceClient_LL_UploadMultipleBlocksToBlob do not have automatic retries and do not honor the retryPolicy settings.
     *
     * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -209,5 +215,5 @@
     *
     *           @b NOTE: The application behavior is undefined if the user calls
-    *           the ::IoTHubDeviceClient_LL_Destroy function from within any callback.
+    *           the IoTHubDeviceClient_LL_Destroy function from within any callback.
     *
     * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -229,5 +235,5 @@
 
     /**
-    * @brief    This function MUST be called by the user so work (sending/receiving data on the wire,
+    * @brief    This function MUST be called by the user so work (sending/receiving data on the network,
     *           computing and enforcing timeout controls, managing the connection to the IoT Hub) can
     *           be done by the IoTHubClient.
@@ -251,36 +257,5 @@
     * @param    value                   The value.
     *
-    *           The options that can be set via this API are:
-    *                - @b timeout - the maximum time in milliseconds a communication is
-    *                  allowed to use. @p value is a pointer to an @c unsigned @c int with
-    *                  the timeout value in milliseconds. This is only supported for the HTTP
-    *                  protocol as of now. When the HTTP protocol uses CURL, the meaning of
-    *                  the parameter is <em>total request time</em>. When the HTTP protocol uses
-    *                  winhttp, the meaning is the same as the @c dwSendTimeout and
-    *                  @c dwReceiveTimeout parameters of the
-    *                  <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa384116(v=vs.85).aspx">
-    *                  WinHttpSetTimeouts</a> API.
-    *                - @b CURLOPT_LOW_SPEED_LIMIT - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_LOW_SPEED_TIME - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_FORBID_REUSE - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_FRESH_CONNECT - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b CURLOPT_VERBOSE - only available for HTTP protocol and only
-    *                  when CURL is used. It has the same meaning as CURL's option with the same
-    *                  name. @p value is pointer to a long.
-    *                - @b keepalive - available for MQTT protocol.  Integer value that sets the
-    *                  interval in seconds when pings are sent to the server.
-    *                - @b logtrace - available for MQTT protocol.  Boolean value that turns on and
-    *                  off the diagnostic logging.
-    *                - @b sas_token_lifetime - available for MQTT & AMQP protocol.  size_t value that that determines the
-    *                  sas token timeout length.
-    *                - @b OPTION_TRUSTED_CERT - Azure Server certificate used to validate TLS connection to iothub.
+    * @remarks  Documentation for configuration options is available at https://github.com/Azure/azure-iot-sdk-c/blob/master/doc/Iothub_sdk_options.md.
     *
     * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -302,5 +277,5 @@
     *
     *           @b NOTE: The application behavior is undefined if the user calls
-    *           the ::IoTHubDeviceClient_LL_Destroy function from within any callback.
+    *           the IoTHubDeviceClient_LL_Destroy function from within any callback.
     *
     * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -319,5 +294,5 @@
     *
     *            @b NOTE: The application behavior is undefined if the user calls
-    *            the ::IoTHubDeviceClient_LL_Destroy function from within any callback.
+    *            the IoTHubDeviceClient_LL_Destroy function from within any callback.
     *
     * @return    IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -334,5 +309,5 @@
      *
      *			@b NOTE: The application behavior is undefined if the user calls
-     *			the ::IoTHubClient_LL_Destroy function from within any callback.
+     *			the IoTHubClient_LL_Destroy function from within any callback.
      *
      * @return	IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -374,4 +349,7 @@
     * @param    source                  pointer to the source for file content (can be NULL)
     * @param    size                    the size of the source in memory (if @p source is NULL then size needs to be 0).
+    * 
+    * @warning  Other _LL_ functions such as IoTHubDeviceClient_LL_SendEventAsync queue work to be performed later and do not block.  IoTHubDeviceClient_LL_UploadToBlob
+    *           will block however until the upload is completed or fails, which may take a while.
     *
     * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
@@ -388,4 +366,7 @@
      * @param    context                 Any data provided by the user to serve as context on getDataCallback.
      *
+     * @warning  Other _LL_ functions such as IoTHubDeviceClient_LL_SendEventAsync queue work to be performed later and do not block.  IoTHubDeviceClient_LL_UploadMultipleBlocksToBlob
+     *           will block however until the upload is completed or fails, which may take a while.
+     *
      * @return   IOTHUB_CLIENT_OK upon success or an error code upon failure.
      */
Index: azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_message.h
===================================================================
--- azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_message.h	(revision 457)
+++ azure_iot_hub_f767zi/trunk/azure_iot_sdk/iothub_client/inc/iothub_message.h	(revision 464)
@@ -192,7 +192,11 @@
 * @param   iotHubMessageHandle Handle to the message.
 *
-* @param   key name of the property to set.  Note that when sending messages via the HTTP transport, this value must not contain spaces.
-*
-* @param   value of the property to set.
+* @param   key name of the property to set. Note that when sending messages via the HTTP transport, this value must not contain spaces.
+*
+* @param   value of the property to set. 
+*
+*            @b NOTE: The accepted character sets for the key name and value parameters are dependent on different factors, such as the protocol 
+*            being used. For more information on the character sets accepted by Azure IoT Hub, see 
+*            <a href="https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messages-construct">Create and read IoT Hub messages</a>.
 *
 * @return  An @c IOTHUB_MESSAGE_RESULT value indicating the result of setting the property.
@@ -252,5 +256,5 @@
 * @param   correlationId Pointer to the memory location of the messageId
 *
-* @return  Returns IOTHUB_MESSAGE_OK if the messageId was set successfully
+* @return  Returns IOTHUB_MESSAGE_OK if the CorrelationId was set successfully
 *          or an error code otherwise.
 */
@@ -295,5 +299,5 @@
 * @param   outputName Pointer to the queue to output message to
 *
-* @return  Returns IOTHUB_MESSAGE_OK if the DiagnosticData was set successfully
+* @return  Returns IOTHUB_MESSAGE_OK if the outputName was set successfully
 *          or an error code otherwise.
 */
@@ -318,5 +322,5 @@
 * @param   inputName Pointer to the queue to input message to
 *
-* @return  Returns IOTHUB_MESSAGE_OK if the DiagnosticData was set successfully
+* @return  Returns IOTHUB_MESSAGE_OK if the inputName was set successfully
 *          or an error code otherwise.
 */
@@ -340,10 +344,9 @@
 * @param   connectionModuleId Pointer to the module ID of connector
 *
-* @return  Returns IOTHUB_MESSAGE_OK if the DiagnosticData was set successfully
+* @return  Returns IOTHUB_MESSAGE_OK if the connectionModuleId was set successfully
 *          or an error code otherwise.
 */
 MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_RESULT, IoTHubMessage_SetConnectionModuleId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle, const char*, connectionModuleId);
 
-
 /**
 * @brief   Gets the connection device ID from the IOTHUB_MESSAGE_HANDLE. No new memory is allocated,
@@ -356,4 +359,47 @@
 */
 MOCKABLE_FUNCTION(, const char*, IoTHubMessage_GetConnectionDeviceId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
+
+/**
+* @brief   Sets the message creation time in UTC.
+*
+* @param   iotHubMessageHandle Handle to the message.
+* @param   messageCreationTimeUtc Pointer to the message creation time as null-terminated string
+*
+* @return  Returns IOTHUB_MESSAGE_OK if the messageCreationTimeUtc was set successfully
+*          or an error code otherwise.
+*/
+MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_RESULT, IoTHubMessage_SetMessageCreationTimeUtcSystemProperty, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle, const char*, messageCreationTimeUtc);
+
+/**
+* @brief   Gets the message creation time in UTC from the IOTHUB_MESSAGE_HANDLE. No new memory is allocated,
+*          the caller is not responsible for freeing the memory. The memory
+*          is valid until IoTHubMessage_Destroy is called on the message.
+*
+* @param   iotHubMessageHandle Handle to the message.
+*
+* @return  A const char* pointing to the message creation time in UTC.
+*/
+MOCKABLE_FUNCTION(, const char*, IoTHubMessage_GetMessageCreationTimeUtcSystemProperty, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
+
+/**
+* @brief   Sets the message user id. CAUTION: SDK user should not call it directly, it is for internal use only.
+*
+* @param   iotHubMessageHandle Handle to the message.
+* @param   userId Pointer to the message user id as null-terminated string
+*
+* @return  Returns IOTHUB_MESSAGE_OK if the userId was set successfully or an error code otherwise.
+*/
+MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_RESULT, IoTHubMessage_SetMessageUserIdSystemProperty, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle, const char*, userId);
+
+/**
+* @brief   Gets the message user id from the IOTHUB_MESSAGE_HANDLE. No new memory is allocated,
+*          the caller is not responsible for freeing the memory. The memory
+*          is valid until IoTHubMessage_Destroy is called on the message.
+*
+* @param   iotHubMessageHandle Handle to the message.
+*
+* @return  A const char* pointing to the message user id.
+*/
+MOCKABLE_FUNCTION(, const char*, IoTHubMessage_GetMessageUserIdSystemProperty, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle);
 
 /**
