Skip to content

Commit

Permalink
Move github pages content into /docs
Browse files Browse the repository at this point in the history
  • Loading branch information
bemasher committed Aug 18, 2016
1 parent afde396 commit 911713f
Show file tree
Hide file tree
Showing 85 changed files with 10,028 additions and 0 deletions.
4 changes: 4 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Gemfile.lock
_site/
.sass-cache/

Empty file added docs/.gitmodules
Empty file.
8 changes: 8 additions & 0 deletions docs/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
source 'https://rubygems.org'

require 'json'
require 'open-uri'
versions = JSON.parse(open('https://pages.github.com/versions.json').read)

gem 'github-pages', versions['github-pages']
gem 'jekyll-redirect-from', versions['jekyll-redirect-from']
21 changes: 21 additions & 0 deletions docs/_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Site settings
title: rtlamr
email: [email protected]
description: An rtl-sdr receiver for Itron ERT compatible smart meters operating in the 900MHz ISM band.

baseurl: "/rtlamr"
url: "http://smtorrent:4000"

markdown: kramdown
kramdown:
input: GFM
highlighter: pygments

github_username: bemasher
google_analytics_id: UA-3438582-2
repository: https://github.com/bemasher/rtlamr

gems:
- jekyll-redirect-from

exclude: [src,assets/*.bin,assets/*.py]
13 changes: 13 additions & 0 deletions docs/_includes/disqus.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'rtlamr'; // required: replace example with your forum shortname

/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
45 changes: 45 additions & 0 deletions docs/_includes/head.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
<meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">
<meta name="author" content="{{ site.email }}">

<link href="{{ site.baseurl }}/css/bootstrap.min.css" rel="stylesheet">
<link href="{{ site.baseurl }}/css/main.css" rel="stylesheet">
<link href="{{ site.baseurl }}/css/katex.min.css" rel="stylesheet">

<script src="{{ site.baseurl }}/js/jquery-1.11.1.min.js"></script>
<script src="{{ site.baseurl }}/js/bootstrap.min.js"></script>
<!-- <script src="{{ site.baseurl }}/js/katex.min.js"></script> -->

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [['$','$'], ["\\(","\\)"]],
displayMath: [['$$','$$'], ["\\[","\\]"]],
processEscapes: true
},
});
</script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->

<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-3438582-2', 'auto');
ga('send', 'pageview');
</script>
</head>
30 changes: 30 additions & 0 deletions docs/_includes/header.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{{ site.baseurl }}/"><strong>{{ site.title }}</strong></a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
{% assign sorted_pages = site.pages | sort:"index" %}
{% for node in sorted_pages %}
<li {% if page.url == node.url %}class="active"{% endif %}>
<a href="{{ site.baseurl }}{{ node.url }}">
<strong>{{ node.title }}</strong>
</a>
</li>
{% endfor %}
</ul>

<ul class="nav navbar-nav navbar-right">
<li><a href="{{ site.repository }}">GitHub</a></li>
<li><a href="{{ site.repository }}/releases">Releases</a></li>
</ul>
</div>
</div>
</nav>
10 changes: 10 additions & 0 deletions docs/_includes/image.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<div class="text-center">
<div class="panel panel-default img-panel">
<div class="panel-body">
<img class="img-responsive" src="{{ site.baseurl }}{{ include.path }}">
</div>
<div class="panel-footer">
{{ include.caption }}
</div>
</div>
</div>
20 changes: 20 additions & 0 deletions docs/_layouts/default.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
{% include head.html %}

<body>
<div class="container">
{% include header.html %}

{{ content }}

{% if jekyll.environment != 'development' and page.permalink == '/' %}
<div class="panel panel-default">
<div class="panel-body disqus">
{% include disqus.html %}
</div>
</div>
{% endif %}
</div>
</body>
</html>
12 changes: 12 additions & 0 deletions docs/_layouts/page.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
layout: default
---

<div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title"><strong>{{ page.title }}</strong></h1>
</div>
<div class="panel-body content">
{{ content }}
</div>
</div>
15 changes: 15 additions & 0 deletions docs/_layouts/post.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
layout: default
---
<div class="post">

<header class="post-header">
<h1 class="post-title">{{ page.title }}</h1>
<p class="post-meta">{{ page.date | date: "%b %-d, %Y" }}{% if page.author %} • {{ page.author }}{% endif %}{% if page.meta %} • {{ page.meta }}{% endif %}</p>
</header>

<article class="post-content">
{{ content }}
</article>

</div>
Binary file added docs/assets/filter.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 36 additions & 0 deletions docs/assets/filter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import matplotlib.pyplot as plt
import numpy as np
from scipy import signal
import math

pktlen = 38144 / 4

raw = np.memmap("sample.bin", dtype=np.uint8, offset=(17600<<1)+2048+256, mode='r')

window = raw[:pktlen].copy()
level = 127.4
iq = ((level-(window.astype(np.float64))) / level).view(np.complex128)

fig, subplots = plt.subplots(nrows=2)
fig.set_size_inches(9,9*0.6180339887)

(mag_plot, spec_plot) = subplots

mag = np.abs(iq)

filtered = np.correlate(mag, np.append(np.ones(78), -np.ones(78)))

kernel = np.append(np.ones(78), -np.ones(78))
mag_plot.step(np.arange(kernel.size), kernel)
mag_plot.grid(axis='both')
mag_plot.autoscale(tight=True)
mag_plot.set_ylim(-1.125, 1.125)
mag_plot.set_xlim(-5, 78*2 + 5)
mag_plot.xaxis.set_ticks([0,39, 78, 117, 156])

spec_plot.plot(filtered)
spec_plot.grid(axis='both')
spec_plot.autoscale(tight=True)

plt.savefig('filter.png', dpi=96, transparent=True, bbox_inches="tight")
# plt.show()
Binary file added docs/assets/magnitude.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions docs/assets/magnitude.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import matplotlib.pyplot as plt
import numpy as np
from scipy import signal
import math

pktlen = 38144 / 8

raw = np.memmap("sample.bin", dtype=np.uint8, offset=(17600<<1)+2048+256, mode='r')

window = raw[:pktlen].copy()
level = 127.4
iq = ((level-(window.astype(np.float64))) / level).view(np.complex128)

fig, subplots = plt.subplots(nrows=2)
fig.set_size_inches(9,9*0.6180339887)

(mag_plot, spec_plot) = subplots

mag_plot.plot(iq, linewidth=0.5)
mag_plot.grid(axis='both')
mag_plot.autoscale(tight=True)

spec_plot.plot(np.abs(iq), linewidth=0.5)
spec_plot.grid(axis='both')
spec_plot.autoscale(tight=True)

# plt.show()
fig.savefig('magnitude.png', dpi=96, transparent=True, bbox_inches="tight")
33 changes: 33 additions & 0 deletions docs/assets/quantize.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import matplotlib.pyplot as plt
import numpy as np
from scipy import signal
import math

pktlen = 38144 / 4

raw = np.memmap("sample.bin", dtype=np.uint8, offset=(17600<<1)+2048+256, mode='r')

window = raw[:pktlen].copy()
level = 127.4
iq = ((level-(window.astype(np.float64))) / level).view(np.complex128)

fig, subplots = plt.subplots(nrows=1)
fig.set_size_inches(9,9*0.6180339887 / 2)

(mag_plot) = subplots

mag = np.abs(iq)

kernel = np.append(np.ones(78), -np.ones(78))
filtered = np.correlate(mag, kernel)

mag_plot.plot(filtered / filtered.max())
filtered = np.digitize(filtered, [0]) * 2 - 1
mag_plot.plot(filtered, color="red")

mag_plot.grid(axis='both')
mag_plot.autoscale(tight=True)
mag_plot.set_ylim(-1.25, 1.25)

plt.savefig('quantized.png', dpi=96, transparent=True, bbox_inches="tight")
# plt.show()
Binary file added docs/assets/quantized.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/assets/sample.bin

Large diffs are not rendered by default.

Binary file added docs/assets/signal_flow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
53 changes: 53 additions & 0 deletions docs/assets/signal_flow.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
\documentclass[tikz,crop,border=0.25cm]{standalone}

\usepackage{tikz}
\usetikzlibrary{calc,shapes,arrows,fit}

\tikzset{
node distance=3.5cm,
auto,
>=latex',
punkt/.style={
rectangle,
draw=black,
semithick,
text width=6.5em,
minimum height=2.75em,
text centered
}
}

\begin{document}
\pagestyle{empty}
\sffamily
\begin{tikzpicture}[semithick, rounded corners=1mm]
\node[draw, regular polygon,regular polygon sides=3, rotate=180, rounded corners=0] (antenna) {};
\node [punkt, below right of=antenna, node distance=2cm, xshift=1.25cm] (rtl-sdr) {Receiver};
\node [punkt, right of=rtl-sdr, node distance=3.75cm] (rtl-tcp) {rtl\_tcp};
\node [punkt, right of=rtl-tcp] (demodulate) {Demodulate};
\node [punkt, right of=demodulate] (filter) {Matched Filter};
\node [punkt, below of=rtl-tcp, node distance=2cm] (decision) {Bit Decision};
\node [punkt, right of=decision] (preamble) {Preamble Search};
\node [punkt, right of=preamble] (decode) {Decode Packet};
\node [right of=decode, xshift=-0.5cm] (output) {Output};

\draw [->] (antenna) |- (rtl-sdr);
\draw [->] (rtl-sdr) -- (rtl-tcp);
\draw [->] (rtl-tcp) -- (demodulate);
\draw [->] (demodulate) -- (filter);

% $(u1.east) + (0.1cm, -0.4cm)$
\draw [->, rounded corners=1mm] (filter.south) -- ++(0, -0.5cm) -| (decision.north);

\draw [->] (decision) -- (preamble);
\draw [->] (preamble) -- (decode);
\draw [->] (decode) -- (output);

\node [punkt] (hardware) [fit=(antenna) (rtl-sdr), inner sep=0.25cm] {};
\node at (hardware.north) [above, inner sep=3mm] {Hardware};

\node [punkt] (software) [fit=(rtl-tcp) (decode), inner sep=0.25cm] {};
\node at (software.north) [above, inner sep=3mm] {Software};
\end{tikzpicture}

\end{document}
Loading

0 comments on commit 911713f

Please sign in to comment.