move dirs
This commit is contained in:
104
Internet/MQTT/MQTTClient.h
Normal file
104
Internet/MQTT/MQTTClient.h
Normal file
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
* Copyright (c) 2014 IBM Corp.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* and Eclipse Distribution License v1.0 which accompany this distribution.
|
||||
*
|
||||
* The Eclipse Public License is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
* and the Eclipse Distribution License is available at
|
||||
* http://www.eclipse.org/org/documents/edl-v10.php.
|
||||
*
|
||||
* Contributors:
|
||||
* Allan Stockdill-Mander/Ian Craggs - initial API and implementation and/or initial documentation
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef __MQTT_CLIENT_C_
|
||||
#define __MQTT_CLIENT_C_
|
||||
|
||||
#include "MQTTPacket.h"
|
||||
#include "mqtt_interface.h" //Platform specific implementation header file
|
||||
#include "stdio.h"
|
||||
|
||||
#define MAX_PACKET_ID 65535
|
||||
#define MAX_MESSAGE_HANDLERS 5
|
||||
|
||||
enum QoS
|
||||
{
|
||||
QOS0,
|
||||
QOS1,
|
||||
QOS2
|
||||
};
|
||||
|
||||
// all failure return codes must be negative
|
||||
enum returnCode
|
||||
{
|
||||
BUFFER_OVERFLOW = -2,
|
||||
FAILURE = -1,
|
||||
SUCCESSS = 0
|
||||
};
|
||||
|
||||
void NewTimer(Timer*);
|
||||
|
||||
typedef struct MQTTMessage MQTTMessage;
|
||||
|
||||
typedef struct MessageData MessageData;
|
||||
|
||||
struct MQTTMessage
|
||||
{
|
||||
enum QoS qos;
|
||||
char retained;
|
||||
char dup;
|
||||
uint16_t id;
|
||||
void *payload;
|
||||
size_t payloadlen;
|
||||
};
|
||||
|
||||
struct MessageData
|
||||
{
|
||||
MQTTMessage* message;
|
||||
MQTTString* topicName;
|
||||
};
|
||||
|
||||
typedef void (*messageHandler)(MessageData*);
|
||||
|
||||
typedef struct Client Client;
|
||||
|
||||
int32_t MQTTConnect (Client*, MQTTPacket_connectData*);
|
||||
int32_t MQTTPublish (Client*, const char*, MQTTMessage*);
|
||||
int32_t MQTTSubscribe (Client*, const char*, enum QoS, messageHandler);
|
||||
int32_t MQTTUnsubscribe (Client*, const char*);
|
||||
int32_t MQTTDisconnect (Client*);
|
||||
int32_t MQTTYield (Client*, int32_t);
|
||||
|
||||
void setDefaultMessageHandler(Client*, messageHandler);
|
||||
|
||||
void MQTTClient(Client*, Network*, uint32_t, unsigned char*, size_t, unsigned char*, size_t);
|
||||
|
||||
struct Client
|
||||
{
|
||||
uint32_t next_packetid;
|
||||
uint32_t command_timeout_ms;
|
||||
size_t buf_size, readbuf_size;
|
||||
uint8_t *buf;
|
||||
uint8_t *readbuf;
|
||||
uint32_t keepAliveInterval;
|
||||
int8_t ping_outstanding;
|
||||
int32_t isconnected;
|
||||
|
||||
struct MessageHandlers
|
||||
{
|
||||
const char* topicFilter;
|
||||
void (*fp) (MessageData*);
|
||||
} messageHandlers[MAX_MESSAGE_HANDLERS]; // Message handlers are indexed by subscription topic
|
||||
|
||||
void (*defaultMessageHandler) (MessageData*);
|
||||
|
||||
Network* ipstack;
|
||||
Timer ping_timer;
|
||||
};
|
||||
|
||||
#define DefaultClient {0, 0, 0, 0, NULL, NULL, 0, 0, 0}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user