1 /*
2  * Copyright (C) 2015-2018 Alibaba Group Holding Limited
3  */
4 
5 #include "Cloud_CoAPNetwork.h"
6 #include "iotx_coap_internal.h"
7 
8 #ifndef CLOUD__COAP_EXPORT_H__
9 #define CLOUD__COAP_EXPORT_H__
10 
11 /* #define COAP_DTLS_SUPPORT */
12 typedef CoAPMsgOption Cloud_CoAPMsgOption;
13 typedef CoAPMessageCode Cloud_CoAPMessageCode;
14 typedef CoAPMessage Cloud_CoAPMessage;
15 #define COAP_OPTION_SEQ 2089
16 
17 typedef void (*Cloud_CoAPRespMsgHandler)(void *data, void *message);
18 
19 typedef struct {
20     void *user;
21     unsigned short msgid;
22     char acked;
23     unsigned char tokenlen;
24     unsigned char token[8];
25     unsigned char retrans_count;
26     unsigned short timeout;
27     unsigned short timeout_val;
28     unsigned char *message;
29     unsigned int msglen;
30     Cloud_CoAPRespMsgHandler resp;
31     struct list_head sendlist;
32 } Cloud_CoAPSendNode;
33 
34 typedef struct {
35     unsigned char count;
36     unsigned char maxcount;
37     struct list_head sendlist;
38 } Cloud_CoAPSendList;
39 
40 typedef void (*Cloud_CoAPEventNotifier)(unsigned int event, void *p_message);
41 typedef struct {
42     char *url;
43     unsigned char maxcount; /*list maximal count*/
44     unsigned int waittime;
45     Cloud_CoAPEventNotifier notifier;
46 } Cloud_CoAPInitParam;
47 
48 typedef struct {
49     unsigned short message_id;
50     coap_network_t network;
51     Cloud_CoAPEventNotifier notifier;
52     unsigned char *sendbuf;
53     unsigned char *recvbuf;
54     Cloud_CoAPSendList list;
55     unsigned int waittime;
56 } Cloud_CoAPContext;
57 
58 #define COAP_TRC(...)   log_debug("coap_cloud", __VA_ARGS__)
59 #define COAP_DUMP(...)  log_debug("coap_cloud", __VA_ARGS__)
60 #define COAP_DEBUG(...) log_debug("coap_cloud", __VA_ARGS__)
61 #define COAP_INFO(...)  log_info("coap_cloud", __VA_ARGS__)
62 #define COAP_WRN(...)   log_warning("coap_cloud", __VA_ARGS__)
63 #define COAP_ERR(...)   log_err("coap_cloud", __VA_ARGS__)
64 
65 Cloud_CoAPContext *Cloud_CoAPContext_create(Cloud_CoAPInitParam *param);
66 void Cloud_CoAPContext_free(Cloud_CoAPContext *p_ctx);
67 
68 #endif
69