blob: 9d85cfd576166e9209b26bdff9614ce725e3e2ce [file] [log] [blame]
/*****************************************************************************
(c) Cambridge Silicon Radio Limited 2011
All rights reserved and confidential information of CSR
Refer to LICENSE.txt included with this source for details
on the license terms.
*****************************************************************************/
/*
* ---------------------------------------------------------------------------
* FILE: csr_wifi_hip_unifi_udi.h
*
* PURPOSE:
* Declarations and definitions for the UniFi Debug Interface.
*
* ---------------------------------------------------------------------------
*/
#ifndef __CSR_WIFI_HIP_UNIFI_UDI_H__
#define __CSR_WIFI_HIP_UNIFI_UDI_H__
#include "csr_wifi_hip_unifi.h"
#include "csr_wifi_hip_signals.h"
/*
* Support for tracing the wire protocol.
*/
enum udi_log_direction
{
UDI_LOG_FROM_HOST = 0x0000,
UDI_LOG_TO_HOST = 0x0001
};
typedef void (*udi_func_t)(void *ospriv, u8 *sigdata,
u32 signal_len,
const bulk_data_param_t *bulkdata,
enum udi_log_direction dir);
CsrResult unifi_set_udi_hook(card_t *card, udi_func_t udi_fn);
CsrResult unifi_remove_udi_hook(card_t *card, udi_func_t udi_fn);
/*
* Function to print current status info to a string.
* This is used in the linux /proc interface and might be useful
* in other systems.
*/
s32 unifi_print_status(card_t *card, char *str, s32 *remain);
#define UNIFI_SNPRINTF_RET(buf_p, remain, written) \
do { \
if (written >= remain) { \
if (remain >= 2) { \
buf_p[remain - 2] = '\n'; \
buf_p[remain - 1] = 0; \
} \
buf_p += remain; \
remain = 0; \
} else if (written > 0) { \
buf_p += written; \
remain -= written; \
} \
} while (0)
#endif /* __CSR_WIFI_HIP_UNIFI_UDI_H__ */