Added fields update to the QR stuff

- Footprints are now virtual
- Fixed: Modules used the SCH text
- Fixed: Wrong KiCad 6 SCHs (not copied from bogus ones)
This commit is contained in:
Salvador E. Tropea 2022-01-06 14:25:09 -03:00
parent f1b46daf6c
commit e2147f40ee
16 changed files with 1419 additions and 2737 deletions

View File

@ -220,6 +220,8 @@ class QR_LibOptions(BaseOptions):
mod.append([Symbol('layer'), Symbol(qr.layer)])
mod.append([Symbol('tedit'), 0])
mod.append(Sep())
mod.append([Symbol('attr'), Symbol('virtual')])
mod.append(Sep())
mod.append(self.fp_field(center, 'reference', self.reference+'***', qr.layer, 0))
mod.append(Sep())
mod.append(self.fp_field(center, 'value', qr.name, qr.layer, 1))
@ -233,7 +235,7 @@ class QR_LibOptions(BaseOptions):
mod.append(Sep())
mod.append(self.fp_field(center, 'user', 'qr_mask: '+str(qrc.get_mask()), qr.layer, 5))
mod.append(Sep())
mod.append(self.fp_field(center, 'user', qr._text_sch, qr.layer, 6))
mod.append(self.fp_field(center, 'user', qr._text_pcb, qr.layer, 6))
mod.append(Sep())
# The QR itself
mod.extend(self.qr_draw_fp(size, size_rect, center, qrc, qr.pcb_negative, qr.layer))
@ -319,6 +321,25 @@ class QR_LibOptions(BaseOptions):
sexp[:] = list(filter(lambda s: not is_symbol('fp_poly', s), sexp))
# Add the new drawings
sexp.extend(self.qr_draw_fp(size, size_rect, center, qrc, qr.pcb_negative, qr.layer, do_sep=False))
# Update the fields
for s in sexp:
if (is_symbol('fp_text', s) and len(s) > 2 and isinstance(s[1], Symbol) and s[1].value() == 'user' and
isinstance(s[2], str)):
res = s[2].split(':')
if len(res) > 1:
logger.debug('- Updating field `{}`'.format(res[0]))
if res[0] == 'qr_version':
s[2] = 'qr_version: '+str(qrc.get_version())
elif res[0] == 'qr_size':
s[2] = 'qr_size: '+str(size)
elif res[0] == 'qr_ecc':
ecc = qrc.get_error_correction_level()
s[2] = 'qr_ecc: {},{}'.format(ecc.ordinal, ecc.formatbits)
elif res[0] == 'qr_mask':
s[2] = 'qr_mask: '+str(qrc.get_mask())
elif s[2][0] == ' ':
logger.debug('- Updating text `{}`'.format(qr._text_pcb))
s[2] = ' '+qr._text_pcb
def update_footprints(self, known_qrs):
# Replace known QRs in the PCB
@ -380,6 +401,25 @@ class QR_LibOptions(BaseOptions):
for s in sexp_iter(sexp, 'symbol'):
if len(s) >= 2 and isinstance(s[1], str) and s[1] == sub_unit_name:
s[:] = list(sub_unit_sexp)
# Update the fields
for s in sexp:
if is_symbol('property', s) and len(s) > 2 and isinstance(s[1], str) and isinstance(s[2], str):
new_val = None
field = s[1]
if field == 'qr_version':
new_val = str(qrc.get_version())
elif field == 'qr_size':
new_val = str(size)
elif field == 'qr_ecc':
ecc = qrc.get_error_correction_level()
new_val = '{},{}'.format(ecc.ordinal, ecc.formatbits)
elif field == 'qr_mask':
new_val = str(qrc.get_mask())
elif field == 'qr_text':
new_val = qr._text_sch
if new_val is not None:
logger.debug('- Updating field `{}` {} -> {}'.format(field, s[2], new_val))
s[2] = new_val
def update_symbols(self, fname, sexp, known_qrs):
# Replace known QRs in the Schematic
@ -468,7 +508,6 @@ class QR_LibOptions(BaseOptions):
for qr in self.qrs:
name = self.lib+':'+qr.name
known_qrs[name.lower()] = qr
# TODO: Update fields
# PCB
self.update_footprints(known_qrs)
# Schematic

View File

@ -17,7 +17,7 @@
(fp_text user "qr_mask: 6" (at 0 -33.449999999999996) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(fp_text user " bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_poly (pts (xy -25.4 -25.4) (xy -25.4 -22.98) (xy -22.98 -22.98) (xy -22.98 -25.4)) (layer F.Cu) (width 0))

View File

@ -17,7 +17,7 @@
(fp_text user "qr_mask: 6" (at 0 -33.449999999999996) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(fp_text user " bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_poly (pts (xy -25.4 -25.4) (xy -25.4 -22.98) (xy -22.98 -22.98) (xy -22.98 -25.4)) (layer F.Cu) (width 0))

View File

@ -17,7 +17,7 @@
(fp_text user "qr_mask: 2" (at 0 -15.55) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(fp_text user " bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_poly (pts (xy -7.5 -7.5) (xy -7.5 -6.9) (xy -6.9 -6.9) (xy -6.9 -7.5)) (layer F.SilkS) (width 0))

View File

@ -17,7 +17,7 @@
(fp_text user "qr_mask: 2" (at 0 -15.55) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(fp_text user " bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_poly (pts (xy -7.5 -7.5) (xy -7.5 -6.9) (xy -6.9 -6.9) (xy -6.9 -7.5)) (layer F.SilkS) (width 0))

View File

@ -357,7 +357,7 @@
(fp_poly (pts (xy -20.56 -25.4) (xy -20.56 -22.98) (xy -18.14 -22.98) (xy -18.14 -25.4)) (layer F.Cu) (width 0))
(fp_poly (pts (xy -22.98 -25.4) (xy -22.98 -22.98) (xy -20.56 -22.98) (xy -20.56 -25.4)) (layer F.Cu) (width 0))
(fp_poly (pts (xy -25.4 -25.4) (xy -25.4 -22.98) (xy -22.98 -22.98) (xy -22.98 -25.4)) (layer F.Cu) (width 0))
(fp_text user "bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(fp_text user " bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "qr_mask: 6" (at 0 -33.45) (layer F.Cu) hide
@ -706,7 +706,7 @@
(fp_poly (pts (xy 5.7 6.9) (xy 5.7 7.5) (xy 6.3 7.5) (xy 6.3 6.9)) (layer F.SilkS) (width 0))
(fp_poly (pts (xy 6.3 6.9) (xy 6.3 7.5) (xy 6.9 7.5) (xy 6.9 6.9)) (layer F.SilkS) (width 0))
(fp_poly (pts (xy 6.9 6.9) (xy 6.9 7.5) (xy 7.5 7.5) (xy 7.5 6.9)) (layer F.SilkS) (width 0))
(fp_text user "bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(fp_text user " bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "qr_mask: 2" (at 0 -15.55) (layer F.SilkS) hide

View File

@ -357,7 +357,7 @@
(fp_poly (pts (xy -20.56 -25.4) (xy -20.56 -22.98) (xy -18.14 -22.98) (xy -18.14 -25.4)) (layer F.Cu) (width 0))
(fp_poly (pts (xy -22.98 -25.4) (xy -22.98 -22.98) (xy -20.56 -22.98) (xy -20.56 -25.4)) (layer F.Cu) (width 0))
(fp_poly (pts (xy -25.4 -25.4) (xy -25.4 -22.98) (xy -22.98 -22.98) (xy -22.98 -25.4)) (layer F.Cu) (width 0))
(fp_text user "bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(fp_text user " bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "qr_mask: 6" (at 0 -33.45) (layer F.Cu) hide
@ -706,7 +706,7 @@
(fp_poly (pts (xy 5.7 6.9) (xy 5.7 7.5) (xy 6.3 7.5) (xy 6.3 6.9)) (layer F.SilkS) (width 0))
(fp_poly (pts (xy 6.3 6.9) (xy 6.3 7.5) (xy 6.9 7.5) (xy 6.9 6.9)) (layer F.SilkS) (width 0))
(fp_poly (pts (xy 6.9 6.9) (xy 6.9 7.5) (xy 7.5 7.5) (xy 7.5 6.9)) (layer F.SilkS) (width 0))
(fp_text user "bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(fp_text user " bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "qr_mask: 2" (at 0 -15.55) (layer F.SilkS) hide

View File

@ -17,7 +17,7 @@
(fp_text user "qr_mask: 6" (at 0 -33.449999999999996) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(fp_text user " bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_poly (pts (xy -25.4 -25.4) (xy -25.4 -22.98) (xy -22.98 -22.98) (xy -22.98 -25.4)) (layer F.Cu) (width 0))

View File

@ -17,7 +17,7 @@
(fp_text user "qr_mask: 6" (at 0 -33.449999999999996) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(fp_text user " bogus 1 2 3 4" (at 0 -35.15) (layer F.Cu) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_poly (pts (xy -25.4 -25.4) (xy -25.4 -22.98) (xy -22.98 -22.98) (xy -22.98 -25.4)) (layer F.Cu) (width 0))

View File

@ -17,7 +17,7 @@
(fp_text user "qr_mask: 2" (at 0 -15.55) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(fp_text user " bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_poly (pts (xy -7.5 -7.5) (xy -7.5 -6.9) (xy -6.9 -6.9) (xy -6.9 -7.5)) (layer F.SilkS) (width 0))

View File

@ -17,7 +17,7 @@
(fp_text user "qr_mask: 2" (at 0 -15.55) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text user "bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(fp_text user " bogus 1 2 3 4" (at 0 -17.25) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_poly (pts (xy -7.5 -7.5) (xy -7.5 -6.9) (xy -6.9 -6.9) (xy -6.9 -7.5)) (layer F.SilkS) (width 0))

View File

@ -94,7 +94,7 @@
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 7f2301df-e4bc-479e-a681-cc59c9a2dbbb)
)
(fp_text user "bogus 1 2 3 4" (at 0 -35.15) (layer "F.Cu") hide
(fp_text user " bogus 1 2 3 4" (at 0 -35.15) (layer "F.Cu") hide
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 8087f566-a94d-4bbc-985b-e49ee7762296)
)
@ -1580,7 +1580,7 @@
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 2db910a0-b943-40b4-b81f-068ba5265f56)
)
(fp_text user "bogus 1 2 3 4" (at 0 -17.25) (layer "F.SilkS") hide
(fp_text user " bogus 1 2 3 4" (at 0 -17.25) (layer "F.SilkS") hide
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3f8a5430-68a9-4732-9b89-4e00dd8ae219)
)

View File

@ -94,7 +94,7 @@
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 7f2301df-e4bc-479e-a681-cc59c9a2dbbb)
)
(fp_text user "bogus 1 2 3 4" (at 0 -35.15) (layer "F.Cu") hide
(fp_text user " bogus 1 2 3 4" (at 0 -35.15) (layer "F.Cu") hide
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 8087f566-a94d-4bbc-985b-e49ee7762296)
)
@ -1580,7 +1580,7 @@
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 2db910a0-b943-40b4-b81f-068ba5265f56)
)
(fp_text user "bogus 1 2 3 4" (at 0 -17.25) (layer "F.SilkS") hide
(fp_text user " bogus 1 2 3 4" (at 0 -17.25) (layer "F.SilkS") hide
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3f8a5430-68a9-4732-9b89-4e00dd8ae219)
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -973,9 +973,11 @@ def test_qr_lib_1(test_dir):
res = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode()
logging.debug(res.split('\n')[0])
assert 'QR-Code:https://github.com/INTI-CMNB/KiBot/' in res
assert ctx.search_err('Updating text `https')
# Restore the original files
bd = ctx.get_board_dir()
files = ['qr.lib', 'qr.kicad_sym', 'qr.pretty/QR.kicad_mod', 'qr.pretty/QR2.kicad_mod', 'qr_test.kicad_pcb']
files = ['qr.lib', 'qr.kicad_sym', 'qr.pretty/QR.kicad_mod', 'qr.pretty/QR2.kicad_mod', 'qr_test.kicad_pcb',
'qr_test.kicad_sch', 'sub_1.kicad_sch']
for f in files:
bogus = os.path.join(bd, 'qr_test/'+f+'.bogus')
if os.path.isfile(bogus):