#ifndef MQTT_CLIENT
#define MQTT_CLIENT

#include "ipc_session.h"
#include "dy_utils/dy_common.h"
#include "tm1640_gpio.h"

#define WARNING_LEVEL0     0
#define WARNING_LEVEL1     1
#define WARNING_LEVEL2     2
#define WARNING_LEVEL3     3
#define WARNING_LEVEL4     4
#define WARNING_LEVEL5     5
#define WARNING_LEVEL6     6
#define WARNING_LEVEL7     7
#define WARNING_LEVEL8     8

typedef struct _tm1640_t
{
    ipc_session_t *session;         // mqtt client connects internal broker
    tm1640_gpio *gpio_handler;
    char sn_str[SN_MAX_LEN];
    int period_poll_timer;
    int rackChgState;
    double rackSoc;
    int buttonStatus;
    int heatStatus;
    int remainLightCnt;
    int is_L8_alarm_set;
    int buf_warning[9];             // There are 9 warning levels(from 0 to 8)
    int cnt_warning;
    int show_inx;
    int is_node_conf_recv;
} tm1640_t;

int tm1640_mqtt_client_init(tm1640_t *tm1640);
int tm1640_mqtt_handle_recv_msg(void *obj, ipc_msg_t *mqtt_msg);
int publish_to_south(ipc_session_t *sesson, char *identifier, char *key, int value);
void set_pcs_type_and_pack_num(tm1640_t *tm1640);

#endif
