OpenCores
URL https://opencores.org/ocsvn/gpib_controller/gpib_controller/trunk

Subversion Repositories gpib_controller

[/] [gpib_controller/] [trunk/] [prototype_1/] [PC_software/] [gpib_src/] [GpibHwAdapter.h] - Blame information for rev 3

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 Andrewski
/*
2
 * GpibHwAdapter.h
3
 *
4
 *  Created on: 2012-01-29
5
 *      Author: Andrzej Paluch
6
 */
7
 
8
#ifndef __GPIB_HW_ADAPTER_H__
9
#define __GPIB_HW_ADAPTER_H__
10
 
11
#include "GpibTypes.h"
12
#include "GpibRegAccess.h"
13
 
14
/** Register addresses */
15
#define REG_ADDR_SETTING_0         0
16
#define REG_ADDR_SETTING_1         1
17
#define REG_ADDR_SEC_ADDR_0        2
18
#define REG_ADDR_SEC_ADDR_1        3
19
#define REG_ADDR_BUS_STATUS        4
20
#define REG_ADDR_EVENT             5
21
#define REG_ADDR_GPIB_STATUS       6
22
#define REG_ADDR_CONTROL           7
23
#define REG_ADDR_READER_CONTROL_0  8
24
#define REG_ADDR_READER_CONTROL_1  9
25
#define REG_ADDR_WRITER_CONTROL_0 10
26
#define REG_ADDR_WRITER_CONTROL_1 11
27
#define REG_ADDR_READER_FIFO      12
28
#define REG_ADDR_WRITER_FIFO      13
29
 
30
/* Setting 0 register masks. */
31
#define MASK_SETTING0_ton         0x8000
32
#define MASK_SETTING0_lon         0x4000
33
#define MASK_SETTING0_eosMark     6,0xFF
34
#define MASK_SETTING0_eosUsed     0x0020
35
#define MASK_SETTING0_fixedPpLine 2,0x7
36
#define MASK_SETTING0_lpeUsed     0x0002
37
#define MASK_SETTING0_isLeTe      0x0001
38
 
39
/* Setting 1 register masks. */
40
#define MASK_SETTING1_T1   5,0xFF
41
#define MASK_SETTING1_addr 0,0x1F
42
 
43
/* Secondary address register masks. */
44
// nothing to define
45
 
46
/* Bus status register masks. */
47
#define MASK_BUS_STATUS_REN  0x8000
48
#define MASK_BUS_STATUS_IFC  0x4000
49
#define MASK_BUS_STATUS_SRQ  0x2000
50
#define MASK_BUS_STATUS_EOI  0x1000
51
#define MASK_BUS_STATUS_NDAC 0x0800
52
#define MASK_BUS_STATUS_NRFD 0x0400
53
#define MASK_BUS_STATUS_DAV  0x0200
54
#define MASK_BUS_STATUS_ATN  0x0100
55
#define MASK_BUS_STATUS_DIO  0,0xFF
56
 
57
/* Event register masks. */
58
#define MASK_EVENT_IFC          0x8000
59
#define MASK_EVENT_ATN          0x4000
60
#define MASK_EVENT_REN          0x2000
61
#define MASK_EVENT_stb_received 0x1000
62
#define MASK_EVENT_ppr          0x0800
63
#define MASK_EVENT_srq          0x0400
64
#define MASK_EVENT_cwrd         0x0200
65
#define MASK_EVENT_cwrc         0x0100
66
#define MASK_EVENT_spa          0x0080
67
#define MASK_EVENT_atl          0x0040
68
#define MASK_EVENT_att          0x0020
69
#define MASK_EVENT_trg          0x0010
70
#define MASK_EVENT_clr          0x0008
71
#define MASK_EVENT_out_buf_full 0x0004
72
#define MASK_EVENT_in_buf_full  0x0002
73
#define MASK_EVENT_isLocal      0x0001
74
 
75
/* GPIB status register masks. */
76
#define MASK_GPIB_STATUS_isLocal        0x1000
77
#define MASK_GPIB_STATUS_spa            0x0800
78
#define MASK_GPIB_STATUS_cwrd           0x0400
79
#define MASK_GPIB_STATUS_cwrc           0x0200
80
#define MASK_GPIB_STATUS_lac            0x0100
81
#define MASK_GPIB_STATUS_atl            0x0080
82
#define MASK_GPIB_STATUS_tac            0x0040
83
#define MASK_GPIB_STATUS_att            0x0020
84
#define MASK_GPIB_STATUS_currentSecAddr 0,0x1F
85
 
86
/* Control register masks. */
87
#define MASK_CONTROL_rec_stb 0x2000
88
#define MASK_CONTROL_rpp     0x1000
89
#define MASK_CONTROL_tca     0x0800
90
#define MASK_CONTROL_tcs     0x0400
91
#define MASK_CONTROL_gts     0x0200
92
#define MASK_CONTROL_sre     0x0100
93
#define MASK_CONTROL_sic     0x0080
94
#define MASK_CONTROL_rsc     0x0040
95
#define MASK_CONTROL_lpe     0x0020
96
#define MASK_CONTROL_ist     0x0010
97
#define MASK_CONTROL_rsv     0x0008
98
#define MASK_CONTROL_rtl     0x0004
99
#define MASK_CONTROL_lun     0x0002
100
#define MASK_CONTROL_ltn     0x0001
101
 
102
/* Reader control 0 register masks. */
103
#define MASK_READER_CONTROL_0_dataSecAddr   4,0x1F
104
#define MASK_READER_CONTROL_0_resetBuffer   0x0008
105
#define MASK_READER_CONTROL_0_endOfStream   0x0004
106
#define MASK_READER_CONTROL_0_dataAvailable 0x0002
107
#define MASK_READER_CONTROL_0_bufInterrupt  0x0001
108
 
109
/* Reader control 1 register masks. */
110
#define MASK_READER_CONTROL_1_bytesInFifo 0,0xFFF
111
 
112
/* Writer control 0 register masks. */
113
#define MASK_WRITER_CONTROL_0_statusByte    9,0x7F
114
#define MASK_WRITER_CONTROL_0_dataSecAddr   4,0x1F
115
#define MASK_WRITER_CONTROL_0_resetBuffer   0x0008
116
#define MASK_WRITER_CONTROL_0_endOfStream   0x0004
117
#define MASK_WRITER_CONTROL_0_dataAvailable 0x0002
118
#define MASK_WRITER_CONTROL_0_bufInterrupt  0x0001
119
 
120
/* Writer control 1 register masks. */
121
#define MASK_WRITER_CONTROL_1_bytesInFifo 0,0xFFF
122
 
123
 
124
/** Encapsulates GPIB hardware adapter issues. */
125
struct GpibHwAdapter
126
{
127
        struct GpibRegAccess *regAccess;
128
        AddrType baseAddr;
129
};
130
 
131
///////////// do not use //////////////////////////
132
#define __GpibHwAdapter_getValue(reg, bitNum, valueMask)\
133
        ((reg >> bitNum) & valueMask)
134
 
135
#define __GpibHwAdapter_setValue(pReg, bitNum, valueMask, value)\
136
        *pReg &= ( ~(valueMask << bitNum) ) & 0xFFFF;\
137
        *pReg |= ((value) << bitNum) & (valueMask << bitNum);
138
///////////// end of - do not use //////////////////
139
 
140
/** Initializes GpibHwAdapter */
141
bool GpibHwAdapter_init(struct GpibHwAdapter *ghwa, struct GpibRegAccess *regAccess,
142
                AddrType baseAddr);
143
 
144
/** Releases GpibHwAdapter. */
145
void GpibHwAdapter_release(struct GpibHwAdapter *ghwa);
146
 
147
/** Gets register value. */
148
#define GpibHwAdapter_getReg(ghwa, regAddr, pvalue)\
149
        GpibRegAccess_readReg((ghwa)->regAccess,\
150
                (ghwa)->baseAddr + regAddr, pvalue)
151
 
152
/** Sets register value. */
153
#define GpibHwAdapter_setReg(ghwa, regAddr, value)\
154
        GpibRegAccess_writeReg((ghwa)->regAccess,\
155
                (ghwa)->baseAddr + regAddr, value)
156
 
157
/** Reads data fifo. */
158
#define GpibHwAdapter_readFifo(ghwa, buf, bufLen)\
159
        GpibRegAccess_repeatedlyRead((ghwa)->regAccess,\
160
                (ghwa)->baseAddr + REG_ADDR_READER_FIFO, buf, bufLen)
161
 
162
/** Writes to data fifo. */
163
#define GpibHwAdapter_writeFifo(ghwa, buf, bufLen)\
164
        GpibRegAccess_repeatedlyWrite((ghwa)->regAccess,\
165
                (ghwa)->baseAddr + REG_ADDR_WRITER_FIFO, buf, bufLen)
166
 
167
/** Gets register value's bit. */
168
#define GpibHwAdapter_getBitValue(reg, mask) ((reg & mask) != 0)
169
 
170
/** Sets register value's bit. */
171
#define GpibHwAdapter_setBitValue(pReg, mask, newValue)\
172
        if(newValue == 0) {\
173
                *pReg &= ( ~(mask) ) & 0xFFFF;\
174
        } else {\
175
                *pReg |= mask;\
176
        }
177
 
178
/** Gets register value's field. */
179
#define GpibHwAdapter_getFieldValue(reg, bitNumAndMask)\
180
        __GpibHwAdapter_getValue(reg, bitNumAndMask)
181
 
182
/** Sets register value's field. */
183
#define GpibHwAdapter_setFieldValue(pReg, bitNumAndMask, newValue)\
184
        __GpibHwAdapter_setValue(pReg, bitNumAndMask, newValue)
185
 
186
 
187
#endif /* __GPIB_HW_ADAPTER_H__ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.