﻿#ifndef __MQTT_MSG_H
#define __MQTT_MSG_H

#include "util.h"
#include "list.h"
#include "mqtt/MQTTClient.h"

typedef struct _rules_var_t {
    MQTTClient client;
    MQTTClient_connectOptions opts;
    char *user;
    char *passwd;
    char *host;
    int port;
    char *client_id;
} mqtt_connect_t;

typedef struct  {
    list_t list;
    char *topic;
    char *payload;
    int payloadlen;
} mqtt_msg_queue_t;

enum {
    DISCONNECT,
    CONNECTED,
} mqtt_state;

typedef struct _mqtt_var_t {
    mqtt_connect_t mqtt;
    char* gw_sn;
    int mqtt_state;
    int (*mqtt_app_recv_message_cb)(void *context, char *topic, int topicLen, MQTTClient_message *message);
    //此处根据模块需要添加
} mqtt_var_t;

int mqtt_init(mqtt_var_t *var);
void mqtt_app_status_poll(mqtt_var_t* var);
int mqtt_app_publish(mqtt_var_t* var,char *topic,char *payload,int paloadlen);
int mqtt_app_recv_handle(char *topic, int topicLen, char *payload, int payloadLen);
#endif


