Initial commit
This commit is contained in:
commit
bee479d6e9
3 changed files with 374 additions and 0 deletions
24
Makefile
Normal file
24
Makefile
Normal 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
192
app/application.cpp
Normal 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
158
dalek.py
Normal 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')
|
Loading…
Reference in a new issue