mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
Merge pull request #9305 from haukepetersen/opt_emcute_usebyteorder
net/emcute: use global byteorder functions
This commit is contained in:
commit
5ab519c7fa
@ -24,6 +24,7 @@
|
||||
#include "mutex.h"
|
||||
#include "sched.h"
|
||||
#include "xtimer.h"
|
||||
#include "byteorder.h"
|
||||
#include "thread_flags.h"
|
||||
|
||||
#include "net/emcute.h"
|
||||
@ -59,26 +60,6 @@ static volatile uint8_t waiton = 0xff;
|
||||
static volatile uint16_t waitonid = 0;
|
||||
static volatile int result;
|
||||
|
||||
static inline uint16_t get_u16(const uint8_t *buf)
|
||||
{
|
||||
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||
return (uint16_t)((buf[0] << 8) | buf[1]);
|
||||
#else
|
||||
return (uint16_t)((buf[1] << 8) | buf[0]);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void set_u16(uint8_t *buf, uint16_t val)
|
||||
{
|
||||
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||
buf[0] = (uint8_t)(val >> 8);
|
||||
buf[1] = (uint8_t)(val & 0xff);
|
||||
#else
|
||||
buf[0] = (uint8_t)(val & 0xff);
|
||||
buf[1] = (uint8_t)(val >> 8);
|
||||
#endif
|
||||
}
|
||||
|
||||
static size_t set_len(uint8_t *buf, size_t len)
|
||||
{
|
||||
if (len < (0xff - 7)) {
|
||||
@ -87,7 +68,7 @@ static size_t set_len(uint8_t *buf, size_t len)
|
||||
}
|
||||
else {
|
||||
buf[0] = 0x01;
|
||||
set_u16(&tbuf[1], (uint16_t)(len + 3));
|
||||
byteorder_htolebufs(&tbuf[1], (uint16_t)(len + 3));
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
@ -99,7 +80,7 @@ static size_t get_len(uint8_t *buf, uint16_t *len)
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
*len = get_u16(&buf[1]);
|
||||
*len = byteorder_lebuftohs(&buf[1]);
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
@ -151,12 +132,13 @@ static void on_disconnect(void)
|
||||
|
||||
static void on_ack(uint8_t type, int id_pos, int ret_pos, int res_pos)
|
||||
{
|
||||
if ((waiton == type) && (!id_pos || (waitonid == get_u16(&rbuf[id_pos])))) {
|
||||
if ((waiton == type) &&
|
||||
(!id_pos || (waitonid == byteorder_lebuftohs(&rbuf[id_pos])))) {
|
||||
if (!ret_pos || (rbuf[ret_pos] == ACCEPT)) {
|
||||
if (res_pos == 0) {
|
||||
result = EMCUTE_OK;
|
||||
} else {
|
||||
result = (int)get_u16(&rbuf[res_pos]);
|
||||
result = (int)byteorder_lebuftohs(&rbuf[res_pos]);
|
||||
}
|
||||
} else {
|
||||
result = EMCUTE_REJECT;
|
||||
@ -173,7 +155,7 @@ static void on_publish(size_t len, size_t pos)
|
||||
}
|
||||
|
||||
emcute_sub_t *sub;
|
||||
uint16_t tid = get_u16(&rbuf[pos + 2]);
|
||||
uint16_t tid = byteorder_lebuftohs(&rbuf[pos + 2]);
|
||||
|
||||
/* allocate a response packet */
|
||||
uint8_t buf[7] = { 7, PUBACK, 0, 0, 0, 0, ACCEPT };
|
||||
@ -255,7 +237,7 @@ int emcute_con(sock_udp_ep_t *remote, bool clean, const char *will_topic,
|
||||
tbuf[1] = CONNECT;
|
||||
tbuf[2] = flags;
|
||||
tbuf[3] = PROTOCOL_VERSION;
|
||||
set_u16(&tbuf[4], EMCUTE_KEEPALIVE);
|
||||
byteorder_htolebufs(&tbuf[4], EMCUTE_KEEPALIVE);
|
||||
memcpy(&tbuf[6], cli_id, strlen(cli_id));
|
||||
|
||||
/* configure 'state machine' and send the connection request */
|
||||
@ -329,8 +311,8 @@ int emcute_reg(emcute_topic_t *topic)
|
||||
|
||||
tbuf[0] = (strlen(topic->name) + 6);
|
||||
tbuf[1] = REGISTER;
|
||||
set_u16(&tbuf[2], 0);
|
||||
set_u16(&tbuf[4], id_next);
|
||||
byteorder_htolebufs(&tbuf[2], 0);
|
||||
byteorder_htolebufs(&tbuf[4], id_next);
|
||||
waitonid = id_next++;
|
||||
memcpy(&tbuf[6], topic->name, strlen(topic->name));
|
||||
|
||||
@ -365,9 +347,9 @@ int emcute_pub(emcute_topic_t *topic, const void *data, size_t len,
|
||||
len += (pos + 6);
|
||||
tbuf[pos++] = PUBLISH;
|
||||
tbuf[pos++] = flags;
|
||||
set_u16(&tbuf[pos], topic->id);
|
||||
byteorder_htolebufs(&tbuf[pos], topic->id);
|
||||
pos += 2;
|
||||
set_u16(&tbuf[pos], id_next);
|
||||
byteorder_htolebufs(&tbuf[pos], id_next);
|
||||
waitonid = id_next++;
|
||||
pos += 2;
|
||||
memcpy(&tbuf[pos], data, len);
|
||||
@ -399,7 +381,7 @@ int emcute_sub(emcute_sub_t *sub, unsigned flags)
|
||||
tbuf[0] = (strlen(sub->topic.name) + 5);
|
||||
tbuf[1] = SUBSCRIBE;
|
||||
tbuf[2] = flags;
|
||||
set_u16(&tbuf[3], id_next);
|
||||
byteorder_htolebufs(&tbuf[3], id_next);
|
||||
waitonid = id_next++;
|
||||
memcpy(&tbuf[5], sub->topic.name, strlen(sub->topic.name));
|
||||
|
||||
@ -435,7 +417,7 @@ int emcute_unsub(emcute_sub_t *sub)
|
||||
tbuf[0] = (strlen(sub->topic.name) + 5);
|
||||
tbuf[1] = UNSUBSCRIBE;
|
||||
tbuf[2] = 0;
|
||||
set_u16(&tbuf[3], id_next);
|
||||
byteorder_htolebufs(&tbuf[3], id_next);
|
||||
waitonid = id_next++;
|
||||
memcpy(&tbuf[5], sub->topic.name, strlen(sub->topic.name));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user