Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - matija

#1
Camera-specific Development / Re: Canon 1200D
September 21, 2017, 11:18:37 AM
Yes. I don't know what criteria is to call it "done", but for me it's very stable and usable.
See PM for compiling.
Thank you.
#2
Camera-specific Development / Re: Canon 1200D
September 20, 2017, 05:49:32 PM
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-20 17:00:24
===============================================================================

Strict mode tests...
Strict mode tests passed.

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

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

Testing menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/105CANON/IMG_0427.CR2: 26470604
B:/DCIM/105CANON/IMG_0427.JPG: 4943669
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/105CANON/ABC_0428.CR2: 26489071
B:/DCIM/105CANON/ABC_0428.JPG: 4962688
B:/DCIM/105CANON/ABC_0429.CR2: 26473667
B:/DCIM/105CANON/ABC_0429.JPG: 4956692
Bracketed pictures...
B:/DCIM/105CANON/IMG_0430.CR2: 24545251
B:/DCIM/105CANON/IMG_0430.JPG: 5603438
B:/DCIM/105CANON/IMG_0431.CR2: 26469908
B:/DCIM/105CANON/IMG_0431.JPG: 4955454
B:/DCIM/105CANON/IMG_0432.CR2: 21649884
B:/DCIM/105CANON/IMG_0432.JPG: 848816
Bulb picture...
Elapsed time: 11598
B:/DCIM/105CANON/IMG_0433.CR2: 14242653
B:/DCIM/105CANON/IMG_0433.JPG: 365013
Picture taking tests completed.

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

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

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


Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 2880
Autofocus in LiveView...
Focus distance: 11910
Focusing backward...
Focus distance: 655350
Focus motor position: 429
Focusing forward with step size 3, wait=true...
...................
Focus distance: 850
Focus motor position: -1267
Focusing backward with step size 3, wait=true...
................
Focus distance: 655350
Focus motor position: 417
Focus range: 19 steps forward, 16 steps backward.
Motor steps: 1696 forward, 1684 backward, 12 lost.
Focusing forward with step size 3, wait=false...
................................................
Focus distance: 900
Focus motor position: -1265
Focusing backward with step size 3, wait=false...
.............................................
Focus distance: 655350
Focus motor position: 415
Focus range: 48 steps forward, 45 steps backward.
Motor steps: 1682 forward, 1680 backward, 2 lost.
Focusing forward with step size 2, wait=true...
...
Focus distance: 850
Focus motor position: -1265
Focusing backward with step size 2, wait=true...
...
Focus distance: 655350
Focus motor position: 414
Focus range: 102 steps forward, 100 steps backward.
Motor steps: 1680 forward, 1679 backward, 1 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 850
Focus motor position: -1265
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: 414
Focus range: 186 steps forward, 192 steps backward.
Motor steps: 1679 forward, 1679 backward, 0 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 850
Focus motor position: -1264
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: 413
Focus range: 421 steps forward, 424 steps backward.
Motor steps: 1678 forward, 1677 backward, 1 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 900
Focus motor position: -1264
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: 414
Focus range: 641 steps forward, 641 steps backward.
Motor steps: 1677 forward, 1678 backward, 1 lost.

Focus test completed.

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


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

Done!


I have briefly gone through many stuff, including video, all seems fine, except that overlay over overlay issue. It is not problematic, few clicks and canon overlay goes away.
Very useful as is, if you need more testing, let me know.
#3
Camera-specific Development / Re: Canon 1200D
September 20, 2017, 05:09:40 PM
Ok, I reset custom settings (this includes back button focusing) and ML config, restarted, turned all ML modules on, restarted, went to ML menu and run stubs. Dial was on "M" and it was not in LV when tests started. I did switch to Movie mode when asked to do so.

Complete success. (I can paste the stubs if you really want them.)

Just to check the theory, I moved AF to the back button (It is marked with "zoom out" and "AF points" icons, there is no "real" back focus button.) ONE FAIL. (Included below.) Rebooted and reran the test. FIVE FAILS, nothing was changed. I suspected the AF capabilities, so I played a bit and noticed it was on AF Servo, so I put it to AF Single. (still in back button focusing). Re-ran stubs. Passed. I would call it as close to perfect as possible and move on.

Ran LUA test, passed as well, will be pasting it below.

[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x426d0464
[Pass] dst = fio_malloc(size) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0xffffff56
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0xffffff84
[Pass] edmac_memcpy(dst, src, size) => 0x42ed4474
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x95
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ed4474
       dt => 0x312d
[Pass] copied => 0x40286c
[Pass] copied => 0x40286c
[Pass] copied => 0x40286c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xa4
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcb7f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4c0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0x109
[Pass] tries[1] => 0xe5
[Pass] tries[2] => 0x103
[Pass] tries[3] => 0xf7
[Pass] failr[0] => 0xb1
[Pass] failw[0] => 0xdf
[Pass] failr[1] => 0x77
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xdd
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x1d
       times[1] / tries[1] => 0x1d
       times[2] / tries[2] => 0x20
       times[3] / tries[3] => 0x20
Cache tests finished.

[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[FAIL] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
       FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409aec00
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x426d0464
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x99d2
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0xa
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x99f8
       msleep(400)
       CancelTimer(timer)
[Pass] timer_func => 0x0
       msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x698
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x15e
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x113
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xc4
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x69a
       msleep(80)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x3
       msleep(80)
[Pass] timer_func => 0x3
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x181
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x139
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x9f
       t0 = *(uint32_t*)0xC0242014 => 0x624b3
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0x9d4b4
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x22
       Date/time: 2017/09/20 16:27:34
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x23
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
       m0 = MALLOC_FREE_MEMORY => 0x301d0
[Pass] p = (void*)_malloc(50*1024) => 0xd4710
[Pass] CACHEABLE(p) => 0xd4710
       m1 = MALLOC_FREE_MEMORY => 0x239c0
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x301d0
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe1ccc
[Pass] CACHEABLE(p) => 0xbe1ccc
       m1 = GetFreeMemForAllocateMemory() => 0xc2e2c
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x301d0
       m02 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be1d0c
[Pass] UNCACHEABLE(p) => 0x40be1d0c
[Pass] CACHEABLE(p) => 0xbe1d0c
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be1d0c
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x426d0454
[Pass] UNCACHEABLE(p) => 0x426d0454
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x301d0
       m12 = GetFreeMemForAllocateMemory() => 0x102e3c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1d3c000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc7a30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x5
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8af8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x192c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x426d0450
[Pass] UNCACHEABLE(p) => 0x426d0450
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b30
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d2c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ba0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3d28000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8bd8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc34
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bbe0
[Pass] bar => '*****hjkl;'
       bzero32(bar + 5, 5)
[Pass] bar => '****'
       EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       task_create("test", 0x1c, 0x1000, test_task, 0) => 0x168000c0
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x168200a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x1684032a
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x16860086
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
       SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
       SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
       SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
       GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
       SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
=========================================================
Test complete, 11858 passed, 1 failed.
.


#4
Camera-specific Development / Re: Canon 1200D
September 20, 2017, 01:59:18 PM
LUA test fails with Canon EF 85mm 1:1,8 USM, it does not even try to AF. I watched what was going on. The other result was with a different lens (EF-S 10-18mm STM) which I don't have with me, will test it in the evening when I get home with all lenses I have (not that many). So I retested, turned AF off, but it asked me to remove the lens, which I did, put it back on immediately after the test was skipped.


===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-20 10:55:29
===============================================================================

Strict mode tests...
Strict mode tests passed.

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

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

Testing menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0367.CR2: 23810416
B:/DCIM/104CANON/IMG_0367.JPG: 2710390
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0368.CR2: 23814043
B:/DCIM/104CANON/ABC_0368.JPG: 2724669
B:/DCIM/104CANON/ABC_0369.CR2: 23808578
B:/DCIM/104CANON/ABC_0369.JPG: 2721762
Bracketed pictures...
B:/DCIM/104CANON/IMG_0370.CR2: 25670783
B:/DCIM/104CANON/IMG_0370.JPG: 5388578
B:/DCIM/104CANON/IMG_0371.CR2: 23800626
B:/DCIM/104CANON/IMG_0371.JPG: 2702120
B:/DCIM/104CANON/IMG_0372.CR2: 17434352
B:/DCIM/104CANON/IMG_0372.JPG: 375754
Bulb picture...
Elapsed time: 11827
B:/DCIM/104CANON/IMG_0373.CR2: 14255761
B:/DCIM/104CANON/IMG_0373.JPG: 365013
Picture taking tests completed.

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

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

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


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

===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2017-9-20 11:10:39
===============================================================================

Strict mode tests...
Strict mode tests passed.

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

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

Testing menu API...
Menu tests completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/104CANON/IMG_0374.CR2: 23241287
B:/DCIM/104CANON/IMG_0374.JPG: 1337113
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/104CANON/ABC_0375.CR2: 22612555
B:/DCIM/104CANON/ABC_0375.JPG: 716469
B:/DCIM/104CANON/ABC_0376.CR2: 22038983
B:/DCIM/104CANON/ABC_0376.JPG: 487110
Bracketed pictures...
B:/DCIM/104CANON/IMG_0377.CR2: 26115064
B:/DCIM/104CANON/IMG_0377.JPG: 6158309
B:/DCIM/104CANON/IMG_0378.CR2: 23082989
B:/DCIM/104CANON/IMG_0378.JPG: 768577
B:/DCIM/104CANON/IMG_0379.CR2: 14229183
B:/DCIM/104CANON/IMG_0379.JPG: 365013
Bulb picture...
Elapsed time: 11616
B:/DCIM/104CANON/IMG_0380.CR2: 14249369
B:/DCIM/104CANON/IMG_0380.JPG: 365013
Picture taking tests completed.

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

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

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


Testing lens focus functionality...
Please enable autofocus.
(or, remove the lens from the camera to skip this test)
Focus test skipped.

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


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

Done!


#5
Hi,

first of all, this module works on 1200D! That is really really great since it normally underexposes in low light.
Now, it does not work in Av mode, as far as I can see, seems by design. As an Av-in-most-situations shooter, I think it can easily be extended to do so.

Basically, if AV range (both limits) is set to Av value, the result is great. The benefit would be that it can be changed on a dial, without diving into ML menus.

So, as far as I can see, if (in Av mode only) these limits are set to Aperture value, thing would work like a charm! (Tv might be similar, at least as far as the lower limit is concerned)

Anyway, the module as is is one of the most helpful when it comes to stills. Now 1200D does what I wnat it to do better than 80D. Which reminds me...
#6
Camera-specific Development / Re: Canon 1200D
September 20, 2017, 01:14:18 PM
2017Sep19
Sorry, yes, you are right about old files. Enabling everything works with clean installation.
Stubs:
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x42908494
[Pass] dst = fio_malloc(size) => 0x4310c4a4
[Pass] memcmp(dst, src, 4097) => 0xfffffff1
[Pass] edmac_memcpy(dst, src, 4097) => 0x4310c4a4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x4310c4a4
[Pass] memcmp(dst, src, size) => 0xffffffc6
[Pass] edmac_memcpy(dst, src, size) => 0x4310c4a4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffcb
[Pass] edmac_memcpy_start(dst, src, size) => 0x4310c4a4
       dt => 0x315f
[Pass] copied => 0x40275c
[Pass] copied => 0x40275c
[Pass] copied => 0x40275c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x59
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xcb7f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x4f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xef
[Pass] tries[1] => 0xfc
[Pass] tries[2] => 0xf8
[Pass] tries[3] => 0x105
[Pass] failr[0] => 0xa2
[Pass] failw[0] => 0xd0
[Pass] failr[1] => 0x89
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xe0
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x1d
       times[1] / tries[1] => 0x1d
       times[2] / tries[2] => 0x20
       times[3] / tries[3] => 0x21
Cache tests finished.

[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
       FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x409ade3c
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x42908494
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9de0
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x2
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9e06
       msleep(400)
       CancelTimer(timer)
[Pass] timer_func => 0x0
       msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x6e0
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x16e
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x128
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0x22c
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x6e2
       msleep(80)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x3
       msleep(80)
[Pass] timer_func => 0x3
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x2e8
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x2a0
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x227
       t0 = *(uint32_t*)0xC0242014 => 0x3fc9
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0x40d13
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x1
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x30
       Date/time: 2017/09/20 10:53:48
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x31
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
       m0 = MALLOC_FREE_MEMORY => 0x30138
[Pass] p = (void*)_malloc(50*1024) => 0xd4710
[Pass] CACHEABLE(p) => 0xd4710
       m1 = MALLOC_FREE_MEMORY => 0x23928
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x30138
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe1cd0
[Pass] CACHEABLE(p) => 0xbe1cd0
       m1 = GetFreeMemForAllocateMemory() => 0xc352c
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x30138
       m02 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be1d10
[Pass] UNCACHEABLE(p) => 0x40be1d10
[Pass] CACHEABLE(p) => 0xbe1d10
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be1d10
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x4a000074
[Pass] UNCACHEABLE(p) => 0x4a000074
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x30138
       m12 = GetFreeMemForAllocateMemory() => 0x10353c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f68000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f68000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x16f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42908480
[Pass] UNCACHEABLE(p) => 0x42908480
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8a68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1af4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8aa0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x26f8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ad8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc89e0
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x6
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc8a08
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x16f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42908480
[Pass] UNCACHEABLE(p) => 0x42908480
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8a68
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1af4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8aa0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x3a5c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8ad8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4660000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b10
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x46f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc8b48
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x49f68100
[Pass] UNCACHEABLE(p) => 0x49f68100
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bc34
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc00
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bbe0
[Pass] bar => '*****hjkl;'
       bzero32(bar + 5, 5)
[Pass] bar => '****'
       EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       task_create("test", 0x1c, 0x1000, test_task, 0) => 0x16d800c2
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x16da00a2
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x16dc0334
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x16de00be
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
       SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
       SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
       SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
       GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
       SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
=========================================================
Test complete, 11854 passed, 5 failed.



I
#7
Camera-specific Development / Re: Canon 1200D
September 19, 2017, 06:05:54 PM
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!
#8
Camera-specific Development / Re: Canon 1200D
September 19, 2017, 05:32:46 PM
... 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).
#9
Camera-specific Development / Re: Canon 1200D
September 19, 2017, 05:28:06 PM
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


#10
Camera-specific Development / Re: Canon 1200D
September 19, 2017, 02:30:07 PM
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.
#11
Camera-specific Development / Re: Canon 1200D
September 18, 2017, 06:01:37 PM
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.


#12
Camera-specific Development / Re: Canon 1200D
September 18, 2017, 03:43:04 PM
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.



#13
Camera-specific Development / Re: Canon 1200D
September 18, 2017, 12:49:00 PM
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%.
#14
Camera-specific Development / Re: Canon 1200D
September 18, 2017, 01:58:50 AM
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...


#15
Camera-specific Development / Re: Canon 80D
September 07, 2017, 09:07:07 PM
Hi,

I read through the whole topic, but just to make sure.
I have to install http://a1ex.magiclantern.fm/bleeding-edge/80D/BOOTF_80D.FIR, which will "only" modify the boot flag, after which the tests should not modify anything, they are just some test and then normal situation should resume? Can I go back to Canon firmware only? I am aware there is some risk involved.

#16
Camera-specific Development / Re: Canon 1200D
September 07, 2017, 08:43:28 PM
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...
#17
Camera-specific Development / Re: Canon 1200D
September 07, 2017, 01:47:25 PM
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.


#18
Camera-specific Development / Re: Canon 1200D
September 04, 2017, 10:52:20 AM
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.

#19
Camera-specific Development / Re: Canon 1200D
April 04, 2015, 09:24:36 PM
@dmilligan
Thank you ... it does look simpler when you have the main steps in one place.
I disassembled it. I am not sure how to proceed, I have following files:


-rw-r--r--  1 matija matija  33554432 Tra  4 20:09 ROM1.BIN
-rw-rw-r--  1 matija matija 399838361 Tra  4 21:17 ROM1.BIN.dis
-rw-rw-r--  1 matija matija  33554942 Tra  4 21:10 ROM1.BIN.elf
-rw-rw-r--  1 matija matija   3422646 Tra  4 21:13 ROM1.BIN.labels
-rw-rw-r--  1 matija matija   2676549 Tra  4 21:10 ROM1.BIN.strings


Do I go to step 3 (your link is to the branch, not instructions, a sentence or two might help.
Thank you
#20
Camera-specific Development / Re: Canon 1200D
April 04, 2015, 02:27:48 PM
The problem I have is that there is no clear explanation what has to be done. I cant really know how much work it is. I do have 1200D and I do make living as a (python) dev, so I am willing to spend some time on this.
I did look at the bitbucket, again, same issue.