Skip to content

Instantly share code, notes, and snippets.

View JamesDunne's full-sized avatar

jsd1982 JamesDunne

View GitHub Profile
@JamesDunne
JamesDunne / i2c.c
Last active May 2, 2024 17:20
C library for reading/writing I2C slave device registers from Raspberry Pi 1 Model B
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <linux/i2c-dev.h>
// Terrible portability hack between arm-linux-gnueabihf-gcc on Mac OS X and native gcc on raspbian.
#ifndef I2C_M_RD
#include <linux/i2c.h>
#endif
@JamesDunne
JamesDunne / RFC3339DateTime.cs
Created February 1, 2012 17:01
RFC3339 DateTime struct for C#
public struct RFC3339DateTime : IEquatable<RFC3339DateTime>, IComparable<RFC3339DateTime>
{
private readonly DateTimeOffset _value;
private static readonly string[] _formats = new string[] { "yyyy-MM-ddTHH:mm:ssK", "yyyy-MM-ddTHH:mm:ss.ffK", "yyyy-MM-ddTHH:mm:ssZ", "yyyy-MM-ddTHH:mm:ss.ffZ" };
public RFC3339DateTime(string rfc3339FormattedDateTime)
{
DateTimeOffset tmp;
if (!DateTimeOffset.TryParseExact(rfc3339FormattedDateTime, _formats, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal, out tmp))
@JamesDunne
JamesDunne / fsw.c
Created February 20, 2017 16:35
C library for polling 16 active-low button states via SX1509 over I2C bus from Raspberry Pi Model B
typedef unsigned char u8;
typedef u8 byte;
#include "sx1509_registers.h"
// https://learn.sparkfun.com/tutorials/sx1509-io-expander-breakout-hookup-guide#sx1509-breakout-board-overview
// SX1509 breakout board exposes ADD1 and ADD0 jumpers for configuring I2C address.
// ADD1 = 0, ADD0 = 0
#define i2c_sx1509_btn_addr 0x3E
@JamesDunne
JamesDunne / FindConflictingReferences.cs
Created January 4, 2012 20:42 — forked from brianlow/FindConflictingReferences.cs
Find conflicting assembly references
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
namespace MyProject
{
public class UtilityTest
{
int init()
{
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) != 0) {
app.window = SDL_CreateWindow(GAME_TITLE, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, (int)SCREEN_WIDTH, (int)SCREEN_HEIGHT, 0);
if (app.window != NULL) {
app.renderer = SDL_CreateRenderer(app.window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
// app.renderer = SDL_CreateRenderer(app.window, -1, SDL_RENDERER_ACCELERATED);
if (app.renderer != NULL) {
@JamesDunne
JamesDunne / detect_flash.js
Created July 9, 2014 12:29
Flash plugin detection javascript code; works on IE8 and Chrome
// Returns true or false if flash installed or not. Tested with IE8 on Windows 7 and Chrome on Win7 and Mac.
(function() { var ie_flash; try { ie_flash = (window.ActiveXObject && (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) !== false) } catch(err) { ie_flash = false; } var _flash_installed = ((typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") || ie_flash); return _flash_installed; })()
@JamesDunne
JamesDunne / midi.c
Created February 20, 2017 16:29
C library for MIDI output on Raspberry Pi Model B using UART0 and breakout board with opto-isolators
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <asm/termios.h>
#include <unistd.h>
typedef unsigned char u8;
@JamesDunne
JamesDunne / divide-benchmark.cpp
Created October 2, 2013 19:41
A small benchmark in C++ to demonstrate integer vs. floating point division operations on various platforms.
#include <stdlib.h>
#include <stdio.h>
#ifdef _WIN32
#include <sys/timeb.h>
#else
#include <sys/time.h>
#endif
#include <time.h>
double
@JamesDunne
JamesDunne / bigbenircbot.cs
Created November 14, 2012 16:33
Big Ben C# IRC bot
using System;
using System.Linq;
using System.Threading.Tasks;
namespace IrcBots {
public class BigBenIrcBot : PircBot {
const string IRC_CHANNEL = "#bitswebteam";
public BigBenIrcBot() { setName("isu_big_ben"); }
static void Main() {
var bot = new BigBenIrcBot();
@JamesDunne
JamesDunne / SqlAsyncConnectionString.cs
Created May 4, 2012 20:58
SqlAsyncConnectionString wrapper class to modify a SQL connection string to add Asynchronous Processing=True if it does not exist
/// <summary>
/// Represents a connection string that is guaranteed to have been altered to enable asynchronous processing.
/// </summary>
public sealed class SqlAsyncConnectionString
{
private readonly string _connectionString;
/// <summary>
/// Creates a connection string prepared for enabling asynchronous processing with an optional connection timeout.
/// </summary>