/* * $Id$ * * Copyright (C) 2003-2015 JNode.org * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; If not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package org.jnode.driver.net.prism2; /** * @author Ewout Prangsma (epr@users.sourceforge.net) */ public interface Prism2Constants { // Register offsets public enum Register { CMD(0x00), PARAM0(0x04), PARAM1(0x08), PARAM2(0x0c), STATUS(0x10), RESP0(0x14), RESP1(0x18), RESP2(0x1c), INFOFID(0x20), RXFID(0x40), ALLOCFID(0x44), TXCOMPLFID(0x48), SELECT0(0x30), OFFSET0(0x38), DATA0(0x6c), SELECT1(0x34), REGSET1(0x3c), DATA1(0x70), EVSTAT(0x60), INTEN(0x64), EVACK(0x68), CONTROL(0x28), SWSUPPORT0(0x50), SWSUPPORT1(0x54), SWSUPPORT2(0x58), AUXPAGE(0x74), AUXOFFSET(0x78), AUXDATA(0x7c), PCICOR(0x4c), PCIHCR(0x5c), PCI_M0_ADDRH(0x80), PCI_M0_ADDRL(0x84), PCI_M0_LEN(0x88), PCI_M0_CTL(0x8c), PCI_STATUS(0x98), PCI_M1_ADDRH(0xa0), PCI_M1_ADDRL(0xa4), PCI_M1_LEN(0xa8), PCI_M1_CTL(0xac); private final int offset; private Register(int offset) { this.offset = offset; } /** * Gets the offset of this register in the register space. * * @return Returns the offset. */ public final int getOffset() { return offset; } } // Register fields public static final int CMD_BUSY = 0x8000; public static final int CMD_AINFO = 0x4000 | 0x2000 | 0x1000 | 0x0800 | 0x0400 | 0x0200 | 0x0100;; public static final int CMD_MACPORT = 0x0400 | 0x0200 | 0x0100;; public static final int CMD_RECL = 0x0100; public static final int CMD_WRITE = 0x0100; public static final int CMD_PROGMODE = 0x0200 | 0x0100;; public static final int CMD_CMDCODE = 0x20 | 0x10 | 0x08 | 0x04 | 0x02 | 0x01;; public static final int STATUS_RESULT = 0x4000 | 0x2000 | 0x1000 | 0x0800 | 0x0400 | 0x0200 | 0x0100; public static final int STATUS_CMDCODE = 0x20 | 0x10 | 0x08 | 0x04 | 0x02 | 0x01;; public static final int OFFSET_BUSY = 0x8000; public static final int OFFSET_ERR = 0x4000; public static final int OFFSET_DATAOFF = 0x0800 | 0x0400 | 0x0200 | 0x0100 | 0x80 | 0x40 | 0x20 | 0x10 | 0x08 | 0x04 | 0x02; public static final int EVSTAT_TICK = 0x8000; public static final int EVSTAT_WTERR = 0x4000; public static final int EVSTAT_INFDROP = 0x2000; public static final int EVSTAT_INFO = 0x80; public static final int EVSTAT_DTIM = 0x20; public static final int EVSTAT_CMD = 0x10; public static final int EVSTAT_ALLOC = 0x08; public static final int EVSTAT_TXEXC = 0x04; public static final int EVSTAT_TX = 0x02; public static final int EVSTAT_RX = 0x01; public static final int INTEN_TICK = 0x8000; public static final int INTEN_WTERR = 0x4000; public static final int INTEN_INFDROP = 0x2000; public static final int INTEN_INFO = 0x80; public static final int INTEN_DTIM = 0x20; public static final int INTEN_CMD = 0x10; public static final int INTEN_ALLOC = 0x08; public static final int INTEN_TXEXC = 0x04; public static final int INTEN_TX = 0x02; public static final int INTEN_RX = 0x01; public static final int EVACK_TICK = 0x8000; public static final int EVACK_WTERR = 0x4000; public static final int EVACK_INFDROP = 0x2000; public static final int EVACK_INFO = 0x80; public static final int EVACK_DTIM = 0x20; public static final int EVACK_CMD = 0x10; public static final int EVACK_ALLOC = 0x08; public static final int EVACK_TXEXC = 0x04; public static final int EVACK_TX = 0x02; public static final int EVACK_RX = 0x01; public static final int CONTROL_AUXEN = 0x8000 | 0x4000; /*--- Command Code Constants --------------------------*/ public enum Command { /*--- Controller Commands --------------------------*/ INIT(0x00), ENABLE(0x01), DISABLE(0x02), DIAG(0x03), /*--- Buffer Mgmt Commands --------------------------*/ ALLOC(0x0A), TX(0x0B), CLRPRST(0x12), /*--- Regulate Commands --------------------------*/ NOTIFY(0x10), INQ(0x11), /*--- Configure Commands --------------------------*/ ACCESS(0x21), DOWNLD(0x22), /*--- Debugging Commands -----------------------------*/ MONITOR(0x38); private final int code; private Command(int code) { this.code = code; } /** * @return Returns the code. */ public final int getCode() { return code; } } /** * Result Codes */ public enum Result { SUCCESS(0x00), CARD_FAIL(0x01), NO_BUFF(0x05), CMD_ERR(0x7F); private final int code; private Result(int code) { this.code = code; } /** * Gets the code value. * * @return the code value */ public final int getCode() { return code; } /** * Gets the Result value by its code. * * @param code * @return the Result value */ public static final Result getByCode(int code) { for (Result r : Result.values()) { if (r.code == code) { return r; } } throw new IllegalArgumentException("Unknown code " + code); } } /*------ Constants --------------------------------------------*/ /*--- Mins & Maxs -----------------------------------*/ public static final int CMD_ALLOC_LEN_MIN = 4; public static final int CMD_ALLOC_LEN_MAX = 2400; public static final int BAP_DATALEN_MAX = 4096; public static final int BAP_OFFSET_MAX = 4096; public static final int PORTID_MAX = 7; public static final int NUMPORTS_MAX = PORTID_MAX + 1; public static final int PDR_LEN_MAX = 512; /* in bytes, from EK */ public static final int PDA_RECS_MAX = 200; /* a guess */ public static final int PDA_LEN_MAX = 1024; /* in bytes, from EK */ public static final int SCANRESULT_MAX = 31; public static final int HSCANRESULT_MAX = 31; public static final int CHINFORESULT_MAX = 16; public static final int DRVR_FIDSTACKLEN_MAX = 10; /*--- Record ID Constants --------------------------*/ public enum RecordID { /*-------------------------------------------------------------------- Configuration RIDs: Network Parameters, Static Configuration Entities --------------------------------------------------------------------*/ CNFPORTTYPE(0xFC00, 2), CNFOWNMACADDR(0xFC01, 6), CNFDESIREDSSID(0xFC02, 34), CNFOWNCHANNEL(0xFC03, 2), CNFOWNSSID(0xFC04, 34), CNFOWNATIMWIN(0xFC05, 2), CNFSYSSCALE(0xFC06), CNFMAXDATALEN(0xFC07), CNFWDSADDR(0xFC08, 6), CNFPMENABLED(0xFC09), CNFPMEPS(0xFC0A), CNFMULTICASTRX(0xFC0B), CNFMAXSLEEPDUR(0xFC0C), CNFPMHOLDDUR(0xFC0D), CNFOWNNAME(0xFC0E), CNFOWNDTIMPER(0xFC10), CNFWDSADDR1(0xFC11), CNFWDSADDR2(0xFC12), CNFWDSADDR3(0xFC13), CNFWDSADDR4(0xFC14), CNFWDSADDR5(0xFC15), CNFWDSADDR6(0xFC16), CNFMCASTPMBUFF(0xFC17), /*-------------------------------------------------------------------- Configuration RIDs: Network Parameters, Dynamic Configuration Entities --------------------------------------------------------------------*/ GROUPADDR(0xFC80), CREATEIBSS(0xFC81), FRAGTHRESH(0xFC82), RTSTHRESH(0xFC83), TXRATECNTL(0xFC84), PROMISCMODE(0xFC85), FRAGTHRESH0(0xFC90), FRAGTHRESH1(0xFC91), FRAGTHRESH2(0xFC92), FRAGTHRESH3(0xFC93), FRAGTHRESH4(0xFC94), FRAGTHRESH5(0xFC95), FRAGTHRESH6(0xFC96), RTSTHRESH0(0xFC97), RTSTHRESH1(0xFC98), RTSTHRESH2(0xFC99), RTSTHRESH3(0xFC9A), RTSTHRESH4(0xFC9B), RTSTHRESH5(0xFC9C), RTSTHRESH6(0xFC9D), TXRATECNTL0(0xFC9E), TXRATECNTL1(0xFC9F), TXRATECNTL2(0xFCA0), TXRATECNTL3(0xFCA1), TXRATECNTL4(0xFCA2), TXRATECNTL5(0xFCA3), TXRATECNTL6(0xFCA4), /*-------------------------------------------------------------------- API ENHANCEMENTS (NOT ALREADY IMPLEMENTED) --------------------------------------------------------------------*/ CNFWEPDEFAULTKEYID(0xFC23), CNFWEPDEFAULTKEY0(0xFC24), CNFWEPDEFAULTKEY1(0xFC25), CNFWEPDEFAULTKEY2(0xFC26), CNFWEPDEFAULTKEY3(0xFC27), CNFWEPFLAGS(0xFC28), CNFWEPKEYMAPTABLE(0xFC29), CNFAUTHENTICATION(0xFC2A), CNFMAXASSOCSTATIONS(0xFC2B), CNFTXCONTROL(0xFC2C), CNFROAMINGMODE(0xFC2D), CNFHOSTAUTH(0xFC2E), CNFRCVCRCERROR(0xFC30), CNFMMLIFE(0xFC31), CNFALTRETRYCNT(0xFC32), CNFAPBCNINT(0xFC33), CNFAPPCFINFO(0xFC34), CNFSTAPCFINFO(0xFC35), CNFPRIORITYQUSAGE(0xFC37), CNFTIMCTRL(0xFC40), CNFTHIRTY2TALLY(0xFC42), CNFENHSECURITY(0xFC43), CNFDBMADJUST(0xFC46), // NEW CNFSHORTPREAMBLE(0xFCB0), CNFEXCLONGPREAMBLE(0xFCB1), CNFAUTHRSPTIMEOUT(0xFCB2), CNFBASICRATES(0xFCB3), CNFSUPPRATES(0xFCB4), CNFFALLBACKCTRL(0xFCB5), // NEW WEPKEYDISABLE(0xFCB6), // NEW WEPKEYMAPINDEX(0xFCB7), // NEW AP BROADCASTKEYID(0xFCB8), // NEW AP ENTSECFLAGEYID(0xFCB9), // NEW AP CNFPASSIVESCANCTRL(0xFCB9), // NEW STA SCANREQUEST(0xFCE1), JOINREQUEST(0xFCE2), AUTHENTICATESTA(0xFCE3), CHANNELINFOREQUEST(0xFCE4), HOSTSCAN(0xFCE5), // NEW STA /*-------------------------------------------------------------------- Configuration RIDs: Behavior Parameters --------------------------------------------------------------------*/ ITICKTIME(0xFCE0), /*---------------------------------------------------------------------- Information RIDs: NIC Information --------------------------------------------------------------------*/ MAXLOADTIME(0xFD00), DOWNLOADBUFFER(0xFD01), PRIIDENTITY(0xFD02), PRISUPRANGE(0xFD03), PRI_CFIACTRANGES(0xFD04), NICSERIALNUMBER(0xFD0A), NICIDENTITY(0xFD0B), MFISUPRANGE(0xFD0C), CFISUPRANGE(0xFD0D), CHANNELLIST(0xFD10), REGULATORYDOMAINS(0xFD11), TEMPTYPE(0xFD12), CIS(0xFD13), STAIDENTITY(0xFD20), STASUPRANGE(0xFD21), STA_MFIACTRANGES(0xFD22), STA_CFIACTRANGES(0xFD23), BUILDSEQ(0xFFFE), FWID(0xFFFF), /*-------------------------------------------------------------------- Information RIDs: MAC Information --------------------------------------------------------------------*/ PORTSTATUS(0xFD40), CURRENTSSID(0xFD41), CURRENTBSSID(0xFD42), COMMSQUALITY(0xFD43), CURRENTTXRATE(0xFD44), CURRENTBCNINT(0xFD45), CURRENTSCALETHRESH(0xFD46), PROTOCOLRSPTIME(0xFD47), SHORTRETRYLIMIT(0xFD48), LONGRETRYLIMIT(0xFD49), MAXTXLIFETIME(0xFD4A), MAXRXLIFETIME(0xFD4B), CFPOLLABLE(0xFD4C), AUTHALGORITHMS(0xFD4D), PRIVACYOPTIMP(0xFD4F), DBMCOMMSQUALITY(0xFD51), CURRENTTXRATE1(0xFD80), CURRENTTXRATE2(0xFD81), CURRENTTXRATE3(0xFD82), CURRENTTXRATE4(0xFD83), CURRENTTXRATE5(0xFD84), CURRENTTXRATE6(0xFD85), OWNMACADDRESS(0xFD86), PCFINFO(0xFD87), SCANRESULTS(0xFD88), // NEW HOSTSCANRESULTS(0xFD89), // NEW AUTHENTICATIONUSED(0xFD8A), // NEW /*-------------------------------------------------------------------- Information RIDs: Modem Information --------------------------------------------------------------------*/ PHYTYPE(0xFDC0), CURRENTCHANNEL(0xFDC1), CURRENTPOWERSTATE(0xFDC2), CCAMODE(0xFDC3), SUPPORTEDDATARATES(0xFDC6); private final int id; private final int recordLength; private RecordID(int id) { this.id = id; this.recordLength = 0; } private RecordID(int id, int recordLength) { this.id = id; this.recordLength = recordLength; } /** * @return Returns the id. */ public final int getId() { return id; } /** * @return Returns the recordLength. */ public final int getRecordLength() { return recordLength; } } /*-------------------------------------------------------------------- Configuration RID lengths: Network Params, Static Config Entities This is the length of JUST the DATA part of the RID (does not include the len or code fields; --------------------------------------------------------------------*/ /* TODO: fill in the rest of these */ public static final int RID_CNFPMENABLED_LEN = 0; public static final int RID_CNFPMEPS_LEN = 0; public static final int RID_CNFMULTICASTRX_LEN = 0; // public static final int RID_CNFMAXSLEEPDUR_LEN = 0; public static final int RID_CNFPMHOLDDUR_LEN = 0; public static final int RID_CNFOWNNAME_LEN = 34; public static final int RID_CNFOWNDTIMPER_LEN = 0; public static final int RID_CNFWDSADDR1_LEN = 6; public static final int RID_CNFWDSADDR2_LEN = 6; public static final int RID_CNFWDSADDR3_LEN = 6; public static final int RID_CNFWDSADDR4_LEN = 6; public static final int RID_CNFWDSADDR5_LEN = 6; public static final int RID_CNFWDSADDR6_LEN = 6; public static final int RID_CNFMCASTPMBUFF_LEN = 0; // public static final int RID_CNFAUTHENTICATION_LEN = sizeof(UINT16;; // public static final int RID_CNFMAXSLEEPDUR_LEN = 0; public static final int RID_CNFWEPDEFAULTKEY_LEN = 6; public static final int RID_CNFWEP128DEFAULTKEY_LEN = 14; public static final int RID_CNFPRIOQUSAGE_LEN = 4; /*-------------------------------------------------------------------- Configuration RID Lengths: Network Param, Dynamic Config Entities This is the length of JUST the DATA part of the RID (does not include the len or code fields; --------------------------------------------------------------------*/ /* TODO: fill in the rest of these */ // public static final int RID_GROUPADDR_LEN = 16 * WLAN_ADDR_LEN; public static final int RID_CREATEIBSS_LEN = 0; public static final int RID_FRAGTHRESH_LEN = 0; public static final int RID_RTSTHRESH_LEN = 0; public static final int RID_TXRATECNTL_LEN = 4; public static final int RID_PROMISCMODE_LEN = 2; public static final int RID_FRAGTHRESH0_LEN = 0; public static final int RID_FRAGTHRESH1_LEN = 0; public static final int RID_FRAGTHRESH2_LEN = 0; public static final int RID_FRAGTHRESH3_LEN = 0; public static final int RID_FRAGTHRESH4_LEN = 0; public static final int RID_FRAGTHRESH5_LEN = 0; public static final int RID_FRAGTHRESH6_LEN = 0; public static final int RID_RTSTHRESH0_LEN = 0; public static final int RID_RTSTHRESH1_LEN = 0; public static final int RID_RTSTHRESH2_LEN = 0; public static final int RID_RTSTHRESH3_LEN = 0; public static final int RID_RTSTHRESH4_LEN = 0; public static final int RID_RTSTHRESH5_LEN = 0; public static final int RID_RTSTHRESH6_LEN = 0; public static final int RID_TXRATECNTL0_LEN = 0; public static final int RID_TXRATECNTL1_LEN = 0; public static final int RID_TXRATECNTL2_LEN = 0; public static final int RID_TXRATECNTL3_LEN = 0; public static final int RID_TXRATECNTL4_LEN = 0; public static final int RID_TXRATECNTL5_LEN = 0; public static final int RID_TXRATECNTL6_LEN = 0; /*-------------------------------------------------------------------- Configuration RID Lengths: Behavior Parameters This is the length of JUST the DATA part of the RID (does not include the len or code fields; --------------------------------------------------------------------*/ public static final int RID_ITICKTIME_LEN = 2; /*---------------------------------------------------------------------- Information RID Lengths: NIC Information This is the length of JUST the DATA part of the RID (does not include the len or code fields; --------------------------------------------------------------------*/ public static final int RID_MAXLOADTIME_LEN = 0; // public static final int RID_DOWNLOADBUFFER_LEN = // sizeof(downloadbuffer_t;; public static final int RID_PRIIDENTITY_LEN = 8; public static final int RID_PRISUPRANGE_LEN = 10; public static final int RID_CFIACTRANGES_LEN = 10; public static final int RID_NICSERIALNUMBER_LEN = 12; public static final int RID_NICIDENTITY_LEN = 8; public static final int RID_MFISUPRANGE_LEN = 10; public static final int RID_CFISUPRANGE_LEN = 10; public static final int RID_CHANNELLIST_LEN = 0; public static final int RID_REGULATORYDOMAINS_LEN = 12; public static final int RID_TEMPTYPE_LEN = 0; public static final int RID_CIS_LEN = 480; public static final int RID_STAIDENTITY_LEN = 8; public static final int RID_STASUPRANGE_LEN = 10; public static final int RID_MFIACTRANGES_LEN = 10; public static final int RID_CFIACTRANGES2_LEN = 10; // public static final int RID_BUILDSEQ_LEN = sizeof(BuildSeq_t;; // public static final int RID_FWID_LEN = sizeof(FWID_t;; /*-------------------------------------------------------------------- Information RID Lengths: MAC Information This is the length of JUST the DATA part of the RID (does not include the len or code fields; --------------------------------------------------------------------*/ public static final int RID_PORTSTATUS_LEN = 0; public static final int RID_CURRENTSSID_LEN = 34; // public static final int RID_CURRENTBSSID_LEN = WLAN_BSSID_LEN; // public static final int RID_COMMSQUALITY_LEN = sizeof(commsquality_t;; // public static final int RID_DBMCOMMSQUALITY_LEN = // sizeof(dbmcommsquality_t;; public static final int RID_CURRENTTXRATE_LEN = 0; public static final int RID_CURRENTBCNINT_LEN = 0; public static final int RID_STACURSCALETHRESH_LEN = 12; public static final int RID_APCURSCALETHRESH_LEN = 6; public static final int RID_PROTOCOLRSPTIME_LEN = 0; public static final int RID_SHORTRETRYLIMIT_LEN = 0; public static final int RID_LONGRETRYLIMIT_LEN = 0; public static final int RID_MAXTXLIFETIME_LEN = 0; public static final int RID_MAXRXLIFETIME_LEN = 0; public static final int RID_CFPOLLABLE_LEN = 0; public static final int RID_AUTHALGORITHMS_LEN = 4; public static final int RID_PRIVACYOPTIMP_LEN = 0; public static final int RID_CURRENTTXRATE1_LEN = 0; public static final int RID_CURRENTTXRATE2_LEN = 0; public static final int RID_CURRENTTXRATE3_LEN = 0; public static final int RID_CURRENTTXRATE4_LEN = 0; public static final int RID_CURRENTTXRATE5_LEN = 0; public static final int RID_CURRENTTXRATE6_LEN = 0; public static final int RID_OWNMACADDRESS_LEN = 6; public static final int RID_PCFINFO_LEN = 6; // public static final int RID_CNFAPPCFINFO_LEN = sizeof(PCFInfo_data_t;; // public static final int RID_SCANREQUEST_LEN = sizeof(ScanRequest_data_t;; // public static final int RID_JOINREQUEST_LEN = sizeof(JoinRequest_data_t;; // public static final int RID_AUTHENTICATESTA_LEN = // sizeof(authenticateStation_data_t;; // public static final int RID_CHANNELINFOREQUEST_LEN = // sizeof(ChannelInfoRequest_data_t;; /*-------------------------------------------------------------------- Information RID Lengths: Modem Information This is the length of JUST the DATA part of the RID (does not include the len or code fields; --------------------------------------------------------------------*/ public static final int RID_PHYTYPE_LEN = 0; public static final int RID_CURRENTCHANNEL_LEN = 0; public static final int RID_CURRENTPOWERSTATE_LEN = 0; public static final int RID_CCAMODE_LEN = 0; public static final int RID_SUPPORTEDDATARATES_LEN = 10; /*-- Configuration Record: cnfAuthentication --*/ public static final int CNFAUTHENTICATION_OPENSYSTEM = 0x0001; public static final int CNFAUTHENTICATION_SHAREDKEY = 0x0002; /** * Information types */ public enum InformationType { HANDOVERADDR(0xF000), COMMTALLIES(0xF100), SCANRESULTS(0xF101), CHINFORESULTS( 0xF102), HOSTSCANRESULTS(0xF103), LINKSTATUS(0xF200), ASSOCSTATUS( 0xF201), AUTHREQ(0xF202), PSUSERCNT(0xF203), KEYIDCHANGED( 0xF204); private final int value; private InformationType(int value) { this.value = value; } /** * @return Returns the value. */ public final int getValue() { return value; } /** * Get an InformationType by its value. * * @param value * @return the InformationType */ public static InformationType getByValue(int value) { for (InformationType it : values()) { if (it.value == value) { return it; } } throw new IllegalArgumentException("Invalid value " + value); } } /** * Link status values */ public enum LinkStatus { NOTCONNECTED(0), CONNECTED(1), DISCONNECTED(2), AP_CHANGE(3), AP_OUTOFRANGE( 4), AP_INRANGE(5), ASSOCFAIL(6); private final int value; private LinkStatus(int value) { this.value = value; } /** * @return Returns the value. */ public final int getValue() { return value; } /** * Get the LinkStatus by its value. * * @param value * @return the LinkStatus */ public static LinkStatus getByValue(int value) { for (LinkStatus ls : values()) { if (ls.value == value) { return ls; } } throw new IllegalArgumentException("Invalid value " + value); } } }