Yes. I don't know what criteria is to call it "done", but for me it's very stable and usable.
See PM for compiling.
Thank you.
See PM for compiling.
Thank you.
Etiquette, expectations, entitlement...
@autoexec_bin | #magiclantern | Discord | Reddit | Server issues
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts Menu===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-20 17:00:24
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 112
apex = 7.
ms = 8
value = 0.007812
aperture = table:
raw = 22
apex = 1.75
value = 1.8
min = table:
raw = 22
apex = 1.75
value = 1.8
max = table:
raw = 80
apex = 9
value = 22.6
iso = table:
raw = 104
apex = 9
value = 1600
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 158
state = 0
shoot = function: p
bulb = function: p
wait = function: p
burst = function: p
reboot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
show = function: p
hide = function: p
clear = function: p
write = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
info = function: p
start = function: p
resume = function: p
wait = function: p
pause = function: p
stop = function: p
lens = table:
name = "EF85mm f/1.8 USM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 0
focus = function: p
autofocus = function: p
display = table:
idle = true
height = 480
width = 720
print = function: p
load = function: p
clear = function: p
on = function: p
rect = function: p
pixel = function: p
draw = function: p
screenshot = function: p
notify_box = function: p
off = function: p
circle = function: p
line = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
get = function: p
close = function: p
new = function: p
select = function: p
set = function: p
open = function: p
block = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 19
ms_clock = 19299
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/105CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 426
folder_number = 105
free_space = 16899616
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 426
folder_number = 105
free_space = 16899616
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
month = 9
day = 20
wday = 4
isdst = false
year = 2017
sec = 25
min = 0
hour = 17
yday = 263
remove = function: p
call = function: p
rename = function: p
directory = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/105CANON/IMG_0427.CR2: 26470604
B:/DCIM/105CANON/IMG_0427.JPG: 4943669
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/105CANON/ABC_0428.CR2: 26489071
B:/DCIM/105CANON/ABC_0428.JPG: 4962688
B:/DCIM/105CANON/ABC_0429.CR2: 26473667
B:/DCIM/105CANON/ABC_0429.JPG: 4956692
Bracketed pictures...
B:/DCIM/105CANON/IMG_0430.CR2: 24545251
B:/DCIM/105CANON/IMG_0430.JPG: 5603438
B:/DCIM/105CANON/IMG_0431.CR2: 26469908
B:/DCIM/105CANON/IMG_0431.JPG: 4955454
B:/DCIM/105CANON/IMG_0432.CR2: 21649884
B:/DCIM/105CANON/IMG_0432.JPG: 848816
Bulb picture...
Elapsed time: 11598
B:/DCIM/105CANON/IMG_0433.CR2: 14242653
B:/DCIM/105CANON/IMG_0433.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 2880
Autofocus in LiveView...
Focus distance: 11910
Focusing backward...
Focus distance: 655350
Focus motor position: 429
Focusing forward with step size 3, wait=true...
...................
Focus distance: 850
Focus motor position: -1267
Focusing backward with step size 3, wait=true...
................
Focus distance: 655350
Focus motor position: 417
Focus range: 19 steps forward, 16 steps backward.
Motor steps: 1696 forward, 1684 backward, 12 lost.
Focusing forward with step size 3, wait=false...
................................................
Focus distance: 900
Focus motor position: -1265
Focusing backward with step size 3, wait=false...
.............................................
Focus distance: 655350
Focus motor position: 415
Focus range: 48 steps forward, 45 steps backward.
Motor steps: 1682 forward, 1680 backward, 2 lost.
Focusing forward with step size 2, wait=true...
...
Focus distance: 850
Focus motor position: -1265
Focusing backward with step size 2, wait=true...
...
Focus distance: 655350
Focus motor position: 414
Focus range: 102 steps forward, 100 steps backward.
Motor steps: 1680 forward, 1679 backward, 1 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 850
Focus motor position: -1265
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: 414
Focus range: 186 steps forward, 192 steps backward.
Motor steps: 1679 forward, 1679 backward, 0 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 850
Focus motor position: -1264
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: 413
Focus range: 421 steps forward, 424 steps backward.
Motor steps: 1678 forward, 1677 backward, 1 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 900
Focus motor position: -1264
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: 414
Focus range: 641 steps forward, 641 steps backward.
Motor steps: 1677 forward, 1678 backward, 1 lost.
Focus test completed.
Testing exposure settings...
Camera : Canon EOS 1200D (1200D) 1.0.1
Lens : EF85mm f/1.8 USM
Shoot mode: 3
Shutter : ,5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture : 1.8 (raw 22, f/1.8, apex 1.75)
Av range : 1.8..22 (raw 22..80, f/1.8..f/22.6, apex 1.75..9)
ISO : 1600 (raw 104, 1600, apex 9)
EC : 0.0 (raw 0, 0 EV)
Flash EC : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.
Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.
Done!
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x426d0464
[Pass] dst = fio_malloc(size) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0xffffff56
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0xffffff84
[Pass] edmac_memcpy(dst, src, size) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x95
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ed4474
dt => 0x312d
[Pass] copied => 0x40286c
[Pass] copied => 0x40286c
[Pass] copied => 0x40286c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xa4
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcb7f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4c0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0x109
[Pass] tries[1] => 0xe5
[Pass] tries[2] => 0x103
[Pass] tries[3] => 0xf7
[Pass] failr[0] => 0xb1
[Pass] failw[0] => 0xdf
[Pass] failr[1] => 0x77
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xdd
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1d
times[1] / tries[1] => 0x1d
times[2] / tries[2] => 0x20
times[3] / tries[3] => 0x20
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[FAIL] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409aec00
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x426d0464
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x99d2
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0xa
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x99f8
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x698
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x15e
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x113
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xc4
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x69a
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x181
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x139
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x9f
t0 = *(uint32_t*)0xC0242014 => 0x624b3
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x9d4b4
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x22
Date/time: 2017/09/20 16:27:34
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x23
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
m0 = MALLOC_FREE_MEMORY => 0x301d0
[Pass] p = (void*)_malloc(50*1024) => 0xd4710
[Pass] CACHEABLE(p) => 0xd4710
m1 = MALLOC_FREE_MEMORY => 0x239c0
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x301d0
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe1ccc
[Pass] CACHEABLE(p) => 0xbe1ccc
m1 = GetFreeMemForAllocateMemory() => 0xc2e2c
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x301d0
m02 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be1d0c
[Pass] UNCACHEABLE(p) => 0x40be1d0c
[Pass] CACHEABLE(p) => 0xbe1d0c
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be1d0c
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x426d0454
[Pass] UNCACHEABLE(p) => 0x426d0454
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x301d0
m12 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d3c000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc34
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bbe0
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x168000c0
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x168200a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x1684032a
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x16860086
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
=========================================================
Test complete, 11858 passed, 1 failed.
.
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-20 10:55:29
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 109
apex = 6.625
ms = 10
value = 0.010131
aperture = table:
raw = 22
apex = 1.75
value = 1.8
min = table:
raw = 22
apex = 1.75
value = 1.8
max = table:
raw = 80
apex = 9
value = 22.6
iso = table:
raw = 0
apex = 0
value = 0
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 171
state = 0
burst = function: p
shoot = function: p
wait = function: p
reboot = function: p
bulb = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
show = function: p
write = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
resume = function: p
start = function: p
pause = function: p
wait = function: p
stop = function: p
info = function: p
lens = table:
name = "EF85mm f/1.8 USM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 257
autofocus = function: p
focus = function: p
display = table:
idle = true
height = 480
width = 720
load = function: p
pixel = function: p
notify_box = function: p
draw = function: p
rect = function: p
circle = function: p
screenshot = function: p
line = function: p
off = function: p
clear = function: p
print = function: p
on = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
get = function: p
block = function: p
open = function: p
set = function: p
new = function: p
select = function: p
close = function: p
movie = table:
recording = false
start = function: p
stop = function: p
dryos = table:
clock = 12
ms_clock = 12792
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 366
folder_number = 104
free_space = 18394816
type = "SD"
_card_ptr = userdata
path = "B:/"
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 366
folder_number = 104
free_space = 18394816
type = "SD"
_card_ptr = userdata
path = "B:/"
date = table:
month = 9
wday = 4
isdst = false
year = 2017
min = 55
day = 20
hour = 10
yday = 263
sec = 30
rename = function: p
directory = function: p
call = function: p
remove = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0367.CR2: 23810416
B:/DCIM/104CANON/IMG_0367.JPG: 2710390
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0368.CR2: 23814043
B:/DCIM/104CANON/ABC_0368.JPG: 2724669
B:/DCIM/104CANON/ABC_0369.CR2: 23808578
B:/DCIM/104CANON/ABC_0369.JPG: 2721762
Bracketed pictures...
B:/DCIM/104CANON/IMG_0370.CR2: 25670783
B:/DCIM/104CANON/IMG_0370.JPG: 5388578
B:/DCIM/104CANON/IMG_0371.CR2: 23800626
B:/DCIM/104CANON/IMG_0371.JPG: 2702120
B:/DCIM/104CANON/IMG_0372.CR2: 17434352
B:/DCIM/104CANON/IMG_0372.JPG: 375754
Bulb picture...
Elapsed time: 11827
B:/DCIM/104CANON/IMG_0373.CR2: 14255761
B:/DCIM/104CANON/IMG_0373.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-20 11:10:39
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 75
apex = 2.374999
ms = 193
value = 0.192776
aperture = table:
raw = 22
apex = 1.75
value = 1.8
min = table:
raw = 22
apex = 1.75
value = 1.8
max = table:
raw = 80
apex = 9
value = 22.6
iso = table:
raw = 104
apex = 9
value = 1600
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 152
state = 0
bulb = function: p
shoot = function: p
wait = function: p
reboot = function: p
burst = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
hide = function: p
show = function: p
write = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
stop = function: p
info = function: p
wait = function: p
pause = function: p
resume = function: p
start = function: p
lens = table:
name = "EF85mm f/1.8 USM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = false
af_mode = 259
focus = function: p
autofocus = function: p
display = table:
idle = true
height = 480
width = 720
screenshot = function: p
on = function: p
print = function: p
notify_box = function: p
pixel = function: p
circle = function: p
line = function: p
rect = function: p
clear = function: p
draw = function: p
load = function: p
off = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
new = function: p
select = function: p
set = function: p
block = function: p
open = function: p
close = function: p
get = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 17
ms_clock = 17208
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 373
folder_number = 104
free_space = 18228896
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 373
folder_number = 104
free_space = 18228896
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
month = 9
min = 10
day = 20
isdst = false
year = 2017
yday = 263
hour = 11
wday = 4
sec = 39
remove = function: p
rename = function: p
directory = function: p
call = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0374.CR2: 23241287
B:/DCIM/104CANON/IMG_0374.JPG: 1337113
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0375.CR2: 22612555
B:/DCIM/104CANON/ABC_0375.JPG: 716469
B:/DCIM/104CANON/ABC_0376.CR2: 22038983
B:/DCIM/104CANON/ABC_0376.JPG: 487110
Bracketed pictures...
B:/DCIM/104CANON/IMG_0377.CR2: 26115064
B:/DCIM/104CANON/IMG_0377.JPG: 6158309
B:/DCIM/104CANON/IMG_0378.CR2: 23082989
B:/DCIM/104CANON/IMG_0378.JPG: 768577
B:/DCIM/104CANON/IMG_0379.CR2: 14229183
B:/DCIM/104CANON/IMG_0379.JPG: 365013
Bulb picture...
Elapsed time: 11616
B:/DCIM/104CANON/IMG_0380.CR2: 14249369
B:/DCIM/104CANON/IMG_0380.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Please enable autofocus.
(or, remove the lens from the camera to skip this test)
Focus test skipped.
Testing exposure settings...
Camera : Canon EOS 1200D (1200D) 1.0.1
Lens :
Shoot mode: 3
Shutter : ,5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture : 0.0 (raw 0, f/0, apex 0)
Av range : 0.0..0.0 (raw 0..0, f/0..f/0, apex 0..0)
ISO : 1600 (raw 104, 1600, apex 9)
EC : 0.0 (raw 0, 0 EV)
Flash EC : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.
Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.
Done!
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x42908494
[Pass] dst = fio_malloc(size) => 0x4310c4a4
[Pass] memcmp(dst, src, 4097) => 0xfffffff1
[Pass] edmac_memcpy(dst, src, 4097) => 0x4310c4a4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x4310c4a4
[Pass] memcmp(dst, src, size) => 0xffffffc6
[Pass] edmac_memcpy(dst, src, size) => 0x4310c4a4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffcb
[Pass] edmac_memcpy_start(dst, src, size) => 0x4310c4a4
dt => 0x315f
[Pass] copied => 0x40275c
[Pass] copied => 0x40275c
[Pass] copied => 0x40275c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x59
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcb7f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xef
[Pass] tries[1] => 0xfc
[Pass] tries[2] => 0xf8
[Pass] tries[3] => 0x105
[Pass] failr[0] => 0xa2
[Pass] failw[0] => 0xd0
[Pass] failr[1] => 0x89
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xe0
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1d
times[1] / tries[1] => 0x1d
times[2] / tries[2] => 0x20
times[3] / tries[3] => 0x21
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409ade3c
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x42908494
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9de0
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x2
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9e06
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x6e0
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x16e
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x128
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0x22c
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x6e2
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x2e8
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x2a0
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x227
t0 = *(uint32_t*)0xC0242014 => 0x3fc9
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x40d13
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x1
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x30
Date/time: 2017/09/20 10:53:48
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x31
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
m0 = MALLOC_FREE_MEMORY => 0x30138
[Pass] p = (void*)_malloc(50*1024) => 0xd4710
[Pass] CACHEABLE(p) => 0xd4710
m1 = MALLOC_FREE_MEMORY => 0x23928
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x30138
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe1cd0
[Pass] CACHEABLE(p) => 0xbe1cd0
m1 = GetFreeMemForAllocateMemory() => 0xc352c
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x30138
m02 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be1d10
[Pass] UNCACHEABLE(p) => 0x40be1d10
[Pass] CACHEABLE(p) => 0xbe1d10
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be1d10
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x4a000074
[Pass] UNCACHEABLE(p) => 0x4a000074
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x30138
m12 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f68000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f68000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x16f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42908480
[Pass] UNCACHEABLE(p) => 0x42908480
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8a68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1af4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8aa0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x26f8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ad8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x6
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x16f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42908480
[Pass] UNCACHEABLE(p) => 0x42908480
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8a68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1af4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8aa0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3a5c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ad8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4660000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b10
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x46f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b48
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x49f68100
[Pass] UNCACHEABLE(p) => 0x49f68100
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc34
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bbe0
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x16d800c2
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x16da00a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x16dc0334
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x16de00be
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
=========================================================
Test complete, 11854 passed, 5 failed.
assert(lens.autofocus())
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-19 17:53:59
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 75
apex = 2.374999
ms = 193
value = 0.192776
aperture = table:
raw = 22
apex = 1.75
value = 1.8
min = table:
raw = 22
apex = 1.75
value = 1.8
max = table:
raw = 80
apex = 9
value = 22.6
iso = table:
raw = 104
apex = 9
value = 1600
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 179
state = 0
shoot = function: p
bulb = function: p
burst = function: p
wait = function: p
reboot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
hide = function: p
write = function: p
clear = function: p
show = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
info = function: p
pause = function: p
start = function: p
stop = function: p
wait = function: p
resume = function: p
lens = table:
name = "EF85mm f/1.8 USM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 0
autofocus = function: p
focus = function: p
display = table:
idle = true
height = 480
width = 720
print = function: p
notify_box = function: p
on = function: p
pixel = function: p
clear = function: p
off = function: p
draw = function: p
line = function: p
screenshot = function: p
load = function: p
circle = function: p
rect = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
select = function: p
block = function: p
set = function: p
close = function: p
new = function: p
open = function: p
get = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 25
ms_clock = 25787
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 353
folder_number = 104
free_space = 18773408
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 353
folder_number = 104
free_space = 18773408
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
day = 19
sec = 0
wday = 3
year = 2017
min = 54
month = 9
isdst = false
hour = 17
yday = 262
rename = function: p
call = function: p
remove = function: p
directory = function: p
interval = table:
time = 70
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0354.CR2: 27317690
B:/DCIM/104CANON/IMG_0354.JPG: 5265615
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0355.CR2: 27317188
B:/DCIM/104CANON/ABC_0355.JPG: 5280464
B:/DCIM/104CANON/ABC_0356.CR2: 27320943
B:/DCIM/104CANON/ABC_0356.JPG: 5280700
Bracketed pictures...
B:/DCIM/104CANON/IMG_0357.CR2: 24500173
B:/DCIM/104CANON/IMG_0357.JPG: 6636892
B:/DCIM/104CANON/IMG_0358.CR2: 27321389
B:/DCIM/104CANON/IMG_0358.JPG: 5280779
B:/DCIM/104CANON/IMG_0359.CR2: 20892064
B:/DCIM/104CANON/IMG_0359.JPG: 996640
Bulb picture...
Elapsed time: 11590
B:/DCIM/104CANON/IMG_0360.CR2: 14253844
B:/DCIM/104CANON/IMG_0360.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing exposure settings...
Camera : Canon EOS 1200D (1200D) 1.0.1
Lens : EF85mm f/1.8 USM
Shoot mode: 3
Shutter : ,5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture : 1.8 (raw 22, f/1.8, apex 1.75)
Av range : 1.8..22 (raw 22..80, f/1.8..f/22.6, apex 1.75..9)
ISO : 1600 (raw 104, 1600, apex 9)
EC : 0.0 (raw 0, 0 EV)
Flash EC : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.
Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.
Done!
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x426d0464
[Pass] dst = fio_malloc(size) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0xffffff88
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0xffffffab
[Pass] edmac_memcpy(dst, src, size) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x81
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ed4474
dt => 0x3132
[Pass] copied => 0x4024ac
[Pass] copied => 0x4024ac
[Pass] copied => 0x4024ac
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffff93
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcc098
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4ff
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xfd
[Pass] tries[1] => 0x106
[Pass] tries[2] => 0xeb
[Pass] tries[3] => 0xfa
[Pass] failr[0] => 0xb5
[Pass] failw[0] => 0xe2
[Pass] failr[1] => 0x9c
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xc9
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1d
times[1] / tries[1] => 0x1d
times[2] / tries[2] => 0x20
times[3] / tries[3] => 0x20
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409a76d4
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x426d0464
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8966
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x1
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8968
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x460
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x173
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x126
[FAIL] ABS((get_us_clock_value() - t0) - 110000) => 0x1398f
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x462
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[FAIL] ABS(DeltaT(timer_time, t0) - 300000) => 0x13a5d
[FAIL] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x13a19
[FAIL] ABS((get_us_clock_value() - t0) - 310000) => 0x13613
t0 = *(uint32_t*)0xC0242014 => 0xbbf8b
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x150
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x1c
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x2
Date/time: 2017/09/19 17:18:02
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x4
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
m0 = MALLOC_FREE_MEMORY => 0x371a8
[Pass] p = (void*)_malloc(50*1024) => 0xcddd8
[Pass] CACHEABLE(p) => 0xcddd8
m1 = MALLOC_FREE_MEMORY => 0x2a998
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x371a8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbf949c
[Pass] CACHEABLE(p) => 0xbf949c
m1 = GetFreeMemForAllocateMemory() => 0xc2de0
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x371a8
m02 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40bf94dc
[Pass] UNCACHEABLE(p) => 0x40bf94dc
[Pass] CACHEABLE(p) => 0xbf94dc
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40bf94dc
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x426d0454
[Pass] UNCACHEABLE(p) => 0x426d0454
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x371a8
m12 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d3c000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x199cc4
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x199ca0
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x199c80
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x1b2400c4
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x1b2600a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x1b2801e0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x1b2a0096
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x426d0464
[Pass] dst = fio_malloc(size) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x12
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0xffffff60
[Pass] edmac_memcpy(dst, src, size) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffff02
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ed4474
dt => 0x31e0
[Pass] copied => 0x40240c
[Pass] copied => 0x40240c
[Pass] copied => 0x40240c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x50
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcbfd0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4a0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xf5
[Pass] tries[1] => 0xdb
[Pass] tries[2] => 0x111
[Pass] tries[3] => 0x107
[Pass] failr[0] => 0xa9
[Pass] failw[0] => 0xd2
[Pass] failr[1] => 0x7b
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xea
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1d
times[1] / tries[1] => 0x1d
times[2] / tries[2] => 0x21
times[3] / tries[3] => 0x22
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409b076c
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x426d0464
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9fe4
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x9
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0xa00c
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x698
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x16f
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x125
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0x3f5
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x69a
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[Pass] timer_func => 0x3
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x4a5
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x45c
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x202
t0 = *(uint32_t*)0xC0242014 => 0x54868
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x8f9e0
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x8
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x32
Date/time: 2017/09/19 17:07:50
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x34
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
m0 = MALLOC_FREE_MEMORY => 0x372e0
[Pass] p = (void*)_malloc(50*1024) => 0xcdd10
[Pass] CACHEABLE(p) => 0xcdd10
m1 = MALLOC_FREE_MEMORY => 0x2aad0
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x372e0
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe1e34
[Pass] CACHEABLE(p) => 0xbe1e34
m1 = GetFreeMemForAllocateMemory() => 0xc2e20
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x372e0
m02 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be1e74
[Pass] UNCACHEABLE(p) => 0x40be1e74
[Pass] CACHEABLE(p) => 0xbe1e74
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be1e74
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x426d0454
[Pass] UNCACHEABLE(p) => 0x426d0454
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x372e0
m12 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d3c000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ae8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b20
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b90
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ae8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b20
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b90
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc34
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bbe0
[Pass] bar => '*****hjkl;'
bzero32(bar + 5, 5)
[Pass] bar => '****'
EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
task_create("test", 0x1c, 0x1000, test_task, 0) => 0x18a600c4
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x18a800a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x18aa0324
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x18ac0082
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
if math.random(1,2) == 1 then
camera.iso.value = iso
else
camera.iso = iso
end
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-18 15:24:20
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 27
apex = -3.625
ms = 12338
value = 12.337686
aperture = table:
raw = 48
apex = 5
value = 5.599999
min = table:
raw = 44
apex = 4.5
value = 4.7
max = table:
raw = 81
apex = 9.124999
value = 23.6
iso = table:
raw = 104
apex = 9
value = 1600
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 172
state = 0
reboot = function: p
shoot = function: p
wait = function: p
bulb = function: p
burst = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
show = function: p
write = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
resume = function: p
stop = function: p
pause = function: p
info = function: p
wait = function: p
start = function: p
lens = table:
name = "EF-S10-18mm f/4.5-5.6 IS STM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 0
focus = function: p
autofocus = function: p
display = table:
idle = true
height = 480
width = 720
clear = function: p
rect = function: p
circle = function: p
load = function: p
off = function: p
on = function: p
line = function: p
notify_box = function: p
draw = function: p
screenshot = function: p
pixel = function: p
print = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
set = function: p
open = function: p
block = function: p
select = function: p
get = function: p
close = function: p
new = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 15
ms_clock = 15719
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 302
folder_number = 104
free_space = 20006816
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 302
folder_number = 104
free_space = 20006816
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
day = 18
wday = 2
year = 2017
min = 24
isdst = false
sec = 21
month = 9
hour = 15
yday = 261
call = function: p
directory = function: p
rename = function: p
remove = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0303.CR2: 25801603
B:/DCIM/104CANON/IMG_0303.JPG: 5574998
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0304.CR2: 25780511
B:/DCIM/104CANON/ABC_0304.JPG: 5618666
B:/DCIM/104CANON/ABC_0305.CR2: 25799499
B:/DCIM/104CANON/ABC_0305.JPG: 5612232
Bracketed pictures...
B:/DCIM/104CANON/IMG_0306.CR2: 22706513
B:/DCIM/104CANON/IMG_0306.JPG: 4545727
B:/DCIM/104CANON/IMG_0307.CR2: 25793189
B:/DCIM/104CANON/IMG_0307.JPG: 5582638
B:/DCIM/104CANON/IMG_0308.CR2: 23506898
B:/DCIM/104CANON/IMG_0308.JPG: 3162347
Bulb picture...
Elapsed time: 11587
B:/DCIM/104CANON/IMG_0309.CR2: 14259065
B:/DCIM/104CANON/IMG_0309.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 1400
Autofocus in LiveView...
Focus distance: 655350
Focusing backward...
Focus distance: 655350
Focus motor position: 171
Focusing forward with step size 3, wait=true...
......
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 3, wait=true...
.....
Focus distance: 655350
Focus motor position: 191
Focus range: 6 steps forward, 5 steps backward.
Motor steps: 479 forward, 499 backward, 20 lost.
Focusing forward with step size 3, wait=false...
................................
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 3, wait=false...
.........................
Focus distance: 655350
Focus motor position: 191
Focus range: 32 steps forward, 25 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 2, wait=true...
..........................
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 2, wait=true...
..........................
Focus distance: 655350
Focus motor position: 191
Focus range: 26 steps forward, 26 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 2, wait=false...
...................................................
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 2, wait=false...
........................................................
Focus distance: 655350
Focus motor position: 191
Focus range: 51 steps forward, 56 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: 191
Focus range: 106 steps forward, 107 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 220
Focus motor position: -303
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: 191
Focus range: 156 steps forward, 154 steps backward.
Motor steps: 494 forward, 494 backward, 0 lost.
Focus test completed.
Testing exposure settings...
Camera : Canon EOS 1200D (1200D) 1.0.1
Lens : EF-S10-18mm f/4.5-5.6 IS STM
Shoot mode: 3
Shutter : ,5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture : 5.6 (raw 48, f/5.599999, apex 5)
Av range : 4.7..23 (raw 44..81, f/4.7..f/23.6, apex 4.5..9.124999)
ISO : 1600 (raw 104, 1600, apex 9)
EC : 0.0 (raw 0, 0 EV)
Flash EC : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x4233c0c4
[Pass] dst = fio_malloc(size) => 0x42b400d4
[Pass] memcmp(dst, src, 4097) => 0xffffff79
[Pass] edmac_memcpy(dst, src, 4097) => 0x42b400d4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42b400d4
[Pass] memcmp(dst, src, size) => 0xffffff13
[Pass] edmac_memcpy(dst, src, size) => 0x42b400d4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffd5
[Pass] edmac_memcpy_start(dst, src, size) => 0x42b400d4
dt => 0x3143
[Pass] copied => 0x40216c
[Pass] copied => 0x40216c
[Pass] copied => 0x40216c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x3d
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcbc10
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x360
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xf3
[Pass] tries[1] => 0xef
[Pass] tries[2] => 0x107
[Pass] tries[3] => 0xff
[Pass] failr[0] => 0xa6
[Pass] failw[0] => 0xd4
[Pass] failr[1] => 0x8d
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xe6
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x1f
times[1] / tries[1] => 0x1e
times[2] / tries[2] => 0x21
times[3] / tries[3] => 0x22
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409af030
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x42204094
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x882e
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x7
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8830
msleep(400)
CancelTimer(timer)
[Pass] timer_func => 0x0
msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x4aa
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x15f
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x11b
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0x55b
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x4ac
msleep(80)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x3
msleep(80)
[FAIL] timer_func => 0x1
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x62a
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x5d3
[FAIL] ABS((get_us_clock_value() - t0) - 310000) => 0xc8b7
t0 = *(uint32_t*)0xC0242014 => 0x299a2
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x64952
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x1d
Date/time: 2017/09/18 01:26:29
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x1f
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-18 01:41:02
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 80
apex = 3.
ms = 125
value = 0.124999
aperture = table:
raw = 45
apex = 4.624999
value = 4.9
min = table:
raw = 45
apex = 4.624999
value = 4.9
max = table:
raw = 82
apex = 9.25
value = 24.6
iso = table:
raw = 72
apex = 5
value = 100
ec = table:
raw = 0
value = 0
flash_ec = table:
raw = 0
value = 0
kelvin = 6000
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS 1200D"
model_short = "1200D"
firmware = "1.0.1"
temperature = 176
state = 0
bulb = function: p
burst = function: p
wait = function: p
shoot = function: p
reboot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
write = function: p
show = function: p
clear = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
resume = function: p
pause = function: p
stop = function: p
wait = function: p
info = function: p
start = function: p
lens = table:
name = "EF-S10-18mm f/4.5-5.6 IS STM"
focal_length = 0
focus_distance = 14080
hyperfocal = 0
dof_near = 0
dof_far = 0
af = true
af_mode = 0
focus = function: p
autofocus = function: p
display = table:
idle = true
height = 480
width = 720
load = function: p
clear = function: p
print = function: p
notify_box = function: p
draw = function: p
line = function: p
on = function: p
screenshot = function: p
rect = function: p
off = function: p
circle = function: p
pixel = function: p
key = table:
last = 10
press = function: p
wait = function: p
menu = table:
visible = false
get = function: p
select = function: p
new = function: p
set = function: p
close = function: p
open = function: p
block = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 22
ms_clock = 22422
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/104CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 251
folder_number = 104
free_space = 21845824
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 251
folder_number = 104
free_space = 21845824
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
year = 2017
min = 41
hour = 1
isdst = false
day = 18
month = 9
wday = 2
yday = 261
sec = 2
directory = function: p
call = function: p
rename = function: p
remove = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0252.CR2: 23342908
B:/DCIM/104CANON/IMG_0252.JPG: 5848968
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0253.CR2: 23337577
B:/DCIM/104CANON/ABC_0253.JPG: 5829948
B:/DCIM/104CANON/ABC_0254.CR2: 23338605
B:/DCIM/104CANON/ABC_0254.JPG: 5829263
Bracketed pictures...
B:/DCIM/104CANON/IMG_0255.CR2: 20946081
B:/DCIM/104CANON/IMG_0255.JPG: 3572488
B:/DCIM/104CANON/IMG_0256.CR2: 23345659
B:/DCIM/104CANON/IMG_0256.JPG: 5846570
B:/DCIM/104CANON/IMG_0257.CR2: 26253484
B:/DCIM/104CANON/IMG_0257.JPG: 5369382
Bulb picture...
Elapsed time: 11486
B:/DCIM/104CANON/IMG_0258.CR2: 14243441
B:/DCIM/104CANON/IMG_0258.JPG: 365013
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
Page created in 0.153 seconds with 13 queries.