Hi Pieter,
Short answer is no! Non-sleepy cannot (and should not) sleep. But we can change the MLE "mode" on device to switch it to "not be non-sleepy" and have it sleep (but then technically it is no longer non-sleepy... :)....)
1) Is my assumption correct about not being a sleepy end device?
Yes. If `mRxOnWhenIdle` is `true` then radio receiver would be always on (on idle mode when not sending) and device is not sleepy.
2) Can an MTD sleep for a long time and rapidly connect to a parent on wake up? Does the child timeout setting affect this?
A sleepy device that is attached to a parent, can awaken anytime and immediately start sending data to its parent (no need to sync or re-establish any connection with its parent).
Child timeout is simply a promise by the child that it will talk to its parent (exchange data poll, or some data frame to indicate that it's still there) within the timeout interval (it may communicate more often but at min within the timeout interval). If the parent does not hear from the child within the timeout interval, it can kick it out its child table (no longer consider it a child). It is up to the child to select the timeout interval. Child will let the parent know during attach what timeout value it wants to use. The child can also change the timeout interval later and then it needs to sync the new value with parent through MLE "child update" mechasnim.
3) Should my MTD dynamically switch modes (sleepy/non-sleepy) in order to support the described use-case?
It is certainly possible to switch mode during run-time. But I would say in your use-case (sleep often and awaken on some events) it probably make sense to have device operate as sleepy. Child can always awaken and send info to parent.
4) Should the MTD perform some "going to sleep"/detach notification steps, or can it simply cut the power?
Just to clarify something, in a sleepy device the radio is put in low-power (sleep) mode but it is expected the info stored in RAM (on SED's MCU) to be retained.
If by "cut the power" you mean fully shut down the device (i.e. do not retain RAM variables) then device is powered off (it is not technically attached to network or considered a sleepy end-device anymore). In such a case, upon power up the device needs to attach (reattach) to the same (or possibly new) parent.
Hope this helps,
Abtin.