nabaztag_hack_kit 0.0.3 → 0.1.0.alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -0
- data/.travis.yml +1 -1
- data/CHANGELOG.md +7 -1
- data/Rakefile +2 -17
- data/{ext/bytecode → bytecode}/Docs.md +2 -1
- data/bytecode/Rakefile +7 -0
- data/{bin → bytecode/bin}/mtl_comp +9 -0
- data/{bin → bytecode/bin}/mtl_merge +2 -2
- data/{bin → bytecode/bin}/mtl_simu +9 -0
- data/bytecode/lib/buffer.mtl +6 -0
- data/bytecode/lib/button.mtl +18 -12
- data/bytecode/lib/ear.mtl +3 -3
- data/bytecode/lib/led.mtl +1 -1
- data/bytecode/lib/ping.mtl +16 -0
- data/bytecode/lib/record.mtl +87 -0
- data/bytecode/lib/rfid.mtl +3 -21
- data/bytecode/main.mtl +86 -29
- data/{ext/bytecode → bytecode/src}/lib/http.mtl +15 -3
- data/{ext/bytecode → bytecode/src}/lib/udp.mtl +1 -1
- data/{ext/bytecode → bytecode/src}/lib/util.mtl +4 -1
- data/bytecode/src/lib/wav.mtl +223 -0
- data/{ext → bytecode/src}/mtl/README.md +2 -2
- data/{ext/bytecode → bytecode/src}/nominal-ping.mtl +123 -124
- data/{test/bytecode → bytecode/test}/native.mtl +11 -1
- data/{test/bytecode → bytecode/test}/test.mtl +3 -3
- data/examples/record/Gemfile +5 -0
- data/examples/record/config.ru.example +19 -0
- data/examples/record/server.rb +112 -0
- data/examples/simple/Gemfile +6 -0
- data/examples/simple/Procfile +3 -0
- data/{config.ru → examples/simple/config.ru} +3 -1
- data/lib/nabaztag_hack_kit/message/api.rb +8 -0
- data/lib/nabaztag_hack_kit/message/helper.rb +26 -2
- data/lib/nabaztag_hack_kit/message.rb +11 -5
- data/lib/nabaztag_hack_kit/public/index.html +5 -0
- data/lib/nabaztag_hack_kit/server.rb +54 -8
- data/lib/nabaztag_hack_kit/version.rb +1 -1
- data/nabaztag_hack_kit.gemspec +4 -3
- data/spec/integration/server_spec.rb +50 -0
- data/{test → spec}/spec_helper.rb +1 -1
- data/{test → spec}/unit/message_spec.rb +2 -2
- data/spec/unit/server_spec.rb +40 -0
- metadata +140 -119
- data/public/bytecode.bin +0 -0
- /data/{ext/bytecode → bytecode}/Commands.md +0 -0
- /data/{ext/bytecode → bytecode/src}/README.md +0 -0
- /data/{ext/bytecode → bytecode/src}/lib/arp.mtl +0 -0
- /data/{ext/bytecode → bytecode/src}/lib/cfg.mtl +0 -0
- /data/{ext/bytecode → bytecode/src}/lib/choreos.mtl +0 -0
- /data/{ext/bytecode → bytecode/src}/lib/dhcp.mtl +0 -0
- /data/{ext/bytecode → bytecode/src}/lib/dns.mtl +0 -0
- /data/{ext/bytecode → bytecode/src}/lib/tcp.mtl +0 -0
- /data/{ext/bytecode → bytecode/src}/lib/var.mtl +0 -0
- /data/{ext/bytecode → bytecode/src}/lib/wifi.mtl +0 -0
- /data/{ext → bytecode/src}/mtl/Makefile +0 -0
- /data/{ext → bytecode/src}/mtl/bc.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/conf.bin.sans_password +0 -0
- /data/{ext → bytecode/src}/mtl/config.txt +0 -0
- /data/{ext → bytecode/src}/mtl/dumpbc.c +0 -0
- /data/{ext → bytecode/src}/mtl/extconf.rb +0 -0
- /data/{ext → bytecode/src}/mtl/linux_simu.c +0 -0
- /data/{ext → bytecode/src}/mtl/linux_simuaudio.c +0 -0
- /data/{ext → bytecode/src}/mtl/linux_simuaudio.h +0 -0
- /data/{ext → bytecode/src}/mtl/linux_simunet.c +0 -0
- /data/{ext → bytecode/src}/mtl/linux_simunet.h +0 -0
- /data/{ext → bytecode/src}/mtl/log.c +0 -0
- /data/{ext → bytecode/src}/mtl/log.h +0 -0
- /data/{ext → bytecode/src}/mtl/main_compiler.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/main_simu.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/GTKANAL.H +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/LAYER3.C +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/TABINIT.C +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/common.c +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/dct64_i386.c +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/decode_i386.c +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/huffman.h +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/interface.c +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/mpg123.h +0 -0
- /data/{ext → bytecode/src}/mtl/mp3/mpglib.h +0 -0
- /data/{ext → bytecode/src}/mtl/properties.c +0 -0
- /data/{ext → bytecode/src}/mtl/properties.h +0 -0
- /data/{ext → bytecode/src}/mtl/simu.c +0 -0
- /data/{ext → bytecode/src}/mtl/simuaudio.c +0 -0
- /data/{ext → bytecode/src}/mtl/simuaudio.h +0 -0
- /data/{ext → bytecode/src}/mtl/simunet.c +0 -0
- /data/{ext → bytecode/src}/mtl/simunet.h +0 -0
- /data/{ext → bytecode/src}/mtl/utils/correct_const.sh +0 -0
- /data/{ext → bytecode/src}/mtl/vaudio.c +0 -0
- /data/{ext → bytecode/src}/mtl/vaudio.h +0 -0
- /data/{ext → bytecode/src}/mtl/vbc.h +0 -0
- /data/{ext → bytecode/src}/mtl/vbc_str.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/Makefile +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/bootstrap.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/compiler.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/compiler.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/compiler_file.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/compiler_prog.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/compiler_term.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/compiler_type.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/compiler_var.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/file.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/file.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/filesystem.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/interpreter.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/interpreter.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/memory.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/memory.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/param.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/parser.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/parser.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/parser_xml.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/prodbuffer.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/prodbuffer.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/resource.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/stdlib_core.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/terminal.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/terminal.h +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/util.cpp +0 -0
- /data/{ext → bytecode/src}/mtl/vcomp/util.h +0 -0
- /data/{ext → bytecode/src}/mtl/vinterp.c +0 -0
- /data/{ext → bytecode/src}/mtl/vinterp.h +0 -0
- /data/{ext → bytecode/src}/mtl/vloader.c +0 -0
- /data/{ext → bytecode/src}/mtl/vloader.h +0 -0
- /data/{ext → bytecode/src}/mtl/vlog.c +0 -0
- /data/{ext → bytecode/src}/mtl/vlog.h +0 -0
- /data/{ext → bytecode/src}/mtl/vmem.c +0 -0
- /data/{ext → bytecode/src}/mtl/vmem.h +0 -0
- /data/{ext → bytecode/src}/mtl/vnet.c +0 -0
- /data/{ext → bytecode/src}/mtl/vnet.h +0 -0
- /data/{test/bytecode → bytecode/test}/helper.mtl +0 -0
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changes
|
|
2
2
|
|
|
3
|
+
## v0.1.0 - xx-09-2012
|
|
4
|
+
|
|
5
|
+
* files restructured, speration byte & ruby code
|
|
6
|
+
* update server for generic structure, added callback
|
|
7
|
+
* mtl binaires respect defaults from local `.mtlrc` file
|
|
8
|
+
|
|
3
9
|
## v0.0.2 - 29-01-2012
|
|
4
10
|
|
|
5
11
|
* rename to NabaztagHackKit
|
|
@@ -8,4 +14,4 @@
|
|
|
8
14
|
|
|
9
15
|
## v0.0.1 - 28-01-2012
|
|
10
16
|
|
|
11
|
-
* inital release
|
|
17
|
+
* inital release
|
data/Rakefile
CHANGED
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
require "bundler/gem_tasks"
|
|
2
|
-
|
|
3
2
|
require 'rspec/core/rake_task'
|
|
4
|
-
RSpec::Core::RakeTask.new("unit") do |t|
|
|
5
|
-
t.pattern = "./test/**/*_spec.rb" # don't need this, it's default.
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
namespace :test do
|
|
9
|
-
desc "Test bytcode"
|
|
10
|
-
task :bytecode do
|
|
11
|
-
puts `bin/mtl_simu test/bytecode/test.mtl`
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
3
|
|
|
15
|
-
|
|
16
|
-
task :default => :test
|
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
17
5
|
|
|
18
|
-
|
|
19
|
-
task :run do
|
|
20
|
-
`rackup -p 9090`
|
|
21
|
-
end
|
|
6
|
+
task :default => :spec
|
|
@@ -433,7 +433,7 @@ On suppose l’existence d’une fonction ‘rand’ qui retourne un nombre alé
|
|
|
433
433
|
Random notes of stuff I came accross while developing
|
|
434
434
|
|
|
435
435
|
### Leds
|
|
436
|
-
Thank
|
|
436
|
+
Thank good it's RGB: Led 0 - 4, Color RGB
|
|
437
437
|
|
|
438
438
|
led 0 0x000000; //black
|
|
439
439
|
led 0 0x0000FF; //blue
|
|
@@ -446,6 +446,7 @@ Thank god it's RGB: Led 0 - 4, Color RGB
|
|
|
446
446
|
|
|
447
447
|
|
|
448
448
|
### Ears
|
|
449
|
+
One loop is 15 ticks
|
|
449
450
|
|
|
450
451
|
### Custom functions
|
|
451
452
|
|
data/bytecode/Rakefile
ADDED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
+
MTL_FILE = ".mtlrc"
|
|
4
|
+
|
|
5
|
+
if File.exists?(MTL_FILE)
|
|
6
|
+
File.read(MTL_FILE).split("\n").each do |line|
|
|
7
|
+
var, *data = line.split("=")
|
|
8
|
+
ENV[var] = data.join
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
3
12
|
BIN_NAME = File.basename(__FILE__)
|
|
4
13
|
BIN_PATH = File.dirname(__FILE__)
|
|
5
14
|
BIN = File.join( File.expand_path("../ext/mtl", BIN_PATH), BIN_NAME)
|
|
@@ -14,9 +14,9 @@ file = ARGV.first
|
|
|
14
14
|
dir = File.dirname(file)
|
|
15
15
|
File.open(TMP, 'w') do |out|
|
|
16
16
|
File.open(file).each_line do |line|
|
|
17
|
-
if line =~
|
|
17
|
+
if line =~ /\A#include "([^"]+)"/
|
|
18
18
|
line = `cat #{dir}/#{$1}.mtl`
|
|
19
19
|
end
|
|
20
20
|
out.puts line
|
|
21
21
|
end
|
|
22
|
-
end
|
|
22
|
+
end
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
+
MTL_FILE = ".mtlrc"
|
|
4
|
+
|
|
5
|
+
if File.exists?(MTL_FILE)
|
|
6
|
+
File.read(MTL_FILE).split("\n").each do |line|
|
|
7
|
+
var, *data = line.split("=")
|
|
8
|
+
ENV[var] = data.join
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
3
12
|
BIN_NAME = File.basename(__FILE__)
|
|
4
13
|
BIN_PATH = File.dirname(__FILE__)
|
|
5
14
|
BIN = File.join( File.expand_path("../ext/mtl", BIN_PATH), BIN_NAME)
|
data/bytecode/lib/buffer.mtl
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
//###############################################
|
|
2
2
|
//---------------------- Buffer -------------------------------
|
|
3
3
|
|
|
4
|
+
// #### LEDS
|
|
5
|
+
// Buffers 0 - 9, where 0-4 are used for onetime, and 5-9 for loop playback.
|
|
6
|
+
|
|
7
|
+
// #### EARS
|
|
8
|
+
// Buffers 10 - 13, where 10 & 11 are used for onetime, and 12 & 13 for loop playback.
|
|
9
|
+
|
|
4
10
|
var buffers;;
|
|
5
11
|
type BUFFER=[valB stepB lenB posB loopB];;
|
|
6
12
|
|
data/bytecode/lib/button.mtl
CHANGED
|
@@ -1,27 +1,33 @@
|
|
|
1
1
|
//###############################################
|
|
2
2
|
//------------------- Button --------------------
|
|
3
3
|
|
|
4
|
-
const BUTTON_REBOOT =
|
|
4
|
+
const BUTTON_REBOOT = 3000;; //ms MIN 50ms
|
|
5
5
|
var button_pressed = 0;;
|
|
6
|
+
|
|
6
7
|
fun checkButton=
|
|
7
8
|
if (button2 > 0) then
|
|
8
9
|
(
|
|
9
|
-
|
|
10
|
-
if button_pressed == 1 then
|
|
10
|
+
if button_pressed == 0 then
|
|
11
11
|
(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
set button_pressed = time_ms
|
|
13
|
+
)
|
|
14
|
+
else if (time_ms - button_pressed) > BUTTON_REBOOT then
|
|
15
15
|
(
|
|
16
|
-
buffersFill 0 4 "\
|
|
16
|
+
buffersFill 0 4 "\255"
|
|
17
17
|
)
|
|
18
18
|
)
|
|
19
19
|
//reboot only when button not pressed, otherwise we get into setup mode
|
|
20
|
-
else if button_pressed >
|
|
20
|
+
else if button_pressed > 0 then
|
|
21
21
|
(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
if (time_ms - button_pressed) > BUTTON_REBOOT then
|
|
23
|
+
(
|
|
24
|
+
exit;
|
|
25
|
+
set button_pressed = 0
|
|
26
|
+
)
|
|
27
|
+
else
|
|
28
|
+
(
|
|
29
|
+
httprequest "GET" buttonPressedUrl (time_ms - button_pressed) "" #_cbHttp HTTP_NORMAL;
|
|
30
|
+
set button_pressed = 0
|
|
31
|
+
)
|
|
26
32
|
)
|
|
27
33
|
;;
|
data/bytecode/lib/ear.mtl
CHANGED
|
@@ -46,10 +46,10 @@ fun earRead index=
|
|
|
46
46
|
if ear.dir != EAR_STOP && lastDuration > 1000 && totalDuration < 1450 then
|
|
47
47
|
(
|
|
48
48
|
set ear.pos = earNorm (ear.dir - 1) / 2; // either 0 or 16
|
|
49
|
-
bufferFill 0 "\100"
|
|
50
|
-
log "reset" {index lastDuration totalDuration ear.dir ear.pos}
|
|
49
|
+
bufferFill 0 "\100"
|
|
50
|
+
// log "reset" {index lastDuration totalDuration ear.dir ear.pos}
|
|
51
51
|
);
|
|
52
|
-
log "moved" {index ear.lastTime ear.lastTime2 ear.lastRead ear.pos ear.shouldPos ear.dir };
|
|
52
|
+
// log "moved" {index ear.lastTime ear.lastTime2 ear.lastRead ear.pos ear.shouldPos ear.dir };
|
|
53
53
|
|
|
54
54
|
set ear.lastTime2 = ear.lastTime;
|
|
55
55
|
set ear.lastTime = currentTime
|
data/bytecode/lib/led.mtl
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//###############################################
|
|
2
|
+
//------------------ PING ----------------------
|
|
3
|
+
const PING_CHECK_FQ = 5000;; //ms -> 5s
|
|
4
|
+
const PING_PARAMS = "";;
|
|
5
|
+
|
|
6
|
+
var ping_last_check = 0;;
|
|
7
|
+
|
|
8
|
+
fun pingCheck=
|
|
9
|
+
let PING_CHECK_FQ -> ping_check_fq in
|
|
10
|
+
if ((time_ms - ping_last_check) > ping_check_fq) then
|
|
11
|
+
(
|
|
12
|
+
httprequest "GET" (pingUrl PING_PARAMS) "" #_cbHttp HTTP_NORMAL;
|
|
13
|
+
set ping_last_check = time_ms
|
|
14
|
+
)
|
|
15
|
+
;;
|
|
16
|
+
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
var lrec;;
|
|
2
|
+
var recording = 0;;
|
|
3
|
+
var recordingStartedAt = 0;;
|
|
4
|
+
var recSeconds = 0;;
|
|
5
|
+
|
|
6
|
+
var buff;;
|
|
7
|
+
var buffx;;
|
|
8
|
+
var buffy;;
|
|
9
|
+
|
|
10
|
+
//-------------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
fun sqrt_ i i0 i1=
|
|
13
|
+
let (i0+i1)>>1 -> m in
|
|
14
|
+
if m==i0 then i0
|
|
15
|
+
else if m*m>i then sqrt_ i i0 m else sqrt_ i m i1;;
|
|
16
|
+
|
|
17
|
+
fun sqrt i=
|
|
18
|
+
sqrt_ i 0 256;;
|
|
19
|
+
|
|
20
|
+
fun _cbrec s=
|
|
21
|
+
let 255-(Iecholn sqrt recVol s 0) -> vol in
|
|
22
|
+
let 255-((vol*vol)>>8) -> vol in
|
|
23
|
+
let vol<<16 -> vol in
|
|
24
|
+
(
|
|
25
|
+
led 1 vol; led 2 vol; led 3 vol
|
|
26
|
+
);
|
|
27
|
+
set lrec=s::lrec;
|
|
28
|
+
0;;
|
|
29
|
+
|
|
30
|
+
fun itobin4 i=
|
|
31
|
+
let strnew 4 -> s in
|
|
32
|
+
(
|
|
33
|
+
strset s 0 i;
|
|
34
|
+
strset s 1 i>>8;
|
|
35
|
+
strset s 2 i>>16;
|
|
36
|
+
strset s 3 i>>24;
|
|
37
|
+
s
|
|
38
|
+
);;
|
|
39
|
+
|
|
40
|
+
fun liststrlen l r= if l==nil then r else liststrlen tl l r+strlen hd l;;
|
|
41
|
+
|
|
42
|
+
fun mkriff ldata=
|
|
43
|
+
let Iecholn liststrlen ldata 0 -> len in
|
|
44
|
+
(strcatlist "RIFF"::(itobin4 len+52)::"WAVEfmt \$14\0\0\0\$11\0\1\0\$40\$1f\0\0\$d7\$0f\0\0\0\1\4\0\2\0\$f9\01"::
|
|
45
|
+
"fact\4\0\0\0"::(itobin4 (len>>8)*505)::"data"::(itobin4 len)::nil)::ldata
|
|
46
|
+
;;
|
|
47
|
+
|
|
48
|
+
fun recriff =
|
|
49
|
+
// rev -> reverse list
|
|
50
|
+
let mkriff rev lrec nil -> res in
|
|
51
|
+
(
|
|
52
|
+
set lrec=nil;
|
|
53
|
+
res
|
|
54
|
+
)
|
|
55
|
+
;;
|
|
56
|
+
|
|
57
|
+
fun recordingStart sec=
|
|
58
|
+
recStop;
|
|
59
|
+
loopBufferFill 9 "\0\200";
|
|
60
|
+
set recording = 1;
|
|
61
|
+
set recSeconds =sec;
|
|
62
|
+
set lrec = nil;
|
|
63
|
+
set recordingStartedAt = time_ms;
|
|
64
|
+
recStart 8000 0 #_cbrec
|
|
65
|
+
;;
|
|
66
|
+
|
|
67
|
+
fun httprequestBinary url postdata cb type=
|
|
68
|
+
httprequestRaw "POST" url "Content-Type:application/octet-stream\13\nContent-Disposition: attachment;filename=recording\13\nContent-Transfer-Encoding: binary\13\n" postdata cb type
|
|
69
|
+
;;
|
|
70
|
+
|
|
71
|
+
fun recordingStop =
|
|
72
|
+
set recording = 0;
|
|
73
|
+
recStop;
|
|
74
|
+
loopBufferFill 9 "\0";
|
|
75
|
+
let recriff -> wavfile in
|
|
76
|
+
(
|
|
77
|
+
httprequestBinary recordingFinishedUrl strcatlist wavfile #_cbHttp HTTP_NORMAL;
|
|
78
|
+
0
|
|
79
|
+
)
|
|
80
|
+
;;
|
|
81
|
+
|
|
82
|
+
fun recordingCheck =
|
|
83
|
+
if recording == 1 && recSeconds > 0 && (time_ms - recordingStartedAt) > recSeconds then
|
|
84
|
+
(
|
|
85
|
+
recordingStop
|
|
86
|
+
)
|
|
87
|
+
;;
|
data/bytecode/lib/rfid.mtl
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//###############################################
|
|
2
2
|
//--------------- RFID ------------------------
|
|
3
3
|
|
|
4
|
-
const RFID_CHECK_FQ =
|
|
4
|
+
const RFID_CHECK_FQ = 200;; //ms MIN 50ms
|
|
5
5
|
const RFID_STOP_BYTE = 0xFF;;
|
|
6
6
|
const RFID_ID_START = "\208\2\26";; // 0xd0 0x02 0x1a
|
|
7
7
|
const RFID_ID_FALSE = "\0\0\0\0\0\0\0\0\v";;
|
|
@@ -16,31 +16,13 @@ fun checkRFID=
|
|
|
16
16
|
let rfidGet -> rfid in
|
|
17
17
|
if (rfid != nil) then
|
|
18
18
|
(
|
|
19
|
-
if ((strstr rfid
|
|
20
|
-
(
|
|
21
|
-
httprequest "PUT" playerUrl rfid "" #_cbHttp HTTP_NORMAL;
|
|
22
|
-
0
|
|
23
|
-
)
|
|
24
|
-
else if ((strstr rfid RFID_ID_FALSE 0) == 0) then
|
|
19
|
+
if ((strstr rfid RFID_ID_FALSE 0) == 0) then
|
|
25
20
|
(
|
|
26
21
|
0
|
|
27
22
|
)
|
|
28
23
|
else
|
|
29
24
|
(
|
|
30
|
-
|
|
31
|
-
for index = 0; index < len; index + 1 do
|
|
32
|
-
(
|
|
33
|
-
let strget rfid index -> data_byte in
|
|
34
|
-
(
|
|
35
|
-
if (data_byte != RFID_STOP_BYTE) then
|
|
36
|
-
set rfid_data = strcat rfid_data ctoh data_byte
|
|
37
|
-
else if ((strlen rfid_data) > 0) then
|
|
38
|
-
(
|
|
39
|
-
httprequest "POST" eventUrl rfid_data "" #_cbHttp HTTP_NORMAL;
|
|
40
|
-
set rfid_data = ""
|
|
41
|
-
)
|
|
42
|
-
)
|
|
43
|
-
);
|
|
25
|
+
httprequest "PUT" rfidUrl rfid "" #_cbHttp HTTP_NORMAL;
|
|
44
26
|
0
|
|
45
27
|
)
|
|
46
28
|
);
|
data/bytecode/main.mtl
CHANGED
|
@@ -2,36 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
proto main 0;;
|
|
4
4
|
proto earsInit 0;;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
#include "
|
|
8
|
-
#include "
|
|
9
|
-
#include "
|
|
10
|
-
#include "
|
|
11
|
-
#include "
|
|
12
|
-
#include "
|
|
13
|
-
#include "
|
|
14
|
-
#include "
|
|
5
|
+
proto evalTrame 1;;
|
|
6
|
+
|
|
7
|
+
#include "src/lib/var"
|
|
8
|
+
#include "src/lib/util"
|
|
9
|
+
#include "src/lib/cfg"
|
|
10
|
+
#include "src/lib/arp"
|
|
11
|
+
#include "src/lib/udp"
|
|
12
|
+
#include "src/lib/tcp"
|
|
13
|
+
#include "src/lib/dns"
|
|
14
|
+
#include "src/lib/http"
|
|
15
|
+
#include "src/lib/dhcp"
|
|
16
|
+
#include "src/lib/wav"
|
|
15
17
|
#include "lib/data_helper"
|
|
16
18
|
#include "lib/buffer"
|
|
17
|
-
#include "
|
|
19
|
+
#include "src/lib/wifi"
|
|
18
20
|
|
|
19
|
-
//-------------------- HTTP
|
|
20
|
-
fun
|
|
21
|
-
strcatlist confGetServerUrl::"/
|
|
21
|
+
//-------------------- HTTP Endpoints
|
|
22
|
+
fun logUrl=
|
|
23
|
+
strcatlist confGetServerUrl::"/api/log.jsp"::nil;;
|
|
22
24
|
|
|
23
|
-
fun
|
|
24
|
-
strcatlist confGetServerUrl::"/
|
|
25
|
+
fun buttonPressedUrl data=
|
|
26
|
+
strcatlist confGetServerUrl::"/api/button-pressed.jsp?duration="::(itoa data)::nil;;
|
|
25
27
|
|
|
26
|
-
fun
|
|
27
|
-
strcatlist confGetServerUrl::"/
|
|
28
|
+
fun recordingFinishedUrl =
|
|
29
|
+
strcatlist confGetServerUrl::"/api/recording-finished.jsp"::nil;;
|
|
28
30
|
|
|
29
|
-
fun
|
|
30
|
-
strcatlist confGetServerUrl::"/
|
|
31
|
+
fun playbackFinishedUrl =
|
|
32
|
+
strcatlist confGetServerUrl::"/api/playback-finished.jsp"::nil;;
|
|
33
|
+
|
|
34
|
+
fun playbackLoadFinishedUrl =
|
|
35
|
+
strcatlist confGetServerUrl::"/api/playback-load-finished.jsp"::nil;;
|
|
36
|
+
|
|
37
|
+
fun rfidUrl tag=
|
|
38
|
+
strcatlist confGetServerUrl::"/api/rfid.jsp?id="::(webmac tag)::nil;;
|
|
39
|
+
|
|
40
|
+
fun pingUrl params=
|
|
41
|
+
strcatlist confGetServerUrl::"/api/ping.jsp?"::params::nil;;
|
|
42
|
+
|
|
43
|
+
fun streamUrl filename=
|
|
44
|
+
strcatlist confGetServerUrl::"/streams/"::filename::nil;;
|
|
45
|
+
|
|
46
|
+
//-------------------- HTTP
|
|
31
47
|
|
|
32
48
|
fun _cbdummyhttp http res=
|
|
33
|
-
0
|
|
34
|
-
|
|
49
|
+
0;;
|
|
50
|
+
|
|
51
|
+
fun _cbHttp http res=
|
|
52
|
+
evalTrame res;
|
|
53
|
+
0;;
|
|
54
|
+
|
|
55
|
+
#include "lib/record"
|
|
56
|
+
#include "lib/ping"
|
|
35
57
|
|
|
36
58
|
fun evalTrame res=
|
|
37
59
|
let parseResponse httpgetcontent res -> bufferlist in
|
|
@@ -81,17 +103,46 @@ fun evalTrame res=
|
|
|
81
103
|
_bufferFill index+10 step loop val;
|
|
82
104
|
0
|
|
83
105
|
)
|
|
106
|
+
// recording start
|
|
107
|
+
else if code == 50 then
|
|
108
|
+
(
|
|
109
|
+
recordingStart 1000 * (strget val 0) //TODO only 1 - 9 possible??
|
|
110
|
+
)
|
|
111
|
+
// recording stop
|
|
112
|
+
else if code == 51 then
|
|
113
|
+
(
|
|
114
|
+
recordingStop
|
|
115
|
+
)
|
|
116
|
+
// play start
|
|
117
|
+
else if code == 60 then
|
|
118
|
+
(
|
|
119
|
+
// playbackStart
|
|
120
|
+
0
|
|
121
|
+
)
|
|
122
|
+
// play stop
|
|
123
|
+
else if code == 61 then
|
|
124
|
+
(
|
|
125
|
+
// playbackStop
|
|
126
|
+
0
|
|
127
|
+
)
|
|
128
|
+
// play load
|
|
129
|
+
else if code == 62 then
|
|
130
|
+
(
|
|
131
|
+
// playbackLoad val
|
|
132
|
+
0
|
|
133
|
+
)
|
|
134
|
+
// play stream
|
|
135
|
+
else if code == 63 then
|
|
136
|
+
(
|
|
137
|
+
// playbackStream val
|
|
138
|
+
0
|
|
139
|
+
)
|
|
84
140
|
)
|
|
85
141
|
)
|
|
86
142
|
;;
|
|
87
143
|
|
|
88
|
-
fun _cbHttp http res=
|
|
89
|
-
evalTrame res;
|
|
90
|
-
0
|
|
91
|
-
;;
|
|
92
|
-
|
|
93
144
|
//inputs
|
|
94
|
-
#include "lib/rfid"
|
|
145
|
+
// #include "lib/rfid"
|
|
95
146
|
#include "lib/button"
|
|
96
147
|
|
|
97
148
|
//outputs
|
|
@@ -104,11 +155,17 @@ fun loop=
|
|
|
104
155
|
wifiRun;
|
|
105
156
|
wifiCheck;
|
|
106
157
|
|
|
107
|
-
checkRFID;
|
|
158
|
+
// checkRFID;
|
|
108
159
|
checkButton;
|
|
160
|
+
|
|
109
161
|
setLeds;
|
|
110
162
|
earRead 0;
|
|
111
163
|
earRead 1;
|
|
164
|
+
|
|
165
|
+
pingCheck;
|
|
166
|
+
// wavtime;
|
|
167
|
+
|
|
168
|
+
recordingCheck;
|
|
112
169
|
0;;
|
|
113
170
|
|
|
114
171
|
//###############################################
|
|
@@ -30,7 +30,9 @@ fun httpsendreq ip x=
|
|
|
30
30
|
);
|
|
31
31
|
0;;
|
|
32
32
|
|
|
33
|
-
fun
|
|
33
|
+
fun httprequestRaw verb url header postdata cb type=
|
|
34
|
+
//set postdata = strcatlist "--AaB03x\13\ncontent-disposition: form-dataContent-Transfer-Encoding: binary\13\n\13\n"::postdata::"\13\n--AaB03x--"::nil;
|
|
35
|
+
// Content-Type:application/octet-stream\13\nContent-Disposition: attachment;filename=recording\13\nContent-Transfer-Encoding: binary\13\n
|
|
34
36
|
let cuturl url ->[host port path] in
|
|
35
37
|
//let if confGetProxy then strcatlist "http://"::host::":"::(itoa port)::path::nil else path -> path in //Icy-MetaData:1\13\n
|
|
36
38
|
//let if confGetProxy then webip confGetProxyip else host -> host in
|
|
@@ -38,12 +40,11 @@ fun httprequest verb url postdata cb type=
|
|
|
38
40
|
|
|
39
41
|
let strcatlist verb::" "::path::" HTTP/1.0\13\nUser-Agent: MTL\13\nPragma: no-cache\13\nIcy-MetaData:1\13\nHost: "::host::"\13\n"::
|
|
40
42
|
if postdata==nil then "\13\n"::nil
|
|
41
|
-
else "Content-length: "::(itoa strlen postdata)::"\13\n\13\n"::postdata::nil
|
|
43
|
+
else header::"Content-length: "::(itoa strlen postdata)::"\13\n\13\n"::postdata::nil
|
|
42
44
|
-> request in // création de la chaîne requête
|
|
43
45
|
|
|
44
46
|
let [outputH:request indexH:0 cbH:cb typeH:type stateH:HTTP_SOLVE aliveH:time_ms] -> httpreq in // création de la structure requête
|
|
45
47
|
(
|
|
46
|
-
// Secho "HTTPREQUEST host =";Secholn host;
|
|
47
48
|
if isip host 0 then httpsendreq host [port httpreq]
|
|
48
49
|
else
|
|
49
50
|
(
|
|
@@ -53,6 +54,9 @@ fun httprequest verb url postdata cb type=
|
|
|
53
54
|
httpreq // on retourne la structure requête pour pouvoir éventuellement l'interrompre en cours de route
|
|
54
55
|
);;
|
|
55
56
|
|
|
57
|
+
fun httprequest verb url postdata cb type=
|
|
58
|
+
httprequestRaw verb url "" postdata cb type
|
|
59
|
+
;;
|
|
56
60
|
|
|
57
61
|
var http_sep="\13\n\13\n";; // séparateur entre l'en-tête et le corps de la réponse à une requête
|
|
58
62
|
|
|
@@ -69,6 +73,14 @@ fun httpgetcontent res =
|
|
|
69
73
|
if i==nil then nil
|
|
70
74
|
else strsub res i+strlen http_sep strlen res;;
|
|
71
75
|
|
|
76
|
+
fun httpabort httpreq=
|
|
77
|
+
closetcp httpreq.cnxH;; // on ferme la socket de la requête
|
|
78
|
+
|
|
79
|
+
fun httpenable httpreq v=
|
|
80
|
+
enabletcp httpreq.cnxH v;;
|
|
81
|
+
fun httpenabledP httpreq=
|
|
82
|
+
enabledtcpP httpreq.cnxH;;
|
|
83
|
+
|
|
72
84
|
// Cryptage des trames
|
|
73
85
|
fun bintoi3 s x=((strget s x)<<16)+((strget s x+1)<<8)+(strget s x+2);;
|
|
74
86
|
|
|
@@ -4,6 +4,7 @@ fun setleds col= for i=0;i<5 do led i col;;
|
|
|
4
4
|
fun strstr s p i=strfind s i p 0 nil;;
|
|
5
5
|
fun listlen l=if l==nil then 0 else 1+listlen tl l;;
|
|
6
6
|
fun listrem l x=if l!=nil then if x==hd l then tl l else (hd l)::listrem tl l x;;
|
|
7
|
+
fun slistlen l= if l==nil then 0 else (strlen hd l)+slistlen tl l;;
|
|
7
8
|
|
|
8
9
|
fun listtostr l=
|
|
9
10
|
let strnew listlen l -> s in
|
|
@@ -71,4 +72,6 @@ fun useparamip val=
|
|
|
71
72
|
(
|
|
72
73
|
_useparamip ip 0 val 0;
|
|
73
74
|
ip
|
|
74
|
-
);;
|
|
75
|
+
);;
|
|
76
|
+
|
|
77
|
+
fun conc p q=if p==nil then q else (hd p)::conc tl p q;;
|