@@ -92,17 +92,23 @@ def __init__(self, port, pin):
9292 self .port = port
9393 self .pin = pin
9494 self .alt_fn = []
95- self .board_name = None
9695 self .alt_fn_count = 0
9796 self .adc_num = 0
9897 self .adc_channel = 0
98+ self .board_pin = False
9999
100100 def port_letter (self ):
101101 return chr (self .port + ord ('A' ))
102102
103- def pin_name (self ):
103+ def cpu_pin_name (self ):
104104 return '{:s}{:d}' .format (self .port_letter (), self .pin )
105105
106+ def is_board_pin (self ):
107+ return self .board_pin
108+
109+ def set_is_board_pin (self ):
110+ self .board_pin = True
111+
106112 def parse_adc (self , adc_str ):
107113 if (adc_str [:3 ] != 'ADC' ):
108114 return
@@ -127,7 +133,7 @@ def parse_af(self, af_idx, af_strs_in):
127133 def alt_fn_name (self , null_if_0 = False ):
128134 if null_if_0 and self .alt_fn_count == 0 :
129135 return 'NULL'
130- return 'pin_{:s}_af' .format (self .pin_name ())
136+ return 'pin_{:s}_af' .format (self .cpu_pin_name ())
131137
132138 def adc_num_str (self ):
133139 str = ''
@@ -152,27 +158,40 @@ def print(self):
152158 print ('};' )
153159 print ('' )
154160 print ('const pin_obj_t pin_{:s} = PIN({:s}, {:d}, {:d}, {:s}, {:s}, {:d});' .format (
155- self .pin_name (), self .port_letter (), self .pin ,
161+ self .cpu_pin_name (), self .port_letter (), self .pin ,
156162 self .alt_fn_count , self .alt_fn_name (null_if_0 = True ),
157163 self .adc_num_str (), self .adc_channel ))
158164 print ('' )
159165
160166 def print_header (self , hdr_file ):
161167 hdr_file .write ('extern const pin_obj_t pin_{:s};\n ' .
162- format (self .pin_name ()))
168+ format (self .cpu_pin_name ()))
163169 if self .alt_fn_count > 0 :
164170 hdr_file .write ('extern const pin_af_obj_t pin_{:s}_af[];\n ' .
165- format (self .pin_name ()))
171+ format (self .cpu_pin_name ()))
172+
173+ class NamedPin (object ):
174+
175+ def __init__ (self , name , pin ):
176+ self ._name = name
177+ self ._pin = pin
178+
179+ def pin (self ):
180+ return self ._pin
181+
182+ def name (self ):
183+ return self ._name
166184
167185
168186class Pins (object ):
169187
170188 def __init__ (self ):
171- self .pins = []
172- self .board_pins = []
189+ self .cpu_pins = [] # list of NamedPin objects
190+ self .board_pins = [] # list of NamedPin objects
173191
174192 def find_pin (self , port_num , pin_num ):
175- for pin in self .pins :
193+ for named_pin in self .cpu_pins :
194+ pin = named_pin .pin ()
176195 if pin .port == port_num and pin .pin == pin_num :
177196 return pin
178197
@@ -190,7 +209,7 @@ def parse_af_file(self, filename, pinname_col, af_col):
190209 pin .parse_af (af_idx - af_col , row [af_idx ])
191210 elif af_idx == af_col + 16 :
192211 pin .parse_adc (row [af_idx ])
193- self .pins .append (pin )
212+ self .cpu_pins .append (NamedPin ( pin . cpu_pin_name (), pin ) )
194213
195214 def parse_board_file (self , filename ):
196215 with open (filename , 'r' ) as csvfile :
@@ -202,26 +221,24 @@ def parse_board_file(self, filename):
202221 continue
203222 pin = self .find_pin (port_num , pin_num )
204223 if pin :
205- pin .board_name = row [ 0 ]
206- self .board_pins .append (pin )
224+ pin .set_is_board_pin ()
225+ self .board_pins .append (NamedPin ( row [ 0 ], pin ) )
207226
208- def print_named (self , label , pins ):
227+ def print_named (self , label , named_pins ):
209228 print ('const pin_named_pin_t pin_{:s}_pins[] = {{' .format (label ))
210- for pin in pins :
211- if pin .board_name :
212- if label == 'board' :
213- pin_name = pin .board_name
214- else :
215- pin_name = pin .pin_name ()
216- print (' {{ "{:s}", &pin_{:s} }},' .format (pin_name , pin .pin_name ()))
229+ for named_pin in named_pins :
230+ pin = named_pin .pin ()
231+ if pin .is_board_pin ():
232+ print (' {{ "{:s}", &pin_{:s} }},' .format (named_pin .name (), pin .cpu_pin_name ()))
217233 print (' { NULL, NULL }' )
218234 print ('};' )
219235
220236 def print (self ):
221- for pin in self .pins :
222- if pin .board_name :
237+ for named_pin in self .cpu_pins :
238+ pin = named_pin .pin ()
239+ if pin .is_board_pin ():
223240 pin .print ()
224- self .print_named ('cpu' , self .pins )
241+ self .print_named ('cpu' , self .cpu_pins )
225242 print ('' )
226243 self .print_named ('board' , self .board_pins )
227244
@@ -230,10 +247,11 @@ def print_adc(self, adc_num):
230247 print ('const pin_obj_t * const pin_adc{:d}[] = {{' .format (adc_num ))
231248 for channel in range (16 ):
232249 adc_found = False
233- for pin in self .pins :
234- if (pin .board_name and
250+ for named_pin in self .cpu_pins :
251+ pin = named_pin .pin ()
252+ if (pin .is_board_pin () and
235253 (pin .adc_num & (1 << (adc_num - 1 ))) and (pin .adc_channel == channel )):
236- print (' &pin_{:s}, // {:d}' .format (pin .pin_name (), channel ))
254+ print (' &pin_{:s}, // {:d}' .format (pin .cpu_pin_name (), channel ))
237255 adc_found = True
238256 break
239257 if not adc_found :
@@ -243,8 +261,9 @@ def print_adc(self, adc_num):
243261
244262 def print_header (self , hdr_filename ):
245263 with open (hdr_filename , 'wt' ) as hdr_file :
246- for pin in self .pins :
247- if pin .board_name :
264+ for named_pin in self .cpu_pins :
265+ pin = named_pin .pin ()
266+ if pin .is_board_pin ():
248267 pin .print_header (hdr_file )
249268 hdr_file .write ('extern const pin_obj_t * const pin_adc1[];\n ' )
250269 hdr_file .write ('extern const pin_obj_t * const pin_adc2[];\n ' )
0 commit comments