source: azure_iot_hub_f767zi/trunk/asp_baseplatform/lwip/lwip-2.1.2/src/include/lwip/apps/mqtt_priv.h@ 457

Last change on this file since 457 was 457, checked in by coas-nagasima, 4 years ago

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 3.2 KB
Line 
1/**
2 * @file
3 * MQTT client (private interface)
4 */
5
6/*
7 * Copyright (c) 2016 Erik Andersson
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without modification,
11 * are permitted provided that the following conditions are met:
12 *
13 * 1. Redistributions of source code must retain the above copyright notice,
14 * this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 * 3. The name of the author may not be used to endorse or promote products
19 * derived from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
22 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
23 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
24 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
26 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
30 * OF SUCH DAMAGE.
31 *
32 * This file is part of the lwIP TCP/IP stack.
33 *
34 * Author: Erik Andersson
35 *
36 */
37#ifndef LWIP_HDR_APPS_MQTT_PRIV_H
38#define LWIP_HDR_APPS_MQTT_PRIV_H
39
40#include "lwip/apps/mqtt.h"
41#include "lwip/altcp.h"
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
47/** Pending request item, binds application callback to pending server requests */
48struct mqtt_request_t
49{
50 /** Next item in list, NULL means this is the last in chain,
51 next pointing at itself means request is unallocated */
52 struct mqtt_request_t *next;
53 /** Callback to upper layer */
54 mqtt_request_cb_t cb;
55 void *arg;
56 /** MQTT packet identifier */
57 u16_t pkt_id;
58 /** Expire time relative to element before this */
59 u16_t timeout_diff;
60};
61
62/** Ring buffer */
63struct mqtt_ringbuf_t {
64 u16_t put;
65 u16_t get;
66 u8_t buf[MQTT_OUTPUT_RINGBUF_SIZE];
67};
68
69/** MQTT client */
70struct mqtt_client_s
71{
72 /** Timers and timeouts */
73 u16_t cyclic_tick;
74 u16_t keep_alive;
75 u16_t server_watchdog;
76 /** Packet identifier generator*/
77 u16_t pkt_id_seq;
78 /** Packet identifier of pending incoming publish */
79 u16_t inpub_pkt_id;
80 /** Connection state */
81 u8_t conn_state;
82 struct altcp_pcb *conn;
83 /** Connection callback */
84 void *connect_arg;
85 mqtt_connection_cb_t connect_cb;
86 /** Pending requests to server */
87 struct mqtt_request_t *pend_req_queue;
88 struct mqtt_request_t req_list[MQTT_REQ_MAX_IN_FLIGHT];
89 void *inpub_arg;
90 /** Incoming data callback */
91 mqtt_incoming_data_cb_t data_cb;
92 mqtt_incoming_publish_cb_t pub_cb;
93 /** Input */
94 u32_t msg_idx;
95 u8_t rx_buffer[MQTT_VAR_HEADER_BUFFER_LEN];
96 /** Output ring-buffer */
97 struct mqtt_ringbuf_t output;
98};
99
100#ifdef __cplusplus
101}
102#endif
103
104#endif /* LWIP_HDR_APPS_MQTT_PRIV_H */
Note: See TracBrowser for help on using the repository browser.