Skip to content

Instantly share code, notes, and snippets.

View agrif's full-sized avatar

agrif agrif

View GitHub Profile
import struct
import random
# Another day, another hash implementation. I should have been a carpenter.
# If you're reading this, you're probably looking for a bug. Good luck.
class SHA1:
"""
A SHA-1 implementation. It's not secure. It's not fast.
It just exists. Like everything else in this industry.
use embassy_sync::pubsub::PubSubBehavior;
use super::music::{music, Music};
// jingles adapted from
// https://github.com/DavinderHanda/HandaDigitalSpeaker/
#[derive(Clone, Copy, Debug, defmt::Format)]
#[allow(dead_code)]
pub enum Jingle {
#[embassy_executor::task]
pub async fn ui_task() -> ! {
let mut temperature = defmt::unwrap!(RateLimit::new(&TEMPERATURE, TEMP_RATE));
let intro = Text::from_str("Hello").scroll();
let duration = intro.scroll_duration();
TEXT.signal(intro);
Timer::after(duration).await;
loop {
<script lang="ts">
interface Props {
digits: number[],
}
let { digits }: Props = $props();
// in bitfield order, LSB to MSB
const segments = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'dp'];
// in render order, line by line, as [class, name]
@agrif
agrif / main.rs
Last active January 30, 2026 19:28
#![no_main]
#![no_std]
use core::fmt::Write;
use panic_halt as _;
use rk3506_m0_pac as pac;
struct Buffer<const N: usize>([u8; N], usize);
Upgrades started January 24, 2026.
[x] babel
[x] bifrost
[x] cartas
[x] erasmus
[ ] hyperion
[x] nara
[ ] zagreus
from __future__ import annotations
import dataclasses
import pathlib
import typing
import libfdt # type: ignore
class DeviceTree:
@agrif
agrif / 00-main.rs
Last active September 19, 2025 14:07
#![no_std]
#![no_main]
use rtt_target::rprintln;
extern crate panic_halt;
#[riscv_rt::entry]
fn main() -> ! {
rtt_target::rtt_init_print!();
@agrif
agrif / main.c
Last active September 15, 2025 17:15
void main(void) {
//uart->divisor = 234;
*leds = 0x0;
#define SLOTS 6
uint8_t times[SLOTS] = {0};
uint8_t subtime = 0;
while (true) {
*leds = 0;
@agrif
agrif / main.cpp
Created September 13, 2025 01:45
ReceiveCode samsung_vol_up("Samsung VOL UP", 'U', SAMSUNG, 0x707, 0x7);
ReceiveCode samsung_vol_down("Samsung VOL DOWN", 'D', SAMSUNG, 0x707, 0xb);
ReceiveCode samsung_mute("Samsung MUTE", 'M', SAMSUNG, 0x707, 0xf);
ReceiveSequence demo_seq("MMMU");
// Protocol=NEC Address=0xA5 Command=0xA
// Raw-Data=0xF50A5AA5 32 bits LSB first
TransmitRaw pioneer_vol_up("Pioneer VOL UP", {8580,4220, 580,1570, 530,520, 580,1570, 530,520, 580,520, 530,1570, 580,520, 530,1570, 580,520, 530,1570, 580,520, 530,1570, 580,1570, 530,520, 580,1570, 530,520, 580,520, 530,1570, 580,520, 530,1570, 580,520, 530,520, 580,520, 530,520, 580,1570, 530,520, 580,1570, 530,520, 580,1570, 530,1570, 580,1570, 530,1570, 580});
// Protocol=NEC Address=0xA5 Command=0xB