Skip to content

Commit 8504f64

Browse files
committed
[genpinmap] Avoid duplicated pins
Signed-off-by: Frederic.Pillon <frederic.pillon@st.com>
1 parent 73128eb commit 8504f64

File tree

1 file changed

+52
-2
lines changed

1 file changed

+52
-2
lines changed

src/genpinmap/genpinmap_arduino.py

+52-2
Original file line numberDiff line numberDiff line change
@@ -156,92 +156,142 @@ def get_gpio_af_numF1(pintofind, iptofind):
156156
return mygpioaf
157157

158158

159+
# Return 0 if pin/signal not already in the list
160+
def isPinAndSignalInList(pin, signal, lst):
161+
return len([item for item in lst if item[0] == pin and item[2] == signal])
162+
163+
159164
def store_pin(pin, name):
165+
if pin in [p[0] for p in io_list]:
166+
return
160167
# store pin I/O
161168
p = [pin, name]
162-
io_list.append(p)
169+
if p not in io_list:
170+
io_list.append(p)
163171

164172

165173
# function to store ADC list
166174
def store_adc(pin, name, signal):
175+
if isPinAndSignalInList(pin, signal, adclist):
176+
return
167177
adclist.append([pin, name, signal])
168178

169179

170180
# function to store DAC list
171181
def store_dac(pin, name, signal):
182+
if isPinAndSignalInList(pin, signal, daclist):
183+
return
172184
daclist.append([pin, name, signal])
173185

174186

175187
# function to store I2C list
176188
def store_i2c(pin, name, signal):
177189
# is it SDA or SCL ?
178190
if "_SCL" in signal:
191+
if isPinAndSignalInList(pin, signal, i2cscl_list):
192+
return
179193
i2cscl_list.append([pin, name, signal])
180194
if "_SDA" in signal:
195+
if isPinAndSignalInList(pin, signal, i2csda_list):
196+
return
181197
i2csda_list.append([pin, name, signal])
182198

183199

184200
# function to store timers
185201
def store_pwm(pin, name, signal):
186202
if "_CH" in signal:
203+
if isPinAndSignalInList(pin, signal, pwm_list):
204+
return
187205
pwm_list.append([pin, name, signal])
188206

189207

190208
# function to store Uart pins
191209
def store_uart(pin, name, signal):
192210
if "_TX" in signal:
211+
if isPinAndSignalInList(pin, signal, uarttx_list):
212+
return
193213
uarttx_list.append([pin, name, signal])
194214
if "_RX" in signal:
215+
if isPinAndSignalInList(pin, signal, uartrx_list):
216+
return
195217
uartrx_list.append([pin, name, signal])
196218
if "_CTS" in signal:
219+
if isPinAndSignalInList(pin, signal, uartcts_list):
220+
return
197221
uartcts_list.append([pin, name, signal])
198222
if "_RTS" in signal:
223+
if isPinAndSignalInList(pin, signal, uartrts_list):
224+
return
199225
uartrts_list.append([pin, name, signal])
200226

201227

202228
# function to store SPI pins
203229
def store_spi(pin, name, signal):
204230
if "_MISO" in signal:
231+
if isPinAndSignalInList(pin, signal, spimiso_list):
232+
return
205233
spimiso_list.append([pin, name, signal])
206234
if "_MOSI" in signal:
235+
if isPinAndSignalInList(pin, signal, spimosi_list):
236+
return
207237
spimosi_list.append([pin, name, signal])
208238
if "_SCK" in signal:
239+
if isPinAndSignalInList(pin, signal, spisclk_list):
240+
return
209241
spisclk_list.append([pin, name, signal])
210242
if "_NSS" in signal:
243+
if isPinAndSignalInList(pin, signal, spissel_list):
244+
return
211245
spissel_list.append([pin, name, signal])
212246

213247

214248
# function to store CAN pins
215249
def store_can(pin, name, signal):
216250
if "_RX" in signal:
251+
if isPinAndSignalInList(pin, signal, canrd_list):
252+
return
217253
canrd_list.append([pin, name, signal])
218254
if "_TX" in signal:
255+
if isPinAndSignalInList(pin, signal, cantd_list):
256+
return
219257
cantd_list.append([pin, name, signal])
220258

221259

222260
# function to store ETH list
223261
def store_eth(pin, name, signal):
262+
if isPinAndSignalInList(pin, signal, eth_list):
263+
return
224264
eth_list.append([pin, name, signal])
225265

226266

227267
# function to store QSPI pins
228268
def store_qspi(pin, name, signal):
269+
if isPinAndSignalInList(pin, signal, qspi_list):
270+
return
229271
qspi_list.append([pin, name, signal])
230272

231273

232274
# function to store SYS pins
233275
def store_sys(pin, name, signal):
234276
if "_WKUP" in signal:
277+
if isPinAndSignalInList(pin, signal, syswkup_list):
278+
return
235279
syswkup_list.append([pin, name, signal])
236280

237281

238282
# function to store USB pins
239283
def store_usb(pin, name, signal):
240284
if "OTG" not in signal:
285+
if isPinAndSignalInList(pin, signal, usb_list):
286+
return
241287
usb_list.append([pin, name, signal])
242288
if signal.startswith("USB_OTG_FS"):
289+
if isPinAndSignalInList(pin, signal, usb_otgfs_list):
290+
return
243291
usb_otgfs_list.append([pin, name, signal])
244292
if signal.startswith("USB_OTG_HS"):
293+
if isPinAndSignalInList(pin, signal, usb_otghs_list):
294+
return
245295
usb_otghs_list.append([pin, name, signal])
246296

247297

@@ -944,7 +994,7 @@ def parse_pins():
944994
print(" * I/O pins found: %i" % nb_pin)
945995
# io_list.sort(key=natural_sortkey)
946996
# for io in io_list:
947-
# print(io[1])
997+
# print(io[0] + ", " + io[1])
948998
print("done\n")
949999
clean_all_lists()
9501000

0 commit comments

Comments
 (0)