Skip to content

Instantly share code, notes, and snippets.

View tannewt's full-sized avatar

Scott Shawcroft tannewt

View GitHub Profile
@tannewt
tannewt / porting.md
Created November 27, 2018 00:40
start of tinyusb porting instructions

Porting

TinyUSB is designed to be a universal USB protocol stack for low-cost 32 bit microcontrollers. It handles most of the high level USB protocol and relies on the microcontroller's USB peripheral for data transactions on different endpoints. Porting is the process of adding low-level support for the rest of the common stack. Once the low-level is implemented, it is very easy to add USB support for the microcontroller to other projects, especially those already using TinyUSB such as CircuitPython.

Below are instructions on how to get the cdc_msc_hid device example running on a new microcontroller. Doing so includes adding the common code necessary for other uses while minimizing other extra code. Whenever you see a phrase or word in <> it should be replaced.

@tannewt
tannewt / intellikeys.ksy
Created July 11, 2023 21:27
Kaitai struct parsing for Intellikeys hid reports
meta:
id: intellikeys
file-extension: intellikeys
seq:
- id: reports
type: report
repeat: eos
types:
report:
seq:
@tannewt
tannewt / usb_hid_report.ksy
Last active July 7, 2023 17:54
HID report parser for kaitai struct
meta:
id: usb_hid
file-extension: usb_hid
bit-endian: le
endian: le
seq:
- id: items
type: item
repeat: eos
enums:
@tannewt
tannewt / usb.ksy
Last active July 6, 2023 23:43
Start of Kaitai struct definition for usb descriptors
meta:
id: usb_descriptors
endian: le
bit-endian: le
seq:
- id: descriptor
type: usb_descriptor
repeat: eos
enums:
descriptor_type:
@tannewt
tannewt / fnt.ksy
Created July 6, 2023 20:34
Start of a Kaitai struct definition for the FNT font file format
meta:
id: fnt
file-extension: fnt
endian: le
bit-endian: le
seq:
- id: df_version
type: u2
- id: df_size
type: u4
from elftools.dwarf.descriptions import describe_form_class
from elftools.elf.elffile import ELFFile
import sys
import json
import pathlib
std_to_type = {
"uint8_t": ("B", "int"),
@tannewt
tannewt / _canio.pyi
Last active August 19, 2020 19:54 — forked from jepler/_canio.pyi
class Filter:
def __init__(self, address: int, *, extended: bool = False, mask: Optional[int] = None):
"""Construct a CanFilter with the given properties.
If mask is not None, then the filter is for any sender which matches all
the nonzero bits in mask. Otherwise, it matches exactly the given address.
If extended is true then only extended addresses are matched, otherwise
only standard addresses are matched.
"""
# Example of using the Adafruit IO CircuitPython MQTT client
# to subscribe to an Adafruit IO feed and publish random data
# to be received by the feed.
#
# Example by Tony DiCola for Adafruit Industries
# Modified by Brent Rubell for Adafruit Industries, 2019
import time
from random import randint
from pimoroni_pms5003 import PMS5003
ESP-ROM:esp32s2-rc4-20191025
Build:Oct 25 2019
rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:2
load:0x3ffe8100,len:0x4
load:0x3ffe8104,len:0x1914
load:0x40050000,len:0x14cc
load:0x40054000,len:0x210c
entry 0x400502e0
AutoSunglasses/code.py
18:from adafruit_circuitplayground.express import cpx
FruitBox_Sequencer/main.py
7:from adafruit_circuitplayground.express import cpx
Sensor_Plotting_With_Mu_CircuitPython/soil_moisture.py
2:from adafruit_circuitplayground.express import cpx
Sound_Reactive_Ears/code.py