Canon 600D / T3i

Started by Avenger 2.0, June 16, 2015, 10:00:13 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

a1ex

Try on new-dryos-task-hooks branch (long answer later). Relevant changesets: 8260b141b233 and e601292baa57.

dfort

Tried the new-dryos-task-hooks branch and got the same results. Turned on CONFIG_QEMU and got this:

[boot] firmware signature: 0x4f4d4712 (1330464530)
                 expected: 0x5113b56e (1360246126)


So I changed the firmware signature to 0x4f4d4712 and everything seems to be working fine.

Lesson learned -- it is better to do a firmware update using the qemu branch.

Unsolved mystery -- why did "Hello World" report a different firmware signature on camera?

New 600D.103 test build on my downloads page.

mk11174

500D/T1i  550D/T2i  600D/T3i  700D/T5i

Edgley

Hi,
New user here, would like to check some things please.

am looking to get the "best" RAW that is going to work without crashing out.
I must admit I am confused by some of these things.

I am running the experimental 4k build, with crop_rec and MLV_lite modules installed
I have CBR at 1.
I have resolution at 1736x1160 and ratio 1:1
And I am using Switch to convert the file into a folder of .dngs

What I am confused about is how to get the "right" resolution so I can use Resolve to edit in 1920x1080
Also, how does one set it to 24fps?

Sure, I have a shed load more questions, how can one not with all these options to play with. however, I wanna start recoding asap and figure the rest out as I go.

thanks for any help,
Simon.
100D + 50mm 1.8 / Mac / Resolve

mk11174

[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x422040a4
[Pass] dst = fio_malloc(size) => 0x42a080b4
[Pass] memcmp(dst, src, 4097) => 0x82
[Pass] edmac_memcpy(dst, src, 4097) => 0x42a080b4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42a080b4
[Pass] memcmp(dst, src, size) => 0xee
[Pass] edmac_memcpy(dst, src, size) => 0x42a080b4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffd2
[Pass] edmac_memcpy_start(dst, src, size) => 0x42a080b4
       dt => 0x3200
[Pass] copied => 0x4016ec
[Pass] copied => 0x4016ec
[Pass] copied => 0x4016ec
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffffdf
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xc7dc8
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x570
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xff
[Pass] tries[1] => 0x104
[Pass] tries[2] => 0xdd
[Pass] tries[3] => 0x108
[Pass] failr[0] => 0xa6
[Pass] failw[0] => 0xd3
[Pass] failr[1] => 0x82
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xba
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x2f
       times[1] / tries[1] => 0x39
       times[2] / tries[2] => 0x37
       times[3] / tries[3] => 0x38
Cache tests finished.

[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) => 0x409d2894
[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) => 0x422040a4
[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) => 0x80ba
       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) => 0x80bc
       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) => 0x1c8
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x138
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xfc
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xe6
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x1ca
       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) => 0x17f
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x150
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x103
       t0 = *(uint32_t*)0xC0242014 => 0x5522c
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0x91e99
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x2
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x21
       Date/time: 2018/04/10 12:26:33
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x22
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
       m0 = MALLOC_FREE_MEMORY => 0x3b5f8
[Pass] p = (void*)_malloc(50*1024) => 0xc9b18
[Pass] CACHEABLE(p) => 0xc9b18
       m1 = MALLOC_FREE_MEMORY => 0x2ede8
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x3b5f8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0xfc120
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe20b0
[Pass] CACHEABLE(p) => 0xbe20b0
       m1 = GetFreeMemForAllocateMemory() => 0xbc110
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0xfc120
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x3b5f8
       m02 = GetFreeMemForAllocateMemory() => 0xfc120
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be20f0
[Pass] UNCACHEABLE(p) => 0x40be20f0
[Pass] CACHEABLE(p) => 0xbe20f0
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be20f0
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x42204084
[Pass] UNCACHEABLE(p) => 0x42204084
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x3b5f8
       m12 = GetFreeMemForAllocateMemory() => 0xfc120
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xa8b28
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xa8b50
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xa8b28
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1df8000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xa8b50
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xa8b28
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xa8b50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
       chunk = GetNextMemoryChunk(suite, chunk) => 0xaff98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29fc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xaffd0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2a90000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc4740
[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) => 0xa8b28
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xa8b50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
       chunk = GetNextMemoryChunk(suite, chunk) => 0xaff98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29fc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xaffd0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2a90000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc4740
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       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") => 0x1990c4
[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) => 0x1990a0
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x199080
[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) => 0xc9200be
[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) => 0xc940094
[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) => 0xc9601f2
[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) => 0xc980042
[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
500D/T1i  550D/T2i  600D/T3i  700D/T5i

a1ex

Quote from: dfort on April 10, 2018, 05:14:56 PM
Tried the new-dryos-task-hooks branch and got the same results.

This was unexpected. I know the emulation is broken after uninstalling cache hacks (started to fix it), but I'd expect CONFIG_HELLO_WORLD on new-dryos-task-hooks to show the correct signature on the Hello World screen on real hardware (tested on 1300D, which boots in the same way as 600D).

dfort

I'm not sure why the firmware signature shows up wrong in the camera and "Hello World" didn't work in QEMU but CONFIG_QEMU with the new-dryos-task-hooks branch showed the problem.

Now that I'm going over my notes I don't think we ran "Hello World" on the new-dryos-task-hooks branch in camera.

@mk11174 - Mind checking this out? I've got a new-dryos-task-hooks_600D.103 branch in my repository. All that should be necessary is to uncomment this line:

config-defines.h
    /** Load fonts and print Hello World (disable CONFIG_EARLY_PORT); will not start any other ML tasks, handlers etc. */
    #define CONFIG_HELLO_WORLD


Come to think of it, I think you taught me that trick.

mk11174

Well, it is def different than the last check!



500D/T1i  550D/T2i  600D/T3i  700D/T5i

dfort

Thanks -- looks like the new-dryos-task-hooks branch is showing the correct firmware signature in camera.

What I meant with getting the same results in QEMU was that the signature didn't print on the screen but it did show up in the log when it was run with CONFIG_QEMU.

kanyos

Hi Daniel,

I just bought my Canon 600D, and I'm very beginner at the firmware update thing, but I really need magic lantern and it's features.
I've got version 1.0.2 firmware now on my camera, but I can upgrade it to 1.0.3. if it's needed.

Could you please give me some instructions step by step, using your source (or not) to install a magic lantern to my cam?
I really don't want to broke it with an install :)

Many thanks in advance,
Zsolt

a1ex

Quote from: a1ex on January 23, 2018, 12:35:44 AM
1) when trying to format the card from the camera, can you toggle between Keep ML and Remove ML? (according to escho, yes)

Does that work in the current lua_fix experimental build?

Additionally, can you open ML submenus (e.g. options for Zebras or Magic Zoom) with the same build?

dfort

This is the feedback I got from @mk11174 who helped with the 600D.103 firmware update:

Quote from: mk11174 on April 10, 2018, 06:48:59 PM
Ok, the 600D seems pretty solid so far, Raw recording working as it always did, never perfect really cause its slower and has the pink frame issues every so often, but seems same as usual, silent fullres fine too, Raw histogram and audio controls are fine, no errors yet on anything, nothing sticking out that is an issue.

@a1ex - I pointed out your question to him.

@kanyos - ML currently works with the 1.0.2 firmware for this camera. You can download builds using the "Downloads" tab at the top of the forum page. The 1.0.3 firmware update is new and not yet a part of the official builds. I'd suggest using the current version before doing a firmware update. Installation instructions are in the "User Guide" also linked at the top of the forum page.

aster

hello,

i just discovered about ml, i have a 600D and successfully downgraded from 103 to 102 then installed ml and everything is working right. maybe just some small things with the lcd reflesh

i would like to say a big thank you to all of you!

Byeeeee

edit: i just saw that the ml-setup.fir it is still in the sd card, i guess i can remove it, isn't it?

mk11174

Quote from: a1ex on May 02, 2018, 12:18:55 PM
Does that work in the current lua_fix experimental build?

Additionally, can you open ML submenus (e.g. options for Zebras or Magic Zoom) with the same build?

I tried this on both 1.02 and 1.03 and I get the exact same results, no problem with Format changing option with Q button in Live View or Without Live view.

As for ML submenus, these can be used only while in Photo Mode without Live View, once you turn on Live View or Moviemode, it seems like Q button no longer works with ML menus to get in the Submenus, BUT, the Play button seems to work as the Q button. So I can get in and out of Submenus with Play button and Q button in Photo Mode no Live View  and In Live View or Movie mode only Play button allows use of Submenus.
500D/T1i  550D/T2i  600D/T3i  700D/T5i

mk11174

600D 103 API TEST
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 00:26:13
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 101
    apex = 5.625
    ms = 20
    value = 0.020263
  aperture = table:
    raw = 47
    apex = 4.875
    value = 5.4
    min = table:
      raw = 47
      apex = 4.875
      value = 5.4
    max = table:
      raw = 90
      apex = 10.250001
      value = 34.799999
  iso = table:
    raw = 104
    apex = 9.
    value = 1600
  ec = table:
    raw = 0
    value = 0
  flash = true
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 4700
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS REBEL T3i"
  model_short = "600D"
  firmware = "1.0.3"
  temperature = 167
  gui = table:
    menu = false
    play = false
    play_photo = false
    play_movie = false
    qr = false
    idle = true
  reboot = function: p
  burst = function: p
  shoot = function: p
  bulb = function: p
  wait = 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
  clear = function: p
  write = function: p
  hide = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  overlays = false
  resume = function: p
  info = function: p
  wait = function: p
  pause = function: p
  start = function: p
  stop = function: p
lens = table:
  name = "EF-S18-55mm f/3.5-5.6 IS"
  focal_length = 49
  focus_distance = 655350
  hyperfocal = 23499
  dof_near = 22692
  dof_far = 1000000
  af = false
  af_mode = 3
  autofocus = function: p
  focus = function: p
display = table:
  idle = nil
  height = 480
  width = 720
  rect = function: p
  on = function: p
  circle = function: p
  draw = function: p
  pixel = function: p
  notify_box = function: p
  screenshot = function: p
  print = function: p
  clear = function: p
  load = function: p
  line = function: p
  off = function: p
key = table:
  last = 10
  wait = function: p
  press = function: p
menu = table:
  visible = false
  select = function: p
  close = function: p
  set = function: p
  block = function: p
  open = function: p
  get = function: p
  new = function: p
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 8
  ms_clock = 8875
  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/100CANON/"
  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 = 8192
    drive_letter = "B"
    file_number = 9976
    folder_number = 100
    free_space = 15567104
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    cluster_size = 8192
    drive_letter = "B"
    file_number = 9976
    folder_number = 100
    free_space = 15567104
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    min = 26
    isdst = false
    sec = 14
    year = 2018
    day = 6
    month = 5
    hour = 0
    yday = 1
    wday = 7
  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:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: 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 Canon GUI functions...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Stop LiveView...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Start LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Canon GUI tests completed.

Testing ML menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9977.CR2 not found.
B:/DCIM/100CANON/IMG_9977.JPG not found.


600D 102 API Test
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 00:18:23
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 101
    apex = 5.625
    ms = 20
    value = 0.020263
  aperture = table:
    raw = 47
    apex = 4.875
    value = 5.4
    min = table:
      raw = 47
      apex = 4.875
      value = 5.4
    max = table:
      raw = 90
      apex = 10.250001
      value = 34.799999
  iso = table:
    raw = 104
    apex = 9.
    value = 1600
  ec = table:
    raw = 0
    value = 0
  flash = true
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 4700
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS REBEL T3i"
  model_short = "600D"
  firmware = "1.0.2"
  temperature = 165
  gui = table:
    menu = false
    play = false
    play_photo = false
    play_movie = false
    qr = false
    idle = true
  bulb = function: p
  burst = function: p
  reboot = function: p
  shoot = function: p
  wait = 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
  hide = function: p
  write = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  overlays = false
  resume = function: p
  stop = function: p
  wait = function: p
  info = function: p
  pause = function: p
  start = function: p
lens = table:
  name = "EF-S18-55mm f/3.5-5.6 IS"
  focal_length = 49
  focus_distance = 655350
  hyperfocal = 23499
  dof_near = 22692
  dof_far = 1000000
  af = false
  af_mode = 3
  autofocus = function: p
  focus = function: p
display = table:
  idle = nil
  height = 480
  width = 720
  print = function: p
  on = function: p
  screenshot = function: p
  draw = function: p
  line = function: p
  load = function: p
  pixel = function: p
  notify_box = function: p
  off = function: p
  clear = function: p
  circle = function: p
  rect = function: p
key = table:
  last = 10
  press = function: p
  wait = function: p
menu = table:
  visible = false
  new = function: p
  open = function: p
  close = function: p
  block = function: p
  select = function: p
  set = function: p
  get = function: p
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 29
  ms_clock = 29294
  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/100CANON/"
  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 = 8192
    drive_letter = "B"
    file_number = 9974
    folder_number = 100
    free_space = 15527360
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    cluster_size = 8192
    drive_letter = "B"
    file_number = 9974
    folder_number = 100
    free_space = 15527360
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    month = 5
    sec = 24
    day = 6
    isdst = false
    yday = 1
    hour = 0
    year = 2018
    min = 18
    wday = 7
  call = function: p
  directory = function: p
  remove = function: p
  rename = 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:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: 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 Canon GUI functions...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Start LiveView...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Pause LiveView...
Resume LiveView...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Canon GUI tests completed.

Testing ML menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9975.CR2 not found.
B:/DCIM/100CANON/IMG_9975.JPG not found.
500D/T1i  550D/T2i  600D/T3i  700D/T5i

mk11174

600D 103 lua/fix Stubs Test
[Pass] is_play_mode() => 0x1
[INFO] Camera model: Canon EOS REBEL T3i 1.0.3 (0x80000286 600D)
[Pass] is_camera("DIGIC", "*") => 0x1
[Pass] is_camera(__camera_model_short, firmware_version) => 0x1
[Pass] src = fio_malloc(size) => 0x422c00c4
[Pass] dst = fio_malloc(size) => 0x42ac40d4
[Pass] memcmp(dst, src, 4097) => 0xec
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ac40d4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ac40d4
[Pass] memcmp(dst, src, size) => 0x1a
[Pass] edmac_memcpy(dst, src, size) => 0x42ac40d4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffff97
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ac40d4
       dt => 0x3151
[Pass] copied => 0x400d6c
[Pass] copied => 0x400d6c
[Pass] copied => 0x400d6c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x37
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xbcfb0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x1030
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xfe
[Pass] tries[1] => 0x106
[Pass] tries[2] => 0xee
[Pass] tries[3] => 0xf6
[Pass] failr[0] => 0xc4
[Pass] failw[0] => 0xf6
[Pass] failr[1] => 0x97
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xe6
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x2f
       times[1] / tries[1] => 0x29
       times[2] / tries[2] => 0x33
       times[3] / tries[3] => 0x31
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) => 0x40bc215c
[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) => 0x422c00c4
[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) => 0x95c0
       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) => 0x95e6
       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) => 0x1e0
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x12d
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x103
[Pass] ABS((get_us_clock() - t0) - 110000) => 0x219
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x1e2
       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) => 0x2b8
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x28e
[Pass] ABS((get_us_clock() - t0) - 310000) => 0x227
       t0 = GET_DIGIC_TIMER() => 0x3037c
       msleep(250)
       t1 = GET_DIGIC_TIMER() => 0x6b218
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x11
       Date/time: 2018/05/06 00:42:17
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x12
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
       m0 = MALLOC_FREE_MEMORY => 0x43f78
[Pass] p = (void*)_malloc(50*1024) => 0xc0a40
[Pass] CACHEABLE(p) => 0xc0a40
       m1 = MALLOC_FREE_MEMORY => 0x37768
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x43f78
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0xe1f8c
[Pass] p = (void*)_AllocateMemory(128*1024) => 0xbc211c
[Pass] CACHEABLE(p) => 0xbc211c
       m1 = GetFreeMemForAllocateMemory() => 0xc1f7c
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0xe1f8c
[Pass] ABS((m0-m1) - 128*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x43f78
       m02 = GetFreeMemForAllocateMemory() => 0xe1f8c
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x40bc215c
[Pass] UNCACHEABLE(p) => 0x40bc215c
[Pass] CACHEABLE(p) => 0xbc215c
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40bc215c
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x422c00b4
[Pass] UNCACHEABLE(p) => 0x422c00b4
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x43f78
       m12 = GetFreeMemForAllocateMemory() => 0xe1f8c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0xbbd10
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbd38
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x422c00b0
[Pass] UNCACHEABLE(p) => 0x422c00b0
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xbbd10
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f68000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbd38
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f68000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       largest_shoot_block = suite->size => 0x1f68000
[INFO] largest_shoot_block: 31MB
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0xbbd10
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x2
[Pass] suite->size => 0x2068000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbd38
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x422c00b0
[Pass] UNCACHEABLE(p) => 0x422c00b0
       chunk = GetNextMemoryChunk(suite, chunk) => 0xbbd98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2068000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x2068000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xbbd10
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbd38
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x422c00b0
[Pass] UNCACHEABLE(p) => 0x422c00b0
       chunk = GetNextMemoryChunk(suite, chunk) => 0xbbd98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2940000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xbbdd0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       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") => 0x16a01c
[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) => 0x16a000
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x169fe0
[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) => 0x1aaa00be
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] get_task_name_from_id(current_task->taskId) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x1aac0094
[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) => 0x1aae030c
[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) => 0x1ab000a4
[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, 11457 passed, 5 failed.
.


600D 102 lua/fix Stubs Test
[Pass] is_play_mode() => 0x1
[INFO] Camera model: Canon EOS REBEL T3i 1.0.2 (0x80000286 600D)
[Pass] is_camera("DIGIC", "*") => 0x1
[Pass] is_camera(__camera_model_short, firmware_version) => 0x1
[Pass] src = fio_malloc(size) => 0x42204094
[Pass] dst = fio_malloc(size) => 0x42a080a4
[Pass] memcmp(dst, src, 4097) => 0x7f
[Pass] edmac_memcpy(dst, src, 4097) => 0x42a080a4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42a080a4
[Pass] memcmp(dst, src, size) => 0x78
[Pass] edmac_memcpy(dst, src, size) => 0x42a080a4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x7
[Pass] edmac_memcpy_start(dst, src, size) => 0x42a080a4
       dt => 0x31fd
[Pass] copied => 0x400a9c
[Pass] copied => 0x400a9c
[Pass] copied => 0x400a9c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xfffffffc
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xbd1f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x10df
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xe6
[Pass] tries[1] => 0x102
[Pass] tries[2] => 0xf8
[Pass] tries[3] => 0x108
[Pass] failr[0] => 0xbe
[Pass] failw[0] => 0xe3
[Pass] failr[1] => 0x98
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xf4
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x2c
       times[1] / tries[1] => 0x32
       times[2] / tries[2] => 0x2e
       times[3] / tries[3] => 0x2c
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) => 0x40bc20f0
[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) => 0x956e
       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) => 0x9594
       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) => 0x1e0
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x128
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xfc
[Pass] ABS((get_us_clock() - t0) - 110000) => 0x220
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x1e2
       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) => 0x2c2
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x294
[Pass] ABS((get_us_clock() - t0) - 310000) => 0x23f
       t0 = GET_DIGIC_TIMER() => 0xcafa5
       msleep(250)
       t1 = GET_DIGIC_TIMER() => 0x5fbf
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x23
       Date/time: 2018/05/06 00:52:35
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x25
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
       m0 = MALLOC_FREE_MEMORY => 0x44158
[Pass] p = (void*)_malloc(50*1024) => 0xc0c80
[Pass] CACHEABLE(p) => 0xc0c80
       m1 = MALLOC_FREE_MEMORY => 0x37948
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x44158
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0xe1f9c
[Pass] p = (void*)_AllocateMemory(128*1024) => 0xbc20b0
[Pass] CACHEABLE(p) => 0xbc20b0
       m1 = GetFreeMemForAllocateMemory() => 0xc1f8c
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0xe1f9c
[Pass] ABS((m0-m1) - 128*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x44158
       m02 = GetFreeMemForAllocateMemory() => 0xe1f9c
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x40bc20f0
[Pass] UNCACHEABLE(p) => 0x40bc20f0
[Pass] CACHEABLE(p) => 0xbc20f0
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40bc20f0
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x42204084
[Pass] UNCACHEABLE(p) => 0x42204084
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x44158
       m12 = GetFreeMemForAllocateMemory() => 0xe1f9c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0xbbb30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbb58
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xbbb30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f68000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbb58
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f68000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       largest_shoot_block = suite->size => 0x1f68000
[INFO] largest_shoot_block: 31MB
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0xbbb30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x2
[Pass] suite->size => 0x2068000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbb58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
       chunk = GetNextMemoryChunk(suite, chunk) => 0xbbbb8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2068000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x2068000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xbbb30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbb58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
       chunk = GetNextMemoryChunk(suite, chunk) => 0xbbbb8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29fc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xbbbf0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       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") => 0x16a01c
[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) => 0x16a000
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x169fe0
[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) => 0x169400be
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] get_task_name_from_id(current_task->taskId) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x16960094
[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) => 0x16980318
[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) => 0x169a00a4
[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, 11457 passed, 5 failed.
.

500D/T1i  550D/T2i  600D/T3i  700D/T5i

dfort

Look pretty much the same to me. Did you by any chance have the colorspace set to adobe? Reason I ask is because we had a similar situation happen with the 1200D. Note that the Stubs API test from the selftest module didn't complete.

Could you next try the lua_fix builds. 1.0.3 is on my downloads page and 1.0.2 is on the experiments download page.

The lua API Stubs test on the lua_fix branch is tougher to get through. Something I have been experiencing is that if the tests fail, try clearing the Canon settings and run the tests again. If there's a particularly stubborn test. Comment it out or try running one or just a few tests at a time. The lens focus test is a bit tricky because some lenses won't focus through lua on some cameras. If the focus test fails, try another lens.

mk11174

600D 102 Memory Benchmark




600D 103 Memory Benchmark


500D/T1i  550D/T2i  600D/T3i  700D/T5i

mk11174

Quote from: dfort on May 06, 2018, 06:51:16 AM
Look pretty much the same to me. Did you by any chance have the colorspace set to adobe? Reason I ask is because we had a similar situation happen with the 1200D. Note that the Stubs API test from the selftest module didn't complete.
Yes, Adobe RGB colorspace was set for this camera at time of testing.


QuoteCould you next try the lua_fix builds. 1.0.3 is on my downloads page and 1.0.2 is on the experiments download page.
This 103 version is the build from your downloads page. And the 102 is from experiments page

500D/T1i  550D/T2i  600D/T3i  700D/T5i

dfort

In order to get through these tests we should be checking apples to apples so please clear your Canon settings. Then (optionally) change the photo settings to shoot RAW+JPEG, change from Single shooting to Continuous shooting and finally, (this one isn't optional) Disable Continuous AF.

You've got a bunch of left over files from the tests so I'd recommend reformatting your card while you're at it.

What is happening when Color space is set to Adobe RGB is that the filenames start with an underscore. Here are the files after running just test_camera_take_pics():

sRGB


Adobe RGB


Now I don't know why this is happening but when "assert(size_cr2 or size_jpg)" is called it will crash the test.

So, long story short, put your camera in sRGB Color space or better yet clear all Canon settings, format your card and try the lua API test again.

But wait -- there's more!

The selftest module fails are "get_focus_confirmation()" -- try doing a half-shutter press, does the lens focus and camera sound a confirmation beep? If not, then clear out Canon settings and try it again. Once you get focus confirmation with a half-shutter press, run the selftest module, Stubs API test again and it should pass all the tests.

mk11174

I can do that, I only noticed the focus conf fail, did not seem very important since I had lens cap on, seems to be ok to fail it, both tests came back same for both versions so I thought the main goal was to show 103 was good for merge, if both versions give same results, that should show it is good to go?
500D/T1i  550D/T2i  600D/T3i  700D/T5i

dfort

Quote from: mk11174 on May 06, 2018, 05:36:02 PM
...I had lens cap on, seems to be ok to fail it...

LOL!  :P

Quote from: mk11174 on May 06, 2018, 05:36:02 PM
...I thought the main goal was to show 103 was good for merge, if both versions give same results, that should show it is good to go?

Chances are that the firmware update didn't introduce any new issues but it is still good to run these tests to see if there are any issues we might be able to fix while we're at it. Note that the EOSM firmware update pull request has been available for over a year and it works as well as the currently supported firmware but wow--that camera has issues getting through these tests!

mk11174

Trying the API_Test on 103 seems to be going on FOREVER doing the same thing on this Lens Moving test, light flashing away, but going so long battery almost dead, console showing same repeating text? Gonna give up I guess. Reset all camera settings and Formatted and set to continuous shooting also.

Battery died, here is log it saved

===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 13:45:28
===============================================================================

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.010132
  aperture = table:
    raw = 48
    apex = 5.
    value = 5.6
    min = table:
      raw = 48
      apex = 5.
      value = 5.6
    max = table:
      raw = 91
      apex = 10.375001
      value = 36.400001
  iso = table:
    raw = 0
    apex = 0
    value = 0
  ec = table:
    raw = 0
    value = 0
  flash = true
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 5200
  mode = 3
  metering_mode = 3
  drive_mode = 1
  model = "Canon EOS REBEL T3i"
  model_short = "600D"
  firmware = "1.0.3"
  temperature = 188
  gui = table:
    menu = false
    play = false
    play_photo = false
    play_movie = false
    qr = false
    idle = true
  shoot = function: p
  burst = function: p
  reboot = function: p
  bulb = function: p
  wait = 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
  overlays = false
  resume = function: p
  start = function: p
  stop = function: p
  info = function: p
  pause = function: p
  wait = function: p
lens = table:
  name = "EF-S18-55mm f/3.5-5.6 IS"
  focal_length = 55
  focus_distance = 1820
  hyperfocal = 28540
  dof_near = 1722
  dof_far = 1929
  af = true
  af_mode = 0
  autofocus = function: p
  focus = function: p
display = table:
  idle = nil
  height = 480
  width = 720
  line = function: p
  notify_box = function: p
  draw = function: p
  load = function: p
  clear = function: p
  off = function: p
  print = function: p
  screenshot = function: p
  on = function: p
  rect = function: p
  pixel = function: p
  circle = function: p
key = table:
  last = 10
  press = function: p
  wait = function: p
menu = table:
  visible = false
  new = function: p
  block = function: p
  set = function: p
  close = function: p
  select = function: p
  open = function: p
  get = function: p
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 101
  ms_clock = 101541
  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/100CANON/"
  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 = 9988
    folder_number = 100
    free_space = 15633664
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 9988
    folder_number = 100
    free_space = 15633664
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    year = 2018
    yday = 1
    hour = 13
    wday = 7
    sec = 29
    month = 5
    isdst = false
    min = 45
    day = 6
  call = function: p
  directory = function: p
  remove = function: p
  rename = 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:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: 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 Canon GUI functions...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Canon GUI tests completed.

Testing ML menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9989.CR2: 19657379
B:/DCIM/100CANON/IMG_9989.JPG: 1746728
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/100CANON/ABC_9990.CR2: 19633952
B:/DCIM/100CANON/ABC_9990.JPG: 1728852
B:/DCIM/100CANON/ABC_9991.CR2: 19601666
B:/DCIM/100CANON/ABC_9991.JPG: 1725152
Bracketed pictures...
B:/DCIM/100CANON/IMG_9992.CR2: 26354896
B:/DCIM/100CANON/IMG_9992.JPG: 4597540
B:/DCIM/100CANON/IMG_9993.CR2: 19554523
B:/DCIM/100CANON/IMG_9993.JPG: 1635620
B:/DCIM/100CANON/IMG_9994.CR2: 15526094
B:/DCIM/100CANON/IMG_9994.JPG: 437395
Bulb picture...
Elapsed time: 12755
B:/DCIM/100CANON/IMG_9995.CR2: 14504886
B:/DCIM/100CANON/IMG_9995.JPG: 363713
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...
Overlays: ML
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: disabled
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: disabled
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
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: 1820
Autofocus in LiveView...
Please trigger autofocus (half-shutter / AF-ON / * ).
19...18...17...16...15...14...13...Autofocus triggered.
Autofocus completed.
Focus distance: 655350
Focusing backward...
Focus distance: 655350
Focus motor position: 469
Focusing forward with step size 3, wait=true...
...........
Focus distance: 250
Focus motor position: -1414
Focusing backward with step size 3, wait=true...
..........
Focus distance: 655350
Focus motor position: 500
Focus range: 11 steps forward, 10 steps backward.
Motor steps: 1883 forward, 1914 backward, 31 lost.
Focusing forward with step size 3, wait=false...
...
Focus distance: 250
Focus motor position: -1401
Focusing backward with step size 3, wait=false...
............................................................................
Focus distance: 655350
Focus motor position: 501
Focus range: 101 steps forward, 76 steps backward.
Motor steps: 1901 forward, 1902 backward, 1 lost.
Focusing forward with step size 2, wait=true...
................................................................
Focus distance: 250
Focus motor position: -1457
Focusing backward with step size 2, wait=true...
..............................................................
Focus distance: 655350
Focus motor position: 467
Focus range: 64 steps forward, 62 steps backward.
Motor steps: 1958 forward, 1924 backward, 34 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 250
Focus motor position: -1472
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: 458
Focus range: 248 steps forward, 222 steps backward.
Motor steps: 1939 forward, 1930 backward, 9 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 5270
Focus motor position: 29990
Focusing backward with step size 1, wait=true...
...
Focus distance: 5270
Focus motor position: 29990
Focus range: 17990 steps forward, 753 steps backward.
Motor steps: 29532 forward, 0 backward, 29532 lost.
Focusing forward with step size 1, wait=false...
...


Stubs Test Fine
[Pass] is_play_mode() => 0x1
[INFO] Camera model: Canon EOS REBEL T3i 1.0.3 (0x80000286 600D)
[Pass] is_camera("DIGIC", "*") => 0x1
[Pass] is_camera(__camera_model_short, firmware_version) => 0x1
[Pass] src = fio_malloc(size) => 0x423ec154
[Pass] dst = fio_malloc(size) => 0x42bf0164
[Pass] memcmp(dst, src, 4097) => 0xda
[Pass] edmac_memcpy(dst, src, 4097) => 0x42bf0164
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42bf0164
[Pass] memcmp(dst, src, size) => 0x78
[Pass] edmac_memcpy(dst, src, size) => 0x42bf0164
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffa5
[Pass] edmac_memcpy_start(dst, src, size) => 0x42bf0164
       dt => 0x3208
[Pass] copied => 0x400f5c
[Pass] copied => 0x400f5c
[Pass] copied => 0x400f5c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffffb2
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xbed50
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x740
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0x119
[Pass] tries[1] => 0xe4
[Pass] tries[2] => 0xf4
[Pass] tries[3] => 0xf7
[Pass] failr[0] => 0xe4
[Pass] failw[0] => 0x114
[Pass] failr[1] => 0x86
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xeb
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x34
       times[1] / tries[1] => 0x2f
       times[2] / tries[2] => 0x38
       times[3] / tries[3] => 0x34
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) => 0x40c0cef4
[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) => 0x423ec154
[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) => 0x99de
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x6
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9a04
       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) => 0x1fa
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x13f
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x10e
[Pass] ABS((get_us_clock() - t0) - 110000) => 0x1b8
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x1fc
       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) => 0x24f
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x226
[Pass] ABS((get_us_clock() - t0) - 310000) => 0x1e6
       t0 = GET_DIGIC_TIMER() => 0x3e5c9
       msleep(250)
       t1 = GET_DIGIC_TIMER() => 0x79643
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x38
       Date/time: 2018/05/06 14:21:56
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x3a
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
       m0 = MALLOC_FREE_MEMORY => 0x42dd8
[Pass] p = (void*)_malloc(50*1024) => 0xc0a90
[Pass] CACHEABLE(p) => 0xc0a90
       m1 = MALLOC_FREE_MEMORY => 0x365c8
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x42dd8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0xbc198
[Pass] p = (void*)_AllocateMemory(128*1024) => 0xc0ceb4
[Pass] CACHEABLE(p) => 0xc0ceb4
       m1 = GetFreeMemForAllocateMemory() => 0x9c188
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0xbc198
[Pass] ABS((m0-m1) - 128*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x42dd8
       m02 = GetFreeMemForAllocateMemory() => 0xbc198
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x40c0cef4
[Pass] UNCACHEABLE(p) => 0x40c0cef4
[Pass] CACHEABLE(p) => 0xc0cef4
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40c0cef4
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x423ec144
[Pass] UNCACHEABLE(p) => 0x423ec144
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x42dd8
       m12 = GetFreeMemForAllocateMemory() => 0xbc198
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0xc0a90
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc0ab8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423ec140
[Pass] UNCACHEABLE(p) => 0x423ec140
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc0a90
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f68000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc0ab8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f68000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       largest_shoot_block = suite->size => 0x1f68000
[INFO] largest_shoot_block: 31MB
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0xc0a90
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x2068000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc0ab8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1c10000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423ec140
[Pass] UNCACHEABLE(p) => 0x423ec140
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b18
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d34000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2068000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x2068000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc0a90
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc0ab8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1c10000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423ec140
[Pass] UNCACHEABLE(p) => 0x423ec140
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b18
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d34000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2938000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       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") => 0x16a01c
[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) => 0x16a000
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x169fe0
[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) => 0x328e00c0
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] get_task_name_from_id(current_task->taskId) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x32900094
[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) => 0x32920202
[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) => 0x32940098
[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, 11622 passed, 0 failed.
.



API Test Redid new battery

===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 14:25:23
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 133
    apex = 9.625
    ms = 1
    value = 0.001266
  aperture = table:
    raw = 48
    apex = 5.
    value = 5.6
    min = table:
      raw = 37
      apex = 3.625
      value = 3.5
    max = table:
      raw = 80
      apex = 9.
      value = 22.6
  iso = table:
    raw = 0
    apex = 0
    value = 0
  ec = table:
    raw = 0
    value = 0
  flash = true
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 5200
  mode = 3
  metering_mode = 3
  drive_mode = 1
  model = "Canon EOS REBEL T3i"
  model_short = "600D"
  firmware = "1.0.3"
  temperature = 172
  gui = table:
    menu = false
    play = false
    play_photo = false
    play_movie = false
    qr = false
    idle = true
  bulb = function: p
  shoot = 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:
  clear = function: p
  write = function: p
  hide = function: p
  show = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  overlays = false
  info = function: p
  pause = function: p
  stop = function: p
  resume = function: p
  wait = function: p
  start = function: p
lens = table:
  name = "EF-S18-55mm f/3.5-5.6 IS"
  focal_length = 18
  focus_distance = 655350
  hyperfocal = 3081
  dof_near = 3066
  dof_far = 1000000
  af = true
  af_mode = 0
  autofocus = function: p
  focus = function: p
display = table:
  idle = nil
  height = 480
  width = 720
  print = function: p
  clear = function: p
  on = function: p
  off = function: p
  notify_box = function: p
  draw = function: p
  load = function: p
  line = function: p
  circle = function: p
  rect = function: p
  screenshot = function: p
  pixel = function: p
key = table:
  last = 10
  wait = function: p
  press = function: p
menu = table:
  visible = false
  get = function: p
  set = function: p
  close = function: p
  block = function: p
  open = function: p
  select = function: p
  new = function: p
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 24
  ms_clock = 24404
  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/100CANON/"
  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 = 9997
    folder_number = 100
    free_space = 15633696
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 9997
    folder_number = 100
    free_space = 15633696
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    min = 25
    wday = 7
    yday = 1
    year = 2018
    month = 5
    hour = 14
    day = 6
    isdst = false
    sec = 24
  directory = function: p
  rename = 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:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: 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 Canon GUI functions...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Start LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Canon GUI tests completed.

Testing ML menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9998.CR2: 22508842
B:/DCIM/100CANON/IMG_9998.JPG: 3915831
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
500D/T1i  550D/T2i  600D/T3i  700D/T5i

dfort

This looks like you had Continuous AF Enabled. Not exactly sure how it works on the 600D but if the camera is trying to focus continuously while in LiveView it will be playing tug-of-war with the lua script.

Good to see you're using a lens that has completed these tests on other cameras, EF-S18-55mm f/3.5-5.6 IS. Some lenses are not working with lua on some cameras.

mk11174

600D does not have the option for continuous focus like the 700D has

Weird, on this 2nd test, it never did the lens focus part.

Update: Got lens focus test to finish by changing zoom to wide open and it finished all focus movements, but the next test shut camera off and lost log results.
500D/T1i  550D/T2i  600D/T3i  700D/T5i