MQTT_Server component bugfixes
Signed-off-by: eantwuh <antal.wu-hen-chang@ericsson.com>
diff --git a/IFW_MQTT_Server_Functions.ttcn b/IFW_MQTT_Server_Functions.ttcn
index 2e92e95..3f927c5 100644
--- a/IFW_MQTT_Server_Functions.ttcn
+++ b/IFW_MQTT_Server_Functions.ttcn
@@ -67,10 +67,58 @@
{
ctx := p_ctx;
}
+
+ function f_MQTT_getPacketId(in MQTT_v3_1_1_ReqResp p_msg)
+ return integer
+ {
+ if (ischosen(p_msg.publish)) { return p_msg.publish.packet_identifier }
+ else if (ischosen(p_msg.puback)) { return p_msg.puback.packet_identifier }
+ else if (ischosen(p_msg.pubrec)) { return p_msg.pubrec.packet_identifier }
+ else if (ischosen(p_msg.pubrel)) { return p_msg.pubrel.packet_identifier }
+ else if (ischosen(p_msg.pubcomp)) { return p_msg.pubcomp.packet_identifier }
+ else if (ischosen(p_msg.subscribe)) { return p_msg.subscribe.packet_identifier }
+ else if (ischosen(p_msg.suback)) { return p_msg.suback.packet_identifier }
+ else if (ischosen(p_msg.unsubscribe)) { return p_msg.unsubscribe.packet_identifier }
+ else if (ischosen(p_msg.unsuback)) { return p_msg.unsuback.packet_identifier }
+ else {
+ return -1;
+ }
+ }
+
+ function f_MQTT_setPacketId(inout MQTT_v3_1_1_ReqResp p_msg, integer p_id)
+ return boolean
+ {
+ if (ischosen(p_msg.publish)) { p_msg.publish.packet_identifier := p_id; }
+ else if (ischosen(p_msg.puback)) { p_msg.puback.packet_identifier := p_id; }
+ else if (ischosen(p_msg.pubrec)) { p_msg.pubrec.packet_identifier := p_id; }
+ else if (ischosen(p_msg.pubrel)) { p_msg.pubrel.packet_identifier := p_id; }
+ else if (ischosen(p_msg.pubcomp)) { p_msg.pubcomp.packet_identifier := p_id; }
+ else if (ischosen(p_msg.subscribe)) { p_msg.subscribe.packet_identifier := p_id; }
+ else if (ischosen(p_msg.suback)) { p_msg.suback.packet_identifier := p_id; }
+ else if (ischosen(p_msg.unsubscribe)) { p_msg.unsubscribe.packet_identifier := p_id; }
+ else if (ischosen(p_msg.unsuback)) { p_msg.unsuback.packet_identifier := p_id; }
+ else { return false; }
+
+ return true;
+ }
- function f_MQTT_Server_setMessageToSend(in MQTT_v3_1_1_ReqResp p_msg) runs on IFW_MQTT_Server_CT
+ function f_MQTT_Server_setMessageToSend(in MQTT_v3_1_1_ReqResp p_msg, boolean p_msgIdFromLastReceived := false) runs on IFW_MQTT_Server_CT
{
msgToSend := p_msg;
+
+ if (p_msgIdFromLastReceived)
+ {
+ var integer lastReceivedPacketId := f_MQTT_getPacketId(lastReceived);
+
+ if (lastReceivedPacketId != -1)
+ {
+ if (not f_MQTT_setPacketId(msgToSend, lastReceivedPacketId))
+ {
+ log("MQTT_Server: couldn't set packet id in msgToSend: ", msgToSend)
+ }
+ }
+ else { log("MQTT_Server: couldn't fetch packet id from lastReceived: ",lastReceived) };
+ }
}
function f_MQTT_Server_send() runs on IFW_MQTT_Server_CT
diff --git a/IFW_MQTT_Server_TestSteps.ttcn b/IFW_MQTT_Server_TestSteps.ttcn
index d2e97ec..0da01a0 100644
--- a/IFW_MQTT_Server_TestSteps.ttcn
+++ b/IFW_MQTT_Server_TestSteps.ttcn
@@ -75,14 +75,14 @@
return true;
}
- function f_IFW_MqttServer_setMessageToSend(in integer p_serverIdx, MQTT_v3_1_1_ReqResp p_msg) runs on IFW_MAIN_CT
+ function f_IFW_MqttServer_setMessageToSend(in integer p_serverIdx, MQTT_v3_1_1_ReqResp p_msg, boolean p_msgIdFromLastReceived := false) runs on IFW_MAIN_CT
return boolean
{
var IFW_MQTT_Server_CT v_server := mqttServers[p_serverIdx];
if (v_server == null) { log("IFW: No MQTT server found"); return false; }
f_isRunningGuard(v_server);
- v_server.start(f_MQTT_Server_setMessageToSend(p_msg));
+ v_server.start(f_MQTT_Server_setMessageToSend(p_msg, p_msgIdFromLastReceived));
v_server.done;
return true;