#2 Declined
Repository
Branch
update-to-5D3.134-wip
Repository
Branch
unified
Author
  1. Daniel Fort
Reviewers
Description

Looks like it might be ready for a real pull request.

Comments (3)

  1. Daniel Fort author

    stubs check out fine:

    Module termcolor missing, no color support will be available
    STUB                                   OLD           NEW     DELTA
    get_current_task                    0x0000252c -> 0x0000252c [0x000]
    create_init_task                    0x00002eb8 -> 0x00002eb8 [0x000]
    DryosDebugMsg                       0x00005b90 -> 0x00005b90 [0x000]
    dm_set_store_level                  0x00005ef8 -> 0x00005ef8 [0x000]
    SetHPTimerAfterNow                  0x00007218 -> 0x00007218 [0x000]
    SetHPTimerNextTick                  0x00007308 -> 0x00007308 [0x000]
    create_named_semaphore              0x00008420 -> 0x00008420 [0x000]
    take_semaphore                      0x00008580 -> 0x00008580 [0x000]
    give_semaphore                      0x0000866c -> 0x0000866c [0x000]
    msleep                              0x00008a5c -> 0x00008a5c [0x000]
    task_create                         0x00008b10 -> 0x00008b10 [0x000]
    GetSizeOfMaxRegion                  0x000096ec -> 0x000096ec [0x000]
    GetMemoryInformation                0x00009740 -> 0x00009740 [0x000]
    _AllocateMemory                     0x000099a0 -> 0x000099a0 [0x000]
    _FreeMemory                         0x00009d3c -> 0x00009d3c [0x000]
    CreateMemoryChunk                   0x0000a604 -> 0x0000a604 [0x000]
    GetMemoryAddressOfMemoryChunk       0x0000aba8 -> 0x0000aba8 [0x000]
    DeleteMemorySuite                   0x0000ac1c -> 0x0000ac1c [0x000]
    CreateMemorySuite                   0x0000ae24 -> 0x0000ae24 [0x000]
    AddMemoryChunk                      0x0000b100 -> 0x0000b100 [0x000]
    GetFirstChunkFromSuite              0x0000b1d0 -> 0x0000b1d0 [0x000]
    GetNextMemoryChunk                  0x0000b96c -> 0x0000b96c [0x000]
    msg_queue_create                    0x0000c1bc -> 0x0000c1bc [0x000]
    CreateRecursiveLock                 0x0000c3a4 -> 0x0000c3a4 [0x000]
    SetTimerAfter                       0x0000d780 -> 0x0000d780 [0x000]
    CancelTimer                         0x0000d980 -> 0x0000d980 [0x000]
    task_trampoline                     0x0000de28 -> 0x0000de28 [0x000]
    get_obj_attr                        0x00010934 -> 0x00010934 [0x000]
    SetEDmac                            0x000125f8 -> 0x000125f8 [0x000]
    ConnectWriteEDmac                   0x000126a4 -> 0x000126a4 [0x000]
    ConnectReadEDmac                    0x00012768 -> 0x00012768 [0x000]
    StartEDmac                          0x00012910 -> 0x00012910 [0x000]
    RegisterEDmacCompleteCBR            0x00012afc -> 0x00012afc [0x000]
    UnregisterEDmacCompleteCBR          0x00012b38 -> 0x00012b38 [0x000]
    RegisterEDmacAbortCBR               0x00012be4 -> 0x00012be4 [0x000]
    UnregisterEDmacAbortCBR             0x00012c20 -> 0x00012c20 [0x000]
    RegisterEDmacPopCBR                 0x00012c78 -> 0x00012c78 [0x000]
    UnregisterEDmacPopCBR               0x00012cb4 -> 0x00012cb4 [0x000]
    msg_queue_receive                   0x00014680 -> 0x00014680 [0x000]
    msg_queue_post                      0x0001486c -> 0x0001486c [0x000]
    msg_queue_count                     0x000148ac -> 0x000148ac [0x000]
    AcquireRecursiveLock                0x000149b8 -> 0x000149b8 [0x000]
    ReleaseRecursiveLock                0x00014acc -> 0x00014acc [0x000]
    vsnprintf                           0x00015ff4 -> 0x00015ff4 [0x000]
    _alloc_dma_memory                   0x00017f9c -> 0x00017f9c [0x000]
    _free_dma_memory                    0x00017fd0 -> 0x00017fd0 [0x000]
    is_taskid_valid                     0x00019918 -> 0x00019918 [0x000]
    bzero32                             0x0001c448 -> 0x0001c448 [0x000]
    task_dispatch_hook                  0x00023d00 -> 0x00023d00 [0x000]
    pre_isr_hook                        0x00023d08 -> 0x00023d08 [0x000]
    post_isr_hook                       0x00023d0c -> 0x00023d0c [0x000]
    gui_main_struct                     0x00024120 -> 0x00024120 [0x000]
    dm_names                            0x00024a70 -> 0x00024a70 [0x000]
    task_max                            0x00025024 -> 0x00025024 [0x000]
    gui_task_list                       0x000321c8 -> 0x000321e0 [0x018] [!!!]
    cf_device_ptr                       0x00036184 -> 0x0003619c [0x018] [!!!]
    sd_device                           0x00039960 -> 0x00039978 [0x018] [!!!]
    LCD_Palette                         0x00041510 -> 0x00041530 [0x020] [!!!]
    bmp_vram_info                       0x00042d10 -> 0x00042d30 [0x020] [!!!]
    additional_version                  0x00046910 -> 0x00046910 [0x000]
    camera_engine                       0xc0220000 -> 0xc0220000 [0x000]
    cstart                              0xff0c1ca0 -> 0xff0c1ca0 [0x000] [!!!]
    init_task                           0xff0c5298 -> 0xff0c52a0 [0x008]
    _malloc                             0xff0c8178 -> 0xff0c8180 [0x008]
    _free                               0xff0c81d0 -> 0xff0c81d8 [0x008]
    gui_main_task                       0xff0de948 -> 0xff0de950 [0x008]
    GUI_Control                         0xff0ded1c -> 0xff0ded24 [0x008]
    gui_init_end                        0xff0df384 -> 0xff0df38c [0x008]
    SRM_AllocateMemoryResourceFor1stJob 0xff0ee3e8 -> 0xff0ee3f0 [0x008]
    SRM_FreeMemoryResourceFor1stJob     0xff0f18f8 -> 0xff0f1900 [0x008]
    StartASIFDMAADC                     0xff10e634 -> 0xff10e63c [0x008]
    StopASIFDMAADC                      0xff10e7b0 -> 0xff10e7b8 [0x008]
    StartASIFDMADAC                     0xff10e7ec -> 0xff10e7f4 [0x008]
    StopASIFDMADAC                      0xff10e8c4 -> 0xff10e8cc [0x008]
    SetNextASIFADCBuffer                0xff10ed68 -> 0xff10ed70 [0x008]
    SetNextASIFDACBuffer                0xff10ee1c -> 0xff10ee24 [0x008]
    prop_register_slave                 0xff12301c -> 0xff123024 [0x008]
    _prop_request_change                0xff123210 -> 0xff123218 [0x008]
    prop_deliver                        0xff1237cc -> 0xff1237d4 [0x008]
    _prop_cleanup                       0xff123898 -> 0xff1238a0 [0x008]
    LoadCalendarFromRTC                 0xff135fd4 -> 0xff135fdc [0x008]
    _audio_ic_write                     0xff136f68 -> 0xff136f70 [0x008]
    _audio_ic_read                      0xff137020 -> 0xff137028 [0x008]
    SetAudioVolumeOut                   0xff137168 -> 0xff137170 [0x008]
    PowerAudioOutput                    0xff1379d0 -> 0xff1379d8 [0x008]
    SetSamplingRate                     0xff137a68 -> 0xff137a70 [0x008]
    call                                0xff13b750 -> 0xff13b758 [0x008]
    AllocateMemoryResource              0xff13c1f8 -> 0xff13c200 [0x008]
    AllocateContinuousMemoryResource    0xff13c244 -> 0xff13c24c [0x008]
    FreeMemoryResource                  0xff13c35c -> 0xff13c364 [0x008]
    SetGUIRequestMode                   0xff18b6cc -> 0xff18b6d4 [0x008]
    gui_massive_event_loop              0xff1a7bbc -> 0xff1a7bc4 [0x008]
    GUI_SetRollingPitchingLevelStatus   0xff2763a4 -> 0xff276508 [0x164]
    _EngDrvOut                          0xff290c80 -> 0xff290de4 [0x164]
    shamem_read                         0xff290d1c -> 0xff290e80 [0x164]
    _engio_write                        0xff290f98 -> 0xff2910fc [0x164]
    CreateResLockEntry                  0xff294ef0 -> 0xff295054 [0x164]
    LockEngineResources                 0xff2953b8 -> 0xff29551c [0x164]
    UnLockEngineResources               0xff29555c -> 0xff2956c0 [0x164]
    _FIO_OpenFile                       0xff30e3b4 -> 0xff30e518 [0x164]
    _FIO_CreateFile                     0xff30e470 -> 0xff30e5d4 [0x164]
    _FIO_RemoveFile                     0xff30e51c -> 0xff30e680 [0x164]
    FIO_ReadFile                        0xff30e5c4 -> 0xff30e728 [0x164]
    FIO_SeekSkipFile                    0xff30e674 -> 0xff30e7d8 [0x164]
    FIO_WriteFile                       0xff30e764 -> 0xff30e8c8 [0x164]
    FIO_CloseFile                       0xff30e814 -> 0xff30e978 [0x164]
    _FIO_GetFileSize                    0xff30e990 -> 0xff30eaf4 [0x164]
    _FIO_CreateDirectory                0xff30f070 -> 0xff30f1d4 [0x164]
    _FIO_FindFirstEx                    0xff30f638 -> 0xff30f79c [0x164]
    FIO_FindNextEx                      0xff30f72c -> 0xff30f890 [0x164]
    FIO_FindClose                       0xff30f80c -> 0xff30f970 [0x164]
    dialog_set_property_str             0xff35921c -> 0xff359384 [0x168]
    PlayMain_handler                    0xff36deb8 -> 0xff36e020 [0x168]
    ptp_register_handler                0xff3fde4c -> 0xff3fdfb4 [0x168]
    dialog_redraw                       0xff456524 -> 0xff45668c [0x168]
    FSUunMountDevice                    0xff48b788 -> 0xff48ba58 [0x2d0]
    ErrForCamera_handler                0xff4a7318 -> 0xff4a746c [0x154]
    CancelDateTimer                     0xff4aeddc -> 0xff4aef70 [0x194]
    HideUnaviFeedBack_maybe             0xff4b62e0 -> 0xff4b6474 [0x194]
    LiveViewApp_handler                 0xff4ba780 -> 0xff4ba914 [0x194]
    ShootOlcApp_handler                 0xff4c13a4 -> 0xff4c1538 [0x194]
    PlayMovieGuideApp_handler           0xff4d6494 -> 0xff4d662c [0x198]
    fsuDecodePartitionTable             0xff5c5e0c -> 0xff5c5fac [0x1a0]
    ErrCardForLVApp_handler             0xff626ea0 -> 0xff6270fc [0x25c]
    LiveViewWbApp_handler               0xff62e43c -> 0xff62e698 [0x25c]
    LiveViewLevelApp_handler            0xff663ce8 -> 0xff663f4c [0x264]
    
  2. Daniel Fort author

    Used MALLOC_STRUCT address from the @chris_miller 5D3-133 branch and ran a clean Stubs API test.

    [Pass] is_play_mode() => 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) => 0x407a4cfc
    [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) => 0x42f540a0
    [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] FIO_RemoveFile("test.dat") => 0x0
    [Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
    [Pass] timer_func => 0x2
    [Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x1a56
           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) => 0x1a58
           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) => 0xb76c
           msleep(90)
    [Pass] timer_func => 0x0
           msleep(20)
    [Pass] timer_func => 0x1
    [Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0xe0
    [Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xc3
    [Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xffffff22
    [Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0xb76e
           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) => 0x59
    [Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x78
    [Pass] ABS((get_us_clock_value() - t0) - 310000) => 0xffffff0c
           t0 = *(uint32_t*)0xC0242014 => 0x20802
           msleep(250)
           t1 = *(uint32_t*)0xC0242014 => 0x5d6d8
    [Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x1
           LoadCalendarFromRTC( &now )
           s0 = now.tm_sec => 0x16
           Date/time: 2017/02/14 13:21:22
           msleep(1500)
           LoadCalendarFromRTC( &now )
           s1 = now.tm_sec => 0x18
    [Pass] MOD(s1-s0, 60) => 0x2
    [Pass] MOD(s1-s0, 60) => 0x2
           m0 = MALLOC_FREE_MEMORY => 0x2dcd8
    [Pass] p = (void*)_malloc(50*1024) => 0x113390
    [Pass] CACHEABLE(p) => 0x113390
           m1 = MALLOC_FREE_MEMORY => 0x214c8
           _free(p)
           m2 = MALLOC_FREE_MEMORY => 0x2dcd8
    [Pass] ABS((m0-m1) - 50*1024) => 0x10
    [Pass] ABS(m0-m2) => 0x0
           m0 = GetFreeMemForAllocateMemory() => 0x3e8c80
    [Pass] p = (void*)_AllocateMemory(256*1024) => 0x7a4cbc
    [Pass] CACHEABLE(p) => 0x7a4cbc
           m1 = GetFreeMemForAllocateMemory() => 0x3a8c74
           _FreeMemory(p)
           m2 = GetFreeMemForAllocateMemory() => 0x3e8c80
    [Pass] ABS((m0-m1) - 256*1024) => 0xc
    [Pass] ABS(m0-m2) => 0x0
           m01 = MALLOC_FREE_MEMORY => 0x2dcd8
           m02 = GetFreeMemForAllocateMemory() => 0x3e8c80
    [Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x407a4cfc
    [Pass] UNCACHEABLE(p) => 0x407a4cfc
    [Pass] CACHEABLE(p) => 0x7a4cfc
    [Pass] UNCACHEABLE(CACHEABLE(p)) => 0x407a4cfc
           _free_dma_memory(p)
    [Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x44800068
    [Pass] UNCACHEABLE(p) => 0x44800068
           _shoot_free(p)
           m11 = MALLOC_FREE_MEMORY => 0x2dcd8
           m12 = GetFreeMemForAllocateMemory() => 0x3e8c80
    [Pass] ABS(m01-m11) => 0x0
    [Pass] ABS(m02-m12) => 0x0
    [Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0x10e848
    [Pass] suite->signature => 'MemSuite'
    [Pass] suite->num_chunks => 0x1
    [Pass] suite->size => 0x1800000
    [Pass] chunk = GetFirstChunkFromSuite(suite) => 0x10e870
    [Pass] chunk->signature => 'MemChunk'
    [Pass] chunk->size => 0x1800000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44800064
    [Pass] UNCACHEABLE(p) => 0x44800064
           shoot_free_suite(suite); suite = 0; chunk = 0;
    [Pass] suite = shoot_malloc_suite_contig(0) => 0x10e848
    [Pass] suite->signature => 'MemSuite'
    [Pass] suite->num_chunks => 0x1
    [Pass] suite->size => 0x2000000
    [Pass] chunk = GetFirstChunkFromSuite(suite) => 0x10e870
    [Pass] chunk->signature => 'MemChunk'
    [Pass] chunk->size => 0x2000000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44800064
    [Pass] UNCACHEABLE(p) => 0x44800064
           shoot_free_suite(suite); suite = 0; chunk = 0;
    [Pass] suite = shoot_malloc_suite(64*1024*1024) => 0x10e848
    [Pass] suite->signature => 'MemSuite'
    [Pass] suite->num_chunks => 0x4
    [Pass] suite->size => 0x4000000
    [Pass] chunk = GetFirstChunkFromSuite(suite) => 0x10e870
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x17d0000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42f5407c
    [Pass] UNCACHEABLE(p) => 0x42f5407c
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10e8d0
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x1dc0000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4720d064
    [Pass] UNCACHEABLE(p) => 0x4720d064
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10e908
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x3dc0000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44800064
    [Pass] UNCACHEABLE(p) => 0x44800064
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10e940
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x4000000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46800070
    [Pass] UNCACHEABLE(p) => 0x46800070
           chunk = GetNextMemoryChunk(suite, chunk) => 0x0
    [Pass] total => 0x4000000
           shoot_free_suite(suite); suite = 0; chunk = 0;
    [Pass] suite = shoot_malloc_suite(0) => 0x10e848
    [Pass] suite->signature => 'MemSuite'
    [Pass] suite->num_chunks => 0x12
    [Pass] suite->size => 0xe300000
    [Pass] chunk = GetFirstChunkFromSuite(suite) => 0x10e870
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x17d0000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42f5407c
    [Pass] UNCACHEABLE(p) => 0x42f5407c
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10e8d0
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x37d0000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44800064
    [Pass] UNCACHEABLE(p) => 0x44800064
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10e908
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x3ef8000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46800070
    [Pass] UNCACHEABLE(p) => 0x46800070
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10e940
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x44e8000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4720d064
    [Pass] UNCACHEABLE(p) => 0x4720d064
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10e978
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x45bc000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5ff280e4
    [Pass] UNCACHEABLE(p) => 0x5ff280e4
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10e9b0
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x4690000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5d7280e4
    [Pass] UNCACHEABLE(p) => 0x5d7280e4
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10e9e8
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x4764000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5af280e4
    [Pass] UNCACHEABLE(p) => 0x5af280e4
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10ea20
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x4838000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x587280e4
    [Pass] UNCACHEABLE(p) => 0x587280e4
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10ea58
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x490c000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46f280e4
    [Pass] UNCACHEABLE(p) => 0x46f280e4
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10ea90
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x49e0000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x447280e4
    [Pass] UNCACHEABLE(p) => 0x447280e4
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10eac8
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x69e0000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x56000064
    [Pass] UNCACHEABLE(p) => 0x56000064
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10eb00
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x7108000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x58000070
    [Pass] UNCACHEABLE(p) => 0x58000070
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10eb38
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x9108000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x58800064
    [Pass] UNCACHEABLE(p) => 0x58800064
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10eb70
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0x9830000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a800070
    [Pass] UNCACHEABLE(p) => 0x5a800070
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10eba8
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0xb830000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5b000064
    [Pass] UNCACHEABLE(p) => 0x5b000064
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10ebe0
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0xbf58000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5d000070
    [Pass] UNCACHEABLE(p) => 0x5d000070
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10ec18
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0xdf58000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5d800064
    [Pass] UNCACHEABLE(p) => 0x5d800064
           chunk = GetNextMemoryChunk(suite, chunk) => 0x10ec50
    [Pass] chunk->signature => 'MemChunk'
    [Pass] total += chunk->size => 0xe300000
    [Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5f800070
    [Pass] UNCACHEABLE(p) => 0x5f800070
           chunk = GetNextMemoryChunk(suite, chunk) => 0x0
    [Pass] total => 0xe300000
           shoot_free_suite(suite); suite = 0; chunk = 0;
    [Pass] strlen("abc") => 0x3
    [Pass] strlen("qwertyuiop") => 0xa
    [Pass] strlen("") => 0x0
    [Pass] strcpy(msg, "hi there") => 0x1b0904
    [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) => 0x1b08c0
    [Pass] foo => 'asdfghuiop'
    [Pass] memset(bar, '*', 5) => 0x1b08a0
    [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) => 0xa39200d0
    [Pass] test_task_created => 0x1
    [Pass] get_task_name_from_id(get_current_task()) => 'run_test'
    [Pass] task_max => 0x68
    [Pass] task_max => 0x68
    [Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0xa39400ae
    [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) => 0xa39601d6
    [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) => 0xa398009a
    [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
    
  3. Daniel Fort author

    Next test - lua API test. Just realized I don't have any EF lenses. This is getting expensive.

    ===============================================================================
    ML/SCRIPTS/api_test.lua - 2017-2-14 18:21:30
    ===============================================================================
    
    Strict mode tests...
    Strict mode tests passed.
    
    Generic tests...
    camera = table:
      shutter = table:
        raw = 19
        apex = -4.624999
        ms = 24675
        value = 24.675373
      aperture = table:
        raw = 0
        apex = 0
        value = 0
        min = table:
          raw = 0
          apex = 0
          value = 0
        max = table:
          raw = 0
          apex = 0
          value = 0
      iso = table:
        raw = 88
        apex = 7.
        value = 400
      ec = table:
        raw = 0
        value = 0
      flash_ec = table:
        raw = 0
        value = 0
      kelvin = 6500
      mode = 3
      metering_mode = 3
      drive_mode = 0
      model = "Canon EOS 5D Mark III"
      model_short = "5D3"
      firmware = "1.3.4"
      temperature = 154
      state = 0
      bulb = function: p
      reboot = function: p
      shoot = function: p
    event = table:
      pre_shoot = nil
      post_shoot = nil
      shoot_task = nil
      seconds_clock = nil
      keypress = nil
      custom_picture_taking = nil
      intervalometer = nil
      config_save = nil
    console = table:
      clear = function: p
      write = function: p
      hide = function: p
      show = function: p
    lv = table:
      enabled = true
      paused = false
      running = true
      zoom = 1
      stop = function: p
      start = function: p
      resume = function: p
      pause = function: p
      info = function: p
      wait = function: p
    lens = table:
      name = ""
      focal_length = 0
      focus_distance = 0
      hyperfocal = 0
      dof_near = 0
      dof_far = 0
      af = false
      af_mode = 3
      focus = function: p
    display = table:
      idle = true
      height = 480
      width = 720
      print = function: p
      rect = function: p
      pixel = function: p
      notify_box = function: p
      draw = function: p
      circle = function: p
      screenshot = function: p
      off = function: p
      clear = function: p
      load = function: p
      on = function: p
      line = function: p
    key = table:
      last = 0
      press = function: p
      wait = function: p
    menu = table:
      visible = false
      open = function: p
      set = function: p
      close = function: p
      get = function: p
      block = function: p
      new = function: p
    testmenu = userdata:
      value = 0
      name = "Script API tests"
      help = "Various tests for the Lua scripting API."
      help2 = "When adding new Lua APIs, tests for them should go here."
      advanced = 0
      depends_on = 0
      edit_mode = 0
      hidden = false
      icon_type = 5
      jhidden = false
      max = 0
      min = 0
      selected = true
      shidden = false
      starred = false
      submenu_height = 0
      submenu_width = 0
      unit = 0
      works_best_in = 0
      run_in_separate_task = 0
      select = function: p
      update = nil
      info = nil
      rinfo = nil
      warning = nil
    movie = table:
      recording = false
      stop = function: p
      start = function: p
    dryos = table:
      clock = 29
      ms_clock = 29720
      prefix = "1Y7A"
      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/100EOS5D/"
      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 = 131072
        drive_letter = "B"
        file_number = 2488
        folder_number = 100
        free_space = 62671616
        type = "SD"
        path = "B:/"
        _card_ptr = userdata
      shooting_card = table:
        cluster_size = 131072
        drive_letter = "B"
        file_number = 2488
        folder_number = 100
        free_space = 62671616
        type = "SD"
        path = "B:/"
        _card_ptr = userdata
      date = table:
        sec = 36
        day = 14
        wday = 3
        hour = 18
        min = 21
        year = 2017
        isdst = false
        yday = 45
        month = 2
      call = function: p
      directory = function: p
      remove = function: p
    interval = table:
      time = 10
      count = 0
      running = 0
      stop = function: p
    battery = table:
      level = 86
      id = 0
      performance = 3
      time = 9288
      drain_rate = 33
    task = table:
      yield = function: p
      create = function: p
    property = table:
    Generic tests completed.
    
    Module tests...
    Copy test: autoexec.bin -> tmp.bin
    Copy test OK
    Append test: tmp.txt
    Append test OK
    Testing exposure settings, module 'camera'...
    Camera    : Canon EOS 5D Mark III (5D3) 1.3.4
    Lens      : 
    Shoot mode: 3
    Shutter   : 25" (raw 19, 24.675373s, 24675ms, apex -4.624999)
    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       : 400 (raw 88, 400, apex 7.)
    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 lens does not have variable aperture (skipping test).
    Please switch to Av mode.
    Setting EC to random values...
    Setting Flash EC to random values...
    Exposure tests completed.
    
    Testing module 'lv'...
    LiveView is running; stopping...
    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.
    
    This test requires an electronic lens.
    Done!