Skip to content

Instantly share code, notes, and snippets.

CNLohr cnlohr

Block or report user

Report or block cnlohr

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
cnlohr / OpenVR Frame of reference change with cnovr
Created Oct 28, 2019
For converting from raw_and_uncalibrated to standing.
View OpenVR Frame of reference change with cnovr
printf( "Conv: \n" );
struct HmdMatrix34_t mzerotoabs = cnovrstate->oSystem->GetRawZeroPoseToStandingAbsoluteTrackingPose();
printf( "%f %f %f %f\n", PFFOUR( mzerotoabs.m[0] ) );
printf( "%f %f %f %f\n", PFFOUR( mzerotoabs.m[1] ) );
printf( "%f %f %f %f\n", PFFOUR( mzerotoabs.m[2] ) );
cnovr_pose pstanding;
matrix44_to_pose( &pstanding, &mzerotoabs.m[0][0] );
printf( "%f %f %f %f %f %f %f %f\n", PFTHREE( pstanding.Pos ), PFFOUR( pstanding.Rot ), pstanding.Scale );
cnlohr / esp32_aes_example.c
Created Nov 7, 2018
Example of using hardware AES 256 Crypto in CBC mode on the ESP32 using ESP-IDF
View esp32_aes_example.c
#include <string.h>
#include <stdio.h>
#include <hwcrypto/aes.h>
For Encryption time: 1802.40us (9.09 MB/s) at 16kB blocks.
static inline int32_t _getCycleCount(void) {
int32_t ccount;
cnlohr / triangle_modified.c
Created Jun 16, 2018
Modified triangle.c from raspberry pi, showing significant slowdown with draw calls.
View triangle_modified.c
Copyright (c) 2012, Broadcom Europe Ltd
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
View 20-add-mali450-node.dts
/dts-v1/; /plugin/;
/ {
// compatible = "allwinner,sun50i-h5-mali",
// "arm,mali-450";// "allwinner,sun50i-h5";
fragment@0 {
target-path = "/";
__overlay__ {
cnlohr / HMD_config.json
Created Mar 26, 2018
Charles' Vive HMD config json
View HMD_config.json
"acc_bias": [
"acc_scale": [
cnlohr / Kyocera-EP-C170N-KPDL.ppd
Created Jan 25, 2018
PPD File for CUPS Linux and OSX Printing for Kyocera EP C170N Printer
View Kyocera-EP-C170N-KPDL.ppd
*PPD-Adobe: "4.3"
*% PPD file for Kyocera EP C170N (English)
*% Linux Version
*% Copyright (C) 2000 KYOCERA CORPORATION.
*% Copyright (C) 2007 Revised Edition KYOCERA MITA CORPORATION.
*% Permission is granted for redistribution of this file as long as this
View htc_vive_edid.txt
Checksum Correct
Section "Monitor"
Identifier "HTC-VIVE"
ModelName "HTC-VIVE"
VendorName "HVR"
# Monitor Model Year: 2016
# EDID version 1.3
cnlohr / htc_vive_watchman_codes
Last active Jun 22, 2017
HTC Vive Watchman Hacking Codes!
View htc_vive_watchman_codes
So, the way this goes is I post my AVR code, then I post what the HTC Vive does.
The output is: POST 0: (# of bytes) (IMU Timecode MSBs) (All raw light data)
(All raw light data ends with [3 bytes, LSB timecode] [OTA CRC (probably ignore)])
//NOTICE: The funky encoding of the numbers, and the fact that paramters are read from the end of the data going forward.
//We know we're done when the # of parameters read is (# of bytes left*2)-1
View gist:83719f445cc5c6614ae51270d683fdd4
Controlled environment with LED, right on edge.
POST 0: 5 (55ab) - 48 fc 30 e1 ad da c4 39 f0
POST 0: 5 (55b1) - 48 fc 40 a7 b2 30 de db f9
POST 0: 5 (55b7) - 48 fc db 6d b7 18 46 82 1c
POST 0: 5 (55ba) - 48 fc 2a 34 bc 56 8d a2 f1
POST 0: 5 (55c0) - 48 fb fd f9 c0 7b 6b a8 0c
POST 0: 5 (55c3) - 48 fc 21 c0 c5 55 28 20 d3
POST 0: 5 (55c8) - 48 fc e3 85 ca 0f c6 8f 38
POST 0: 5 (55ce) - 48 fc c8 4b cf 70 e8 5c 50
cnlohr / i2s_stream.c
Last active Nov 13, 2019
ESP32 I2S C Code Example/Snippet
View i2s_stream.c
//Almost entirelly lifted directly from
//Just clocked a little differently and has chained buffers.
//This totes works with the I2S bus on the ESP32 for READING 16 wires simultaneously.
//Can be clocked off of I2S's internal controller or an external clock.
#define I2S_D0 4
#define I2S_D1 5
#define I2S_D2 18
#define I2S_D3 19
#define I2S_D4 36
You can’t perform that action at this time.