Canon 1200D

Started by akkotyni, July 12, 2014, 02:48:26 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Bro85

Just one question will FPS override allow me to shoot 720p in 25 fps? And how to turn on the RAW filming (module mlv_rec is unavailable)

gmalin54

Hi,
Today I just installed Nightly.2017Feb12.1200D101 on my 1200D. It seems to be working OK. I have access to the ML menus by pressing the trashbin button it works fine, even in video mode. I tested the intervalometer, which is what matters most for me, it is OK. I am looking forward to testing other functionalities. I was not able to find the movie crop mode, I don't know if this is normal.
The install process was very easy I just had to do a previous upgrade of the firmware from 1.0.0 to 1.0.1 (it is not possible to download the 1.0.1 on the Canon website, they only have 1.0.2, does anybody know why ?) Thanks for your attention

gmalin54

In fact, the access to ML menus with the thrashbin button works only in video w/movie exposure "auto" and does not when movie exposure is set to "manual" in the Canon menu

matija

Hi,

I have actually now been using ML on 1200D for 6+ months, stills only. I have, however, gone through the testing and all I can say is what has been repeated before.

For some reason the ETTR is gone in the FW I downloaded today, although I used it with success in the first 1200D version. I have also used dual ISO (the main reason why I downloaded ML) and also zebras and magic zoom.

We are one button short. Button used for activating ML menu is AV. This button is normally used as a "shift" button, which means that when you hold it and use the dial, you are setting the "other" value. For instance, in Manual, the dial changes exposure time, and with this button pressed, aperture is changed. This is probably why the menu is not accessible when video mode is used in manual setting. Actually, if you set everything in the ML menu right while in Auto mode and then you go to Canon menu and switch to Manual, you can use all of the functions, except accessing the menu.

Also, there seems to be a huge battery drain in any of the video modes. Also intervalometer drains the battery pretty fast.

Anyway, I will do the complete report in the next few days.


a1ex

Okay, sounds like you had a version with properties enabled. In this case, I'll definitely want to know more about it (what works, what not, what you have tested).


matija

Nightly.2016Jul30.1200D101

I have, as said, used this for quite a while. I do have 80D, but 1200D with 24mm pancake I carry basically anywhere. In low light,  DualISO I used all the time. It does register as 5DM3, I am not sure whether there would be a better solution, but it was much better than without it. I do not care for resolution loss, if I do, I take 80D.

I have reset all settings, rebooted and tested from scratch. I have no idea how ML "should" look since I have no camera where it "officially" works. When not stated otherwise, M mode with manual ISO is applied.

ML menu can be accessed in M, Av, Tv, P modes. It can be accessed in Video mode only if Movie Exposure is set to Auto. In Video Manual and noob modes  "AV/Trash" button does not nothing However, in LV ML overlay is visible.

There are other quirks. I use "flash raise" button as ISO button. ( I use flash so rarely and I can still raise it from Q.) Normally, when I press it, I can change ISO settings with the dial. With ML in LV, when I press it, ISO values are shown for split second, then gone (as well as all other overlays), but when I use the dial, they come back. I actually have so grown into it that I see it as a feature, but might be of interest.

Expo:
- White Balance - works great, all features, including Auto in live view. I have no idea how to get back to Auto except throgh Q, but its fine
- ISO - if Highligh Priority is enabled, order of using ML menu and Q with same settings yields different results. As far as I can see, only in JPGs, but not 100% sure. Can set the last setting in Movie. No idea what it does.
- Shutter - OK
- Aperture - OK
- Picture Style - OK
- Expo. Lock - OK, this should be a P feature, not M, but that's another story.
- Expo. Presets - OK, nice one, will use it now that I get what it does
- Expo. Override - I can set it, changes LV a bit, not sure how this works, though

Overlay:
Global Draw - OK (again, I am not sure how it is supposed to look, so if there is useful information, I mark it as OK)
Zebras - OK (not sure about raw on photo review, RAW Zebras, works in LV)
Focus Peak - OK
Magic Zoom - OK, except in Full screen, then nothing happens
Ghost Image - OK
Spotmeter - OK
False Color - OK
Histogram - OK, ETTR Hint is great help
Waveform - OK
Vectorscope - OK

Shoot:
Advanced Bracket - If frames in "autodetect", then it shoots only one frame, seems to be working in other modes
Intervalometer - OK, have not tested all combinations, one of the things that work great outside LV. Will test battery drain tomorrow.
Bulb Timer - works, but it first takes a "normal" bulb photo, then does timed one, maybe this is OK
Motion Detect - OK, also Steady hands outside LV
Shot Preferences - PicsAtOnce and UseAutofocus work (UseAutofocus only if AF is on shutter button, but this is Cannon issue as far as I know, 80D has it on touchscreen), SnapSimulation ... no, how should it work?, did not test scripts.

Focus:
Trap Focus - Hold AF button works, also outside LV, which is gerat, Continous says "Assign AF button to half-shutter from CFn!", but changing it does nothing.
Follow Focus: OK
Rack Focus - not tested, no idea what this does
Focus Stacking - Ok, but did not really examine the pics
DOF Settings - Works, no idea if accurate
Focus Patterns - OK (used that a lot, works for sure)

And battery died, ML uses a lot of power, only took 50sh picts and 10 secs of video and tested everythign so far. Will continue tomorrow.



matija

Tried everything else except raw video modules. All of it just works. The only thing that does not work is loading all modules at once (not enough memory). And when ETTR is supposed to adjust DualISO, ti does not do what I expect it to.

Otherwise ... well, the one from jenkins is far worse. Which one do you want me to test next?

BTW, I learned so much about ML in the last two days, I need it on 80D, but that Is another topic...

a1ex

Sounds encouraging - enabled properties in the Jenkins build and updated it to the current codebase (including latest Lua).

magiclantern-Nightly.2017Sep11.1200D101.zip
magiclantern-Nightly.2017Sep14.1200D101.zip

Autofocus should work fine now - ML should be able to move it to the back button or to half-shutter as needed - that's how it controls autofocus (if AF is on half-shutter, taking a picture will also AF; if it's on the back button, it will not AF). It should work regardless of the AF button setting from Canon menu. However, I did not test this change - only looked up the CFn menu contents.

Here are some tests I'd like you to try:

- a screenshot with raw overlays (histogram, zebra, spotmeter), with a test image that has some overexposure and some underexposure
- a screenshot of Debug -> Free Memory
- selftest.mo -> stubs API test
- lua.mo -> api_test.lua
- bench.mo -> memory benchmarks
- edmac.mo -> EDMAC model test
- the other items from the above modules (with lower priority)

Did you also have any kind of raw video in the previous build?

Do you have manual exposure controls in video mode from Canon? (if not, ML has some workarounds)

ilia3101

Quote from: a1ex on September 11, 2017, 11:14:48 PM
Did you also have any kind of raw video in the previous build?
Same question here!

Just noticed the 1200d has ML, and looks interesting considering the price.

Also does 1200d have 40mb/s?

a1ex

It's plain old DIGIC 4, firmware very similar to 60D. Type "benchmark" in the search box ;)

No UHS strings in the firmware either.

73morozzz

I installed a new build. After the camera is restarted, the red LED flashes the SOS (three dashes, three dots). I think that the build is incorrect.

m1k6

Just tried the new build - with unexpected behaviour:
After inserting the card and closing the card door, the camera's LED started blinking in a SOS rythm (3 times short, 3 times long and so on).
I checked my card, but I couldn't find a log file.

I then tested the jenkins build from febuary, which is working fine.

a1ex

That's out of memory - disabled a feature and posted a new build. Ran some basic tests in QEMU:


matija

2017Sep14

I have not gone through everything yet, little what I have tried, works fine.

I have the screenshots, but they are not correct. As in what I see and what is in the file is not nearly identical.

With Zebras on, set overexposure at 99% and underexposure at 1%, it toggles between showing one ant the other. I am not sure if that is intentional.
The PPM has diagonal orange lines basically over the whole image except in spotmeter. I guess spotmeter, graphs, Q options etc are in the upper layers.
I will try to record the back screen with another camera in the next days. But it looks like a problem with making a screenshot since zebras work fine.

Free Memory ... when I try to do the screenshot, it somehow stays in the menu, says 228K + 664K, I guess you want next screen... will try few more times tomorrow, when I am on linux machine and I can normally use ppm files.

Here are stubs:

[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x4233c0c4
[Pass] dst = fio_malloc(size) => 0x42b400d4
[Pass] memcmp(dst, src, 4097) => 0xffffff79
[Pass] edmac_memcpy(dst, src, 4097) => 0x42b400d4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42b400d4
[Pass] memcmp(dst, src, size) => 0xffffff13
[Pass] edmac_memcpy(dst, src, size) => 0x42b400d4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffd5
[Pass] edmac_memcpy_start(dst, src, size) => 0x42b400d4
       dt => 0x3143
[Pass] copied => 0x40216c
[Pass] copied => 0x40216c
[Pass] copied => 0x40216c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x3d
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcbc10
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x360
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xf3
[Pass] tries[1] => 0xef
[Pass] tries[2] => 0x107
[Pass] tries[3] => 0xff
[Pass] failr[0] => 0xa6
[Pass] failw[0] => 0xd4
[Pass] failr[1] => 0x8d
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xe6
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x1f
       times[1] / tries[1] => 0x1e
       times[2] / tries[2] => 0x21
       times[3] / tries[3] => 0x22
Cache tests finished.

[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
       FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409af030
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x42204094
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x882e
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x7
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8830
       msleep(400)
       CancelTimer(timer)
[Pass] timer_func => 0x0
       msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x4aa
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x15f
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x11b
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0x55b
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x4ac
       msleep(80)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x3
       msleep(80)
[FAIL] timer_func => 0x1
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x62a
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x5d3
[FAIL] ABS((get_us_clock_value() - t0) - 310000) => 0xc8b7
       t0 = *(uint32_t*)0xC0242014 => 0x299a2
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0x64952
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x1d
       Date/time: 2017/09/18 01:26:29
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x1f
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2


LUA TESTS:


===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-18 01:41:02
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 80
    apex = 3.
    ms = 125
    value = 0.124999
  aperture = table:
    raw = 45
    apex = 4.624999
    value = 4.9
    min = table:
      raw = 45
      apex = 4.624999
      value = 4.9
    max = table:
      raw = 82
      apex = 9.25
      value = 24.6
  iso = table:
    raw = 72
    apex = 5
    value = 100
  ec = table:
    raw = 0
    value = 0
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 6000
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS 1200D"
  model_short = "1200D"
  firmware = "1.0.1"
  temperature = 176
  state = 0
  bulb = function: p
  burst = function: p
  wait = function: p
  shoot = function: p
  reboot = function: p
event = table:
  pre_shoot = nil
  post_shoot = nil
  shoot_task = nil
  seconds_clock = nil
  keypress = nil
  custom_picture_taking = nil
  intervalometer = nil
  config_save = nil
console = table:
  write = function: p
  show = function: p
  clear = function: p
  hide = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  resume = function: p
  pause = function: p
  stop = function: p
  wait = function: p
  info = function: p
  start = function: p
lens = table:
  name = "EF-S10-18mm f/4.5-5.6 IS STM"
  focal_length = 0
  focus_distance = 14080
  hyperfocal = 0
  dof_near = 0
  dof_far = 0
  af = true
  af_mode = 0
  focus = function: p
  autofocus = function: p
display = table:
  idle = true
  height = 480
  width = 720
  load = function: p
  clear = function: p
  print = function: p
  notify_box = function: p
  draw = function: p
  line = function: p
  on = function: p
  screenshot = function: p
  rect = function: p
  off = function: p
  circle = function: p
  pixel = function: p
key = table:
  last = 10
  press = function: p
  wait = function: p
menu = table:
  visible = false
  get = function: p
  select = function: p
  new = function: p
  set = function: p
  close = function: p
  open = function: p
  block = function: p
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 22
  ms_clock = 22422
  image_prefix = "IMG_"
  dcim_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "B:/DCIM/"
    path = "B:/DCIM/104CANON/"
  config_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 251
    folder_number = 104
    free_space = 21845824
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 251
    folder_number = 104
    free_space = 21845824
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    year = 2017
    min = 41
    hour = 1
    isdst = false
    day = 18
    month = 9
    wday = 2
    yday = 261
    sec = 2
  directory = function: p
  call = function: p
  rename = function: p
  remove = function: p
interval = table:
  time = 10
  count = 0
  running = false
  stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
  create = function: p
  yield = function: p
property = table:
Generic tests completed.

Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.

Testing menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0252.CR2: 23342908
B:/DCIM/104CANON/IMG_0252.JPG: 5848968
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0253.CR2: 23337577
B:/DCIM/104CANON/ABC_0253.JPG: 5829948
B:/DCIM/104CANON/ABC_0254.CR2: 23338605
B:/DCIM/104CANON/ABC_0254.JPG: 5829263
Bracketed pictures...
B:/DCIM/104CANON/IMG_0255.CR2: 20946081
B:/DCIM/104CANON/IMG_0255.JPG: 3572488
B:/DCIM/104CANON/IMG_0256.CR2: 23345659
B:/DCIM/104CANON/IMG_0256.JPG: 5846570
B:/DCIM/104CANON/IMG_0257.CR2: 26253484
B:/DCIM/104CANON/IMG_0257.JPG: 5369382
Bulb picture...
Elapsed time: 11486
B:/DCIM/104CANON/IMG_0258.CR2: 14243441
B:/DCIM/104CANON/IMG_0258.JPG: 365013
Picture taking tests completed.

Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.

Testing half-shutter...
Half-shutter test OK.

Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.


Testing lens focus functionality...
Autofocus outside LiveView...



a1ex

Quote from: matija on September 18, 2017, 01:58:50 AM
I have the screenshots, but they are not correct. As in what I see and what is in the file is not nearly identical.

With Zebras on, set overexposure at 99% and underexposure at 1%, it toggles between showing one ant the other. I am not sure if that is intentional.
The PPM has diagonal orange lines basically over the whole image except in spotmeter. I guess spotmeter, graphs, Q options etc are in the upper layers.

Zebras, in this configuration, are done in the display hardware (ML configures the threshold, the color to overwrite, the color to display, and whether to highlight values above or below that threshold). Screenshot code knows nothing about this, so it displays all the pixels that might turn into zebras, depending on the image contents.

Workaround: use software-based zebras (RGB or regular Luma) when taking a screenshot.

Did you stop the tests earlier, or the camera turned off by itself? (auto power off)

matija

Thanx for reply. Will do screenshots.
I thought tests ended completely.
Will repeat tests with auto off off.
Quick 15 minute test drains battery from full to under 50%.

matija

Ran LUA test multiple times, there are several lines on the screen that do not get written in the file. Maybe you need an additional flush at the end?
However, this last test is successful as well. However, when I try to re-run the test without rebooting, there is an "error" text in the line and it is gray.

STUB test always has identical line length.


===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-18 15:24:20
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 27
    apex = -3.625
    ms = 12338
    value = 12.337686
  aperture = table:
    raw = 48
    apex = 5
    value = 5.599999
    min = table:
      raw = 44
      apex = 4.5
      value = 4.7
    max = table:
      raw = 81
      apex = 9.124999
      value = 23.6
  iso = table:
    raw = 104
    apex = 9
    value = 1600
  ec = table:
    raw = 0
    value = 0
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 6000
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS 1200D"
  model_short = "1200D"
  firmware = "1.0.1"
  temperature = 172
  state = 0
  reboot = function: p
  shoot = function: p
  wait = function: p
  bulb = function: p
  burst = function: p
event = table:
  pre_shoot = nil
  post_shoot = nil
  shoot_task = nil
  seconds_clock = nil
  keypress = nil
  custom_picture_taking = nil
  intervalometer = nil
  config_save = nil
console = table:
  clear = function: p
  show = function: p
  write = function: p
  hide = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  resume = function: p
  stop = function: p
  pause = function: p
  info = function: p
  wait = function: p
  start = function: p
lens = table:
  name = "EF-S10-18mm f/4.5-5.6 IS STM"
  focal_length = 0
  focus_distance = 14080
  hyperfocal = 0
  dof_near = 0
  dof_far = 0
  af = true
  af_mode = 0
  focus = function: p
  autofocus = function: p
display = table:
  idle = true
  height = 480
  width = 720
  clear = function: p
  rect = function: p
  circle = function: p
  load = function: p
  off = function: p
  on = function: p
  line = function: p
  notify_box = function: p
  draw = function: p
  screenshot = function: p
  pixel = function: p
  print = function: p
key = table:
  last = 10
  wait = function: p
  press = function: p
menu = table:
  visible = false
  set = function: p
  open = function: p
  block = function: p
  select = function: p
  get = function: p
  close = function: p
  new = function: p
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 15
  ms_clock = 15719
  image_prefix = "IMG_"
  dcim_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "B:/DCIM/"
    path = "B:/DCIM/104CANON/"
  config_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 302
    folder_number = 104
    free_space = 20006816
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 302
    folder_number = 104
    free_space = 20006816
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    day = 18
    wday = 2
    year = 2017
    min = 24
    isdst = false
    sec = 21
    month = 9
    hour = 15
    yday = 261
  call = function: p
  directory = function: p
  rename = function: p
  remove = function: p
interval = table:
  time = 10
  count = 0
  running = false
  stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
  create = function: p
  yield = function: p
property = table:
Generic tests completed.

Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.

Testing menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0303.CR2: 25801603
B:/DCIM/104CANON/IMG_0303.JPG: 5574998
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0304.CR2: 25780511
B:/DCIM/104CANON/ABC_0304.JPG: 5618666
B:/DCIM/104CANON/ABC_0305.CR2: 25799499
B:/DCIM/104CANON/ABC_0305.JPG: 5612232
Bracketed pictures...
B:/DCIM/104CANON/IMG_0306.CR2: 22706513
B:/DCIM/104CANON/IMG_0306.JPG: 4545727
B:/DCIM/104CANON/IMG_0307.CR2: 25793189
B:/DCIM/104CANON/IMG_0307.JPG: 5582638
B:/DCIM/104CANON/IMG_0308.CR2: 23506898
B:/DCIM/104CANON/IMG_0308.JPG: 3162347
Bulb picture...
Elapsed time: 11587
B:/DCIM/104CANON/IMG_0309.CR2: 14259065
B:/DCIM/104CANON/IMG_0309.JPG: 365013
Picture taking tests completed.

Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.

Testing half-shutter...
Half-shutter test OK.

Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.


Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 1400
Autofocus in LiveView...
Focus distance: 655350
Focusing backward...
Focus distance: 655350
Focus motor position: 171
Focusing forward with step size 3, wait=true...
......
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 3, wait=true...
.....
Focus distance: 655350
Focus motor position: 191
Focus range: 6 steps forward, 5 steps backward.
Motor steps: 479 forward, 499 backward, 20 lost.
Focusing forward with step size 3, wait=false...
................................
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 3, wait=false...
.........................
Focus distance: 655350
Focus motor position: 191
Focus range: 32 steps forward, 25 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 2, wait=true...
..........................
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 2, wait=true...
..........................
Focus distance: 655350
Focus motor position: 191
Focus range: 26 steps forward, 26 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 2, wait=false...
...................................................
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 2, wait=false...
........................................................
Focus distance: 655350
Focus motor position: 191
Focus range: 51 steps forward, 56 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 220
Focus motor position: -308
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: 191
Focus range: 106 steps forward, 107 steps backward.
Motor steps: 499 forward, 499 backward, 0 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 220
Focus motor position: -303
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: 191
Focus range: 156 steps forward, 154 steps backward.
Motor steps: 494 forward, 494 backward, 0 lost.

Focus test completed.

Testing exposure settings...
Camera    : Canon EOS 1200D (1200D) 1.0.1
Lens      : EF-S10-18mm f/4.5-5.6 IS STM
Shoot mode: 3
Shutter   : ,5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture  : 5.6 (raw 48, f/5.599999, apex 5)
Av range  : 4.7..23 (raw 44..81, f/4.7..f/23.6, apex 4.5..9.124999)
ISO       : 1600 (raw 104, 1600, apex 9)
EC        : 0.0 (raw 0, 0 EV)
Flash EC  : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...













This is with screenshot on keypress, could not get it without it for some reason, might be my fault. I think red lines are caused by this because they are not there in normal operation.




a1ex

The shutter, ISO and aperture tests are a little long; maybe you tried to start the test while another instance was already running? In any case, after "Setting ISO to random values..." there are a few more tests: "Setting aperture to random values..." and movie recording tests.

Minor: focus step sizes 1 and 2 appear to be identical; it may depend on the lens, and I expect to be the same in EOS utility.

I doubt Lua needs explicit flush on file I/O side, especially since the file is closed before the script ends. You can check by commenting out the tests in api_tests() and leaving just the log file creation and one printf, for example.

Your LiveView screenshot reveals another bug: ML overlays over Canon status bar. That shouldn't happen.

matija

Definitely not all lines are shown in the file, but my mistake, sorry.

M/SCRIPTS/API_TEST.LUA:588 set `iso` failed
you have lines in stack:
588 globals.test_camera_exposure
1166 globals.api_test
1188  main chunk

and then that its finished.


            if math.random(1,2) == 1 then
                camera.iso.value = iso
            else
                camera.iso = iso
            end


I just skipped it, however, there was another error, line 520. I run it several times, it sometimes passes. Then it hits at 507. I will try to get the "safe" ranges for all values. Also, on 1200D, ISO can only be set in full stops, maybe thats the issue here. I will test it as well, LUA here I come.
BTW, camera.iso and camera.iso.value, what is the difference? Just a brief explanation or link.

Regarding lens, I can test with a faster lens. Besides 10-18mm, I have Canon 85mm f/1.8, Canon 18-135 STM, Sigma 30mm 1.4 Art and Canon 24mm f/2.8 STM, so if you know the results with any of these, I can use the same one.

To the overlays, can you please post how it should look? Is there a way to change the looks without diving into C? I live of python, I think LUA should not be a problem, but my C skills ... its been 25 years since I last used it.



a1ex

Quote from: matija on September 18, 2017, 06:01:37 PM
BTW, camera.iso and camera.iso.value, what is the difference?

No difference; just two ways of setting the same thing (and the API test tries both methods).

Quote
To the overlays, can you please post how it should look?

If Canon overlays are enabled, ML should refuse to draw its overlays and should print a warning in menu. Will let you know how to diagnose it.




Looking at stubs test (selftest.c), Canon powersaving (auto power off) should be disabled temporarily by ML while running any of the tests from there. Lua doesn't have this trick (will fix). Do you mind repeating the stubs test, with auto power off enabled and set to 30 seconds?

Other places with powersave workarounds:
- ML installer (it waits for 60 seconds to disable the boot flag; if Auto power off is set to 30 seconds, ML should prevent the camera from turning off, even if you don't press any button during this interval).
- turning the focus ring on a lens that reports focus distance, in MF mode (issue 2431 - with Canon firmware, this action will not reset the powersave timer, but should do this with ML)
- file_man during very long file copy operations
- mlv_rec/mlv_lite/silent (not yet on 1200D)




BTW, some progress understanding how the Av button works:
http://www.magiclantern.fm/forum/index.php?topic=17596.msg190102#msg190102

matija

Ok, regarding function test_camera_exposure(), when I comment out all other tests, this tests passes in non-LV mode, but fails (most of the time) in LV. The fail seems completely independent of method and value. I ran this function ~50 times with fors increased to 1000 iterations and printing of values before the change.

I know so little about the ML internals, but it from stack, it is clear that the underlying C function fails. I have tried with Manual and Auto ISO and various other options set or unset, including toggling Canon and ML Overlays, could not see a definite influence. I am including a screenshot below.





But from the feel of it (yeah, I know), processor or memory may just be inadequate. I know ML is for most people about Video, but I would prefer to have a light and stable version with partial functionality.

There is a bigger issue I noticed, I did not do Video tests because in the settings I have had for a while, I did not load raw video modes at all. Now that I try it, there are errors there, even before any tests are run. I have drained both my batteries, I want to see which module is the issue or which combination next.

Will repeat the tests as you suggested as soon as the batteries are full. Yeah, have to get that AC thingy ASAP.

matija

Took last nightly for 1200D. Nightly.2017Sep15.1200D101
Enabled all modules, got errors:




I tried to get as many modules as possible on without errors, this is the result:




With adding any of the disabled modules, some errors appear. All not in the first image seem to be dependency issues, so I will not go through all combinations unless you need me to.

With 30s shutdown, stubtest ran:
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x426d0464
[Pass] dst = fio_malloc(size) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x12
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0xffffff60
[Pass] edmac_memcpy(dst, src, size) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffff02
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ed4474
       dt => 0x31e0
[Pass] copied => 0x40240c
[Pass] copied => 0x40240c
[Pass] copied => 0x40240c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x50
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcbfd0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4a0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xf5
[Pass] tries[1] => 0xdb
[Pass] tries[2] => 0x111
[Pass] tries[3] => 0x107
[Pass] failr[0] => 0xa9
[Pass] failw[0] => 0xd2
[Pass] failr[1] => 0x7b
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xea
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x1d
       times[1] / tries[1] => 0x1d
       times[2] / tries[2] => 0x21
       times[3] / tries[3] => 0x22
Cache tests finished.

[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
       FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409b076c
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x426d0464
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9fe4
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x9
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0xa00c
       msleep(400)
       CancelTimer(timer)
[Pass] timer_func => 0x0
       msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x698
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x16f
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x125
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0x3f5
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x69a
       msleep(80)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x3
       msleep(80)
[Pass] timer_func => 0x3
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x4a5
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x45c
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x202
       t0 = *(uint32_t*)0xC0242014 => 0x54868
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0x8f9e0
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x8
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x32
       Date/time: 2017/09/19 17:07:50
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x34
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
       m0 = MALLOC_FREE_MEMORY => 0x372e0
[Pass] p = (void*)_malloc(50*1024) => 0xcdd10
[Pass] CACHEABLE(p) => 0xcdd10
       m1 = MALLOC_FREE_MEMORY => 0x2aad0
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x372e0
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe1e34
[Pass] CACHEABLE(p) => 0xbe1e34
       m1 = GetFreeMemForAllocateMemory() => 0xc2e20
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x372e0
       m02 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be1e74
[Pass] UNCACHEABLE(p) => 0x40be1e74
[Pass] CACHEABLE(p) => 0xbe1e74
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be1e74
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x426d0454
[Pass] UNCACHEABLE(p) => 0x426d0454
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x372e0
       m12 = GetFreeMemForAllocateMemory() => 0x102e30
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d3c000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ae8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b20
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b90
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc8668
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ae8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b20
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b90
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc34
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bbe0
[Pass] bar => '*****hjkl;'
       bzero32(bar + 5, 5)
[Pass] bar => '****'
       EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       task_create("test", 0x1c, 0x1000, test_task, 0) => 0x18a600c4
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x18a800a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x18aa0324
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x18ac0082
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
       SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
       SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
       SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
       GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
       SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0



matija

... continuing, due to 20k limit ...

Disabled, it ran:
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x426d0464
[Pass] dst = fio_malloc(size) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0xffffff88
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0xffffffab
[Pass] edmac_memcpy(dst, src, size) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x81
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ed4474
       dt => 0x3132
[Pass] copied => 0x4024ac
[Pass] copied => 0x4024ac
[Pass] copied => 0x4024ac
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffff93
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcc098
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4ff
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xfd
[Pass] tries[1] => 0x106
[Pass] tries[2] => 0xeb
[Pass] tries[3] => 0xfa
[Pass] failr[0] => 0xb5
[Pass] failw[0] => 0xe2
[Pass] failr[1] => 0x9c
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xc9
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x1d
       times[1] / tries[1] => 0x1d
       times[2] / tries[2] => 0x20
       times[3] / tries[3] => 0x20
Cache tests finished.

[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x2
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
       FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409a76d4
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x426d0464
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8966
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x1
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x8968
       msleep(400)
       CancelTimer(timer)
[Pass] timer_func => 0x0
       msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x460
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x173
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x126
[FAIL] ABS((get_us_clock_value() - t0) - 110000) => 0x1398f
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x462
       msleep(80)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x3
       msleep(80)
[Pass] timer_func => 0x3
       msleep(20)
[Pass] timer_func => 0x1
[FAIL] ABS(DeltaT(timer_time, t0) - 300000) => 0x13a5d
[FAIL] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x13a19
[FAIL] ABS((get_us_clock_value() - t0) - 310000) => 0x13613
       t0 = *(uint32_t*)0xC0242014 => 0xbbf8b
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0x150
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x1c
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x2
       Date/time: 2017/09/19 17:18:02
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x4
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
       m0 = MALLOC_FREE_MEMORY => 0x371a8
[Pass] p = (void*)_malloc(50*1024) => 0xcddd8
[Pass] CACHEABLE(p) => 0xcddd8
       m1 = MALLOC_FREE_MEMORY => 0x2a998
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x371a8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbf949c
[Pass] CACHEABLE(p) => 0xbf949c
       m1 = GetFreeMemForAllocateMemory() => 0xc2de0
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x371a8
       m02 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40bf94dc
[Pass] UNCACHEABLE(p) => 0x40bf94dc
[Pass] CACHEABLE(p) => 0xbf94dc
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40bf94dc
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x426d0454
[Pass] UNCACHEABLE(p) => 0x426d0454
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x371a8
       m12 = GetFreeMemForAllocateMemory() => 0x102df0
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d3c000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc6438
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc7658
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x199cc4
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x199ca0
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x199c80
[Pass] bar => '*****hjkl;'
       bzero32(bar + 5, 5)
[Pass] bar => '****'
       EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       task_create("test", 0x1c, 0x1000, test_task, 0) => 0x1b2400c4
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x1b2600a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x1b2801e0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x1b2a0096
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
       SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
       SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
       SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
       GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
       SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0


Used Meld on them most of the differences are different memory addresses and alike, but there are several that seem important. But, again, have no clue what they actually mean.
In both cases, it s the end of test, except the part where it states that is done (which should be included in the file if you ask me, like in LUA test).

matija

LUA TEST
I had to comment out focusing test for following reason. Lens was Canon EF 85mm f/1.8.

.


photo hosting ebay


Offending line is:
assert(lens.autofocus())


Note that camera exposure test ran in non-LV mode.


===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-19 17:53:59
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 75
    apex = 2.374999
    ms = 193
    value = 0.192776
  aperture = table:
    raw = 22
    apex = 1.75
    value = 1.8
    min = table:
      raw = 22
      apex = 1.75
      value = 1.8
    max = table:
      raw = 80
      apex = 9
      value = 22.6
  iso = table:
    raw = 104
    apex = 9
    value = 1600
  ec = table:
    raw = 0
    value = 0
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 6000
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS 1200D"
  model_short = "1200D"
  firmware = "1.0.1"
  temperature = 179
  state = 0
  shoot = function: p
  bulb = function: p
  burst = function: p
  wait = function: p
  reboot = function: p
event = table:
  pre_shoot = nil
  post_shoot = nil
  shoot_task = nil
  seconds_clock = nil
  keypress = nil
  custom_picture_taking = nil
  intervalometer = nil
  config_save = nil
console = table:
  hide = function: p
  write = function: p
  clear = function: p
  show = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  info = function: p
  pause = function: p
  start = function: p
  stop = function: p
  wait = function: p
  resume = function: p
lens = table:
  name = "EF85mm f/1.8 USM"
  focal_length = 0
  focus_distance = 14080
  hyperfocal = 0
  dof_near = 0
  dof_far = 0
  af = true
  af_mode = 0
  autofocus = function: p
  focus = function: p
display = table:
  idle = true
  height = 480
  width = 720
  print = function: p
  notify_box = function: p
  on = function: p
  pixel = function: p
  clear = function: p
  off = function: p
  draw = function: p
  line = function: p
  screenshot = function: p
  load = function: p
  circle = function: p
  rect = function: p
key = table:
  last = 10
  wait = function: p
  press = function: p
menu = table:
  visible = false
  select = function: p
  block = function: p
  set = function: p
  close = function: p
  new = function: p
  open = function: p
  get = function: p
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 25
  ms_clock = 25787
  image_prefix = "IMG_"
  dcim_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "B:/DCIM/"
    path = "B:/DCIM/104CANON/"
  config_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 353
    folder_number = 104
    free_space = 18773408
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 353
    folder_number = 104
    free_space = 18773408
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    day = 19
    sec = 0
    wday = 3
    year = 2017
    min = 54
    month = 9
    isdst = false
    hour = 17
    yday = 262
  rename = function: p
  call = function: p
  remove = function: p
  directory = function: p
interval = table:
  time = 70
  count = 0
  running = false
  stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:32: in function <ML/SCRIPTS/API_TEST.LUA:31>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:31: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:77: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1155: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1180: in main chunktask = table:
  create = function: p
  yield = function: p
property = table:
Generic tests completed.

Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.

Testing menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0354.CR2: 27317690
B:/DCIM/104CANON/IMG_0354.JPG: 5265615
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0355.CR2: 27317188
B:/DCIM/104CANON/ABC_0355.JPG: 5280464
B:/DCIM/104CANON/ABC_0356.CR2: 27320943
B:/DCIM/104CANON/ABC_0356.JPG: 5280700
Bracketed pictures...
B:/DCIM/104CANON/IMG_0357.CR2: 24500173
B:/DCIM/104CANON/IMG_0357.JPG: 6636892
B:/DCIM/104CANON/IMG_0358.CR2: 27321389
B:/DCIM/104CANON/IMG_0358.JPG: 5280779
B:/DCIM/104CANON/IMG_0359.CR2: 20892064
B:/DCIM/104CANON/IMG_0359.JPG: 996640
Bulb picture...
Elapsed time: 11590
B:/DCIM/104CANON/IMG_0360.CR2: 14253844
B:/DCIM/104CANON/IMG_0360.JPG: 365013
Picture taking tests completed.

Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.

Testing half-shutter...
Half-shutter test OK.

Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.

Testing exposure settings...
Camera    : Canon EOS 1200D (1200D) 1.0.1
Lens      : EF85mm f/1.8 USM
Shoot mode: 3
Shutter   : ,5 (raw 75, 0.192776s, 193ms, apex 2.374999)
Aperture  : 1.8 (raw 22, f/1.8, apex 1.75)
Av range  : 1.8..22 (raw 22..80, f/1.8..f/22.6, apex 1.75..9)
ISO       : 1600 (raw 104, 1600, apex 9)
EC        : 0.0 (raw 0, 0 EV)
Flash EC  : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.


Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.

Done!

a1ex

Quote from: matija on September 19, 2017, 06:05:54 PM
I had to comment out focusing test for following reason. Lens was Canon EF 85mm f/1.8.
[...]
Offending line is:
assert(lens.autofocus())


This worked in a previous test:


Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 1400
Autofocus in LiveView...


Maybe the error message is a bit confusing - you should have pointed the camera to something to focus on :D

Quote
In both cases, it s the end of test, except the part where it states that is done (which should be included in the file if you ask me, like in LUA test).

Kept forgetting about this one... fixed now.

Quote
With adding any of the disabled modules, some errors appear.

You may have some modules from an older installation; these are not present in the zip from Jenkins...

Thanks for the tests. Posted a new build, mostly with updates on the Lua side - have fun watching the testing script playing Sokoban in QEMU :)