nabaztag_hack_kit 0.0.2
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 +7 -0
- data/.travis.yml +3 -0
- data/CHANGELOG.md +11 -0
- data/Gemfile +4 -0
- data/README.md +119 -0
- data/Rakefile +21 -0
- data/bin/mtl_comp +41 -0
- data/bin/mtl_merge +22 -0
- data/bin/mtl_simu +40 -0
- data/bytecode/lib/buffer.mtl +109 -0
- data/bytecode/lib/button.mtl +27 -0
- data/bytecode/lib/data_helper.mtl +88 -0
- data/bytecode/lib/ear.mtl +90 -0
- data/bytecode/lib/led.mtl +33 -0
- data/bytecode/lib/rfid.mtl +50 -0
- data/bytecode/main.mtl +129 -0
- data/config.ru +6 -0
- data/ext/bytecode/Commands.md +172 -0
- data/ext/bytecode/Docs.md +488 -0
- data/ext/bytecode/README.md +5 -0
- data/ext/bytecode/lib/arp.mtl +159 -0
- data/ext/bytecode/lib/cfg.mtl +74 -0
- data/ext/bytecode/lib/choreos.mtl +1487 -0
- data/ext/bytecode/lib/dhcp.mtl +152 -0
- data/ext/bytecode/lib/dns.mtl +89 -0
- data/ext/bytecode/lib/http.mtl +84 -0
- data/ext/bytecode/lib/tcp.mtl +340 -0
- data/ext/bytecode/lib/udp.mtl +49 -0
- data/ext/bytecode/lib/util.mtl +74 -0
- data/ext/bytecode/lib/var.mtl +15 -0
- data/ext/bytecode/lib/wifi.mtl +243 -0
- data/ext/bytecode/nominal-ping.mtl +5828 -0
- data/ext/mtl/Makefile +42 -0
- data/ext/mtl/README.md +13 -0
- data/ext/mtl/bc.cpp +1891 -0
- data/ext/mtl/conf.bin.sans_password +0 -0
- data/ext/mtl/config.txt +5 -0
- data/ext/mtl/dumpbc.c +2566 -0
- data/ext/mtl/extconf.rb +1 -0
- data/ext/mtl/linux_simu.c +271 -0
- data/ext/mtl/linux_simuaudio.c +16 -0
- data/ext/mtl/linux_simuaudio.h +18 -0
- data/ext/mtl/linux_simunet.c +620 -0
- data/ext/mtl/linux_simunet.h +7 -0
- data/ext/mtl/log.c +297 -0
- data/ext/mtl/log.h +20 -0
- data/ext/mtl/main_compiler.cpp +104 -0
- data/ext/mtl/main_simu.cpp +221 -0
- data/ext/mtl/mp3/GTKANAL.H +97 -0
- data/ext/mtl/mp3/LAYER3.C +2090 -0
- data/ext/mtl/mp3/TABINIT.C +82 -0
- data/ext/mtl/mp3/common.c +265 -0
- data/ext/mtl/mp3/dct64_i386.c +316 -0
- data/ext/mtl/mp3/decode_i386.c +155 -0
- data/ext/mtl/mp3/huffman.h +332 -0
- data/ext/mtl/mp3/interface.c +258 -0
- data/ext/mtl/mp3/mpg123.h +182 -0
- data/ext/mtl/mp3/mpglib.h +44 -0
- data/ext/mtl/properties.c +293 -0
- data/ext/mtl/properties.h +10 -0
- data/ext/mtl/simu.c +750 -0
- data/ext/mtl/simuaudio.c +662 -0
- data/ext/mtl/simuaudio.h +74 -0
- data/ext/mtl/simunet.c +400 -0
- data/ext/mtl/simunet.h +30 -0
- data/ext/mtl/utils/correct_const.sh +34 -0
- data/ext/mtl/vaudio.c +677 -0
- data/ext/mtl/vaudio.h +46 -0
- data/ext/mtl/vbc.h +160 -0
- data/ext/mtl/vbc_str.h +166 -0
- data/ext/mtl/vcomp/Makefile +29 -0
- data/ext/mtl/vcomp/bootstrap.cpp +89 -0
- data/ext/mtl/vcomp/compiler.cpp +470 -0
- data/ext/mtl/vcomp/compiler.h +200 -0
- data/ext/mtl/vcomp/compiler_file.cpp +929 -0
- data/ext/mtl/vcomp/compiler_prog.cpp +250 -0
- data/ext/mtl/vcomp/compiler_term.cpp +1053 -0
- data/ext/mtl/vcomp/compiler_type.cpp +872 -0
- data/ext/mtl/vcomp/compiler_var.cpp +289 -0
- data/ext/mtl/vcomp/file.cpp +79 -0
- data/ext/mtl/vcomp/file.h +39 -0
- data/ext/mtl/vcomp/filesystem.h +14 -0
- data/ext/mtl/vcomp/interpreter.cpp +85 -0
- data/ext/mtl/vcomp/interpreter.h +121 -0
- data/ext/mtl/vcomp/memory.cpp +241 -0
- data/ext/mtl/vcomp/memory.h +326 -0
- data/ext/mtl/vcomp/param.h +95 -0
- data/ext/mtl/vcomp/parser.cpp +427 -0
- data/ext/mtl/vcomp/parser.h +97 -0
- data/ext/mtl/vcomp/parser_xml.cpp +124 -0
- data/ext/mtl/vcomp/prodbuffer.cpp +125 -0
- data/ext/mtl/vcomp/prodbuffer.h +42 -0
- data/ext/mtl/vcomp/resource.h +17 -0
- data/ext/mtl/vcomp/stdlib_core.cpp +122 -0
- data/ext/mtl/vcomp/terminal.cpp +73 -0
- data/ext/mtl/vcomp/terminal.h +30 -0
- data/ext/mtl/vcomp/util.cpp +48 -0
- data/ext/mtl/vcomp/util.h +31 -0
- data/ext/mtl/vinterp.c +1349 -0
- data/ext/mtl/vinterp.h +11 -0
- data/ext/mtl/vloader.c +127 -0
- data/ext/mtl/vloader.h +31 -0
- data/ext/mtl/vlog.c +589 -0
- data/ext/mtl/vlog.h +69 -0
- data/ext/mtl/vmem.c +424 -0
- data/ext/mtl/vmem.h +107 -0
- data/ext/mtl/vnet.c +255 -0
- data/ext/mtl/vnet.h +19 -0
- data/lib/nabaztag_hack_kit/message/api.rb +39 -0
- data/lib/nabaztag_hack_kit/message/helper.rb +39 -0
- data/lib/nabaztag_hack_kit/message.rb +36 -0
- data/lib/nabaztag_hack_kit/server.rb +50 -0
- data/lib/nabaztag_hack_kit/version.rb +3 -0
- data/lib/nabaztag_hack_kit.rb +4 -0
- data/nabaztag_hack_kit.gemspec +29 -0
- data/public/bytecode.bin +0 -0
- data/test/bytecode/helper.mtl +60 -0
- data/test/bytecode/native.mtl +28 -0
- data/test/bytecode/test.mtl +221 -0
- data/test/spec_helper.rb +5 -0
- data/test/unit/message_spec.rb +56 -0
- metadata +209 -0
@@ -0,0 +1,74 @@
|
|
1
|
+
fun setleds col= for i=0;i<5 do led i col;;
|
2
|
+
|
3
|
+
// --------------- UTIL
|
4
|
+
fun strstr s p i=strfind s i p 0 nil;;
|
5
|
+
fun listlen l=if l==nil then 0 else 1+listlen tl l;;
|
6
|
+
fun listrem l x=if l!=nil then if x==hd l then tl l else (hd l)::listrem tl l x;;
|
7
|
+
|
8
|
+
fun listtostr l=
|
9
|
+
let strnew listlen l -> s in
|
10
|
+
let 0->i in
|
11
|
+
(
|
12
|
+
for p=l;p!=nil;tl p do
|
13
|
+
(
|
14
|
+
strset s i hd p;
|
15
|
+
set i=i+1
|
16
|
+
);
|
17
|
+
s
|
18
|
+
);;
|
19
|
+
|
20
|
+
|
21
|
+
fun countpattern s p i=
|
22
|
+
let strstr s p i -> j in
|
23
|
+
if j==nil then 0
|
24
|
+
else 1+countpattern s p j+strlen p;;
|
25
|
+
|
26
|
+
fun strreplace2 sn s p v i id=
|
27
|
+
if i<strlen s then
|
28
|
+
let strstr s p i -> j in
|
29
|
+
let if j==nil then strlen s else j -> k in
|
30
|
+
(
|
31
|
+
strcpy sn id s i k-i;
|
32
|
+
if j!=nil then strcpy sn id+k-i v 0 nil;
|
33
|
+
strreplace2 sn s p v k+strlen p id+k-i+strlen v
|
34
|
+
);;
|
35
|
+
|
36
|
+
fun strreplace s p v=
|
37
|
+
let countpattern s p 0 -> i in
|
38
|
+
if !i then s
|
39
|
+
else let strnew (strlen s) + ((strlen v)-(strlen p))*i -> sn in
|
40
|
+
(
|
41
|
+
strreplace2 sn s p v 0 0;
|
42
|
+
sn
|
43
|
+
);;
|
44
|
+
|
45
|
+
fun rev p q=if p==nil then q else rev tl p (hd p)::q;;
|
46
|
+
|
47
|
+
// remfromlist same as listrem!!!
|
48
|
+
fun remfromlist l t= if l!=nil then if t==hd l then tl l else (hd l)::remfromlist tl l t;;
|
49
|
+
|
50
|
+
fun insert x l f=
|
51
|
+
if l==nil then x::nil
|
52
|
+
else let call f [x hd l] -> r in
|
53
|
+
if r>0 then (hd l)::insert x tl l f
|
54
|
+
else if r<0 then x::l
|
55
|
+
else insert x tl l f;;
|
56
|
+
|
57
|
+
fun sort l f= if l!=nil then insert hd l sort tl l f f;;
|
58
|
+
|
59
|
+
fun select l a f= if l!=nil then let hd l-> x in if call f [x a] then x::select tl l a f else select tl l a f;;
|
60
|
+
|
61
|
+
fun _useparamip s i val j=
|
62
|
+
if i<4 then
|
63
|
+
let strstr val "." j -> k in
|
64
|
+
(
|
65
|
+
strset s i atoi strsub val j if k==nil then nil else k-j;
|
66
|
+
_useparamip s i+1 val if k==nil then strlen val else k+1
|
67
|
+
);;
|
68
|
+
|
69
|
+
fun useparamip val=
|
70
|
+
let strnew 4 -> ip in
|
71
|
+
(
|
72
|
+
_useparamip ip 0 val 0;
|
73
|
+
ip
|
74
|
+
);;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
var http_prefurl="http://";;
|
2
|
+
|
3
|
+
const HTTP_NORMAL=0;;
|
4
|
+
const HTTP_STREAM=1;;
|
5
|
+
const HTTP_DIRECT=2;;
|
6
|
+
|
7
|
+
const HTTP_SOLVE=0;;
|
8
|
+
const HTTP_REACH=1;;
|
9
|
+
const HTTP_CONNECTED=2;;
|
10
|
+
|
11
|
+
var lasthttpevent;;
|
12
|
+
|
13
|
+
type Httpreq=[cnxH inputH outputH indexH cbH typeH stateH aliveH];;
|
14
|
+
|
15
|
+
const DNSLOCAL=1597;;
|
@@ -0,0 +1,243 @@
|
|
1
|
+
// ------------- Wifi
|
2
|
+
|
3
|
+
type Wifi=initW | gomasterW | masterW | gostationW _ | dhcpW _| stationW | reconnectW;;
|
4
|
+
var wifi;;
|
5
|
+
var wifitry;;
|
6
|
+
var wifiscans;;
|
7
|
+
|
8
|
+
const RT2501_S_BROKEN=0;;
|
9
|
+
const RT2501_S_IDLE=1;;
|
10
|
+
const RT2501_S_SCAN=2;;
|
11
|
+
const RT2501_S_CONNECTING=3;;
|
12
|
+
const RT2501_S_CONNECTED=4;;
|
13
|
+
const RT2501_S_MASTER=5;;
|
14
|
+
|
15
|
+
const IEEE80211_CRYPT_NONE=0;;
|
16
|
+
const IEEE80211_CRYPT_WEP64=1;;
|
17
|
+
const IEEE80211_CRYPT_WEP128=2;;
|
18
|
+
const IEEE80211_CRYPT_WPA=3;;
|
19
|
+
const IEEE80211_CRYPT_WPA_UNSUPPORTED=4;;
|
20
|
+
|
21
|
+
const IEEE80211_M_MANAGED=0;;
|
22
|
+
const IEEE80211_M_MASTER=1;;
|
23
|
+
|
24
|
+
const IEEE80211_AUTH_OPEN=0;;
|
25
|
+
const IEEE80211_AUTH_SHARED=1;;
|
26
|
+
|
27
|
+
fun _scanserialize l=
|
28
|
+
if l!=nil then
|
29
|
+
let hd l->[ssid mac bssid rssi channel rateset encryption] in
|
30
|
+
ssid::"\0"::mac::bssid::(itoh4 rssi)::(itoh4 channel)::(itoh4 rateset)::(itoh4 encryption)::
|
31
|
+
_scanserialize tl l;;
|
32
|
+
|
33
|
+
fun scanserialize l=
|
34
|
+
(itoh4 listlen l)::_scanserialize l;;
|
35
|
+
|
36
|
+
|
37
|
+
fun ssidlen s i=
|
38
|
+
if i>=strlen s then i
|
39
|
+
else if !strget s i then i
|
40
|
+
else ssidlen s i+1;;
|
41
|
+
|
42
|
+
fun scanunserialize s n i0=
|
43
|
+
if n>0 then
|
44
|
+
let ssidlen s i0 -> j in
|
45
|
+
let j+1->i in
|
46
|
+
[
|
47
|
+
strsub s i0 j-i0
|
48
|
+
strsub s i 6
|
49
|
+
strsub s i+6 6
|
50
|
+
htoi strsub s i+12 8
|
51
|
+
htoi strsub s i+20 8
|
52
|
+
htoi strsub s i+28 8
|
53
|
+
htoi strsub s i+36 8
|
54
|
+
]::scanunserialize s n-1 i+44;;
|
55
|
+
|
56
|
+
|
57
|
+
fun envmake =
|
58
|
+
strcatlist netip::netmask::netgateway::netdns::scanserialize wifiscans;;
|
59
|
+
|
60
|
+
fun envrestore s =
|
61
|
+
if s!=nil then
|
62
|
+
(
|
63
|
+
set netip=strsub s 0 4;
|
64
|
+
set netmask=strsub s 4 4;
|
65
|
+
set netgateway=strsub s 8 4;
|
66
|
+
set netdns=strsub s 12 4;
|
67
|
+
let htoi strsub s 16 8 -> nscan in
|
68
|
+
set wifiscans=scanunserialize s nscan 24;
|
69
|
+
0
|
70
|
+
);;
|
71
|
+
|
72
|
+
fun scancmpssid a b=
|
73
|
+
let a->[sa _ _ _ _ _ _] in
|
74
|
+
let b->[sb _ _ _ _ _ _] in
|
75
|
+
strcmp sa sb;;
|
76
|
+
|
77
|
+
|
78
|
+
fun wifiInit rescan=
|
79
|
+
set wifitry=nil;
|
80
|
+
let envget -> env in
|
81
|
+
if env==nil then
|
82
|
+
(
|
83
|
+
setleds 0xff00ff;
|
84
|
+
set wifi=initW;
|
85
|
+
if rescan then set wifiscans=nil;
|
86
|
+
if confGetDhcp then set netip=netip_empty
|
87
|
+
else
|
88
|
+
(
|
89
|
+
set netmask=confGetNetmask;
|
90
|
+
set netgateway=confGetNetgateway;
|
91
|
+
set netdns=confGetNetdns;
|
92
|
+
set netip=confGetNetip
|
93
|
+
);
|
94
|
+
0
|
95
|
+
)
|
96
|
+
else
|
97
|
+
(
|
98
|
+
setleds 0x00ff00;
|
99
|
+
set mymac=netMac;
|
100
|
+
set wifi=stationW;
|
101
|
+
envrestore env;
|
102
|
+
envset nil;
|
103
|
+
nil
|
104
|
+
);
|
105
|
+
0;;
|
106
|
+
|
107
|
+
var laststate;;
|
108
|
+
|
109
|
+
fun wifibyssid x v=let x->[s _ _ _ _ _ _] in (s!=nil)&& !strcmp v s;;
|
110
|
+
|
111
|
+
|
112
|
+
var retrytime;;
|
113
|
+
|
114
|
+
fun _wifiwepkey val i len=
|
115
|
+
if i<len then
|
116
|
+
(htoi strsub val i 2)::_wifiwepkey val i+2 len;;
|
117
|
+
|
118
|
+
fun wifiwepkey val=
|
119
|
+
let strlen val -> len in
|
120
|
+
if len==5 || len==13 then val
|
121
|
+
else let strreplace val ":" "" -> val in
|
122
|
+
let if len<10 then 0 else if len<26 then 5 else 13 -> len in
|
123
|
+
listtostr _wifiwepkey val 0 len<<1;;
|
124
|
+
|
125
|
+
fun wificrypttype crypt key=
|
126
|
+
if crypt==1 then if 5==strlen key then IEEE80211_CRYPT_WEP64 else IEEE80211_CRYPT_WEP128
|
127
|
+
else if crypt==2 then IEEE80211_CRYPT_WPA
|
128
|
+
else IEEE80211_CRYPT_NONE;;
|
129
|
+
|
130
|
+
fun wifiAuth=
|
131
|
+
setleds 0xff8000;
|
132
|
+
if wifiscans==nil then 0
|
133
|
+
else
|
134
|
+
let Iecholn confGetWificrypt -> crypt in
|
135
|
+
let confGetWifiauth -> auth in
|
136
|
+
let if crypt==1 then wifiwepkey confGetWifikey0
|
137
|
+
else if crypt==2 then confGetWifipmk -> key in
|
138
|
+
(
|
139
|
+
dump key;
|
140
|
+
set wifitry=time;
|
141
|
+
netAuth hd wifiscans Iecholn auth (Iecholn wificrypttype crypt key) key; //## ajouter les paramètres de crypto
|
142
|
+
1
|
143
|
+
);;
|
144
|
+
|
145
|
+
var master=0;;
|
146
|
+
|
147
|
+
fun wifiRun=
|
148
|
+
let netState -> state in
|
149
|
+
(
|
150
|
+
if state!=laststate then (Secho "wifi state=";Iecholn state);
|
151
|
+
let match wifi with
|
152
|
+
(stationW -> nil)
|
153
|
+
|(initW -> if state==RT2501_S_IDLE then
|
154
|
+
(
|
155
|
+
set mymac=MACecho netMac 0 1;
|
156
|
+
setleds 0xff8000;
|
157
|
+
if wifiscans==nil then
|
158
|
+
(
|
159
|
+
let confGetWifissid -> ssid in
|
160
|
+
let if strlen ssid then ssid else nil -> ssid in
|
161
|
+
let netScan ssid -> lscan in
|
162
|
+
let sort lscan #scancmpssid -> l in
|
163
|
+
let if ssid==nil then l else select l ssid #wifibyssid-> l in
|
164
|
+
dumpscan set wifiscans=l
|
165
|
+
);
|
166
|
+
if wifiAuth then
|
167
|
+
(
|
168
|
+
Secho confGetWifissid; Secholn ":-------------gostation";
|
169
|
+
gostationW [0 time]
|
170
|
+
)
|
171
|
+
)
|
172
|
+
)
|
173
|
+
|(gomasterW -> if state==RT2501_S_MASTER then
|
174
|
+
(
|
175
|
+
setleds 0x0000ff;
|
176
|
+
Secholn "-------------master";
|
177
|
+
startdhcpserver;
|
178
|
+
// startconfigserver 80;
|
179
|
+
masterW)
|
180
|
+
)
|
181
|
+
|(masterW -> if !master then
|
182
|
+
(
|
183
|
+
wifiInit 1;
|
184
|
+
resetudp;
|
185
|
+
netSetmode IEEE80211_M_MANAGED nil 11;
|
186
|
+
nil)
|
187
|
+
)
|
188
|
+
|(gostationW x-> if state==RT2501_S_CONNECTED then
|
189
|
+
(
|
190
|
+
Secholn "-------------dhcp";
|
191
|
+
if confGetDhcp then startdhcp;
|
192
|
+
startdnsclient;
|
193
|
+
dhcpW time
|
194
|
+
)
|
195
|
+
)
|
196
|
+
|(dhcpW t-> if netip!=netip_empty then
|
197
|
+
(
|
198
|
+
Secholn "-------------station";
|
199
|
+
stationW
|
200
|
+
)
|
201
|
+
else if (time-t)>3 then // retry dhcp client
|
202
|
+
(
|
203
|
+
startdhcp;
|
204
|
+
dhcpW time
|
205
|
+
)
|
206
|
+
)
|
207
|
+
|(reconnectW ->
|
208
|
+
netSetmode IEEE80211_M_MANAGED nil 11;
|
209
|
+
if wifiAuth then
|
210
|
+
(
|
211
|
+
Secho confGetWifissid; Secholn ":-------------gostation";
|
212
|
+
gostationW [0 time]
|
213
|
+
)
|
214
|
+
)
|
215
|
+
-> nwifi in
|
216
|
+
if nwifi!=nil then set wifi=nwifi;
|
217
|
+
set laststate=state
|
218
|
+
);
|
219
|
+
if retrytime!=time then
|
220
|
+
(
|
221
|
+
set retrytime=time;
|
222
|
+
nettime;
|
223
|
+
dnstime;
|
224
|
+
0
|
225
|
+
)
|
226
|
+
;;
|
227
|
+
|
228
|
+
fun wifiReady= match wifi with (stationW -> 1)|(_ -> 0);;
|
229
|
+
|
230
|
+
fun wifiConnected= match wifi with (stationW -> 1)|(_ -> 0);;
|
231
|
+
|
232
|
+
fun wifiCheck=
|
233
|
+
if (netState == RT2501_S_IDLE) then
|
234
|
+
match wifi with
|
235
|
+
(initW -> nil)
|
236
|
+
|(_ ->
|
237
|
+
Secholn "######### wifi lost";
|
238
|
+
set wifi=reconnectW;
|
239
|
+
0
|
240
|
+
)
|
241
|
+
;;
|
242
|
+
|
243
|
+
|