added hamarx.py
This commit is contained in:
parent
d034db102d
commit
8f6dffb27e
1 changed files with 77 additions and 0 deletions
77
hamarx.py
Executable file
77
hamarx.py
Executable file
|
@ -0,0 +1,77 @@
|
|||
#!/usr/bin/env python2.7
|
||||
|
||||
from rfm69 import Rfm69
|
||||
import rfm69
|
||||
import sys
|
||||
import time
|
||||
#import types
|
||||
#import os
|
||||
|
||||
rfm = Rfm69()
|
||||
rfm.SetParams(
|
||||
Freq = 433.944,
|
||||
Datarate = 4.0, #1 / 250E-06 / 1000,
|
||||
Bandwidth = 24000,
|
||||
SyncPattern = [0x00, 0x08, 0x00],
|
||||
RssiThresh = -80,
|
||||
ModulationType = rfm69.OOK
|
||||
)
|
||||
|
||||
def staff(byte):
|
||||
res = 0
|
||||
res |= (byte & 1<<7) >> 4
|
||||
res |= (byte & 1<<5) >> 3
|
||||
res |= (byte & 1<<3) >> 2
|
||||
res |= (byte & 1<<1) >> 1
|
||||
return res
|
||||
|
||||
def decode(bindata):
|
||||
netdata = [0x00, 0x00, 0x00, 0x00]
|
||||
for i in range(0, 64, 2):
|
||||
if (bindata[i / 8] >> (i % 8)) & 0x01 == (bindata[i / 8] >> (i % 8 + 1)) & 0x01:
|
||||
print "Error", i, hex(bindata[i / 8]), hex(bindata[i / 8] >> (i % 8))
|
||||
for i in range(4):
|
||||
netdata[i] = staff(bindata[i * 2]) << 4 | staff(bindata[i * 2 + 1])
|
||||
|
||||
print "decode: ",
|
||||
for i in range(4):
|
||||
print "{0:{fill}2x}".format(netdata[i], fill='0'),
|
||||
print ""
|
||||
|
||||
while True:
|
||||
data = rfm.ReceivePacket(60)
|
||||
zcount = 0
|
||||
bindata = []
|
||||
binval = 0
|
||||
binmask = 0x80
|
||||
for d in data:
|
||||
rawmask = 0x80
|
||||
while (rawmask > 0) and (len(bindata) < 8):
|
||||
if (d & rawmask) > 0:
|
||||
if zcount == 1:
|
||||
binval |= binmask
|
||||
binmask >>= 1
|
||||
|
||||
if zcount == 5:
|
||||
binmask >>= 1
|
||||
|
||||
if zcount == 11:
|
||||
print "Received pause"
|
||||
|
||||
if zcount == 41:
|
||||
print "SYNC"
|
||||
|
||||
zcount = 0
|
||||
else:
|
||||
zcount += 1
|
||||
rawmask >>= 1
|
||||
|
||||
if binmask == 0:
|
||||
bindata.append(binval)
|
||||
binmask = 0x80
|
||||
binval = 0
|
||||
|
||||
if len(bindata) == 8:
|
||||
decode(bindata)
|
||||
break;
|
||||
|
Loading…
Reference in a new issue