This library has been implemented to suit the typical Arduino user, not an expert programmer.
Here are the basic capabilities supported in the current version for building typical applications:
- Create alarms for a particular time of day that repeat daily or on a particular day of week.
- Create a one time only alarms for particular time of day or dates
- Create timers that trigger once only or repeat after an interval that can range from one second to one week
- Disable and enable any of the created alarms or timers
Here are capabilities, some supported in the old version that could continue to be supported in the standard version or moved into the advanced category (they will probably be included in the standard version unless there is a good argument otherwise)
- Determine if a given id is an alarm (time of day based) or a timer (duration based)
- Read the current duration of a timer or trigger time of an alarm
- Change the value (duration/trigger time) of an alarm/timer
- Free up an alarm or timer to allow its resources to be used in the creation of another alarm or timer
And these are the advanced capabilities that are being considered that can be enabled through a hash define:
- Get the trigger time of the next alarm/timer
- Get the number of allocated timers
- Determine if a given alarm/timer id is allocated
My current thinking is that the typical Arduino user of this library will not need the advanced functionality listed above. If a feature is only useful to programmers interested in making sophisticated control systems then IMO it does not belong in a library targeted for Arduino. If you disagree with this point of view then perhaps we could discuss this as a matter of philosophy in a new thread in the general discussion section. But although you have both made the case why you would like these features, I wonder if either of you would say that your needs are representative of typical Arduino users of this library.
I would prefer not to have two libraries, one that is Arduino friendly, another for sophisticated users, but I would rather do that then add complex capabilities into the arduino library that are not relevant to the majority of arduino users.
As said in my earlier post, you are not going to lose the more advanced capabilities, they are available if you enable them through a hash define. But I do want to avoid the advanced features becoming part of the standard API for this library unless there is a strong use case relevant to more than a handful of users. I believe that almost all of the Arduino applications using this library can be built without the need for any of the advanced capabilities.
The first version of this library was posted here
almost three years ago and has had 15768 reads.
The updated posting was here
with 12947 reads.
I don't think you will a strong case for the features you are looking for in those threads. If there are more recent threads requesting the more advanced functionality then please post the links. If functionality is useful for a lot of arduino users then I will not hesitate to support it.
If it were not for the specialist requirement to test the library and to support you two that have contributed your time to this, I would not be inclined to include those more advanced capabilities at all. I do appreciate the time and effort you have devoted to this topic so please don’t take this post as criticism. Its just that having watched and participated in the Arduino community since 2007 I think simplicity is more important than rich functionality. Although I realize that each person can have a different interpretation of this, I do believe that in a good Arduino API, less is more.
That’s my view, lets see if we get wider feedback.