--- libaitmqtt/inc/mqttapi.h 2012/05/05 13:31:48 1.1.2.7 +++ libaitmqtt/inc/mqttapi.h 2012/05/08 09:07:31 1.1.2.8 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: mqttapi.h,v 1.1.2.7 2012/05/05 13:31:48 misho Exp $ +* $Id: mqttapi.h,v 1.1.2.8 2012/05/08 09:07:31 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -59,6 +59,7 @@ typedef struct { mqtt_cb_t cmds[MQTT_TYPE_MAX]; int sock; + unsigned short timeout; mqtt_msg_t *buf; } mqtt_srv_t; #define mqtt_srv_setCmd(x, _cmd, _func) (assert((x)), (x)->cmds[(_cmd)] = (_func)) @@ -70,9 +71,10 @@ typedef struct { * * @sock = Client socket from accept() * @buf = Message buffer + * @timeout = timeout * return: NULL error or !=NULL allocated server handle */ -mqtt_srv_t *mqtt_srv_Init(int sock, mqtt_msg_t * __restrict buf); +mqtt_srv_t *mqtt_srv_Init(int sock, mqtt_msg_t * __restrict buf, unsigned short timeout); /* * mqtt_srv_Fini() Finish MQTT server side support * @@ -107,6 +109,7 @@ int mqtt_KeepAlive(int sock, unsigned short ka, unsign typedef struct { int sock; + unsigned short timeout; mqtt_msg_t *buf; } mqtt_cli_t; @@ -115,9 +118,10 @@ typedef struct { * mqtt_cli_Open() - Open client connection to MQTT broker * * @addr = brokers address + * @timeout = timeout * return: NULL error or !=NULL connected to broker */ -mqtt_cli_t *mqtt_cli_Open(struct sockaddr *addr); +mqtt_cli_t *mqtt_cli_Open(struct sockaddr *addr, unsigned short timeout); /* * mqtt_cli_Close() - Close client connection * @@ -125,6 +129,21 @@ mqtt_cli_t *mqtt_cli_Open(struct sockaddr *addr); * return: -1 error or 0 disconnected client and freed all resources */ int mqtt_cli_Close(mqtt_cli_t ** __restrict cli); + +/* + * mqtt_cli_Subscribe() - Subscribe to broker + * + * @cli = connected client + * @Topics = Topics for subscribes + * @msgID = Message ID + * @Dup = Duplicated request + * @QoS = Message QoS + * return: NULL error or !=NULL allocated array with subscribed QoS responses, + * must be free() result! + */ +unsigned char *mqtt_cli_Subscribe(mqtt_cli_t * __restrict cli, + mqtt_subscr_t * __restrict Topics, unsigned short msgID, + unsigned char Dup, unsigned char QoS); #endif