gitextract_8y110f7p/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── electronics.yml │ ├── js.yml │ └── pio.yml ├── .gitignore ├── .gitmodules ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── LICENSE.txt ├── README.md ├── __init__.py ├── cad/ │ └── README.md ├── electronics/ │ ├── BM28B0.6-24DSBreakout/ │ │ ├── BM28B0.6-24DSBreakout-cache.lib │ │ ├── BM28B0.6-24DSBreakout.kicad_pcb │ │ ├── BM28B0.6-24DSBreakout.pro │ │ ├── BM28B0.6-24DSBreakout.sch │ │ └── fp-lib-table │ ├── LevelShifterBreakout/ │ │ ├── LevelShifterBreakout-cache.lib │ │ ├── LevelShifterBreakout.kicad_pcb │ │ ├── LevelShifterBreakout.pro │ │ ├── LevelShifterBreakout.sch │ │ ├── fp-lib-table │ │ └── sym-lib-table │ ├── lib/ │ │ ├── BM28.pretty/ │ │ │ └── BM28B0.6-24DS.kicad_mod │ │ ├── BOM_Only.pretty/ │ │ │ └── bom_only_no_pin.kicad_mod │ │ ├── GCT_USB.3dshapes/ │ │ │ └── proprietary/ │ │ │ └── README.txt │ │ ├── GCT_USB.pretty/ │ │ │ ├── USB4510.kicad_mod │ │ │ └── USB4510_NoPaste.kicad_mod │ │ ├── Holes.pretty/ │ │ │ ├── AlignmentHole_1.6.kicad_mod │ │ │ ├── MountingHole_2.2mm_M2_ISO7380_Pad_NonVirtual.kicad_mod │ │ │ └── MountingHole_M1.6.kicad_mod │ │ ├── LCD_GC9A01.3dshapes/ │ │ │ └── TFT-Round-1.28.step │ │ ├── LCD_GC9A01.pretty/ │ │ │ └── GC9A01Round1.28.kicad_mod │ │ ├── MagnTek.dcm │ │ ├── MagnTek.lib │ │ ├── Modified.pretty/ │ │ │ ├── CP_Radial_D5.0mm_P2.00mm_HorizontalCutout.kicad_mod │ │ │ ├── QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm_ThermalVias_LargerViaHoles.kicad_mod │ │ │ ├── SOT-223-3_TabPin2_GndOutIn.kicad_mod │ │ │ ├── SOT-223-3_TabPin2_InGndOut.kicad_mod │ │ │ └── TestPoint_Pad_D2.0mm_ValueSilk.kicad_mod │ │ ├── Molex.3dshapes/ │ │ │ └── 532610371.stp │ │ ├── Molex.pretty/ │ │ │ └── 532610371.kicad_mod │ │ ├── SK6812.dcm │ │ ├── SK6812.lib │ │ ├── SN74AVC4T774.dcm │ │ ├── SN74AVC4T774.lib │ │ ├── SN74AVC4T774.models/ │ │ │ └── Texas_Instruments_-_SN74AVC4T774RSVR.step │ │ ├── SN74AVC4T774.pretty/ │ │ │ └── Texas_Instruments-RSV_R-PUQFN-N16-0-0-0.kicad_mod │ │ ├── SolderPads.pretty/ │ │ │ ├── SolderPads_2mm_3.kicad_mod │ │ │ ├── SolderPads_2mm_3_STRAIN.kicad_mod │ │ │ ├── SolderPads_2mm_4.kicad_mod │ │ │ └── SolderPads_2mm_8.kicad_mod │ │ ├── Trinamic.dcm │ │ ├── Trinamic.lib │ │ ├── VEML7700.3dshapes/ │ │ │ └── 84592VEML7700.stp │ │ ├── VEML7700.dcm │ │ ├── VEML7700.lib │ │ ├── VEML7700.pretty/ │ │ │ └── VEML7700-TOP.kicad_mod │ │ ├── lilygo_micro32.3dshapes/ │ │ │ └── ap-700.stp │ │ ├── lilygo_micro32.dcm │ │ ├── lilygo_micro32.lib │ │ ├── lilygo_micro32.pretty/ │ │ │ └── T-Micro32.kicad_mod │ │ ├── no_pin.dcm │ │ ├── no_pin.lib │ │ ├── sk6812.3dshapes/ │ │ │ └── SK6812-SIDE-A.step │ │ ├── sk6812.pretty/ │ │ │ └── SK6812-SIDE-A.kicad_mod │ │ ├── strain.dcm │ │ ├── strain.lib │ │ └── strain.pretty/ │ │ └── BF350-3AA.kicad_mod │ ├── scripts/ │ │ ├── __init__.py │ │ ├── config/ │ │ │ ├── eeschema │ │ │ ├── pcbnew │ │ │ └── policy.xml │ │ ├── dependencies.sh │ │ ├── export_jlcpcb.py │ │ ├── export_util.py │ │ ├── generate_pdf.py │ │ └── pcb_util.py │ ├── view_base/ │ │ ├── fp-lib-table │ │ ├── lib/ │ │ │ ├── view_custom.3dshapes/ │ │ │ │ └── ViewKeepouts3d.step │ │ │ └── view_custom.pretty/ │ │ │ └── ViewKeepouts3d.kicad_mod │ │ ├── sym-lib-table │ │ ├── view_base-cache.lib │ │ ├── view_base.kibot.yml │ │ ├── view_base.kicad_pcb │ │ ├── view_base.kicad_pro │ │ └── view_base.kicad_sch │ └── view_screen/ │ ├── fp-lib-table │ ├── sym-lib-table │ ├── view_screen-cache.lib │ ├── view_screen.kibot.yml │ ├── view_screen.kicad_pcb │ ├── view_screen.kicad_pro │ └── view_screen.kicad_sch ├── firmware/ │ ├── .gitignore │ ├── .vscode/ │ │ ├── extensions.json │ │ └── settings.json │ ├── include/ │ │ └── README │ ├── lib/ │ │ ├── README │ │ └── tlv/ │ │ ├── .piopm │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── library.json │ │ ├── library.properties │ │ └── src/ │ │ ├── Tlv493d.cpp │ │ ├── Tlv493d.h │ │ └── util/ │ │ ├── BusInterface.cpp │ │ ├── BusInterface.h │ │ ├── BusInterface2.h │ │ ├── RegMask.cpp │ │ ├── RegMask.h │ │ └── Tlv493d_conf.h │ ├── partitions-4MB-fat.csv │ ├── src/ │ │ ├── configuration.cpp │ │ ├── configuration.h │ │ ├── display_task.cpp │ │ ├── display_task.h │ │ ├── font/ │ │ │ └── roboto_light_60.h │ │ ├── interface_callbacks.h │ │ ├── interface_task.cpp │ │ ├── interface_task.h │ │ ├── logger.h │ │ ├── main.cpp │ │ ├── maq430_sensor.h │ │ ├── motor_task.cpp │ │ ├── motor_task.h │ │ ├── motors/ │ │ │ ├── mad2804.h │ │ │ ├── motor_config.h │ │ │ └── wanzhida_once_top.h │ │ ├── mt6701_sensor.cpp │ │ ├── mt6701_sensor.h │ │ ├── proto_gen/ │ │ │ ├── smartknob.pb.c │ │ │ └── smartknob.pb.h │ │ ├── semaphore_guard.h │ │ ├── serial/ │ │ │ ├── crc32.cpp │ │ │ ├── crc32.h │ │ │ ├── proto_helpers.h │ │ │ ├── serial_protocol.h │ │ │ ├── serial_protocol_plaintext.cpp │ │ │ ├── serial_protocol_plaintext.h │ │ │ ├── serial_protocol_protobuf.cpp │ │ │ ├── serial_protocol_protobuf.h │ │ │ ├── uart_stream.cpp │ │ │ └── uart_stream.h │ │ ├── task.h │ │ ├── tlv_sensor.cpp │ │ ├── tlv_sensor.h │ │ ├── util.cpp │ │ └── util.h │ └── test/ │ └── README ├── platformio.ini ├── proto/ │ ├── Pipfile │ ├── generate_protobuf.py │ └── smartknob.proto ├── scripts/ │ └── annotate_image.sh ├── software/ │ ├── js/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── README.md │ │ ├── package.json │ │ └── packages/ │ │ ├── example-cli/ │ │ │ ├── .eslintrc │ │ │ ├── .prettierrc │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── example-webserial-basic/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── .prettierrc │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── public/ │ │ │ │ ├── index.html │ │ │ │ └── robots.txt │ │ │ ├── src/ │ │ │ │ ├── App.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── react-app-env.d.ts │ │ │ │ └── util.ts │ │ │ └── tsconfig.json │ │ ├── example-webserial-timeline/ │ │ │ ├── .eslintrc │ │ │ ├── .gitignore │ │ │ ├── .prettierrc │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── public/ │ │ │ │ ├── index.html │ │ │ │ └── robots.txt │ │ │ ├── src/ │ │ │ │ ├── App.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── react-app-env.d.ts │ │ │ │ ├── types.tsx │ │ │ │ └── util.ts │ │ │ └── tsconfig.json │ │ ├── smartknobjs-core/ │ │ │ ├── .eslintrc │ │ │ ├── .prettierrc │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── cobs.ts │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── smartknobjs-node/ │ │ │ ├── .eslintrc │ │ │ ├── .prettierrc │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── smartknobjs-proto/ │ │ │ └── package.json │ │ └── smartknobjs-webserial/ │ │ ├── .eslintrc │ │ ├── .prettierrc │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ └── python/ │ ├── Pipfile │ ├── proto_gen/ │ │ ├── README │ │ ├── nanopb_pb2.py │ │ └── smartknob_pb2.py │ ├── simple_example.py │ └── smartknob_io.py └── util/ ├── __init__.py ├── file_util.py └── rev_info.py