Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 15 additions & 7 deletions apps/dmview_demo/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,32 @@
#define DEFAULT_VIEW "/eviews/dmview_demo/dmodos.dmv" /* dmod-boot: views of the flash modules */
#define WAIT_MS 100u
#define DISPLAY_WAIT_MS 10000u
#define VIEW_WAIT_MS 30000u /* A view on a card: until it is mounted */

int main(int argc, char* argv[])
{
const char* view = (argc > 1 && argv[1][0] != '\0') ? argv[1] : DEFAULT_VIEW;
const char* display = (argc > 2 && argv[2][0] != '\0') ? argv[2] : NULL;

if (!Dmod_FileAvailable(view))
{
Dmod_Printf("dmview_demo: no view %s\n", view);
Dmod_Printf("Usage: dmview_demo [<view>] [<display>]\n");
return -ENOENT;
}

dmosi_semaphore_t wakeup = dmosi_semaphore_create(0, 1);
if (wakeup == NULL)
return -ENOMEM;
libsystemd_set_stop_semaphore(wakeup);

/* Its view may be on a card mounted after it starts (automount): waited for */
for (uint32_t waited = 0; !Dmod_FileAvailable(view) && !libsystemd_stop_requested(); waited += WAIT_MS)
{
if (waited >= VIEW_WAIT_MS)
{
Dmod_Printf("dmview_demo: no view %s\n", view);
Dmod_Printf("Usage: dmview_demo [<view>] [<display>]\n");
libsystemd_set_stop_semaphore(NULL);
dmosi_semaphore_destroy(wakeup);
return -ENOENT;
}
(void)dmosi_semaphore_wait(wakeup, 1, (int32_t)WAIT_MS);
}

uint32_t claim = 0;
int ret = -ENODEV;
for (uint32_t waited = 0; !libsystemd_stop_requested(); waited += WAIT_MS)
Expand Down
Loading