Reporting Device Data

API Function

This API is used by a directly connected device to report data to the platform or used by a gateway to report data received from an indirectly connected device to the platform.

pcDeviceId, pcRequstId, and pcServiceId of the API Reporting Device Data are assembled by the AgentLite SDK as the header of the message, and pcServiceProperties is assembled as the body of the message. The message is assembled in JSON format.

API Description

1
2
HW_INT IOTA_ServiceDataReport(HW_UINT uiCookie, const HW_CHAR *pcRequstId, 
const HW_CHAR *pcDeviceId, const HW_CHAR *pcServiceId, const HW_CHAR *pcServiceProperties);

Parameter Description

Parameter

Mandatory or Optional

Type

Description

uiCookie

Optional

unsign int

The value ranges from 1 to 65535.

pcRequstId

Mandatory

String

Identifier of a request. The request ID is used to match the service command delivered by the platform. This parameter is mandatory if the reported data is the response to the command request initiated by the platform. The value must end with \0.

pcDeviceId

Mandatory

String

Identifier of a device. The value must end with \0.

pcServiceId

Mandatory

String

Identifier of a service. The value must end with \0.

pcServiceProperties

Mandatory

String

Service properties. The value must end with \0.

Return Value

For details, see Function Return Values.

Output

Broadcast Name

Broadcast Parameter

Member

Description

IOTA_TOPIC_DATATRANS_REPORT_RSP/{deviceId}

HW_MSG object

EN_IOTA_DATATRANS_IE_RESULT

Data reporting result. The value is 0 or 1.

  • 0: The data is reported.
  • 1: The data reporting fails.

Example

Use JSON components to assemble service properties (pcServiceProperties) based on the format of the product model.

1
2
3
HW_UINT *uiLen; 

IOTA_ServiceDataReport(1211, NULL, "xxxx_xxxx_xxxx_xxxx" , "DoorWindow", "{\"status\":\"OPEN\"}");

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_DataReportResultHandler(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_DATATRANS_REPORT_RSP/XXXX_XXXX_XXXX_XXXX", Device_AddResultHandler).