in amazonfreertossdk/src/main/java/software/amazon/freertos/amazonfreertossdk/AmazonFreeRTOSDevice.java [918:943]
private void publishToIoT(final Publish publish) {
if (mMqttConnectionState != AmazonFreeRTOSConstants.MqttConnectionState.MQTT_Connected) {
Log.e(TAG, "Cannot publish message to IoT because mqtt connection state is not connected.");
return;
}
AWSIotMqttMessageDeliveryCallback deliveryCallback = new AWSIotMqttMessageDeliveryCallback() {
@Override
public void statusChanged(MessageDeliveryStatus messageDeliveryStatus, Object o) {
Log.d(TAG, "Publish msg delivery status: " + messageDeliveryStatus.toString());
if (messageDeliveryStatus == MessageDeliveryStatus.Success && publish.getQos() == 1) {
sendPubAck(publish);
}
}
};
try {
String topic = publish.getTopic();
byte[] data = publish.getPayload();
Log.i(TAG, "Sending mqtt message to IoT on topic: " + topic
+ " message: " + new String(data)
+ " MsgID: " + publish.getMsgID());
mIotMqttManager.publishData(data, topic, AWSIotMqttQos.values()[publish.getQos()],
deliveryCallback, null);
} catch (Exception e) {
Log.e(TAG, "Publish error.", e);
}
}