Releasing Data

API Function

This API is used by a directly connected device to release data to the platform or used by a gateway to release data received from an indirectly connected device to the platform. Different from the parameters of the API Reporting Device Data, topic of this API is fixed at /cloud/signaltrans/v2/categories/data, and pbstrServiceData serves as the message body (containing the header and body) and is transmitted by the AgentLite SDK without format adjustment or assembling.

API Description

1
HW_INT IOTA_MqttDataPub (HW_UINT uiCookie, const HW_UCHAR *pucTopic, HW_UINT uiQos, const HW_BYTES *pbstrServiceData);

Parameter Description

Parameter

Mandatory or Optional

Type

Description

uiCookie

Optional

unsign int

The value ranges from 1 to 65535.

pucTopic

Mandatory

String

Topic of the data to be released. The value must end with \0.

uiQos

Mandatory

unsign int

Value of MQTT. Generally, the value is 1.

pbstrServiceData

Mandatory

HW_BYTES

Packet body of the data to be released.

Return Value

For details, see Function Return Values.

Output

Broadcast Name

Broadcast Parameter

Member

Description

IOTA_TOPIC_MQTT_DATA_PUB_RSP

HW_MSG object

EN_IOTA_DATATRANS_IE_RESULT

Data release result.

  • 0: The data is released.
  • 1: The data releasing fails.

Example

1
2
3
HW_BYTES bstrBody; 
...
IOTA_MqttDataPub (1211, "/huawei/v1/devices/336d9bac-9ebf-44e9-95cf-efac5f05da3a/services/Storage", 1, bstrBody);

The device waits for the data reporting result.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// Call this API to register the function for subsequent processing after the device service data is reported.
HW_iNT Device_DataPubResultHandler(HW_UiNT uiCookie, HW_MSG pstMsg) 
{
    uiResult = HW_MsgGetUint(pstMsg, EN_IOTA_DATATRANS_IE_RESULT);
    if (HW_SUCCESS != uiResult) 
    {
        // retry with uiCookie 
        return 0;
    }
    return 0;
}
// After the device is added, register a broadcast to receive the service data reporting result: HW_BroadCastReg("IOTA_TOPIC_MQTT_DATA_PUB_RSP", Device_AddResultHandler);