in source/azure_iot_hub_client.c [987:1025]
AzureIoTResult_t AzureIoTHubClient_UnsubscribeCloudToDeviceMessage( AzureIoTHubClient_t * pxAzureIoTHubClient )
{
AzureIoTMQTTSubscribeInfo_t xMqttSubscription = { 0 };
AzureIoTMQTTResult_t xMQTTResult;
AzureIoTResult_t xResult;
uint16_t usSubscribePacketIdentifier;
AzureIoTHubClientReceiveContext_t * pxContext;
if( pxAzureIoTHubClient == NULL )
{
AZLogError( ( "AzureIoTHubClient_UnsubscribeCloudToDeviceMessage failed: invalid argument" ) );
xResult = eAzureIoTErrorInvalidArgument;
}
else
{
pxContext = &pxAzureIoTHubClient->_internal.xReceiveContext[ azureiothubRECEIVE_CONTEXT_INDEX_C2D ];
xMqttSubscription.xQoS = eAzureIoTMQTTQoS1;
xMqttSubscription.pcTopicFilter = ( const uint8_t * ) AZ_IOT_HUB_CLIENT_C2D_SUBSCRIBE_TOPIC;
xMqttSubscription.usTopicFilterLength = ( uint16_t ) sizeof( AZ_IOT_HUB_CLIENT_C2D_SUBSCRIBE_TOPIC ) - 1;
usSubscribePacketIdentifier = AzureIoTMQTT_GetPacketId( &( pxAzureIoTHubClient->_internal.xMQTTContext ) );
AZLogDebug( ( "Attempting to unsubscribe from the MQTT topic: %s", AZ_IOT_HUB_CLIENT_C2D_SUBSCRIBE_TOPIC ) );
if( ( xMQTTResult = AzureIoTMQTT_Unsubscribe( &( pxAzureIoTHubClient->_internal.xMQTTContext ),
&xMqttSubscription, 1,
usSubscribePacketIdentifier ) ) != eAzureIoTMQTTSuccess )
{
AZLogError( ( "Cloud to device unsubscribe failed: MQTT error=0x%08x", xMQTTResult ) );
xResult = eAzureIoTErrorUnsubscribeFailed;
}
else
{
memset( pxContext, 0, sizeof( AzureIoTHubClientReceiveContext_t ) );
xResult = eAzureIoTSuccess;
}
}
return xResult;
}