Skip to content

Instantly share code, notes, and snippets.

@pfn
pfn / flash_uf2.sh
Last active January 31, 2024 20:27
Copy UF2 file to a mounted drive in Windows WSL2
#!/bin/bash
# This requires a line in /etc/fstab like so:
#E: /mnt/e drvfs noexec,user,noauto,mode=644,uid=1000,gid=1000 0 0
MOUNTPATH=/mnt/e
if [ $# -ne 1 ]; then
echo "Usage: flash_uf2 <image.uf2>"
exit 1
fi
@pfn
pfn / grr.py
Last active November 15, 2023 01:11
Simple tool to mirror (download) RRF configuration to local host
#!/usr/bin/env python
# tested on python3
import argparse
import ctypes
import hashlib
import http
import json
import os
@pfn
pfn / lint.txt
Created November 20, 2015 01:35
lint errors from VectorDrawables
> android:lint
[error] [NewApi] src\main\res\drawable\ic_add_circle_black_24dp.xml:1:<vector> requires API level 21 (current min is 9) or building with Android Gradle plugin 1.4 or higher
[error] <vector xmlns:android="http://schemas.android.com/apk/res/android"
[error] ^
[error] [NewApi] src\main\res\drawable\ic_add_circle_white_24dp.xml:1:<vector> requires API level 21 (current min is 9) or building with Android Gradle plugin 1.4 or higher
[error] <vector xmlns:android="http://schemas.android.com/apk/res/android"
[error] ^
[error] [NewApi] src\main\res\drawable\ic_history_black_24dp.xml:1:<vector> requires API level 21 (current min is 9) or building with Android Gradle plugin 1.4 or higher
[error] <vector xmlns:android="http://schemas.android.com/apk/res/android"
[error] ^
@pfn
pfn / butterflight_dump_3inch.txt
Last active May 18, 2022 04:28
Dump from hglrc f3 flytower
CLI
# dump
# ButterFlight / OMNIBUS (OMNI) 3.5.2 Jun 28 2018 / 14:30:13 (1012e5f) MSP API: 1.40
name -
resource BEEPER 1 C15
resource MOTOR 1 B09
resource MOTOR 2 B08
resource MOTOR 3 A02
resource MOTOR 4 A03
@pfn
pfn / butterflight_config.txt
Created May 16, 2022 04:54
butterflight + omnibus + x4r
2022-05-15 @21:52:41 -- OS: Windows
2022-05-15 @21:52:41 -- Configurator: 10.8.0 (be4a9e1)
2022-05-15 @21:52:42 -- Loaded release information for configurator from GitHub.
2022-05-15 @21:52:48 -- Serial port successfully opened with ID: 1
2022-05-15 @21:52:48 -- MultiWii API version: 1.40.0
@pfn
pfn / output.c
Created December 7, 2021 06:04
updating qmk json2c to maintain key layout formatting if possible
// $ qmk json2c no_mod_tap_a.json
#include QMK_KEYBOARD_H
/* THIS FILE WAS GENERATED!
*
* This file was generated by qmk json2c. You may or may not want to
* edit it directly.
*/
@pfn
pfn / lis3dh_esp8266.cpp
Last active October 13, 2021 22:49
LIS3DH data collection for RRF using a Wemos D1 Mini
#include <Arduino.h>
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <WifiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#define STASSID "YOURSSIDHERE"
#define STAPSK "YOURWIFIPSKHERE"
void setup() {
Serial.begin(9600);
pinMode(11, OUTPUT);
analogReference(DEFAULT);
}
void loop() {
static int lastValue = 0;
int value = analogRead(A0) >> 3;
if (lastValue != value) {
@pfn
pfn / main.rs
Last active June 19, 2020 15:21
rust experiment, porting hide-app.c
extern crate winapi;
extern crate user32;
extern crate gdi32;
extern crate comctl32;
extern crate kernel32;
use std::ptr::null_mut;
use std::mem::size_of;
use std::mem::zeroed;
use std::os::raw::c_int;
@pfn
pfn / javap.txt
Created April 3, 2018 17:00
databinding 2.3.0 has broken classes
com.android.databinding $ javap -classpath ./compilerCommon/jars/compilerCommon-2.3.0.jar 'android/databinding/parser/BindingExpressionParser$IdentifierContext'
Compiled from "BindingExpressionParser.java"
public class android.databinding.parser.BindingExpressionParser$IdentifierContext extends org.antlr.v4.runtime.ParserRuleContext {
public org.antlr.v4.runtime.tree.TerminalNode Identifier();
public android.databinding.parser.BindingExpressionParser$IdentifierContext(org.antlr.v4.runtime.ParserRuleContext, int);
public int getRuleIndex();
public void enterRule(org.antlr.v4.runtime.tree.ParseTreeListener);
public void exitRule(org.antlr.v4.runtime.tree.ParseTreeListener);
public <T> T accept(org.antlr.v4.runtime.tree.ParseTreeVisitor<? extends T>);
}