Initial commit

This commit is contained in:
informatic 2019-05-09 19:03:33 +02:00
commit bee479d6e9
3 changed files with 374 additions and 0 deletions

24
Makefile Normal file
View file

@ -0,0 +1,24 @@
#####################################################################
#### Please don't change this file. Use Makefile-user.mk instead ####
#####################################################################
# Including user Makefile.
# Should be used to set project-specific parameters
include ./Makefile-user.mk
# Important parameters check.
# We need to make sure SMING_HOME and ESP_HOME variables are set.
# You can use Makefile-user.mk in each project or use enviromental variables to set it globally.
ifndef SMING_HOME
$(error SMING_HOME is not set. Please configure it in Makefile-user.mk)
endif
ifndef ESP_HOME
$(error ESP_HOME is not set. Please configure it in Makefile-user.mk)
endif
# Include main Sming Makefile
ifeq ($(RBOOT_ENABLED), 1)
include $(SMING_HOME)/Makefile-rboot.mk
else
include $(SMING_HOME)/Makefile-project.mk
endif

192
app/application.cpp Normal file
View file

@ -0,0 +1,192 @@
#include <user_config.h>
#include <SmingCore/SmingCore.h>
#include <SmingCore/HardwareTimer.h>
#include "SerialReadingDelegateDemo.h"
const int MOTOR_ON = 4;
const int DATA_TX = 2;
Timer procTimer;
/*
* Really simple softwareserial transmit implementation based on hardware
* interrupts
**/
#define BUFSIZE 1024
class SoftwareSerial {
private:
uint8_t buf[BUFSIZE];
int wpos = 0;
int rpos = 0;
Hardware_Timer bitTimer;
int pin;
int startbits = 1;
int databits = 5;
int stopbits = 2;
int bitnum = -startbits;
bool feeding = false;
static SoftwareSerial* instance;
public:
bool write(uint8_t byte) {
if (full()) {
return false;
}
ETS_INTR_LOCK();
buf[wpos] = byte;
wpos = (wpos + 1) % BUFSIZE;
start();
ETS_INTR_UNLOCK();
return true;
}
bool empty() {
return rpos == wpos;
}
bool full() {
return (wpos + 1) % BUFSIZE == rpos;
}
void feedBit() {
Serial.printf(".");
if (empty()) {
bitnum = -startbits;
end();
return;
}
int curbyte = buf[rpos];
bool cb = 1;
if (bitnum < 0) {
// Start bit
cb = 0;
} else if (bitnum >= 0 && bitnum < databits) {
// Data bit
cb = (curbyte & (1 << (databits-1-bitnum)));
} else {
// Stop bit
cb = 1;
}
bitnum++;
if (bitnum + startbits > databits + stopbits) {
bitnum = -startbits;
rpos = (rpos+1) % BUFSIZE;
}
digitalWrite(pin, cb);
}
void begin(int pin_, int rxtime) {
pin = pin_;
instance = this;
bitTimer.initializeMs(rxtime, *[]() {
// FIXME
if (SoftwareSerial::instance) {
SoftwareSerial::instance->feedBit();
}
});
}
void start() {
if (!feeding) {
feeding = true;
bitTimer.start();
}
}
void end() {
if (feeding) {
feeding = false;
bitTimer.stop();
}
}
};
SoftwareSerial* SoftwareSerial::instance = 0;
SoftwareSerial tty;
int clientcount = 0;
void tcpServerClientConnected (TcpClient* client) {
if (clientcount == 0) {
tty.begin(DATA_TX, 20);
}
clientcount++;
digitalWrite(MOTOR_ON, 0);
Serial.println("Client connected");
}
bool tcpServerClientReceive (TcpClient& client, char *data, int size) {
for (int i = 0; i < size; i++) {
tty.write(data[i]);
Serial.write(data[i]);
}
return true;
}
void tcpServerClientComplete(TcpClient& client, bool succesfull) {
Serial.println("Client disconnected");
clientcount--;
tty.write(0x00);
}
TcpServer tcpServer(tcpServerClientConnected, tcpServerClientReceive, tcpServerClientComplete);
void gotIP(IPAddress ip, IPAddress netmask, IPAddress gateway) {
Serial.print("Got IP: ");
Serial.println(ip);
tcpServer.setTimeOut(USHRT_MAX);
tcpServer.listen(1337);
}
void init() {
Serial.begin(SERIAL_BAUD_RATE); // 115200 by default
Serial.systemDebugOutput(true);
Serial.println("Hello!");
pinMode(MOTOR_ON, OUTPUT);
pinMode(DATA_TX, OUTPUT);
digitalWrite(MOTOR_ON, 1);
digitalWrite(DATA_TX, 1);
//tty.begin(DATA_TX, 20);
procTimer.initializeMs(1000, *[]() {
static int cnt = 0;
if (clientcount == 0 && tty.empty()) {
// ...wait 3 seconds
if (cnt++ >= 3) {
digitalWrite(MOTOR_ON, 1);
//Serial.println("Powerdown...");
tty.end();
}
} else {
cnt = 0;
}
}).start();
WifiStation.enable(true);
WifiStation.config(WIFI_SSID, WIFI_PWD);
WifiAccessPoint.enable(false);
//tty.begin(DATA_TX, 20);
WifiEvents.onStationGotIP(gotIP);
}

158
dalek.py Normal file
View file

@ -0,0 +1,158 @@
# encoding: utf-8
import time
import socket
import sys
import serial
import codecs
BAUDOT_FIGURES = 0b11011
BAUDOT_LETTERS = 0b11111
CHARSET = {
BAUDOT_LETTERS: {
"q": 0b11101,
"w": 0b11001,
"e": 0b10000,
"r": 0b01010,
"t": 0b00001,
"y": 0b10101,
"u": 0b11100,
"i": 0b01100,
"o": 0b00011,
u"ó": 0b00011,
"p": 0b01101,
"s": 0b10100,
u"ś": 0b10100,
"d": 0b10010,
"f": 0b10110,
"g": 0b01011,
"h": 0b00101,
"k": 0b11110,
"l": 0b01001,
"z": 0b10001,
u"ż": 0b10001,
u"ź": 0b10001,
"x": 0b10111,
"c": 0b01110,
u"ć": 0b01110,
"v": 0b01111,
"b": 0b10011,
u"ń": 0b00110,
"m": 0b00111,
"j": 0b11010,
"a": 0b11000,
"n": 0b00110,
# FIXME this is supported in figures as well
"\r": 0b00010,
"\n": 0b01000,
' ': 0b00100,
},
BAUDOT_FIGURES: {
"1": 0b11101,
"2": 0b11001,
"3": 0b10000,
"4": 0b01010,
"5": 0b00001,
"6": 0b10101,
"7": 0b11100,
"8": 0b01100,
"9": 0b00011,
"0": 0b01101,
"-": 0b11000,
"'": 0b10100,
# "$": 0b10010, # who are you
u"ą": 0b10110,
u"ę": 0b01011,
u"ł": 0b00101,
"\b": 0b11010,
"(": 0b11110,
")": 0b01001,
"+": 0b10001,
"/": 0b10111,
":": 0b01110,
"=": 0b01111,
"?": 0b10011,
",": 0b00110,
".": 0b00111,
u"": 0b10100, # This is pretty similar
"`": 0b10100,
"\"": 0b10100,
},
}
class Teletype(serial.Serial):
mode = BAUDOT_LETTERS
column = 0
max_line_length = 68
def send(self, text, wrap=True):
for n in text.lower():
for mode, chars in CHARSET.items():
if n in chars:
print(n)
self.send_char(mode, chars.get(n))
if n == '\r':
self.column = 0
elif n != '\n':
self.column += 1
if wrap and self.column >= self.max_line_length:
self.column = 0
self.send('\r\n', wrap=False)
break
def send_char(self, mode, char):
if self.mode != mode:
self.write(chr(mode))
self.mode = mode
self.write(chr(char))
class TCPTeletype(Teletype):
def __init__(self, address, port):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect((address, port))
def write(self, b):
self.sock.send(b)
time.sleep(0.1)
class FDTeletype(Teletype):
def __init__(self, fd):
self.sock = fd
def write(self, b):
self.sock.write(b)
self.sock.flush()
time.sleep(0.1)
if __name__ == "__main__":
if len(sys.argv) == 3:
tty = TCPTeletype(sys.argv[1], int(sys.argv[2]))
elif len(sys.argv) == 2:
tty = Teletype(sys.argv[1], 9600)
else:
tty = FDTeletype(sys.stdout)
time.sleep(2)
sys.stdin = codecs.getreader('utf8')(sys.stdin)
while True:
tty.send(sys.stdin.read(1))
#tty = Teletype('/dev/ttyACM0', 9600)
#tty.write('\xff')
#time.sleep(5)
#tty.send(u'no i ja się pytam człowieku dumny ty jesteś z siebie zdajesz sobie sprawę z tego co robisz?masz ty wogóle rozum i godnośc człowieka?ja nie wiem ale żałosny typek z ciebie ,chyba nie pomyślałes nawet co robisz i kogo obrażasz ,możesz sobie obrażac tych co na to zasłużyli sobie ale nie naszego papieża polaka naszego rodaka wielką osobę ,i tak wyjątkowa i ważną bo to nie jest ktoś tam taki sobie że możesz go sobie wyśmiać bo tak ci się podoba nie wiem w jakiej ty się wychowałes rodzinie ale chyba ty nie wiem nie rozumiesz co to jest wiara .jeśli myslisz że jestes wspaniały to jestes zwykłym czubkiem którego ktoś nie odizolował jeszcze od społeczeństwa ,nie wiem co w tym jest takie śmieszne ale czepcie się stalina albo hitlera albo innych zwyrodnialców a nie czepiacie się takiej świętej osoby jak papież jan paweł 2 .jak można wogóle publicznie zamieszczac takie zdięcia na forach internetowych?ja się pytam kto powinien za to odpowiedziec bo chyba widac że do koscioła nie chodzi jak jestes nie wiem ateistą albo wierzysz w jakies sekty czy wogóle jestes może ty sługą szatana a nie będziesz z papieża robił takiego ,to ty chyba jestes jakis nie wiem co sie jarasz pomiotami szatana .wez pomyśl sobie ile papież zrobił ,on był kimś a ty kim jestes żeby z niego sobie robić kpiny co? kto dał ci prawo obrażac wogóle papieża naszego ?pomyślałes wogóle nad tym że to nie jest osoba taka sobie że ją wyśmieje i mnie będa wszyscy chwalic? wez dziecko naprawdę jestes jakis psycholek bo w przeciwieństwie do ciebie to papież jest autorytetem dla mnie a ty to nie wiem czyim możesz być autorytetem chyba takich samych jakiś głupków jak ty którzy nie wiedza co to kosciół i religia ,widac że się nie modlisz i nie chodzisz na religie do szkoły ,widac nie szanujesz religii to nie wiem jak chcesz to sobie wez swoje zdięcie wstaw ciekawe czy byś sie odważył .naprawdę wezta się dzieci zastanówcie co wy roicie bo nie macie widac pojęcia o tym kim był papież jan paweł2 jak nie jestescie w pełni rozwinięte umysłowo to się nie zabierajcie za taką osobę jak ojciec swięty bo to świadczy o tym że nie macie chyba w domu krzyża ani jednego obraza świętego nie chodzi tutaj o kosciół mnie ale wogóle ogólnie o zasady wiary żeby mieć jakąs godnosc bo papież nikogo nie obrażał a ty za co go obrażasz co? no powiedz za co obrażasz taką osobę jak ojciec święty ?brak mnie słów ale jakbyś miał pojęcie chociaz i sięgnął po pismo święte i poczytał sobie to może byś się odmienił .nie wiem idz do kościoła bo widac już dawno szatan jest w tobie człowieku ,nie lubisz kościoła to chociaż siedz cicho i nie obrażaj innych ludzi')
#send_baudot(ser, 'jan pawel drugi papiez pedofil 2137\b\r\nxD\r\n')