2016-02-27 10:50:51 +01:00
|
|
|
#ifndef __CW_H
|
|
|
|
#define __CW_H
|
|
|
|
|
2016-03-04 21:01:38 +01:00
|
|
|
#include <arpa/inet.h>
|
|
|
|
|
|
|
|
#include "bstr.h"
|
2016-02-27 10:50:51 +01:00
|
|
|
#include "mbag.h"
|
|
|
|
#include "conn.h"
|
|
|
|
#include "action.h"
|
|
|
|
|
2016-03-04 20:23:32 +01:00
|
|
|
#include "lw.h"
|
2016-02-27 14:25:32 +01:00
|
|
|
|
2016-03-04 19:37:02 +01:00
|
|
|
/**
|
|
|
|
* @defgroup CW CW
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
2016-02-27 14:25:32 +01:00
|
|
|
|
2016-02-27 10:50:51 +01:00
|
|
|
|
2016-03-04 19:37:02 +01:00
|
|
|
/* Use some macros from LWAPP */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Put a byte to an output buffer.
|
|
|
|
* see #lw_put_byte
|
|
|
|
*/
|
|
|
|
#define cw_put_byte lw_put_byte
|
2016-03-05 22:32:52 +01:00
|
|
|
|
2016-03-04 19:37:02 +01:00
|
|
|
/**
|
2016-03-04 21:01:38 +01:00
|
|
|
* Put a word to an output buffer.
|
2016-03-04 19:37:02 +01:00
|
|
|
* see #lw_put_word
|
|
|
|
*/
|
|
|
|
#define cw_put_word lw_put_word
|
2016-03-05 22:32:52 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Put a dword
|
|
|
|
* see #lw_put_dword
|
|
|
|
*/
|
2016-03-04 19:37:02 +01:00
|
|
|
#define cw_put_dword lw_put_dword
|
2016-03-05 22:32:52 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Put some bytes
|
|
|
|
* See #lw_put_data
|
|
|
|
*/
|
2016-03-04 19:37:02 +01:00
|
|
|
#define cw_put_data lw_put_data
|
2016-03-05 22:32:52 +01:00
|
|
|
|
2016-03-04 19:37:02 +01:00
|
|
|
#define cw_put_bstr lw_put_bstr
|
|
|
|
#define cw_put_bstr16 lw_put_bstr16
|
|
|
|
|
2016-03-04 21:01:38 +01:00
|
|
|
#define cw_set_dword lw_set_dword
|
|
|
|
|
|
|
|
#define cw_get_byte lw_get_byte
|
|
|
|
#define cw_get_word lw_get_word
|
|
|
|
#define cw_get_dword lw_get_dword
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static inline int cw_put_version(uint8_t * dst, uint16_t subelem_id, bstrv_t v)
|
|
|
|
{
|
|
|
|
uint8_t *d = dst;
|
|
|
|
d += cw_put_dword(d, bstrv_get_vendor_id(v));
|
|
|
|
d += cw_put_dword(d, (subelem_id << 16) | bstrv_len(v));
|
|
|
|
d += cw_put_data(d, bstrv_data(v), bstrv_len(v));
|
|
|
|
return d - dst;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
extern int cw_read_wtp_descriptor(mbag_t mbag, struct conn *conn,
|
2016-03-05 14:12:49 +01:00
|
|
|
struct cw_action_in *a, uint8_t * data, int len);
|
2016-03-04 21:01:38 +01:00
|
|
|
|
|
|
|
extern int cw_read_wtp_descriptor_7(mbag_t mbag, struct conn *conn,
|
|
|
|
struct cw_action_in *a, uint8_t * data, int len);
|
|
|
|
|
2016-03-05 14:12:49 +01:00
|
|
|
extern int cw_read_wtp_descriptor_versions(mbag_t mbag, uint8_t * data, int len);
|
2016-03-04 21:01:38 +01:00
|
|
|
|
|
|
|
|
2016-03-05 14:12:49 +01:00
|
|
|
extern int cw_in_check_generic_resp(struct conn *conn, struct cw_action_in *a,
|
|
|
|
uint8_t * data, int len, struct sockaddr *from);
|
2016-03-04 21:01:38 +01:00
|
|
|
|
|
|
|
|
2016-03-05 22:32:52 +01:00
|
|
|
extern int cw_in_vendor_specific_payload(struct conn *conn, struct cw_action_in *a,
|
|
|
|
uint8_t * data, int len,struct sockaddr *from);
|
2016-03-04 21:01:38 +01:00
|
|
|
|
2016-03-04 19:37:02 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
*@}
|
|
|
|
*/
|
2016-02-27 10:50:51 +01:00
|
|
|
|
|
|
|
#endif
|