You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeutils/klaptopdaemon/kpcmcia.h

216 lines
4.0 KiB

/* This file is part of the KDE project
*
* Copyright (C) 2001 George Staikos <staikos@kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef _KPCMCIA_H
#define _KPCMCIA_H
class TQTimer;
class KPCMCIA;
#include <tqmemarray.h>
#include <sys/types.h>
#define CARD_STATUS_PRESENT 1
#define CARD_STATUS_READY 2
#define CARD_STATUS_BUSY 4
#define CARD_STATUS_SUSPEND 8
#define CARD_STATUS_SUSPENDED 8
class KPCMCIACard {
friend class KPCMCIA;
protected:
KPCMCIACard();
~KPCMCIACard();
int _fd;
int _interrupt;
TQString _device, _ports;
TQString _module;
TQString _cardname;
TQString _type;
int _vcc, _vpp, _vpp2;
TQString _stabPath;
int _iotype;
int _inttype;
int _cfgbase;
int _status;
int _num;
// Other fields for the future
// etc look in linux/cs.h for more info
public:
/**
* Base address for configuration
*/
inline int configBase() { return _cfgbase; }
/**
* Interrupt type
*/
inline int intType() { return _inttype; }
/**
* 16/32 bit
*/
inline int busWidth() { return _iotype; }
/**
* True if the card is present
*/
inline bool present() { return _status & CARD_STATUS_PRESENT; }
/**
* Return the card status
*/
inline int status() { return _status; }
/**
* Request to eject the card
*/
int eject();
/**
* Request to resume from suspend
*/
int resume();
/**
* Request to suspend
*/
int suspend();
/**
* Request to reset the card
*/
int reset();
/**
* Insert a card (mostly not needed?)
*/
int insert();
/**
* Return the card number
*/
inline int num() { return _num; }
/**
* Return the interrupt in use (or -1 if none)
*/
inline int irq() { return _interrupt; }
/**
* Return the VCC status
*/
inline int vcc() { return _vcc; }
/**
* Return the card programming power (1)
*/
inline int vpp() { return _vpp; }
/**
* Return the card programming power (2)
*/
inline int vpp2() { return _vpp2; }
/**
* Return the card name
*/
inline TQString& name() { return _cardname; }
/**
* Return the port range
*/
inline TQString& ports() { return _ports; }
/**
* Return the device name
*/
inline TQString& device() { return _device; }
/**
* Return the device type (ie network, modem, etc)
*/
inline TQString& type() { return _type; }
/**
* Return the driver (module) name
*/
inline TQString& driver() { return _module; }
/**
* Refresh the card information - return < 0 on error.
* (this is called automatically [by KPCMCIA] on a timer normally)
*/
int refresh();
private:
time_t _last;
};
class KPCMCIA : public TQObject {
TQ_OBJECT
public:
KPCMCIA(int maxSlots = 8, const char *stabPath = "/var/run/stab");
~KPCMCIA();
void setRefreshSpeed(int msec);
int getCardCount();
KPCMCIACard *getCard(int num);
bool haveCardServices();
signals:
void cardUpdated(int num);
public slots:
void updateCardInfo();
private:
int _refreshSpeed;
TQTimer *_timer;
TQMemArray<KPCMCIACard *> *_cards;
int _cardCnt;
bool _haveCardServices;
int _maxSlots;
TQString _stabPath;
};
#endif