This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

NCS V1.3.0 maximum timeout for delayed work items

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.

Parents Reply Children
No Data
Related