Hey guys,
I'm currently working with NRF9160, developing code that requires a work-item to be scheduled within a time-frame (timeout value) that could go up to >24-hrs. I'm using NCS V1.3.0 (and therefore Zephyr's release tag v.2.3.0-rc1-ncs1-rc3).
Issue:
The issue I see is that when using k_delayed_work_submit() with K_MINUTES() bigger than K_MINUTES(1092), I see the work gets queued immediately, instead of waiting the specified time.
Prior Knowledge:
- I know that with the new kernel timeout API, the units are measured in ticks (which in .config I see CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=32768).
- I have set CONFIG_TIMEOUT_64BIT=y in the project.
- I can also see that the structure that holds the work-item (in kernel.h, but )has timeout listed as (struct _timeout), which does not account for the 64-bits timeout mentioned above (see snippet below from ncs./zephyr/include/kernel_structs.h).
/* kernel timeout record */ struct _timeout; typedef void (*_timeout_func_t)(struct _timeout *t); struct _timeout { sys_dnode_t node; s32_t dticks; _timeout_func_t fn; };
My question boils down to the following:
- Is there any way to configure the new kernel timeout to support these time-scheduling figures?
- If legacy kernel timeout is the most obvious to-go solution, what am I giving up for using the legacy kernel timer and not the latest one?
Best regards,
Luis.