Skip to content

Instantly share code, notes, and snippets.

View dcoles's full-sized avatar

David Coles dcoles

View GitHub Profile
@dcoles
dcoles / __init__.py
Last active October 21, 2024 17:07
SPA Plugin Loading in Python
# SPA bindings
import os
import functools
from spa._cffi import ffi
from spa.pod import PodObject
from spa.constants import SPA_TYPE_COMMAND__NODE
@dcoles
dcoles / main.rs
Created October 21, 2024 04:00
Flipper Zero serial reader (work in progress)
#![no_main]
#![no_std]
// Required for panic handler
extern crate flipperzero_rt;
use core::{ffi::{c_void, CStr}, ops::{Deref, DerefMut}, ptr};
use flipperzero::{furi::{self, stream_buffer::FuriStreamBuffer, thread::{self, ThreadId}, time::Duration}, info, log, println};
use flipperzero_rt::{entry, manifest};
@dcoles
dcoles / postcard-tlv.rs
Created October 5, 2024 05:50
A simple Type-Length-Value format inspired by `postcard-rpc`
//! A simple Type-Length-Value format inspired by `postcard-rpc`
//!
//! Author: David Coles <https://github.com/dcoles/>
//! SPDX-License-Identifier: MIT
use std::io::{Read, Write, Cursor};
use std::time;
use postcard::experimental::schema::Schema;
use postcard_rpc::hash::fnv1a64::hash_ty_path;
use serde::{Deserialize, Serialize};
@dcoles
dcoles / 452874.py
Last active December 20, 2021 21:53
By only adding + - * into the string 452874 (in that order), how many way can you get to -18?
"""
By only adding + - * into the string 452874 (in that order),
how many way can you get to -18?
"""
N = "452874"
M = -18
OPERATIONS = [None, '+', '-', '*']
@dcoles
dcoles / draft.rs
Created December 1, 2021 19:51
Advent of Code 2021: Day 1 (Draft vs. Final)
fn main() {
let input = read_input_from_file("day01/input.txt").unwrap();
// Part 1
let mut count = 0;
let mut last = -1;
for &n in &input {
if n > last {
count += 1;
}
@dcoles
dcoles / fsm.rs
Last active October 12, 2021 04:33
Dynamic Finite-State-Machine in Rust
use std::fmt::Debug;
pub trait State: Debug {
fn execute(&self) -> Transition;
}
pub trait TransitionTo<S: State + 'static>: State {
fn transition_to(&self, to: &'static S) -> Transition {
Transition { to }
}
@dcoles
dcoles / tokio-server.rs
Created October 12, 2021 04:29
Tokio-based TCP server
// Tokio-based server
use std::io;
use std::iter::FromIterator;
use std::time::Duration;
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::net::{TcpListener, TcpStream};
// Listening server.
@dcoles
dcoles / appimage.sh
Last active February 23, 2020 00:38
Run AppImage container
#!/bin/bash
# Run AppImage container
set -e
function _mount {
local target
target="$(mktemp --tmpdir --directory appimage.XXXXXXXXXX)"
/bin/mount --types squashfs -o offset="${2:-0}" --read-only -- "${1}" "${target}"
echo "${target}"
}
@dcoles
dcoles / windows-nfs.rs
Created September 7, 2019 07:07
Example of NFC using Windows Proximity APIs in Rust
// Example of NFC using Windows Proximity APIs
// Tested using Sony RC-S380 (make sure you enable NFP in the driver).
use winrt::*; // import various helper types
use winrt::windows::foundation;
use winrt::windows::networking::proximity;
use std::{thread, time};
const URL: &str = "https://dcoles.net";
@dcoles
dcoles / windows-nfc.py
Created September 7, 2019 06:06
Example of NFC using Windows Proximity class
"""
Example of NFC using Windows Proximity class.
Tested using Sony RC-S380 (make sure you enable NFP in the driver).
Requires Windows 10 and Python 3.7+ (for WinRT/Python).
"""
import sys
import time