aboutsummaryrefslogtreecommitdiffstats
path: root/src/hal/components/sim_parport.comp
blob: 3106deeaaf232bdeda4c0d40490bbaa43ef57c21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
component sim_parport "A component to simulate the pins of the hal_parport component";

description 
"""
Sim_parport is used to replace the pins of a real parport without changing
any of the pins names in the rest of the config.
.br
It has pass-through pins (ending in \-fake) that allows connecting to other components.

eg pin\-02\-in     will follow     pin\-02\-in\-fake 's logic.
.br
pin_01_out\-fake     will follow    pin_01_out (possibly modified by pin_01_out\-invert)

It creates all possible pins of both 'in' and 'out' options of the hal_parport component.
.br
This allows using other hardware I/O in place of the parport (without having to change the rest of the config)
.br
or simulating hardware such as limit switches.
.br
it's primary use is in Stepconf for building simulated configs.
.br
You must use the names= option to have the right pin names.
.br
eg. names=parport.0,parport.1
.br
The read and write functions pass the logic from pins to fake pins or vice vera
.br
The reset function is a no operation.
 
""";
pin in bit pin_01_out;
pin in bit pin_02_out;
pin in bit pin_03_out;
pin in bit pin_04_out;
pin in bit pin_05_out;
pin in bit pin_06_out;
pin in bit pin_07_out;
pin in bit pin_08_out;
pin in bit pin_09_out;
pin in bit pin_14_out;
pin in bit pin_16_out;
pin in bit pin_17_out;

pin out bit pin_01_out_fake;
pin out bit pin_02_out_fake;
pin out bit pin_03_out_fake;
pin out bit pin_04_out_fake;
pin out bit pin_05_out_fake;
pin out bit pin_06_out_fake;
pin out bit pin_07_out_fake;
pin out bit pin_08_out_fake;
pin out bit pin_09_out_fake;
pin out bit pin_14_out_fake;
pin out bit pin_16_out_fake;
pin out bit pin_17_out_fake;

param rw bit pin_01_out_invert;
param rw bit pin_02_out_invert;
param rw bit pin_03_out_invert;
param rw bit pin_04_out_invert;
param rw bit pin_05_out_invert;
param rw bit pin_06_out_invert;
param rw bit pin_07_out_invert;
param rw bit pin_08_out_invert;
param rw bit pin_09_out_invert;
param rw bit pin_14_out_invert;
param rw bit pin_16_out_invert;
param rw bit pin_17_out_invert;

param rw bit pin_01_out_reset;
param rw bit pin_02_out_reset;
param rw bit pin_03_out_reset;
param rw bit pin_04_out_reset;
param rw bit pin_05_out_reset;
param rw bit pin_06_out_reset;
param rw bit pin_07_out_reset;
param rw bit pin_08_out_reset;
param rw bit pin_09_out_reset;
param rw bit pin_14_out_reset;
param rw bit pin_16_out_reset;
param rw bit pin_17_out_reset;

pin out bit pin_02_in;
pin out bit pin_03_in;
pin out bit pin_04_in;
pin out bit pin_05_in;
pin out bit pin_06_in;
pin out bit pin_07_in;
pin out bit pin_08_in;
pin out bit pin_09_in;
pin out bit pin_10_in;
pin out bit pin_11_in;
pin out bit pin_12_in;
pin out bit pin_13_in;
pin out bit pin_15_in;

pin in bit pin_02_in_fake;
pin in bit pin_03_in_fake;
pin in bit pin_04_in_fake;
pin in bit pin_05_in_fake;
pin in bit pin_06_in_fake;
pin in bit pin_07_in_fake;
pin in bit pin_08_in_fake;
pin in bit pin_09_in_fake;
pin in bit pin_10_in_fake;
pin in bit pin_11_in_fake;
pin in bit pin_12_in_fake;
pin in bit pin_13_in_fake;
pin in bit pin_15_in_fake;

pin out bit pin_02_in_not;
pin out bit pin_03_in_not;
pin out bit pin_04_in_not;
pin out bit pin_05_in_not;
pin out bit pin_06_in_not;
pin out bit pin_07_in_not;
pin out bit pin_08_in_not;
pin out bit pin_09_in_not;
pin out bit pin_10_in_not;
pin out bit pin_11_in_not;
pin out bit pin_12_in_not;
pin out bit pin_13_in_not;
pin out bit pin_15_in_not;

pin in float reset_time;

function read nofp;
function write nofp;
function reset nofp;
license "GPL";
author "Chris S Morley";
;;

FUNCTION(read) {

pin_02_in = pin_02_in_fake;
pin_03_in = pin_03_in_fake;
pin_04_in = pin_04_in_fake;
pin_05_in = pin_05_in_fake;
pin_06_in = pin_06_in_fake;
pin_07_in = pin_07_in_fake;
pin_08_in = pin_08_in_fake;
pin_09_in = pin_09_in_fake;
pin_10_in = pin_10_in_fake;
pin_11_in = pin_11_in_fake;
pin_12_in = pin_12_in_fake;
pin_13_in = pin_13_in_fake;
pin_15_in = pin_15_in_fake;

pin_02_in_not = ! pin_02_in_fake;
pin_03_in_not = ! pin_03_in_fake;
pin_04_in_not = ! pin_04_in_fake;
pin_05_in_not = ! pin_05_in_fake;
pin_06_in_not = ! pin_06_in_fake;
pin_07_in_not = ! pin_07_in_fake;
pin_08_in_not = ! pin_08_in_fake;
pin_09_in_not = ! pin_09_in_fake;
pin_10_in_not = ! pin_10_in_fake;
pin_11_in_not = ! pin_11_in_fake;
pin_12_in_not = ! pin_12_in_fake;
pin_13_in_not = ! pin_13_in_fake;
pin_15_in_not = ! pin_15_in_fake;

}

FUNCTION(write) {

 pin_01_out_fake =  pin_01_out ^ pin_01_out_invert;
 pin_02_out_fake =  pin_02_out ^ pin_02_out_invert;
 pin_03_out_fake =  pin_03_out ^ pin_03_out_invert;
 pin_04_out_fake =  pin_04_out ^ pin_04_out_invert;
 pin_05_out_fake =  pin_05_out ^ pin_05_out_invert;
 pin_06_out_fake =  pin_06_out ^ pin_06_out_invert;
 pin_07_out_fake =  pin_07_out ^ pin_07_out_invert;
 pin_08_out_fake =  pin_08_out ^ pin_08_out_invert;
 pin_09_out_fake =  pin_09_out ^ pin_09_out_invert;
 pin_14_out_fake =  pin_14_out ^ pin_14_out_invert;
 pin_16_out_fake =  pin_16_out ^ pin_16_out_invert;
 pin_17_out_fake =  pin_17_out ^ pin_17_out_invert;
}

FUNCTION(reset) {

return;
}
bues.ch cgit interface