version 1.1.2.13, 2011/12/13 10:12:36
|
version 1.1.2.14, 2011/12/13 15:23:43
|
Line 8
|
Line 8
|
* |
* |
* @buf = Message buffer |
* @buf = Message buffer |
* @csConnID = ConnectID |
* @csConnID = ConnectID |
|
* @kasec = Keep alive timeout |
* @csUser = Username if !=NULL |
* @csUser = Username if !=NULL |
* @csPass = Password for Username, only if csUser is set |
* @csPass = Password for Username, only if csUser is set |
* @csWillTopic = Will Topic if !=NULL Will Flags set into message |
* @csWillTopic = Will Topic if !=NULL Will Flags set into message |
Line 19
|
Line 20
|
*/ |
*/ |
int |
int |
mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const char *csConnID, |
mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const char *csConnID, |
const char *csUser, const char *csPass, | u_short kasec, const char *csUser, const char *csPass, |
const char *csWillTopic, const char *csWillMessage, |
const char *csWillTopic, const char *csWillMessage, |
u_char ClrSess, u_char WillQOS, u_char WillRetain) |
u_char ClrSess, u_char WillQOS, u_char WillRetain) |
{ |
{ |
Line 77 mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const cha
|
Line 78 mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const cha
|
|
|
/* CONNECT header */ |
/* CONNECT header */ |
flags->clean_sess = ClrSess ? 1 : 0; |
flags->clean_sess = ClrSess ? 1 : 0; |
if (csUser) { | if (csUser && *csUser) { |
flags->username = 1; |
flags->username = 1; |
flags->password = csPass ? 1 : 0; |
flags->password = csPass ? 1 : 0; |
} else { |
} else { |
flags->username = 0; |
flags->username = 0; |
flags->password = 0; |
flags->password = 0; |
} |
} |
if (csWillTopic) { | if (csWillTopic && *csWillTopic) { |
flags->will_flg = 1; |
flags->will_flg = 1; |
flags->will_qos = WillQOS; |
flags->will_qos = WillQOS; |
flags->will_retain = WillRetain ? 1 : 0; |
flags->will_retain = WillRetain ? 1 : 0; |
Line 94 mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const cha
|
Line 95 mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const cha
|
flags->will_retain = 0; |
flags->will_retain = 0; |
} |
} |
|
|
ka->sb.l = MQTT_KEEPALIVE; | ka->val = kasec ? htons(kasec) : htons(MQTT_KEEPALIVE); |
|
|
/* ConnID */ |
/* ConnID */ |
cid = (mqtthdr_var_t*) (buf->msg_base + siz); |
cid = (mqtthdr_var_t*) (buf->msg_base + siz); |
Line 103 mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const cha
|
Line 104 mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const cha
|
memcpy(cid->var_data, csConnID, ntohs(cid->var_sb.val)); |
memcpy(cid->var_data, csConnID, ntohs(cid->var_sb.val)); |
|
|
/* If Will Flags setup */ |
/* If Will Flags setup */ |
if (csWillTopic) { | if (csWillTopic && *csWillTopic) { |
topic = (mqtthdr_var_t*) (buf->msg_base + siz); |
topic = (mqtthdr_var_t*) (buf->msg_base + siz); |
topic->var_sb.val = htons(strlen(csWillTopic)); |
topic->var_sb.val = htons(strlen(csWillTopic)); |
memcpy(topic->var_data, csWillTopic, ntohs(topic->var_sb.val)); |
memcpy(topic->var_data, csWillTopic, ntohs(topic->var_sb.val)); |
siz += MQTTHDR_VAR_SIZEOF(topic); |
siz += MQTTHDR_VAR_SIZEOF(topic); |
|
|
wmsg = (mqtthdr_var_t*) (buf->msg_base + siz); |
wmsg = (mqtthdr_var_t*) (buf->msg_base + siz); |
if (csWillMessage) { | if (csWillMessage && *csWillMessage) { |
wmsg->var_sb.val = htons(strlen(csWillMessage)); |
wmsg->var_sb.val = htons(strlen(csWillMessage)); |
memcpy(wmsg->var_data, csWillMessage, ntohs(wmsg->var_sb.val)); |
memcpy(wmsg->var_data, csWillMessage, ntohs(wmsg->var_sb.val)); |
} else |
} else |
Line 119 mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const cha
|
Line 120 mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const cha
|
} |
} |
|
|
/* If defined Username & Password */ |
/* If defined Username & Password */ |
if (csUser) { | if (csUser && *csUser) { |
user = (mqtthdr_var_t*) (buf->msg_base + siz); |
user = (mqtthdr_var_t*) (buf->msg_base + siz); |
user->var_sb.val = htons(strlen(csUser)); |
user->var_sb.val = htons(strlen(csUser)); |
memcpy(user->var_data, csUser, ntohs(user->var_sb.val)); |
memcpy(user->var_data, csUser, ntohs(user->var_sb.val)); |
siz += MQTTHDR_VAR_SIZEOF(user); |
siz += MQTTHDR_VAR_SIZEOF(user); |
|
|
if (csPass) { | if (csPass && *csPass) { |
pass = (mqtthdr_var_t*) (buf->msg_base + siz); |
pass = (mqtthdr_var_t*) (buf->msg_base + siz); |
pass->var_sb.val = htons(strlen(csPass)); |
pass->var_sb.val = htons(strlen(csPass)); |
memcpy(pass->var_data, csPass, ntohs(pass->var_sb.val)); |
memcpy(pass->var_data, csPass, ntohs(pass->var_sb.val)); |