log_user 1
exp_internal 0
set timeout -1
set log_path "/home/pi/CAFCA/log/expect.log"
set busy_flag "/home/pi/CAFCA/data/scan_flag"
set coin_file "/home/pi/CAFCA/data/tmp/cafca_coins_cnt"
set pid [exec pidof retroarch]
set ready 0
set scanned 0
set matched 0
set matches 999
set match_limit 5
set credits 0
set last_credits 0
exec echo -e "\n" > "$log_path"
log_file "$log_path"
spawn scanmem -p $pid
proc startup {} {
exec echo 0 > "$::busy_flag"
expect {
"Please" {
exec sleep 1
send "option region_scan_level 3\r"
exec sleep 1
send "reset\r"
exec sleep 1
exp_continue
}
"*suitable*" {
set ::ready 1
exec sleep 1
}
}
while {$::credits == $::last_credits} {
set ::credits [exec cat "$::coin_file"]
}
}
proc put_coin {} {
set ::credits [exec cat "$::coin_file"]
if {$::credits != $::last_credits} {
set ::last_credits $::credits
exec echo 1 > "$::busy_flag"
exec sleep 1
send "$::credits\r"
exec sleep 1
expect {
"*currently*" {
exec echo 0 > "$::busy_flag"
#set ::matches [lindex [split [lindex [split $expect_out(0,string) "\n"] end ] ">" ] 0]
set ::matches [lindex [split [lindex [split $expect_out(buffer) "\n"] end-1 ] " " ] end-1 ]
send_user "\n\nmatches: $::matches\n"
if {$::matches == "other"} {
send_user "MATCH IS 1!\n"
set ::matches 1
}
#if {$::matches <= $::match_limit} {
# send "list\r"
#}
#exp_continue
}
#"*identified*" {
# exec sleep 1
# send "list\r"
# # exp_continue
#}
#"*matches*" {
# exec echo 0 > "$::busy_flag"
# exec sleep 1
#send "\r"
#exec sleep 1
#set ::matches [lindex [split [lindex [split $expect_out(0,string) "\n"] end ] ">" ] 0]
#set ::matches [lindex [split $expect_out(0,string) "\n"] end ]
#send_user "\n\nmatches: $::matches\n\n"
#if {$::matches < $::match_limit} {
# extract_match
#}
#}
}
}
}
proc extract_match {} {
send_user "\n\nMATCH LIMIT REACHED\n\n"
send "list\r"
}
startup
while {$matches > $match_limit} {
put_coin
}
exec sleep 1
send_user "\nBREAK!\n"
send "list\r"
expect {
"*0x*" {
send_user "LISTING!\n"
exp_continue
}
}
#send "exit\r"
#close
#expect eof
#!/bin/bash
declare -A data=()
declare -a regions=()
/usr/bin/expect -c '