Skip to content

Commit

Permalink
C client continued.
Browse files Browse the repository at this point in the history
  • Loading branch information
eerimoq committed Jun 24, 2019
1 parent c5edcf5 commit 07656ca
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 28 deletions.
83 changes: 71 additions & 12 deletions src/c/mqttools.c
Original file line number Diff line number Diff line change
Expand Up @@ -273,19 +273,78 @@ static void *main(void *arg_p)

void mqttools_client_init(struct mqttools_client_t *self_p,
const char *host_p,
int port,
const char *client_id_p,
const char *will_topic_p,
const uint8_t *will_message_p,
int will_qos,
int keep_alive_s,
int response_timeout,
const char **topic_aliases_pp,
int topic_alias_maximum,
int session_expiry_interval,
const char **subscriptions_pp,
int *connect_delays_p)
int port)
{
static int default_connect_delays[] = { 1, 2, 4, 8 };

self_p->host_p = host_p;
self_p->port = port;
self_p->client_id_p = NULL;
self_p->will.topic_p = NULL;
self_p->will.message_p = NULL;
self_p->will.message_size = 0;
self_p->will.qos = 0;
self_p->response_timeout = 5;
self_p->topic_aliases_pp = NULL;
self_p->topic_alias_maximum = 10;
self_p->session_expiry_interval = 0;
self_p->subscriptions_pp = NULL;
self_p->connect_delays_p = &default_connect_delays[0];
self_p->connect_delays_length = 4;
}

void mqttools_client_set_client_id(struct mqttools_client_t *self_p,
const char *client_id_p)
{
self_p->client_id_p = client_id_p;
}

void mqttools_client_set_will(struct mqttools_client_t *self_p,
const char *topic_p,
const uint8_t *message_p,
int qos)
{
self_p->will.topic_p = topic_p;
self_p->will.message_p = message_p;
self_p->will.qos = qos;
}

void mqttools_client_set_response_timeout(struct mqttools_client_t *self_p,
int value)
{
self_p->response_timeout = value;
}

void mqttools_client_set_topic_aliases(struct mqttools_client_t *self_p,
const char **topic_aliases_pp)
{
self_p->topic_aliases_pp = topic_aliases_pp;
}

void mqttools_client_set_topic_alias_maximum(struct mqttools_client_t *self_p,
int value)
{
self_p->topic_alias_maximum = value;
}

void mqttools_client_set_session_expiry_interval(struct mqttools_client_t *self_p,
int value)
{
self_p->session_expiry_interval = value;
}

void mqttools_client_set_subscriptions(struct mqttools_client_t *self_p,
const char **values_pp)
{
self_p->subscriptions_pp = values_pp;
}

void mqttools_client_set_connect_delays(struct mqttools_client_t *self_p,
int *values_p,
int length)
{
self_p->connect_delays_p = connect_delays_p;
self_p->connect_delays_length = length;
}

int mqttools_client_start(struct mqttools_client_t *self_p,
Expand Down
57 changes: 41 additions & 16 deletions src/c/mqttools.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,37 +32,56 @@
/* Error codes. */
#define MQTTOOLS_OK 0
#define MQTTOOLS_SESSION_RESUME 1
#define MQTTOOLS_DISCONNECTED 2

struct mqttools_client_t {
const char *host_p;
int port;
const char *client_id_p;
const char *will_topic_p;
const uint8_t *will_message_p;
int will_qos;
struct {
const char *topic_p;
const uint8_t *message_p;
size_t message_size;
int qos;
} will;
int keep_alive_s;
int response_timeout;
int topic_aliases;
int topic_alias_maximum;
int session_expiry_interval;
const char **subscriptions_pp;
int connect_delays;
int *connect_delays_p;
};

void mqttools_client_init(struct mqttools_client_t *self_p,
const char *host_p,
int port,
const char *client_id_p,
const char *will_topic_p,
const uint8_t *will_message_p,
int will_qos,
int keep_alive_s,
int response_timeout,
const char **topic_aliases_pp,
int topic_alias_maximum,
int session_expiry_interval,
const char **subscriptions_pp,
int *connect_delays_p);
int port);

void mqttools_client_set_client_id(struct mqttools_client_t *self_p,
const char *client_id_p);

void mqttools_client_set_will(struct mqttools_client_t *self_p,
const char *topic_p,
const uint8_t *message_p,
int qos);

void mqttools_client_set_response_timeout(struct mqttools_client_t *self_p,
int response_timeout);

void mqttools_client_set_topic_aliases(struct mqttools_client_t *self_p,
const char **topic_aliases_pp);

void mqttools_client_set_topic_alias_maximum(struct mqttools_client_t *self_p,
int topic_alias_maximum);

void mqttools_client_set_session_expiry_interval(struct mqttools_client_t *self_p,
int session_expiry_interval);

void mqttools_client_set_subscriptions(struct mqttools_client_t *self_p,
const char **subscriptions_pp);

void mqttools_client_set_connect_delays(struct mqttools_client_t *self_p,
int *connect_delays_p);

int mqttools_client_start(struct mqttools_client_t *self_p,
bool resume_session);
Expand All @@ -79,4 +98,10 @@ int mqttools_client_publish(struct mqttools_client_t *self_p,
const char *topic_p,
const uint8_t *message_p);

ssize_t mqttools_client_read_message(struct mqttools_client_t *self_p,
char *topic_p,
size_t topic_size,
uint8_t *message_p,
size_t message_size);

#endif

0 comments on commit 07656ca

Please sign in to comment.