⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ar5210.c

📁 Atheros wifi driver source code
💻 C
字号:
/* * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting * Copyright (c) 2002-2005 Atheros Communications, Inc. * All rights reserved. * * $Id: ar5210.c,v 1.1.1.1 2006/09/12 03:45:24 steven Exp $ */#include <stdio.h>#include <sys/types.h>#include "ah_decode.h"#include "ar5210/ar5210reg.h"#include "ar5210/ar5210phy.h"static struct {	u_int32_t	off;	const char*	name;	const char*	bits;} regnames[] = {	{ AR_TXDP0,		"AR_TXDP0" },	{ AR_TXDP1,		"AR_TXDP1" },	{ AR_CR,		"AR_CR",	AR_CR_BITS },	{ AR_RXDP,		"AR_RXDP" },	{ AR_CFG,		"AR_CFG",	AR_CFG_BITS },	{ AR_ISR,		"AR_ISR",	AR_ISR_BITS },	{ AR_IMR,		"AR_IMR",	AR_IMR_BITS },	{ AR_IER,		"AR_IER",	AR_IER_BITS },	{ AR_BCR,		"AR_BCR",	AR_BCR_BITS },	{ AR_BSR,		"AR_BSR",	AR_BSR_BITS },	{ AR_TXCFG,		"AR_TXCFG",	AR_TXCFG_BITS },	{ AR_RXCFG,		"AR_RXCFG" },	{ AR_MIBC,		"AR_MIBC" },	{ AR_TOPS,		"AR_TOPS" },	{ AR_RXNOFRM,		"AR_RXNOFRM" },	{ AR_TXNOFRM,		"AR_TXNOFRM" },	{ AR_RPGTO,		"AR_RPGTO" },	{ AR_RFCNT,		"AR_RFCNT" },	{ AR_MISC,		"AR_MISC" },	{ AR_RC,		"AR_RC",	AR_RC_BITS },	{ AR_SCR,		"AR_SCR",	AR_SCR_BITS },	{ AR_INTPEND,		"AR_INTPEND",	AR_INTPEND_BITS },	{ AR_SFR,		"AR_SFR" },	{ AR_PCICFG,		"AR_PCICFG",	AR_PCICFG_BITS },	{ AR_GPIOCR,		"AR_GPIOCR" },	{ AR_GPIODO,		"AR_GPIODO" },	{ AR_GPIODI,		"AR_GPIODI" },	{ AR_SREV,		"AR_SREV" },	{ AR_EP_RDATA,		"AR_EP_RDATA" },	{ AR_EP_STA,		"AR_EP_STA",	AR_EP_STA_BITS },	{ AR_STA_ID0,		"AR_STA_ID0" },	{ AR_STA_ID1,		"AR_STA_ID1",	AR_STA_ID1_BITS },	{ AR_BSS_ID0,		"AR_BSS_ID0" },	{ AR_BSS_ID1,		"AR_BSS_ID1" },	{ AR_SLOT_TIME,		"AR_SLOT_TIME" },	{ AR_TIME_OUT,		"AR_TIME_OUT" },	{ AR_RSSI_THR,		"AR_RSSI_THR" },	{ AR_RETRY_LMT,		"AR_RETRY_LMT" },	{ AR_USEC,		"AR_USEC" },	{ AR_BEACON,		"AR_PCU_BEACON", AR_BEACON_BITS },	{ AR_CFP_PERIOD,	"AR_CFP_PERIOD" },	{ AR_TIMER0,		"AR_TIMER0" },	{ AR_TIMER1,		"AR_TIMER1" },	{ AR_TIMER2,		"AR_TIMER2" },	{ AR_TIMER3,		"AR_TIMER3" },	{ AR_IFS0,		"AR_IFS0" },	{ AR_IFS1,		"AR_IFS1" },	{ AR_CFP_DUR,		"AR_CFP_DUR" },	{ AR_RX_FILTER,		"AR_RX_FILTER",	AR_RX_FILTER_BITS },	{ AR_MCAST_FIL0,	"AR_MCAST_FIL0" },	{ AR_MCAST_FIL1,	"AR_MCAST_FIL1" },	{ AR_TX_MASK0,		"AR_TX_MASK0" },	{ AR_TX_MASK1,		"AR_TX_MASK1" },	{ AR_CLR_TMASK,		"AR_CLR_TMASK" },	{ AR_TRIG_LEV,		"AR_TRIG_LEV" },	{ AR_DIAG_SW,		"AR_DIAG_SW",	AR_DIAG_SW_BITS },	{ AR_TSF_L32,		"AR_TSF_L32" },	{ AR_TSF_U32,		"AR_TSF_U32" },	{ AR_LAST_TSTP,		"AR_LAST_TSTP" },	{ AR_RETRY_CNT,		"AR_RETRY_CNT" },	{ AR_BACKOFF,		"AR_BACKOFF" },	{ AR_NAV,		"AR_NAV" },	{ AR_RTS_OK,		"AR_RTS_OK" },	{ AR_RTS_FAIL,		"AR_RTS_FAIL" },	{ AR_ACK_FAIL,		"AR_ACK_FAIL" },	{ AR_FCS_FAIL,		"AR_FCS_FAIL" },	{ AR_BEACON_CNT,	"AR_BEACON_CNT" },	{ AR_PHY_FRCTL,		"AR_PHY_FRCTL",	AR_PHY_FRCTL_BITS },	{ AR_PHY_AGC,		"AR_PHY_AGC",	AR_PHY_AGC_BITS },	{ AR_PHY_CHIPID,	"AR_PHY_CHIPID" },	{ AR_PHY_ACTIVE,	"AR_PHY_ACTIVE",AR_PHY_ACTIVE_BITS },	{ AR_PHY_AGCCTL,	"AR_PHY_AGCCTL",AR_PHY_AGCCTL_BITS },};voidar5210print(FILE *fd, u_int recnum, struct athregrec *r){#define	N(a)	(sizeof (a) / sizeof (a[0]))	char buf[64];	const char* bits;	int i;	for (i = 0; i < N(regnames); i++)		if (regnames[i].off == r->reg)			break;	fprintf(fd, "\n%05u: ", recnum);	if (i < N(regnames)) {		snprintf(buf, sizeof (buf), "%s (0x%x)",			regnames[i].name, r->reg);		bits = regnames[i].bits;	} else if (AR_EP_AIR_BASE <= r->reg && r->reg < 0x8000) {		snprintf(buf, sizeof (buf), "AR_EP_AIR(%u) (0x%x)",			(r->reg - AR_EP_AIR_BASE) >> 2, r->reg);		bits = NULL;	} else if (AR_KEYTABLE_0 <= r->reg && r->reg < AR_PHY_BASE) {		snprintf(buf, sizeof (buf), "AR_KEYTABLE(%u) (0x%x)",			(r->reg - AR_KEYTABLE_0) >> 5, r->reg);		bits = NULL;	} else if (AR_PHY_BASE <= r->reg) {		snprintf(buf, sizeof (buf), "AR_PHY(%u) (0x%x)",			(r->reg - AR_PHY_BASE) >> 2, r->reg);		bits = NULL;	} else {		snprintf(buf, sizeof (buf), "0x%x", r->reg);		bits = NULL;	}	fprintf(fd, "%-24s %s 0x%x", buf, r->op ? "<=" : "=>", r->val);	if (bits) {		const char *p = bits;		int tmp, n;		for (tmp = 0, p++; *p;) {			n = *p++;			if (r->val & (1 << (n - 1))) {				putc(tmp ? ',' : '<', fd);				for (; (n = *p) > ' '; ++p)					putc(n, fd);				tmp = 1;			} else				for (; *p > ' '; ++p)					continue;		}		if (tmp)			putc('>', fd);	}#undef N}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -