in amazonfreertossdk/src/main/java/software/amazon/freertos/amazonfreertossdk/AmazonFreeRTOSDevice.java [800:854]
private void connectToIoT(final Connect connect) {
if (mMqttConnectionState == AmazonFreeRTOSConstants.MqttConnectionState.MQTT_Connected) {
Log.w(TAG, "Already connected to IOT, sending connack to device again.");
sendConnAck();
return;
}
if (mMqttConnectionState != AmazonFreeRTOSConstants.MqttConnectionState.MQTT_Disconnected) {
Log.w(TAG, "Previous connection is active, please retry or disconnect mqtt first.");
return;
}
mIotMqttManager = new AWSIotMqttManager(connect.clientID, connect.brokerEndpoint);
Map<String, String> userMetaData = new HashMap<>();
userMetaData.put("AFRSDK", "Android");
//userMetaData.put("AFRSDKVersion", AMAZONFREERTOS_SDK_VERSION);
userMetaData.put("AFRLibVersion", mAmazonFreeRTOSLibVersion);
userMetaData.put("Platform", mAmazonFreeRTOSDeviceType);
userMetaData.put("AFRDevID", mAmazonFreeRTOSDeviceId);
mIotMqttManager.updateUserMetaData(userMetaData);
AWSIotMqttClientStatusCallback mqttClientStatusCallback = new AWSIotMqttClientStatusCallback() {
@Override
public void onStatusChanged(AWSIotMqttClientStatus status, Throwable throwable) {
Log.i(TAG, "mqtt connection status changed to: " + status);
switch (status) {
case Connected:
mMqttConnectionState = AmazonFreeRTOSConstants.MqttConnectionState.MQTT_Connected;
//sending connack
if (isBLEConnected() && mBluetoothGatt != null) {
sendConnAck();
} else {
Log.e(TAG, "Cannot send CONNACK because BLE connection is: " + mBleConnectionState);
}
break;
case Connecting:
case Reconnecting:
mMqttConnectionState = AmazonFreeRTOSConstants.MqttConnectionState.MQTT_Connecting;
break;
case ConnectionLost:
mMqttConnectionState = AmazonFreeRTOSConstants.MqttConnectionState.MQTT_Disconnected;
break;
default:
Log.e(TAG, "Unknown mqtt connection state: " + status);
}
}
};
if (mKeystore != null) {
Log.i(TAG, "Connecting to IoT using KeyStore: " + connect.brokerEndpoint);
mIotMqttManager.connect(mKeystore, mqttClientStatusCallback);
} else {
Log.i(TAG, "Connecting to IoT using AWS credential: " + connect.brokerEndpoint);
mIotMqttManager.connect(mAWSCredential, mqttClientStatusCallback);
}
}