182498Sroberto/****************************************************************************/ 282498Sroberto/* hopf6039.h */ 382498Sroberto/* hopf Elektronik 6039 PCI radio clock header */ 482498Sroberto/* (c) 1999, 2000 Bernd Altmeier <altmeier@ATLSoft.de> */ 582498Sroberto/* Rev. 1.00 Date 25.03.2000 */ 682498Sroberto/* History: */ 782498Sroberto/****************************************************************************/ 882498Sroberto 982498Sroberto#ifndef _hopf6039_H_ 1082498Sroberto#define _hopf6039_H_ 1182498Sroberto 1282498Sroberto#define HOPF_MAXVERSION 8 1382498Sroberto#define HOPF_CNTR_MEM_LEN 0x7f 1482498Sroberto#define HOPF_DATA_MEM_LEN 0x3ff /* this is our memory size */ 1582498Sroberto 1682498Sroberto/* macros and definition for 32 to 16 to 8 bit conversion */ 1782498Sroberto 1882498Srobertotypedef unsigned long DWORD; 1982498Srobertotypedef unsigned char BYTE; 2082498Srobertotypedef unsigned short WORD; 2182498Sroberto 2282498Sroberto#define LOWORD(l) ((WORD)(l)) 2382498Sroberto#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF)) 2482498Sroberto#define LOBYTE(w) ((BYTE)(w)) 2582498Sroberto#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF)) 2682498Sroberto 2782498Sroberto/* iocntl codes for driver access */ 2882498Sroberto 2982498Sroberto#define HOPF_CLOCK_CMD_MASK 0xff000 3082498Sroberto 3182498Sroberto#define HOPF_CLOCK_GET_LOCAL 0x10000 3282498Sroberto#define HOPF_CLOCK_GET_UTC 0x20000 3382498Sroberto#define HOPF_CLOCK_GET_ANTENNA 0x30000 3482498Sroberto#define HOPF_CLOCK_GET_DIFFERENCE 0x40000 3582498Sroberto#define HOPF_CLOCK_GET_VERSION 0x50000 3682498Sroberto#define HOPF_CLOCK_GET_POSITION 0x60000 3782498Sroberto#define HOPF_CLOCK_GET_SATDATA 0x70000 3882498Sroberto#define HOPF_CLOCK_GET_SYSTEMBYTE 0x80000 3982498Sroberto#define HOPF_CLOCK_GET_IRIG 0x90000 4082498Sroberto 4182498Sroberto#define HOPF_CLOCK_SET_DIFFERENCE 0x01000 4282498Sroberto#define HOPF_CLOCK_SET_ANTENNA 0x02000 4382498Sroberto#define HOPF_CLOCK_SET_TIME 0x03000 4482498Sroberto#define HOPF_CLOCK_SET_POSITION 0x04000 4582498Sroberto#define HOPF_CLOCK_SET_SATMODE 0x05000 4682498Sroberto#define HOPF_CLOCK_SET_SYSTEMBYTE 0x06000 4782498Sroberto#define HOPF_CLOCK_SET_RESET 0x07000 4882498Sroberto#define HOPF_CLOCK_SET_IRIG 0x08000 4982498Sroberto 5082498Sroberto/* clock command codes */ 5182498Sroberto 5282498Sroberto#define HOPF_CLOCK_HARDRESET 0x00008000 5382498Sroberto#define HOPF_CLOCK_SOFTRESET 0x00004000 5482498Sroberto 5582498Sroberto/* sat-information */ 5682498Sroberto 5782498Srobertotypedef struct SatStat{ 5882498Sroberto BYTE wVisible; 5982498Sroberto BYTE wMode; 6082498Sroberto BYTE wSat0; 6182498Sroberto BYTE wRat0; 6282498Sroberto BYTE wSat1; 6382498Sroberto BYTE wRat1; 6482498Sroberto BYTE wSat2; 6582498Sroberto BYTE wRat2; 6682498Sroberto BYTE wSat3; 6782498Sroberto BYTE wRat3; 6882498Sroberto BYTE wSat4; 6982498Sroberto BYTE wRat4; 7082498Sroberto BYTE wSat5; 7182498Sroberto BYTE wRat5; 7282498Sroberto BYTE wSat6; 7382498Sroberto BYTE wRat6; 7482498Sroberto BYTE wSat7; 7582498Sroberto BYTE wRat7; 7682498Sroberto} SatStat; 7782498Sroberto 7882498Sroberto/* GPS position */ 7982498Sroberto 8082498Srobertotypedef struct GPSPos { /* Position */ 8182498Sroberto long wAltitude; 8282498Sroberto long wLongitude; 8382498Sroberto long wLatitude; 8482498Sroberto} GPSPos; 8582498Sroberto 8682498Sroberto/* clock hardware version */ 8782498Sroberto 8882498Srobertotypedef struct ClockVersion { 8982498Sroberto char cVersion[255]; /* Hardware Version like " DCF-RECEIVER, VERSION 01.01, DAT: 23.NOV.1999" */ 9082498Sroberto char dVersion[255]; /* Driver Version */ 9182498Sroberto} ClockVersion; 9282498Sroberto 9382498Sroberto/* hopftime what you think */ 9482498Sroberto 9582498Srobertotypedef struct HOPFTIME { 9682498Sroberto unsigned int wYear; 9782498Sroberto unsigned int wMonth; 9882498Sroberto unsigned int wDayOfWeek; 9982498Sroberto unsigned int wDay; 10082498Sroberto unsigned int wHour; 10182498Sroberto unsigned int wMinute; 10282498Sroberto unsigned int wSecond; 10382498Sroberto unsigned int wMilliseconds; 10482498Sroberto unsigned int wStatus; 10582498Sroberto} HOPFTIME; 10682498Sroberto 10782498Sroberto/* DCF77 antenna alignment */ 10882498Sroberto 10982498Srobertotypedef struct DcfAntenne { 11082498Sroberto BYTE bStatus; 11182498Sroberto BYTE bStatus1; 11282498Sroberto WORD wAntValue; 11382498Sroberto} DcfAntenne; 11482498Sroberto 11582498Sroberto/* hopf PCI clock */ 11682498Sroberto 11782498Srobertotypedef struct hopfCard { 11882498Sroberto char name[32]; 11982498Sroberto unsigned irq; 12082498Sroberto unsigned long membase; /* without mmap */ 12182498Sroberto unsigned int port; 12282498Sroberto 12382498Sroberto int versionlen; 12482498Sroberto char versionbuf[1024]; 12582498Sroberto char *version[HOPF_MAXVERSION]; 12682498Sroberto char cardname[32]; 12782498Sroberto int interrupt; 12882498Sroberto void *mbase; /* this will be our memory base address */ 12982498Sroberto 13082498Sroberto} hopfCard; 13182498Sroberto 13282498Srobertotypedef struct cardparams { 13382498Sroberto unsigned int port; 13482498Sroberto unsigned irq; 13582498Sroberto int cardtype; 13682498Sroberto int cardnr; 13782498Sroberto unsigned int membase; 13882498Sroberto} cardparams; 13982498Sroberto 14082498Sroberto 14182498Sroberto#define WRITE_REGISTER 0x00 14282498Sroberto#define READ_REGISTER 0x01 14382498Sroberto 14482498Sroberto#endif /* _hopf6039_H_ */ 145